2011-11-24 19 views
5

在我的Python代碼,我想解決多項式特徵值問題:如何求解python中的多項式特徵值?

A0 + lambda*A1 + lambda^2*A2 + lambda^3*A3 + .... = 0 

其中An密集矩陣,lambda是一個常數。在matlab中可以使用polyeig function來解決這個問題。看來在scipy中沒有相應的功能。到目前爲止,我能想到的唯一方法就是形成相應的伴隨矩陣。這產生了一個等價的線性特徵值問題,可以給現有的scipy求解器,但它更大,我相信它可能是非常有條件的。

任何人都可以提出一個現有的,開源的或免費提供的庫,可以解決這個問題嗎?我對Fortran庫很滿意,它可以通過f2py或C/C++庫鏈接到cython。

編輯:對於任何想解決python中的非線性特徵值問題的人來說,我自己寫的解決這個問題的代碼可以找到here。請注意,我處理非線性特徵值問題的更一般情況(就其對lambda具有非線性依賴性而言)。要了解該方法,請閱讀代碼註釋中提到的論文。

回答

2

This discussion指向將多項式特徵值問題轉化爲廣義特徵值問題的一般方法,該問題稍後可以使用scipy's linear algebra函數求解。希望這可以幫助!

+0

這是我已經知道的方法,如果我找不到更好的東西,我會使用它。這是低效率的,可能有病,所以我只能作爲最後的手段。不過謝謝。 – DaveP

+0

好的,很抱歉!這只是討論中的一個人提到它是matlab函數的基礎,所以我認爲它是高效的。 – matehat