numpy 的问题点积不起作用

Problem with numpy the dot product does not work

我目前正在学习线性代数,并且正在尝试在代码中尝试所学内容。我在 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]]

你的结果是正确的!

运行 与您提供的代码完全相同,但添加了 np.around()

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.around(np.dot(B,Binv),2)

我们得到以下输出:

array([[ 1.,  0.,  0.],
       [-0.,  1.,  0.],
       [ 0.,  0.,  1.]])

在您的结果中,-5.55111512e-17 只是一个舍入误差!