0

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

4

2 回答 2

1

首先选择一本线性代数书。吉尔伯特·斯特朗 (Gilbert Strang) 的作品。它读起来就像一本很好的故事书。进行 LU 分解并进一步分解为特征值和特征向量。一路走来,您会找到两个问题的答案。

于 2013-02-19T23:19:05.190 回答
1

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

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

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

显然,2. 和 3. 取决于您对 1. 的选择,并且找到一个好的表示并非易事,并且取决于您的应用程序,例如您的矩阵将有多大或者它是稀疏的还是密集的。

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

如果我正确理解了您的问题,那么您实际上是在询问如何动态地(在运行时)执行此操作。使用数组,它看起来像这样:

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

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

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

于 2013-02-20T11:14:41.650 回答