我认为使用两种方法(In[4]
和In[5]
)应该得到相同的结果。怎么了?我可以告诉正确的是In[5]
。
In [1]: import numpy as np
In [2]: A = np.mat('1 2 3; 4 5 6; 7 8 9')
In [3]: B = np.mat('10;20;30')
In [4]: A.I*B
Out[4]:
matrix([[ 64.],
[-64.],
[ 16.]])
In [5]: np.linalg.solve(A,B)
Out[5]:
matrix([[-0.93333333],
[ 1.86666667],
[ 2.4 ]])
答案 0 :(得分:1)
首先,我相信A是奇异的,所以这是行不通的,您能显示出您正在使用的实际矩阵吗?我已经测试了以下内容:
A = np.mat('1 0 3; 0 1 2; 0 3 1')
B = np.mat('10;20;30')
In [15]: np.linalg.solve(A,B)
Out[15]:
matrix([[-8.],
[ 8.],
[ 6.]])
In [16]: A.I * B
Out[16]:
matrix([[-8.],
[ 8.],
[ 6.]])
它有效