2016-10-10 14 views
0

私は次の制約を持つ均質なシステム次解くためにnumpy.linalg.lstsqを使用しようとしている:私はちょうど純粋に呼び出す場合解決均一系方程式Ax = 0使用してnumpyの

Ax = 0 
    |x| = 1 

numpy.linalg.lstsq(A, np.zeros((A.shape[0],1), dtype=np.float)) 

解はゼロの列行列になります。 | x | = 1という制約をどのように作成してゼロ行列ではなく、別の解を得るかと思います。

ありがとうございました。

+0

表記 'x | = 1'は' x'のノルムが1であることを意味しますか?これが当てはまる場合、 'A 'のヌルスペースにおける正規化された' x'は有効な解です。 – Stelios

+0

[Python(NumPy、SciPy)]の可能な複製、行列の空白を見つける](http://stackoverflow.com/questions/5889142/python-numpy-scipy-finding-the-null-space-of-a -matrix) –

+0

行列がフルランクの場合、ゼロ行列以外を得ることはできません – percusse

答えて

1

解の項を強制的に1にして、残りの線形システムを解くことによって制約を設定します。いったんソリューションがあれば、正規化することができます。

import numpy as np 

a = np.arange(9).reshape(3, 3) 
b = a[:, 0].copy() 
# we impose a condition that first term be 1, 
x = np.linalg.lstsq(a[:, 1:], -b)[0] 
x = np.r_[1, x] 
x /= np.linalg.norm(x) 
print(a.dot(np.r_[1, x])) # [0, 0, 0] 
+0

すべてのx st Ax = 0、xの最初の要素は0ですか?また、「最初は1であることを知っている」と言うのは、「最初の1つは1である」とする必要があります。 –

+0

フェアポイント。私はこれがこの質問をhttp://stackoverflow.com/questions/5889142/python-numpy-scipy-finding-the-null-space-of-a-matrixの繰り返しにすると思う。 – Elliot

+0

はい、重複としてフラグを立てています。良いアイデア、でも –

関連する問題