我正在使用GNU Scientific Library来实现一个计算器,该计算器需要能够将矩阵提升到幂。不幸的是,GSL似乎没有这样的功能可用于偶数乘法矩阵(gsl_matrix_mul_elements()
函数仅使用加法过程倍增),并且通过扩展,没有提升到幂。
我希望能够提升到负能力,这需要能够采取相反的能力。从我的搜索中,我无法找到任何声音代码来计算任意矩阵的逆(只有定义尺寸的矩阵),而我手工制作的指南使用了巧妙的“纸上技巧”。我真的在代码中工作。
是否有一个可用于计算任意大小矩阵的逆的通用算法(当然无法计算逆矩阵时会失败)?
答案 0 :(得分:0)
如评论中所述,可以为整数指数的平方矩阵计算矩阵的幂。 n
的{{1}}权力为A
,其中A^n = A*A*...A
出现A
次。如果n
与B
相反,则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,一个无辜的东西,具有非常大的条件数,即使是非常适中的维度。对反演例程的一个很好的测试是看它可以反转多大的希尔伯特矩阵,以及矩阵与身份的计算逆时间有多接近。