2011-11-24 10 views
5

W moim kodu Pythona, chciałbym rozwiązać wielomian zagadnienie własne:Jak rozwiązać wielomianową wartość własną w python?

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

gdzie An są gęste macierze, a lambda jest stała. W programie Matlab można rozwiązać ten problem za pomocą polyeig function. Wygląda na to, że nie ma równoważnej funkcjonalności w scipy. Do tej pory jedynym sposobem, w jaki mogę to zrobić, jest stworzenie odpowiedniej macierzy towarzyszącej. Stwarza to równoważny liniowy problem wartości własnej, który można podać istniejącym solwentom, jednak jest on znacznie większy i uważam, że może być dość nieczytelny.

Czy ktoś może zaproponować istniejącą, ogólnodostępną lub ogólnodostępną bibliotekę, która może rozwiązać ten problem? Byłbym całkiem zadowolony z fortranowej biblioteki, która mogłaby być połączona przez bibliotekę f2py lub C/C++, aby połączyć się przez cyton.

Edit: Dla wszystkich zainteresowanych w rozwiązywaniu nieliniowych wartości własnej problemy w Pythonie, kod pisałem sam rozwiązać ten problem można znaleźć here. Zauważ, że mam do czynienia z bardziej ogólnym przypadkiem nieliniowej wartości własnej (w tym sensie, że ma ona nieliniową zależność od lambda). Aby zrozumieć tę metodę, przeczytaj artykuł wymieniony w komentarzach do kodu.

Odpowiedz

2

This discussion wskazuje na ogólną metodę przekształcania wielomianowej wartości własnej w uogólnioną problematyczną wartość własną, którą można później rozwiązać za pomocą funkcji scipy's linear algebra. Mam nadzieję że to pomoże!

+0

To jest podejście, o którym już wiem, i wykorzystam to, jeśli nie znajdę nic lepszego. Jest to nieefektywne i potencjalnie słabe uwarunkowane, więc chciałbym to tylko w ostateczności. Ale i tak dzięki. – DaveP

+0

Ok, przepraszam! Po prostu jeden z rozmówców wspomniał, że to była podstawa funkcji matlab, więc pomyślałem, że to będzie równie skuteczne. – matehat

Powiązane problemy