我到处找这个,但我错了。在我的Java程序中,我创建了几个2D数组。现在,我需要形成新的二维数组,比如,逆,转置,乘法,左除法,甚至更多。其中一些(简单)是我自己创造的,但左除法,右除法,逆除法,我没有。
通过使用像Jama这样的libs,出现了一些问题。
java.lang.RuntimeException: Matrix is rank deficient.我把它编码如下:
Matrix Am=new Matrix(A);
Am=Am.inverse();A是二维数组(m ),Am是从2DArray A创建的新矩阵。
我试着这样做,得到左除法,但我不能先求矩阵逆。
我的错误在哪里?是否有人知道另一个库可以从2DArray转换为矩阵,然后再执行更难的矩阵操作(左div,inv.)用它?
编辑
我用这个矩阵上的逆得到A\P (可以像我在某个地方看到的那样被计算为逆(A)*P)。你知道怎么和Jama取得A\P吗?这是我的首要问题左组。
发布于 2014-02-25 23:52:36
对于矩阵库,可以检查此问题:
但是对于您编写的代码,没有人能说出任何东西,您必须包括代码本身,以查看问题所在。
发布于 2014-02-25 23:52:37
正如你的例外说,你的矩阵是秩缺陷,它是数学上不可能计算一个逆矩阵。在这些事情上,计算机并非凌驾于数学之上。
这可能有多种原因。首先,逆矩阵只存在于正方形输入,即格式not,您没有表明情况是这样的。存在着对所有矩阵都可以构造伪逆的思想.
但即使对于方阵,秩也是有缺陷的,即矩阵可以是奇异的。确切地说,如果行列式为零,就会发生这种情况。在计算方面,这也可能发生在病态矩阵的奇异值范围很宽的情况下。
你能提供发生这个问题的矩阵吗?
发布于 2014-02-25 23:53:30
如果矩阵具有秩<= min(numOfRows,numOfColumns),则称其秩亏,且不可能计算该矩阵的逆。
https://stackoverflow.com/questions/22028756
复制相似问题