Eigenwerte beliebig grosser Matrixen
-
SERVUS.
ich habe eine frage zur berechnung der eigenwerte einer matrix A beliebiger grösse. und zwar will ich das ganze mittels C++ in einen code umsetzen. ich habe allerdings keine ahnung, wie ich das polynom unbekannter ordnung, dass ich bei der berechnung der determinaten |A-(lampta)*E| erhalte, nach lampta auflösen kann.
danke für eure vorschläge.
STICK.
-
das kannst du nur näherungsweise bestimmen, zB mit dem newton-verfahren:
http://de.wikipedia.org/wiki/Newton-Verfahren
-
Für die numerische Lösung von EW-Problemen sollte man nicht die NST des char. Polynom suchen. Dafür gibts tollere Verfahren. Es gibt ganze Bücher zu diesem Thema. Zu meiner Schande kenne ich aber nur die Power-Iteration bzw. Potenzenmethode (ist aber auch doof) oder die Rayleigh-Quotient-Iteration (konvergiert kubisch gegen ein Eigenwert/Eigenvektor-Paar, je nach Startwert findet man andere Paare) Es gibt natürlich auch Verfahren, die direkt alle EW berechnen können.
Für große Matrizen ist das allerdings i.A. ein extrem unangenehmes, d.h. rechenzeitintensives Problem.edit: In der Wiki findest du z.b. noch den QR-Algorithmus: http://de.wikipedia.org/wiki/QR-Algorithmus
-
stick_thai schrieb:
lampta
lambda, das heißt lambda!!! *gänsehaut krieg*
-
Es gibt da für sehr große Matrizen auch noch das Arnoldi-Verfahren oder als Spezialfall für hermitesche Matrizen das Lanczos-Verfahren. Die sind aber etwas aufwendiger in der Implementierung.
-
Numerical Recipies kennt die Antwort als C code...