线程“main”中的exceptionjava.lang.RuntimeException:Matrix是单数

我只想在JAMA文档之后创建一个3×3矩阵的逆矩阵。 但每次它给我以下错误 –

Exception in thread "main" java.lang.RuntimeException: Matrix is singular

在这方面有人可以帮助我吗?

如果你可以计算矩阵的行列式,你会发现它是零(或接近它)。

您可以通过检查来判断。 如果一行与另一行成比例,则矩阵不可逆。

3×3很容易手动反转。 试一试,看看哪里出错了。

尝试SVD解决方案。 它会告诉你矩阵的零空间是什么。

Jama的文件不是很好。

事实上,如果你查看源代码,你会发现Matrix.inverse()最终调用LUDecomposition.solve(...) ,代码说:

  270 /** Solve A*X = B 271 @param BA Matrix with as many rows as A and any number of columns. 272 @return X so that L*U*X = B(piv,:) 273 @exception IllegalArgumentException Matrix row dimensions must agree. 274 @exception RuntimeException Matrix is singular. 275 */ 277 public Matrix solve (Matrix B) { 278 if (B.getRowDimension() != m) { 279 throw new IllegalArgumentException("Matrix row dimensions must agree."); 280 } 281 if (!this.isNonsingular()) { 282 throw new RuntimeException("Matrix is singular."); 283 } 

正如维基百科所说:

“在线性代数中,n乘n(正方形)矩阵A称为可逆或非奇异或非简并,如果存在n×n矩阵B,则AB = BA = I n ,其中I n表示n-by -n单位矩阵和使用的乘法是普通矩阵乘法。“

简而言之,单一意味着不可逆转。


如果您对JAMA不满意,请查看Apache Commons Maths库,特别是Linear Algebra模块 。

好吧,它告诉你需要知道的一切:你试图反转的矩阵是单数。

奇异矩阵是不可逆的。

如果您认为您的矩阵不是单数,请发布它,我们将看一看。