【发布时间】:2020-08-29 15:49:44
【问题描述】:
根据此代码。它可以使用Apache Commons Math库找到伪逆。
RealMatrix Swinv = new LUDecomposition(Sw).getSolver().getInverse(); // MATLAB: Swinv = pinv(Sw)
但即使Sw 是正方形,我也可以得到异常org.apache.commons.math3.linear.SingularMatrixException:
根据文档,这个getInverse() 是伪逆的。
得到分解矩阵的伪逆。
如果存在这样的逆矩阵,则这等于分解矩阵的逆矩阵。
如果不存在这样的逆,则结果具有类似于逆的属性。
特别是,在这种情况下,如果分解的矩阵是 A,那么 方程组 ( A x = b ) 可能没有解,也可能有很多解。如果 它没有解,则伪逆( A^+ )给出 “最接近”的解决方案( z = A^+ b ),意思是( \left \| A z - b \right \|_2 ) 被最小化。如果有很多解,那么 ( z = A^+ b ) 是最小的解决方案,意思是 ( \left \| z \right \|_2 ) 是 最小化。
那么我应该在这里做什么?我想找到伪逆。但我仍然收到错误,因为Sw 是单数。
【问题讨论】:
标签: java matrix apache-commons matrix-inverse apache-commons-math