【发布时间】:2020-12-20 01:10:35
【问题描述】:
我遇到了一个有趣的 python 问题。我试图反转 3x3 矩阵 A
[[1 2 3]
[4 5 6]
[7 8 9]]
然后将其与初始值相乘:A⁻ⁱA。而不是单位矩阵(所有对角线元素都等于一个)我有这个:
[[ 12. 8. 8.]
[-16. -8. 0.]
[ 4. 0. 0.]]
仅在这种特定情况下才会出现问题。具有其他值的矩阵会给出正确的结果。代码如下:
import numpy as np
np.set_printoptions(precision=2,suppress=True)
A = np.array([1,2,3,4,5,6,7,8,9])
A = A.reshape(3,3)
print(A)
print(np.linalg.det(A))
print(np.matmul(np.linalg.inv(A),A))
输出:
[[1 2 3]
[4 5 6]
[7 8 9]]
6.66133814775094e-16
[[ 12. 8. 8.]
[-16. -8. 0.]
[ 4. 0. 0.]]
【问题讨论】:
-
矩阵的行列式为 0,因此不可逆。 Python 3.6 在尝试反转时告诉我很多:
numpy.linalg.LinAlgError: Singular matrix -
这是一个奇异矩阵。它没有逆。
标签: python numpy linear-algebra