我正在实现一个
LinearTransformation
类,它继承自numpy.matrix
并使用numpy.matrix.I
计算变换矩阵的逆矩阵。
有没有人知道在尝试计算逆矩阵之前,numpy是否检查矩阵的正交性?我之所以问是因为我的大部分矩阵(但不是全部)都是正交的,我想知道是否应该在尝试反转之前实现一些快速的正交性检查。
LinearTransformation
类,它继承自numpy.matrix
并使用numpy.matrix.I
计算变换矩阵的逆矩阵。
有没有人知道在尝试计算逆矩阵之前,numpy是否检查矩阵的正交性?我之所以问是因为我的大部分矩阵(但不是全部)都是正交的,我想知道是否应该在尝试反转之前实现一些快速的正交性检查。
实际上并不是这样的!
numpy.linalg.inv(A)
实际上会调用 numpy.linalg.solve(A,I)
,其中 I
是单位矩阵,并且 solve 使用了 lapack 的 LU 分解算法。
也就是说,最终它执行的是高斯消元法,在默认情况下无法检测正交性。
我认为像 A * A.T = I
这样的矩阵乘积检查是不可行的,因为计算量很大。
linalg.cho_solve(C,I)
吗? - dashesy