大矩阵求逆方法

Ism*_*ush 3 c++ algorithm math linear-algebra matrix-inverse

嗨,我一直在做关于矩阵求逆(线性代数)的研究,我想用C++模板编程算法,我发现有很多方法,如:Gauss-Jordan消除或LU分解,我发现函数LU_factorize(c ++ boost library)

  1. 从程序员或数学家的角度来看,我想知道是否有其他方法,哪一个更好(优点/缺点)?

  2. 如果没有其他更快的方法,那么在boost库中已经存在(矩阵)反转功能?,因为我搜索了很多,没有找到任何.

Ste*_*non 5

如您所述,标准方法是执行LU分解,然后求解身份.这可以使用LAPACK库来实现,例如,使用dgetrf(factor)和dgetri(计算逆).大多数其他线性代数库具有大致相同的功能.

当矩阵是单数或近似单数时,有一些较慢的方法会更优雅地降级,并且由于这个原因而被使用.例如,如果矩阵是可逆的,则Moore-Penrose伪逆等于逆,并且即使矩阵不可逆,通常也是有用的; 它可以使用奇异值分解来计算.

  • @ismail:当然,但这实际上并不重要.这是一个*库*; 如果它实际上是用C或Fortran或Prolog或Scheme实现的,那么你可以用C或C++代码调用它. (2认同)