我正在尝试找到给定矩阵的零空间(Ax=0的解空间)。我已经找到了两个例子,但似乎都无法工作。此外,我不明白他们是如何得出这些结果的,因此我无法进行调试。希望有人能够帮助我完成这个过程。
文档页面(
感谢所有提供帮助的人!
以下是我的示例矩阵,与wikipedia example相同:
文档页面(
numpy.linalg.svd
和numpy.compress
)对我来说很难理解。我学会了通过创建矩阵C = [A|0]
,找到简化行阶梯形式并按行求解变量来完成此操作。但我似乎无法理解这些示例是如何完成的。感谢所有提供帮助的人!
以下是我的示例矩阵,与wikipedia example相同:
A = matrix([
[2,3,5],
[-4,2,3]
])
import scipy
from scipy import linalg, matrix
def null(A, eps=1e-15):
u, s, vh = scipy.linalg.svd(A)
null_mask = (s <= eps)
null_space = scipy.compress(null_mask, vh, axis=0)
return scipy.transpose(null_space)
当我尝试运行它时,返回一个空矩阵:
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
>>> from scipy import linalg, matrix
>>> def null(A, eps=1e-15):
... u, s, vh = scipy.linalg.svd(A)
... null_mask = (s <= eps)
... null_space = scipy.compress(null_mask, vh, axis=0)
... return scipy.transpose(null_space)
...
>>> A = matrix([
... [2,3,5],
... [-4,2,3]
... ])
>>>
>>> null(A)
array([], shape=(3, 0), dtype=float64)
>>>