我試圖用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約束,以便得到不同的解決方案而不是零矩陣。
謝謝。
我試圖用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約束,以便得到不同的解決方案而不是零矩陣。
謝謝。
您通過強制解決方案的項爲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]
如果對所有x矩陣Ax = 0,x的第一個元素是0?此外,說「我們知道第一個是1」應該是「我們強加第一個是1」。 –
公平點。我想這使得這個問題重複http://stackoverflow.com/questions/5889142/python-numpy-scipy-finding-the-null-space-of-a-matrix然後。 – Elliot
是的,我將它標記爲重複。好主意,但 –
符號'| x | = 1'是否意味着'x'的規範應該是一個?如果是這種情況,那麼'A'的零空間中的任何標準化的'x'都是有效的解決方案。 – Stelios
[Python(NumPy,SciPy),找到矩陣的空間空間的可能的重複](http://stackoverflow.com/questions/5889142/python-numpy-scipy-finding-the-null-space-of-a -matrix) –
如果矩陣滿秩,則不能獲得零矩陣以外的任何東西 – percusse