2017-02-20 52 views
2

考慮下面的矩陣方程線性系統:NumPy的linalg:不太可能的結果

x=Ab 

其中:

In[1]:A 
Out[1]: 
matrix([[ 0.477, -0.277, -0.2 ], 
     [-0.277, 0.444, -0.167], 
     [-0.2 , -0.167, 0.367]]) 

In[2]: b 
Out[2]: [0, 60, 40] 

怎麼來的,當我使用numpy.linalg()我得到下面的結果?

import numpy as np 
x = np.linalg.solve(A, b) 
res=x.tolist() 
# res=[1.8014398509481981e+18, 1.801439850948198e+18, 1.8014398509481984e+18] 

這些數字很大!這裏有什麼問題?我懷疑A是錯誤的形式,因爲它在我的等式中乘以b,而numpy.linalg()認爲A好像它乘以x

回答

2

你給什麼作爲方程式(x=A b)只是一個matrix multiplication,而不是一個線性方程組的求解(A x=b),而您將使用np.linalg.solve。你需要做的是在你的情況下獲得x只需使用np.dotA.dot(b))。

1

您的矩陣是單數的,可以通過將它的列總和爲零來看到。在數學上,這個系統只適用於一小組b載體。

你得到的解決方案很可能只是數字噪音。