0

我到处寻找这个,但我在某个地方错了。在我的 Java 程序中,我创建了几个二维数组。现在,我需要用以前的,比如,逆,转置,乘法,左除法甚至更多来形成新的二维数组。其中一些(简单)是我自己创建的,但左除法,右除法,逆我没有。

通过使用像 Jama 这样的库,会出现一些问题。

java.lang.RuntimeException: Matrix is rank deficient.

我这样编码:

Matrix Am=new Matrix(A);
Am=Am.inverse();

A是 2D Array (mxn),Am是从 2DArray A 创建的新矩阵。

我试图这样做以获得左除法,但我无法先求解矩阵逆。

我的错误在哪里?有人知道另一个库从 2DArray 转换为 Matrix,然后用它做更难的矩阵运算(左 div,inv ...)吗?

编辑

我在这个矩阵上使用逆来得到 A\P (可以计算为我在某处看到的 inverse(A)*P)。你知道如何用 Jama 获得 A\P 吗?这是我的主要问题,左师。

4

4 回答 4

1

对于矩阵库,您可以检查这个问题

但是对于你写的代码,没有人可以说什么,你必须把代码本身包含进来,才能看到问题出在哪里。

于 2014-02-25T23:52:36.277 回答
0

正如您的例外所说,您的矩阵秩不足,在数学上不可能计算逆矩阵。在这些事务中,计算机并不高于数学。

这可能有多种原因。首先,逆矩阵只存在于平方输入,即格式 nx n。你没有表明是这种情况。存在可以为所有矩阵构造的伪逆的想法。

但即使对于方阵,秩也可能不足,即矩阵可能是奇异的。确切地说,如果行列式为零,就会发生这种情况。在计算方面,这也可能发生在奇异值范围很广的病态矩阵上。

你能提供出现问题的矩阵吗?

于 2014-02-25T23:52:37.743 回答
0

如果矩阵的 Rank <= min(numOfRows, numOfColumns) 则称其秩不足,并且无法计算此类矩阵的逆矩阵。

于 2014-02-25T23:53:30.417 回答
0

A 是 2D Array (mxn),Am 是从 2DArray A 创建的新矩阵。

确保您的矩阵是二次矩阵 (nxn),否则未定义逆矩阵。

如果无法避免矩阵不是全秩或二次矩阵,则可以考虑使用伪逆。

于 2014-02-25T23:53:35.360 回答