我的朋友和我在Python 2
和Python 3
中执行了这些代码:
import numpy as np
mat = np.array([[1,0,0],[-1,3,3],[1,2,2]])
np.linalg.inv(mat)
这将返回:
array([[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 1.50119988e+16, 6.00479950e+15, -9.00719925e+15],
[ -1.50119988e+16, -6.00479950e+15, 9.00719925e+15]])
考虑到以下内容,这很奇怪:
np.linalg.matrix_rank(mat)
返回2
,因此表明矩阵不可逆。
从这个线程中我了解到,这可能是由于numpy和python处理浮点数的方式,尽管我的矩阵由整数组成。
是否有特殊原因导致mat
破坏了numpy的逆实现?
numpy.linalg.linalg.LinAlgError: Singular matrix
。 - DYZ1.12.0
重现OP的结果。 - Akavall