Verfahren zur Lösung eines linearen Gleichungssystems mit einer dünnbesetzten Koeffizientenmatrix

Gast #2781235
Lesenswert?

Guten Abend!

Vielleicht hat ja einer von euch ein Verfahren im Kopf, welches ich für 
das Lösen von dünnbesetzten Matrizen verwenden kann.

Im Moment speichere ich die gesamte Koeffizientenmatrix ab und löse die 
Gleichung mit dem Gauss-Seidl Verfahren. Jedoch explodiert bei mir 
natürlich ab einer gewissen Größe des LGS die Rechenzeit.

Meine Matrix ist eine Bandmatix, bei der die Hauptdiagonale, die 1ste 
obere und 1ste untere Nebendiagonale, sowie jeweils die zb. 5te obere 
und untere Nebendiagonale (hängt von der Anzahl der Knotenpunkte für die 
Diskretisierung ab) besetzt ist.

Ich habe bereits ein wenig gesucht, jedoch immer Beispiele für 
tridiagonale Matrizen gefunden, in denen nicht erwähnt wurde, ob die 
angegebenen Algorithmen auch für Bandmatrizen zu verwenden sind.

Danke für eure Hilfe!
lg
Persönliche Seite #2781424
Lesenswert?

MAXtrix schrieb im Beitrag #2781242:

> "Verfahren zur Lösung eines linearen Gleichungssystems mit einer
> dünnbesetzten Koeffizientenmatrix"

Hat die Matrix sonstige Eigenschaften? Positiv definit? Hermitesch? 
Cholesky-Zerlegung? LR-Zerlegung?

GNU GSL, siehe "TB triangular band":

http://www.gnu.org/software/gsl/manual/html_node/BLAS-Support.html

Oder LAPACK?

http://www.netlib.org/lapack/explore-html/de/d52/group___g_b.html

"Direct Solvers for Sparse Matrices":

http://web.eecs.utk.edu/~dongarra/etemplates/node388.html
Gast #2781787
Lesenswert?

Man kann natuerlich fertige Packages bemuehen. Oder selbst nachdenken. 
Erstens sollte man die sinnlose Adressiererei der Elemente wegmachen.
Denn das Element[x,y] zu adressieren bedeutet eine Multiplikation und 
eine Addition. Wenn man nun in einer Spalte 9995 Nullen und 5 Werte hat, 
so sind die 9995 Zugriffe sinnlos.

Wenn nun der Anfang eine 10 diagonale Matrix ist, so wird ein iterativer 
Algorithmus, der zu einer eindiagonalen Matrix fuehrt nie mehr Elemente 
pro Spalte und Zeile haben wie diese 10. Denn sonst wuerden ja 
Kopplungen eingefuehrt, die vorher nicht da waren. Nein ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren