2017-02-20 65 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载体。

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