反转任何大小的矩阵

时间:2015-05-31 15:53:37

标签: c matrix inverse exponent matrix-inverse

我正在使用GNU Scientific Library来实现一个计算器,该计算器需要能够将矩阵提升到幂。不幸的是,GSL似乎没有这样的功能可用于偶数乘法矩阵(gsl_matrix_mul_elements()函数仅使用加法过程倍增),并且通过扩展,没有提升到幂。

我希望能够提升到负能力,这需要能够采取相反的能力。从我的搜索中,我无法找到任何声音代码来计算任意矩阵的逆(只有定义尺寸的矩阵),而我手工制作的指南使用了巧妙的“纸上技巧”。我真的在代码中工作。

是否有一个可用于计算任意大小矩阵的逆的通用算法(当然无法计算逆矩阵时会失败)?

2 个答案:

答案 0 :(得分:0)

如评论中所述,可以为整数指数的平方矩阵计算矩阵的幂。 n的{​​{1}}权力为A,其中A^n = A*A*...A出现A次。如果nB相反,则A的{​​{1}}幂为-n

因此,为了计算A的{​​{1}}能力,我可以使用GSL建议以下算法:

A^(-n) = (A^-1)^n = B^n = B*B*...B

对于计算n矩阵,您可以使用以下例程

A

答案 1 :(得分:0)

我建议阅读gsl实现的SVD。如果你的矩阵是可逆的,那么通过SVD计算它是一个不错的,虽然有点慢,但要走的路。如果你的矩阵不可逆,那么SVD可以让你计算下一个最好的东西,generalised inverse

在矩阵计算中,浮点运算中固有的误差可能会惊人地累积。一个例子是Hilbert matrix,一个无辜的东西,具有非常大的条件数,即使是非常适中的维度。对反演例程的一个很好的测试是看它可以反转多大的希尔伯特矩阵,以及矩阵与身份的计算逆时间有多接近。