为什么将矩阵乘以numpy的逆不产生单位矩阵?

时间:2019-05-30 12:19:40

标签: python numpy matrix

我将矩阵乘以它的逆,但没有得到标识矩阵。我怀疑浮点舍入存在问题(如果原始矩阵条目只是整数,则缺少浮点舍入吗?)感谢所有帮助。

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]]

1 个答案:

答案 0 :(得分:1)

矩阵的一个属性表明,只有当矩阵的行列式不为零时,矩阵才具有逆形式。您的矩阵 C 的行列式为零,因此它没有逆矩阵。 Numpy 进行计算是因为它不会得到零,而是在实践中近似为零。

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

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