[c] Eigenwerte und -vektoren berechnen

Onkel Schuppig

Erfahrenes Mitglied
Hallöchen allerseits,
ich habe eine symmetrische 3 x 3 - Matrix mit doubles und möchte davon die Eigenwerte und -vektoren bestimmen. Da die Matrix symmetrisch sind, bekomme ich auf jeden Fall 3 reelle Eigenwerte. Die auszurechnen, klappt auch schon.

Hat jemand einen C- oder CPP-Code, der die Eigenvektoren berechnet? Der Aufwand liegt meines Erachtens in den Sonderfällen: 2 Eigenwerte können gleich sein, einige oder alle Matrix-Einträge können Null sein, usw. Im Internet find ich nix außer Theorie.
 
Ich habe gerade noch mal die Wiki-Seite zu Eigenvektoren überflogen. Der eigentliche Aufwand ist das Lösen eines lin. Gleichungssystems. Vielleicht hilft es eine Bibliothek dafür zu suchen oder auch konkrete Verfahren zu suchen, wie Gauß Elimination. Du solltest auch unbedingt auf Englisch suchen.
Da findet sich bestimmt was, weil du mit Sicherheit nicht der einzige bist, der ein lin. Gleichungssystem lösen will :)

Der Aufwand liegt meines Erachtens in den Sonderfällen: 2 Eigenwerte können gleich sein, einige oder alle Matrix-Einträge können Null sein, usw. Im Internet find ich nix außer Theorie.
Aus 3 Variablen zu überprüfen, ob zwei gleich sind, sollte kein Problem darstellen. Oder bezieht sich das Problem auf die nicht- Vergleichbarkeit von double-Werten?
Warum sind die Nullen problematisch?
Wenn das soweit die einzigen Probleme sind, dann halt ich es für sinnvoll, dass Programm erstmal soweit zu schreiben, wie es geht und dann kann man nochmal einen Blick drauf zu werfen.
 
Die Wiki-Seiten kenne ich. Auch diverse Mathe-Seiten. Ich bin ja schon dabei, zu programmieren. Hätte nur nicht gedacht, dass es so ein großer Aufwand ist.

Beispiel:
Zwei Eigenwerte sind gleich. Dann hat man 2 gleiche lineare Gleichungssysteme, also zwei gleiche Eigenvektoren. Das kann ja wohl nicht sein, da Eigenvektoren bei sym. Matrizen senkrecht aufeinander stehen müssen.

Dann das Pivoting: Die Matrix ist entsprechend umzusortieren, damit keine Nulleinträge auf der Diagonalen liegen.

Ich hatte die stille Hoffnung, dass jemand sagt: "Kein Problem. Kuckst du hier Code-Schnipsel." ;-)
 
Zurück