考虑以下矩阵方程:
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
。
答案 0 :(得分:2)
您给出的等式(x=A b
)只是一个matrix multiplication而不是一组线性方程式(A x=b
),您可以使用np.linalg.solve
。在案例中获取x
所需要做的只是使用np.dot
(A.dot(b)
)。
答案 1 :(得分:1)
你的矩阵是单数的,可以通过添加总和为零的列来看出。从数学上讲,这个系统只能解决一小组b
向量。
你得到的解决方案很可能只是数字噪音。