2011-08-18 65 views
-2

我試圖解決一個方程,但我不知道如何做到這一點。我有一個向量x實際上是矩陣類型,我想解決方程x.transpose()* v = 0其中v是另一個向量在Python中求解方程

有人可以幫助我嗎?

我感謝你在

+0

對不起,我的問題不是很確切,我已經知道x,我想知道向量v!我知道有很多可能的解決方案,但是如何用python編程語言獲得一個解決方案? – Florian

+0

'x'是什麼形式?它是一個數組嗎?一個列表?一個'numpy'對象?還有別的嗎? –

+2

確實。有些代碼,ANY代碼會有助於我們指出正確的方向。理想情況下,看到你的嘗試會很有幫助,所以我們知道你的方向。但至少我們需要查看初始化x的代碼,以便我們知道我們正在處理的對象類型以及可以管理的最簡單情況的手工回答,以便我們可以查看您要查找的最終產品。您可以編輯您的問題以添加代碼,因此很容易找到,頂部有一個「代碼塊」格式按鈕,因此它可以保留您的縮進等。 – Jonathanb

回答

1

x.T*v是書寫載體xv之間的dot product的另一種方式,所以它聽起來像你想找到一個向量v這是orthogonalx。對於一般情況,存在無限多的解決方案(在三維中,想象在與x垂直的平面中的任何矢量v)。

您已經於您的評論說,你知道有很多可能的解決方案,你怎麼能得到一個,所以這裏是一個適合你:

v = 0 
2

採取任何載體都和項目它進入xorthogonal complement

Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy 
>>> x = numpy.matrix([1, 3.14, 2.73]).T 
>>> P = x * x.T/(x.T * x) # projector onto the space spanned by x 
>>> Pperp = numpy.identity(3) - P # projector onto x's orthogonal complement 
>>> Pperp * x 
matrix([[ 0.00000000e+00], 
     [ 0.00000000e+00], 
     [ -2.22044605e-16]]) 
>>> y = numpy.matrix(numpy.ones((3,1))) 
>>> yperp = Pperp * y 
>>> yperp 
matrix([[ 0.62484642], 
     [-0.17798225], 
     [-0.02416928]]) 
>>> x.T * yperp 
matrix([[ -4.16333634e-16]]) 

書面,這是一個相當瀟灑,並給出了相當任意的解決方案,但同樣的想法可以建立找到了一套所有解決方案的基礎載體。