Zur Startseite
Statik, Festigkeitslehre, Kinematik/Kinetik, 4. Auflage
Beispiel zur
Nutzung des Scripts

MATLAB-Script “gabamp”:
Lösung linearer Gleichungssysteme mit unsymmetrischer Bandmatrix

Mit dem Script “gabamp” wird das lineare Gleichungssystem  A*X=B nach dem Gaußschen Algorithmus mit Spaltenpivotisierung gelöst. Dabei ist die N*N-Matrix A als unsymmetrische Bandmatrix entweder als Matrix, die die Elementes des Bandes enthält, oder kompakt als Vektor gespeichert.

BANDMATRIZEN haben nur innerhalb eines Bandes in der Nähe der Hauptdiagonalen von Null verschiedene Elemente. Die "Bandweiten" IBWL und IBWR charakterisieren die Breite dieses Bandes links bzw. rechts von der Hauptdiagonalen, wobei die "weiteste Entfernung" eines Elementes von der Hauptdiagonalen entscheidend ist und die Hauptdiagonalelement-Position jeweils mitgezählt wird.

Beispiel: Wenn das Element A(7,10) einer Matrix am weitesten nach rechts von der Hauptdiagonalen entfernt ist, wäre IBWR = 4. Dieser Wert gilt dann für die gesamte Matrix, auch wenn in anderen Zeilen die von Null verschiedenen Elemente näher an der Hauptiagonalen liegen.

Im Gleichungssystem

hat die Matrix A die rechte Bandweite  IBWR=3, die linke Bandweite hat wegen der -1 in der vorletzten Zeile den Wert IBWL=4.

Damit ist die Gesamtbandweite  IBW = IBWL + IBWR - 1 = 6 die Anzahl der Elemente, die für jede Zeile gespeichert werden. Die ersten Zeilen werden durch führende Nullen, die letzten Zeilen durch nachgestellte Nullen auf diese Anzahl aufgefüllt (in der nachfolgend zu sehenden Matrix rot umrandet). Das MATLAB-Script gabamp gestattet zwei Speichervarianten für Bandmatrizen.

Die oben zu sehende Matrix kann als kompakte Matrix mit 9 Zeilen und 6 Spalten gespeichert werden, wobei alle Hauptdiagonalelemente (grün umrandet) in der Spalte IBWL=4 landen (Speichervariante a):

Mit einer so gespeicherten Matrix A (Speichervariante a) und einem Vektor b mit 9 Werten kann gabamp in der Form

v = gabamp (A , b , 4)

aufgerufen werden. Die Realisierung dieser Speicherung in MATLAB findet man hier.

Alternativ dazu können die N*IBW=54 Elemente in einem Vektor (zeilenweise) dicht gepackt werden (Speichervariante b):

0 0 0 0 0 1 0 0 0 -1 0 1 0 1 -4 6 -4 1 0 1 -4 6 -4 1 0 1 -4 6 -4 1 0 1 -4 6 -4 1 0 1 -4 6 -4 1 -1 2 0 -2 1 0 1 -2 1 0 0 0

Mit einer so (als Vektor) gespeicherten Matrix A (Speichervariante b) und einem Vektor b mit 9 Werten kann gabamp in der Form

v = gabamp (A , b , 9 , 3 , 4)

aufgerufen werden.

Das komplette Listing des Scripts gabamp mit ausführlichem Kommentar und die Möglichkeit zum Download findet man hier .

Homepage

www.D@nkert.de

D

nkert.de