特定の行列のヌル空間 (Ax=0 の解空間) を見つけようとしています。2 つの例を見つけましたが、どちらも動作しないようです。さらに、そこに到達するために彼らが何をしているのか理解できないため、デバッグできません。誰かが私にこれを説明してくれることを願っています。
ドキュメント ページ ( numpy.linalg.svd
、およびnumpy.compress
) はわかりにくいです。C = [A|0]
これを行うには、行列を作成し、縮小された行階層形式を見つけ、行ごとに変数を解決することで学習しました。これらの例では、それがどのように行われているかを理解できないようです。
助けてくれてありがとう!
ウィキペディアの例と同じである私のサンプルマトリックスは次のとおりです。
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)
>>>