【发布时间】:2020-06-22 12:04:54
【问题描述】:
我目前正在学习线性代数,我正在尝试尝试我在代码中学到的东西。我在 python 中使用 numpy。
问题在于,正如您所知,任何矩阵乘以它的逆矩阵都会得到单位矩阵。
但在这里它不会发生。
B= np.array([[3.0, 0.0, 2.0], [2.0, 0.0, -2.0], [0.0, 1.0, 1.0]])
Binv = np.linalg.inv(B)
Bbits= np.dot(B,Binv)
我已经手动尝试过了。它正确地得到逆,但点积不是。 查看 Bbits 的输出
[[ 1.00000000e+00 0.00000000e+00 -5.55111512e-17]
[ 0.00000000e+00 1.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
【问题讨论】:
-
差异很小(1e-17),可能是四舍五入错误
-
肯定会舍入错误。您可以使用
np.allclose检查您的最终矩阵是否在某个容差范围内与单位矩阵匹配:np.allclose(Bbits,np.eye(3))将使用默认容差检查Bbits是否匹配相同大小的单位矩阵np.eye(3),请参阅docs.scipy.org/doc/numpy/reference/generated/… 了解如何控制公差。
标签: python numpy linear-algebra