Numpy linalg:线性系统,结果不太可能

时间:2017-02-20 12:47:24

标签: python numpy linear-algebra equation

考虑以下矩阵方程:

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 个答案:

答案 0 :(得分:2)

您给出的等式(x=A b)只是一个matrix multiplication而不是一组线性方程式(A x=b),您可以使用np.linalg.solve 。在案例中获取x所需要做的只是使用np.dotA.dot(b))。

答案 1 :(得分:1)

你的矩阵是单数的,可以通过添加总和为零的列来看出。从数学上讲,这个系统只能解决一小组b向量。

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