即使行列式为零,我也要求矩阵的逆。我尝试使用以下代码:
import numpy as np
from scipy import linalg
matrix=np.array([[5,10],[2,4]])
print(linalg.det(matrix))
linalg.inv(matrix)
答案 0 :(得分:0)
这里的问题是不同的例程如何计算矩阵行列式之间的脱节。例如:
import numpy as np
matrix=np.array([[5.,10.],[2.,4.]])
print(np.linalg.det(matrix))
print(np.linalg.slogdet(matrix))
try:
invmatrix=np.linalg.inv(matrix)
except np.linalg.LinAlgError:
print("inversion failed")
不产生任何异常并打印:
-1.1102230246251625e-15
(-1.0, -34.43421547668305)
即由于累积的浮点舍入误差,不使用行列式的直接代数计算(scipy.linalg.det
会产生非零行列式)。因此,标准的线性代数例程将矩阵视为非奇异的,并且由于极差的条件问题而产生了不正确的逆。
(使用numpy版本1.15.4和scipy版本1.1.0测试)