2014-02-15 58 views
1

我要編程PCA,但爲此,我必須計算特徵向量和特徵值。如何計算PCA中的行列式?

我的問題是在計算特徵值時,我們必須計算所有矩陣的行列式(對角線值 - 拉姆達)。

在這種情況下,我們可以考慮lamda的數量取決於矩陣維數。

我可以在lamda減去對角線之前爲matriks手動編程。

但是對於lamda減法後的對角線,如何計算?因爲,最終我們必須進行因式分解以獲得lamda(x1,x2,...,xn)。

這裏是例子:

 Matriks =[ 3 5 6 
       5 7 4 
       3 8 9] 

然後我們有一個特徵值。減去給對角線值,在這種情況下,因爲我們還沒有knoen它,我們會考慮它爲x。

 Matrix_New=[ 3-x 5 6 
        5 7-x 4 
        3 8 9-x] 

而決定因素是(3-x)的(7-X)(9-x)。

我已經試過將它相乘,但matlab給出了錯誤。你知道如何計算(3-x)(7-x)(9-x)?

我知道有matlab函數,但我不允許使用它!

我真的任何並欣賞幫助:)

回答

0

可以用象徵性的工具箱,如果你有。

http://www.mathworks.com/help/symbolic/mupad_ref/linalg-det.html

然後,你必須要找到多項式的根。

如果您沒有符號工具箱,我認爲您必須自己編寫程序。一種選擇是使用小擴展。

PS:順便說一下,您的行列式的值是不正確的評估。

+0

問題說「我知道有matlab函數,但我不允許使用它!!」 [原文如此] –

+0

@ user3303896查看更新! – DanielTheRocketMan

+0

我得到了這個例子:A = sym('[w 1; 2 w]'); 求解(det(A),'w')... 但是當我試圖用B = sym('[e 1; 2 r]')解決(det(B),'e','r')它給我錯誤。 'e'表示第一個對角線值-x,'r'表示第二個對角線值-x – user3303896