Thomas-Algorithmus

Aus testwiki
Zur Navigation springen Zur Suche springen

Der Thomas-Algorithmus (nach Llewellyn Thomas) oder auch Tridiagonalmatrix-Algorithmus (TDMA) ist eine vereinfachte Form des Gaußschen Eliminationsverfahrens, der zum schnellen Lösen von linearen Gleichungssystemen mit einer Tridiagonalmatrix benutzt wird.

Verfahren

Ein tridiagonales System mit n Unbekannten xi kann geschrieben werden als

aixi1+bixi+cixi+1=di,

wobei gelten soll: a1=0 und cn=0.

In Matrizenform wird das System geschrieben als: [b1c10a2b2c2a3b3cn10anbn][x1x2x3xn]=[d1d2d3dn].

Beispiele für diese Matrizen entstehen üblicherweise aus der Diskretisierung der eindimensionalen Poisson-Gleichung (z. B. eindimensionale Diffusionsprobleme) und aus der natürlichen kubischen Spline-Interpolation.

Für solche Systeme kann die Lösung mit dem Thomas-Algorithmus nach 𝒪(n) Operationen gefunden werden: Ein erster Durchlauf eliminiert die ais, anschließend erhält man die Lösung mit Hilfe eines Rückwärts-Einsetzverfahrens.

Der erste Schritt ist es, die Koeffizienten folgendermaßen rekursiv zu modifizieren (die „neuen“ modifizierten Koeffizienten sind mit einem Strich gekennzeichnet):

c'i={c1b1;i=1cibic'i1ai;i=2,3,,n1
d'i={d1b1;i=1did'i1aibic'i1ai;i=2,3,,n

Dies ist der vorwärts gerichtete Durchlauf. Die Lösung ergibt sich dann durch ein Rückwärts-Einsetzverfahren:

xn=d'n
xi=d'ic'ixi+1; i=n1,n2,,1

Varianten

In manchen Situationen, insbesondere in solchen mit periodischen Randbedingungen, kann es sein, dass eine leicht veränderte Form des tridiagonalen Systems zu lösen ist:

a1xn+b1x1+c1x2=d1,aixi1+bixi+cixi+1=di,i=2,,n1anxn1+bnxn+cnx1=dn.

In Matrizenform: [b1c1a1a2b2c2a3b3cn1cnanbn][x1x2x3xn]=[d1d2d3dn].

In diesem Fall kann die Sherman-Morrison-Woodbury-Formel benutzt werden, um den Thomas-Algorithmus zu nutzen und die zusätzlichen Operationen des Gaußschen Eliminationsverfahrens zu vermeiden.

In anderen Fällen kann das Gleichungssystem block-tridiagonal sein, d. h. die Elemente des obigen Gleichungssystems sind kleinere Blockmatrizen (z. B. bei der zweidimensionalen Poisson-Gleichung). Für diese Fälle wurden ebenfalls vereinfachte Varianten der Gauß-Elimination entwickelt.

Eine weitere Variante des Thomas-Algorithmus ist der Hu-Gallash-Algorithmus, der statt des Rückwärts-Einsetzverfahrens ein Vorwärts-Einsetzverfahren nutzt.

Herleitung

Die Unbekannten seien x1,,xn. Die zu lösenden Gleichungen seien:

b1x1+c1x2=d1;i=1aixi1+bixi+cixi+1=di;i=2,,n1anxn1+bnxn=dn;i=n

Die zweite Gleichung (i=2) wird nun wie folgt mit der ersten Gleichung modifiziert:

(Gleichung 2)b1(Gleichung 1)a2

Dies ergibt:

(a2x1+b2x2+c2x3)b1(b1x1+c1x2)a2=d2b1d1a2(b2b1c1a2)x2+c2b1x3=d2b1d1a2

Dadurch wurde x1 aus der zweiten Gleichung eliminiert. Mit einer analogen Vorgehensweise ergibt sich aus der modifizierten zweiten und der dritten Gleichung:

(a3x2+b3x3+c3x4)(b2b1c1a2)((b2b1c1a2)x2+c2b1x3)a3=d3(b2b1c1a2)(d2b1d1a2)a3(b3(b2b1c1a2)c2b1a3)x3+c3(b2b1c1a2)x4=d3(b2b1c1a2)(d2b1d1a2)a3

Jetzt wurde x2 eliminiert. Wird diese Vorgehensweise bis zur n-ten Zeile wiederholt, enthält die modifizierte n-te Gleichung nur eine Unbekannte. Diese Gleichung wird nun gelöst und das Ergebnis genutzt, um die (n1)-te Gleichung zu lösen. Dies wird so lange fortgeführt, bis alle Unbekannten bekannt sind.

Verständlicherweise werden die Koeffizienten mit jedem Schritt komplizierter, wenn sie explizit dargestellt werden. Die Koeffizienten können jedoch auch rekursiv dargestellt werden:

a~i=0b~1=b1b~i=bib~i1c~i1aic~1=c1c~i=cib~i1d~1=d1d~i=dib~i1d~i1ai

Um den Lösungsprozess weiter zu beschleunigen, wird b~i herausdividiert (wenn b~i0). Die neuen Koeffizienten lauten:

a'i=0b'i=1c'1=c1b1c'i=cibic'i1aid'1=d1b1d'i=did'i1aibic'i1ai

Dies ergibt:

xi+c'ixi+1=d'i; i=1,,n1xn=d'n; i=n

Die letzte Gleichung enthält nur eine Unbekannte. Bestimmt man sie, reduziert man die Anzahl der Unbekannten in der vorletzten Gleichung auf eins, so dass dieses Rückwärts-Einsetzverfahren genutzt werden kann, um alle Unbekannten zu bestimmen.

xn=d'nxi=d'ic'ixi+1; i=n1,n2,,1

Einzelnachweise