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 只是一个舍入误差!
我目前正在学习线性代数,并且正在尝试在代码中尝试所学内容。我在 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 只是一个舍入误差!