考虑以下矩阵方程:
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
向量。
你得到的解决方案很可能只是数字噪声。