2014-01-14 28 views
3

我想在C中寫一個函數,它返回2×2矩陣的特徵值和特徵向量(以編程方式查找特徵值/向量)。我對這個相當簡單的特徵值沒有問題。但是與特徵向量的鬥爭,這本質上是由聯立方程組來解決的。代碼中的2 * 2矩陣的非平凡特徵向量代碼

如果我嘗試一種方法,如:Solving a simultaneous equation through code 這給了我一個微不足道的解([0,0]),如u = 0和v = 0,在特徵向量的情況下。

例如。如果我的矩陣是MAT = [[3,2],[2,1]],即。 a = 3,b = 2,c = 2和d = 1,並且u = 0和v = 0,在上述鏈接中建議的方程y =(v-uc/a)/(dbc/a)和x =(uc/a -bc/a * y)/ c將等於解[0,0],即。微不足道的解決方案。

而且,這個看似提供了一個答案,但我卻無法產生與對等式同意一個例子: http://www.math.harvard.edu/archive/21b_fall_04/exhibits/2dmatrices/index.html

它也似乎並沒有涵蓋所有的情況下,怎麼樣的情況下,當b和c不等於零

+0

你能提供一個具體的例子,你可以得到零值特徵向量嗎? –

+1

如果它們都是非零,那麼兩個公式矢量都是相同的,不是嗎?你檢查了嗎? – dvvrd

回答

3

對於2x2矩陣的情況,有一個簡單的解析解。

您的功能應該實現在this鏈接上提供的解決方案,以及三個子類。您可能需要將特徵向量歸一化爲單位模數,作爲最後的額外步驟。

+0

但是,如果b和c都不等於零,那又如何呢? – bluefocs

+0

這種情況屬於鏈接的第一種情況,'c'不爲零。或者到第二個,'b'不爲零。 – gg349

0

一旦你有特徵值,特徵向量很容易得到。

如果你的矩陣是對稱的,我會推薦一個像Jacobi這樣的迭代方法。