2013-02-27 120 views
4

我對lapack有一個相當不尋常的挑戰,我花了數小時尋找解決方案。使用預定的特徵值計算lapack中的特徵向量?

我有一個傳統形式(A - x B = 0)的廣義特徵值問題。通常我會使用例如hegvx或hegvd來計算特徵值和特徵向量。

但是我現在面臨的挑戰是,現在我已經知道問題構造的特徵值,因此我只需要一個有效的程序來計算特徵向量?

任何人都有這個黑客?

+0

你想要計算矩陣A-xE的空間(aka.kernel),但我不知道LAPACK(或BLAS?)例程。 – MvG 2013-02-27 21:18:10

回答

3

鑑於廣義本徵值問題

(A - Y B)x = 0時

和特徵值炔:

(A - ŸÑ B)X Ñ = 0

我們知道A,B和YN,所以我們可以形成一個新的矩陣道道

C^Ñ = A - ýÑ

ÇÑ X Ñ = 0

可以用任何線性代數求解器分別爲每個特徵值解決這個問題。按照LAPACK docs on linear equations,對於一般的矩陣,雙精度,你可以使用DGETRS

編輯簡併徵值:

矩陣的零空間道道就是我們解決了這裏(如MVG評論)。如果

ÇÑ J = 0和
ÇÑ K = 0

(即簡併的e-瓦爾斯)然後給予ĴŤ K = 0(均仍是AB的特徵向量系統),我們可以說

呼叫的çñ一個行r:

RK = RK - J 牛逼 .k =(r-j T)。ķ

從而形成了矩陣Ĵ,它的行各自是ĴŤ(必須有這樣的名稱,但不知道它):

(C Ñ - J)K = 0

定義

d NJ = C ñ - J

現在解決爲新矩陣D nj。通過構造,這將是具有相同退化特徵值的原始矩陣的新的正交特徵向量。

+0

我會試試這個,但是如果效率很高,時間會顯示。在我的頭頂,你提出的方法面臨的巨大挑戰將是退化的特徵值。 – Smidstrup 2013-06-06 13:44:01

+0

我會在帖子中回覆以確保清晰度和符號。 – 2013-06-07 10:48:24

相關問題