如何制作一个c++程序来求任意大小矩阵的行列式和逆矩阵
How can I make a c++ program to find the determinate and inverse of any sized matrix?
我知道如何在1x1 2x2和3x3中找到这些,但我想制作一个程序,让我输入矩阵的维度,然后输入矩阵中的数字。在输入数字后,我希望它给出矩阵的确定值(如果可以得到的话)和倒数,但我不知道如何绕过维度部分。开始这件事的好方法是什么?我应该使用什么标题?我在Linux上运行,所以我没有像windows那样的标题,如果这有帮助的话。:)
从挑选一本《线性代数》开始。吉尔伯特·斯特朗的那本。它读起来像一本不错的故事书。通过LU分解,并进一步进入特征值和特征向量。在这一过程中的某个地方,你会找到两个问题的答案。
一个简单的方法是使用像Eigen这样的库。
如果你真的想自己做,你必须
- 决定如何在内存中表示矩阵
- 根据您的定义编写代码来读取和存储矩阵,以及
- 根据你的定义编写代码来计算矩阵的倒数/行列式
显然,2。和3。取决于你对1.的选择,而找到一个好的表示并不是微不足道的,它取决于你的应用,例如你的矩阵有多大,或者它是稀疏的还是密集的。
如果你不关心效率,或者只是假设你的矩阵很小,那么你可能想把你的矩阵表示为一维向量。例如,如果你有一个4x4矩阵,你可以分配一个长度为16的向量。
如果我正确理解了你的问题,那么你实际上是在问如何动态地(在运行时)做到这一点。使用数组,它看起来像这样:
double* yourMatrix
yourMatrix = new double[columnCount * rowCount];
这将动态地为columnCount * rowCount
double
s分配空间,现在您可以像访问静态数组一样访问该内存。完成后,必须使用delete[] yourMatrix
来防止内存泄漏。
如果你知道如何计算纸上的行列式/倒数,你应该可以从这里开始。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 不带大括号的枚举形式
- 欧拉项目#8答案是大以获得有效答案
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- 为什么在浮点中从大到小会引入更多的误差
- 为什么在读取文件大小时文件IO速度会发生变化
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 在(任意大)流中搜索完全匹配的字符串 - C++
- 如何在C 中任意获得大数字
- 编译C 程序时具有逻辑错误,该程序应将任意大的数字表示为字符串
- C++11 中任意类型 T 的最小值/最大值
- 我想要一个任意大的缓冲区在Linux/C/ c++
- 第 n 个或大集合的任意组合
- 如何制作一个c++程序来求任意大小矩阵的行列式和逆矩阵
- 任意3个数字的最大乘积