首页 > 解决方案 > 为什么将矩阵乘以它与numpy的逆矩阵不产生单位矩阵?

问题描述

我将一个矩阵乘以它的逆矩阵,而不是得到一个识别矩阵作为回报。我怀疑浮点舍入存在问题(或者如果原始矩阵条目只是整数则缺少?)感谢所有帮助。

C = np.array([[5,5,5],[4,5,6],[7,8,9]])
print("Original matrix")
print(C)
print("Inverse matrix")
D = np.linalg.inv(C)
print(D)
print("Identity matrix")
print((C.dot(D)))
Original matrix
[[5 5 5]
 [4 5 6]
 [7 8 9]]
Inverse matrix
[[-6.75539944e+14 -1.12589991e+15  1.12589991e+15]
 [ 1.35107989e+15  2.25179981e+15 -2.25179981e+15]
 [-6.75539944e+14 -1.12589991e+15  1.12589991e+15]]
Identity matrix
[[ 0.5  -2.    1.75]
 [ 0.    0.    0.5 ]
 [ 0.5   0.    2.75]]

标签: pythonnumpymatrix

解决方案


矩阵属性之一说,如果矩阵的行列式不为零,则矩阵仅具有逆形式。您的矩阵 C 的行列式为零,因此它没有逆矩阵。Numpy 进行计算是因为它没有得到零,而是一个在实践中为零的近似值。

>>> np.linealg.det(C)
4.440892098500603e-15

在这种情况下,行列式的值可以被认为是零。


推荐阅读