Tridiagonale-matrix-algoritme

Het tridiagonale-matrix-algoritme, kortweg TDMA genoemd, en ook bekend als het Thomas-algoritme, is een numerieke methode om een vierkant stelsel van lineaire vergelijkingen op te lossen dat wordt beschreven door een tridiagonale matrix. Dit is een matrix waarbij de elementen buiten de diagonaal en de twee nevendiagonalen alle gelijk aan nul zijn, zoals in onderstaande matrix. De methode is niets anders dan een toepassing van de Gauss-eliminatiemethode, met als doel de elementen onder de hoofddiagonaal nul te maken, waardoor het stelsel een geschikte vorm krijgt om te worden opgelost door achterwaartse substitutie.

Methode

bewerken

Een tridiagonaal stelsel van   vergelijkingen en   onbekenden heeft als vorm:

 

waarin   en  . In matrixvorm wordt dit:

 

De elementen   vormen hierbij samen de hoofdiagonaal of kortweg diagonaal. De elementen   en   bevinden zich op de zogenaamde nevendiagonalen, meer bepaald respectievelijk op de onderdiagonaal en de bovendiagonaal.

De oplossing van dergelijke stelsels kan worden uitgevoerd in   bewerkingen in plaats van de normale   bewerkingen van de Gauss-methode. In een eerste stap worden de coëfficiënten   weggewerkt, waarna via achterwaartse substitutie de oplossing wordt gevonden. Dit soort stelsels komt bijvoorbeeld voor bij de numerieke oplossing van de diffusievergelijking en bij het berekenen van natuurlijke splines.

In de eerste stap worden de coëfficiënten van het stelsel omgevormd, opdat alle elementen van de coëfficiëntenmatrix op de onderdiagonaal nul worden. De nieuwe coëfficiënten worden in onderstaande vergelijkingen met een accent aangeduid:

 

en:

 

Na deze voorwaartse stap volgt als tweede stap een achterwaartse substitutie die de oplossing levert:

 
 .

Concrete implementaties

bewerken

Het Engelstalige artikel over dit onderwerp bevat voorbeelden van implementaties in de programmeertalen C, Matlab en Fortran. Bij het programmeren dient men ermee rekening te houden dat de nummering van de elementen van een vector of een matrix in sommige programmeertalen loopt van 1 tot   en in andere van 0 tot   In het laatste geval dienen de uitdrukkingen in dit artikel aangepast te worden.

Afleiding

bewerken

De afleiding van het tridiagonaal-matrix-algoritme is gebaseerd op Gauss-eliminatie, waarbij de elementen van de onderdiagonaal nul worden gemaakt door het uitvoeren van elementaire rijoperaties. Stel dat de onbekenden van het stelsel   zijn en de vergelijkingen:

 

Dan wordt de tweede vergelijking door middel van de eerste als volgt gewijzigd:

 

Het resultaat van deze elementaire rijoperatie is:

 
 

Op deze manier is   verwijderd uit de tweede vergelijking. Met behulp van de tweede vergelijking wordt dan de derde op analoge manier behandeld, zodat:

 
 

Dit systeem van rijoperaties wordt nu verder toegepast doorheen de matrix, waardoor alle elementen op de onderdiagonaal nul worden. Als gevolg hiervan bevat de n-de rij slechts één onbekende, namelijk  , die dus direct kan gevonden worden. Vervolgens worden de andere onbekenden in volgorde van onder naar boven bepaald. Bij elke stap bevat de te behandelen vergelijking immers nog slechts één onbekende. De laatste onbekende die wordt bepaald is dus  

Indien de coëfficiënten van de gewijzigde vergelijkingen expliciet worden opgeschreven worden ze steeds ingewikkelder. Het is daarom beter de gewijzigde coëfficiënten, hieronder aangeduid met een tilde, recursief te definiëren.

 
 
 
 
 
 
 

Om de oplossing nog vlotter te laten verlopen kan men ook nog   wegdelen (indien niet deze niet nul zijn). De aldus gewijzigde coëfficiënten, aangeduid met een asterisk, zijn:

 
 
 
 
 
 

Dit geeft het volgende stelsel, nog steeds in de oorspronkelijke onbekenden:

 

De oplossingen zijn, startend vanaf   en zo door achterwaartse substitutie naar  :

 
 .

Varianten

bewerken

In bepaalde situaties, zoals in het geval van periodieke randvoorwaarden, komt een lichtjes andere vorm van een tridiagonaal stelsel voor:

 

In dat geval kan de formule van Sherlan-Morrison gebruikt worden om bijkomende bewerkingen tijdens de elementaire rijoperaties te vermijden. In andere gevallen komt een stelsel voor dat in matrixvorm een blokmatrix geeft. Ook in dit geval bestaan er aangepaste methoden van de Gauss-eliminatiemethode.

Referenties

bewerken
  • Conte, S.D., and de Boor, C. (1981). Elementary Numerical Analysis: an algorithmic approach. McGraw-Hill, New York, ISBN 0-07-066228-2.
bewerken

Bronnen

bewerken