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

你给出的方程(x=A b)只是一个矩阵乘法,而不是一组线性方程来解决(A x=b),你会使用np.linalg.solve。要获得x,您需要做的只是简单地使用np.dot(A.dot(b))。

您的矩阵是奇异的,这可以通过将其总和为零的列相加来查看。在数学上,该系统只能解决非常小的一组b向量。

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

相关内容

  • 没有找到相关文章

最新更新