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