如何制作一个c++程序来求任意大小矩阵的行列式和逆矩阵

How can I make a c++ program to find the determinate and inverse of any sized matrix?

本文关键字:任意大 行列式 何制作 程序 c++ 一个      更新时间:2023-10-16

我知道如何在1x1 2x2和3x3中找到这些,但我想制作一个程序,让我输入矩阵的维度,然后输入矩阵中的数字。在输入数字后,我希望它给出矩阵的确定值(如果可以得到的话)和倒数,但我不知道如何绕过维度部分。开始这件事的好方法是什么?我应该使用什么标题?我在Linux上运行,所以我没有像windows那样的标题,如果这有帮助的话。:)

从挑选一本《线性代数》开始。吉尔伯特·斯特朗的那本。它读起来像一本不错的故事书。通过LU分解,并进一步进入特征值和特征向量。在这一过程中的某个地方,你会找到两个问题的答案。

一个简单的方法是使用像Eigen这样的库。

如果你真的想自己做,你必须

  1. 决定如何在内存中表示矩阵
  2. 根据您的定义编写代码来读取和存储矩阵,以及
  3. 根据你的定义编写代码来计算矩阵的倒数/行列式

显然,2。和3。取决于你对1.的选择,而找到一个好的表示并不是微不足道的,它取决于你的应用,例如你的矩阵有多大,或者它是稀疏的还是密集的。

如果你不关心效率,或者只是假设你的矩阵很小,那么你可能想把你的矩阵表示为一维向量。例如,如果你有一个4x4矩阵,你可以分配一个长度为16的向量。

如果我正确理解了你的问题,那么你实际上是在问如何动态地(在运行时)做到这一点。使用数组,它看起来像这样:

double* yourMatrix
yourMatrix = new double[columnCount * rowCount];

这将动态地为columnCount * rowCountdoubles分配空间,现在您可以像访问静态数组一样访问该内存。完成后,必须使用delete[] yourMatrix来防止内存泄漏。

如果你知道如何计算纸上的行列式/倒数,你应该可以从这里开始。