Lineare-Algebra-Bibliothek?



  • Hallo, kennt irgendjemand eine gute Bibliothek zur linearen Algebra? Ich suche etwas zum Matrizen invertieren (Größe: 80x80) Gauß-verfahren hab ich selber, aber das ist numerisch zu instabil. Deshalb suche ich eher so was wie die Cholesky-Zerlegung. Kennt jemand eine frei verfügbare Bibliothek (von irgendwelchen Uni's etc.)

    Danke im vorraus!



  • Hmm... Matrizen invertieren ist numerisch immer instabil. Für Cholesky muß die Matrix ausserdem positiv definit sein, und wie willst Du mit Cholesky eine Matrix invertieren?? Du könntest mit der Cramer-Regel rangehen, aber stabiler wird das trotzdem nicht. 😉

    Gruß - Xaron



  • Aber LR-Zerlegung geht immer. Ist zwar auch nicht besonders stabil, aber mit Pivot geht's. (Immerhin halbwegs).

    Uns haben sie mal gesagt: "Merken Sie sich folgendes: Invertieren Sie nie eine Matrix! Können Sie sich das merken? Meistens kommt man ohne aus."

    MfG Jester



  • was ist mit dem guten alten Gauß ?



  • Der gute alte Gauß mit Diagonalstrategie ist numerisch wirklich zu instabil. Außerdem muss die Matrix das schwache Zeilensummenkriterium erfüllen damit sie regulär ist und die Diag-strategie durchläuft.

    Numerische schon besser ist die Spaltenmaximumstrategie. (Hier reicht schon regularität zum lösen)
    Noch besser ist die relative Spaltenmaximumstrategie, damit sollte es keine Probleme mehr geben.

    und wie willst Du mit Cholesky eine Matrix invertieren??

    Eine Matrix A kannst du so invertieren:
    A*x_i = e_i

    e_i ist der i-te Einheitsvektor und x_i die i-te Spalte der invertierten Matrix. D.h. für eine NxN Matrix musst du N Gleichungssysteme dieser Form lösen. Schneller gehts mit LR oder Cholesky Zerlegung (gleiches Prinzip):

    A = C^T * C
    Invertieren:
    C^T * C * x_i = e_i

    Setze: c := C * x_i
    Löse: C^T * c = e_i
    Löse C * x_i = c

    Nur die rechte Seite im System ändert sich. D.h. mit Dreiecksmatrizen die man bei LR oder Cholesky Zerlegung hat geht es schneller.

    [ Dieser Beitrag wurde am 20.02.2003 um 20:29 Uhr von space editiert. ]



  • Nochwas @ Matrizen-Fan:
    Eigentlich hab ich Code für Cholesky Zerlegung und Dreieckslöser schonmal irgendwann geschrieben. Daraus kann man ja eine Funktion zum Invertieren schreiben.
    Übers Wochenende kann ich dir vielleicht was basteln....wenn ich mal Zeit hab 😉



  • Matrizen-Fan schrieb:

    Hallo, kennt irgendjemand eine gute Bibliothek zur linearen Algebra? Ich suche etwas zum Matrizen invertieren (Größe: 80x80) Gauß-verfahren hab ich selber, aber das ist numerisch zu instabil. Deshalb suche ich eher so was wie die Cholesky-Zerlegung. Kennt jemand eine frei verfügbare Bibliothek (von irgendwelchen Uni's etc.)

    Danke im v******!

    Eine relativ neue Lineare Algebra ist unter http://sourceforge.net/linearealgebral erhältlich. Matrizen invertieren ist noch nicht umgesetzt. Cholesky-Zerlegung auch nicht. Zunächst folgt Householder und SVD. Unterstützung bei der weiteren Umsetzung der Bibliothek ist gewünscht. 😃



  • http://www.gnu.org/software/gsl/

    * LU Decomposition
    * QR Decomposition
    * QR Decomposition with Column Pivoting
    * Singular Value Decomposition
    * Cholesky Decomposition
    * Tridiagonal Decomposition of Real Symmetric Matrices
    * Tridiagonal Decomposition of Hermitian Matrices
    * Hessenberg Decomposition of Real Matrices
    * Hessenberg-Triangular Decomposition of Real Matrices
    * Bidiagonalization
    * Householder Transformations
    * Householder solver for linear systems
    * Tridiagonal Systems
    * Balancing
    * Linear Algebra Examples
    * Linear Algebra References and Further Reading






Anmelden zum Antworten