[英]Inverting a matrix of any size
我正在使用GNU科学库来实现一个计算器,该计算器需要能够将矩阵求幂。 不幸的是,在GSL中似乎没有这样的函数可用于甚至相乘矩阵( gsl_matrix_mul_elements()
函数仅使用加法过程相乘),并且通过扩展,不提高幂。
我希望能够提高到负数能力,这需要具有逆向能力。 从我的搜索中,我找不到任何声音代码来计算任意矩阵的逆数(仅是定义了维数的逆矩阵),而我发现手工制作的指南使用了巧妙的“纸上技巧”在代码中不是很有效。
是否有一种通用算法可用于计算任何大小的矩阵的逆(当然,当无法计算逆时会失败)?
如评论中所述,可以为整数指数的平方矩阵计算矩阵的幂。 A
的n
幂为A^n = A*A*...A
,其中A
出现n
次。 如果B
是的逆A
,则-n
的功率A
是A^(-n) = (A^-1)^n = B^n = B*B*...B
。
因此,为了计算A
的n
幂,我可以使用GSL建议以下算法:
gsl_matrix_set_identity(); // initialize An as I
for(i=0;i<n;i++) gsl_blas_dgemm(); // compute recursive product of A
为了计算B
矩阵,您可以使用以下例程
gsl_linalg_LU_decomp(); // compute A decomposition
gsl_linalg_complex_LU_invert // comput inverse from decomposition
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.