14

我不确定 python-numpy 是否可以帮助我们确定矩阵是否是奇异的。我试图根据行列式做出决定,但 numpy 正在产生一些 1.e-10 左右的值,并且不确定我们应该为临界值选择什么。

4

1 回答 1

23

np.linalg.matrix_rank与默认容差一起使用。关于什么是考虑奇异值零的适当截止值,对该函数的文档字符串进行了一些讨论:

>>> a = np.random.rand(10, 10)
>>> b = np.random.rand(10, 10)
>>> b[-1] = b[0] + b[1] # one row is a linear combination of two others
>>> np.linalg.matrix_rank(a)
10
>>> np.linalg.matrix_rank(b)
9
>>> def is_invertible(a):
...     return a.shape[0] == a.shape[1] and np.linalg.matrix_rank(a) == a.shape[0]
... 
>>> is_invertible(a)
True
>>> is_invertible(b)
False
于 2013-07-29T18:55:02.990 回答