Tridiagonal matrisealgoritme - Tridiagonal matrix algorithm

I numerisk lineær algebra er den trekantede matrisealgoritmen , også kjent som Thomas-algoritmen (oppkalt etter Llewellyn Thomas ), en forenklet form for Gaussisk eliminering som kan brukes til å løse trediagonale ligningssystemer . Et trekantet system for n ukjente kan skrives som

hvor og .

For slike systemer kan løsningen oppnås i operasjoner i stedet for å kreves av Gauss eliminering . En første feie eliminerer 's, og deretter produserer en (forkortet) bakoverbytte løsningen. Eksempler på slike matriser oppstår ofte fra diskretisering av 1D Poisson-ligning og naturlig kubisk splineinterpolasjon .

Thomas 'algoritme er ikke stabil generelt, men er det i flere spesielle tilfeller, for eksempel når matrisen er diagonalt dominerende (enten ved rader eller kolonner) eller symmetrisk positiv bestemt ; for en mer presis karakterisering av stabiliteten til Thomas 'algoritme, se Higham Theorem 9.12. Hvis det generelt er behov for stabilitet, anbefales Gaussisk eliminering med delvis svinging (GEPP) i stedet.

Metode

Fremover sveipingen består av beregningen av nye koeffisienter som følger, som angir de nye koeffisientene med primtall:

og

Løsningen oppnås deretter ved ryggsubstitusjon:

Metoden ovenfor endrer ikke de opprinnelige koeffisientvektorene, men må også holde oversikt over de nye koeffisientene. Hvis koeffisientvektorene kan modifiseres, er en algoritme med mindre bokføring:

For gjør

etterfulgt av bakbyttet

Implementeringen i en VBA- underrutine uten å bevare koeffisientvektorene:

Sub TriDiagonal_Matrix_Algorithm(N%, A#(), B#(), C#(), D#(), X#())
    Dim i%, W#
    For i = 2 To N
        W = A(i) / B(i - 1)
        B(i) = B(i) - W * C(i - 1)
        D(i) = D(i) - W * D(i - 1)
    Next i
    X(N) = D(N) / B(N)
    For i = N - 1 To 1 Step -1
        X(i) = (D(i) - C(i) * X(i + 1)) / B(i)
    Next i
End Sub

Derivasjon

Avledningen av den trekantede matrisealgoritmen er et spesielt tilfelle av Gauss eliminering .

Anta at de ukjente er , og at ligningene som skal løses, er:

Vurder å endre den andre ( ) ligningen med den første ligningen som følger:

som vil gi:

Merk at er eliminert fra den andre ligningen. Ved å bruke en lignende taktikk med den modifiserte andre ligningen på den tredje ligningen gir:

Denne tiden ble eliminert. Hvis denne prosedyren gjentas til raden; det (modifiserte) ligning vil innebære bare ett ukjent, . Dette kan løses for og deretter brukes til å løse ligningen, og så videre til alle ukjente er løst for.

Det er klart at koeffisientene på de modifiserte ligningene blir mer og mer kompliserte hvis de uttrykkelig er angitt. Ved å undersøke prosedyren kan de modifiserte koeffisientene (notert med tildes) i stedet defineres rekursivt:

For å fremskynde løsningsprosessen ytterligere, kan deles ut (hvis det ikke er noen divisjon med null risiko), vil de nyere modifiserte koeffisientene, hver notert med en prime, være:

Dette gir følgende system med de samme ukjente og koeffisientene definert i forhold til de opprinnelige:

Den siste ligningen involverer bare en ukjent. Å løse det igjen reduserer den neste siste ligningen til en ukjent, slik at denne tilbakestående substitusjonen kan brukes til å finne alle de ukjente:


Varianter

I noen situasjoner, spesielt de som involverer periodiske grenseforhold , kan det hende at en lett forstyrret form av det trekantede systemet må løses:

I dette tilfellet kan vi bruke Sherman – Morrison-formelen for å unngå ytterligere operasjoner av Gauss eliminering og fortsatt bruke Thomas-algoritmen. Metoden krever å løse en modifisert ikke-syklisk versjon av systemet for både inngangen og en sparsom korrigerende vektor, og deretter kombinere løsningene. Dette kan gjøres effektivt hvis begge løsningene beregnes samtidig, da den fremre delen av den rene trekantede matrisealgoritmen kan deles.

I andre situasjoner kan ligningssystemet være trediagonalt (se blokkmatrise ), med mindre submatriser arrangert som de enkelte elementene i matrisesystemet ovenfor (f.eks. 2D Poisson-problemet ). Forenklet form for Gauss eliminering er utviklet for disse situasjonene.

Læreboka Numerisk matematikk av Quarteroni, Sacco og Saleri, viser en modifisert versjon av algoritmen som unngår noen av inndelingene (i stedet for multiplikasjoner), noe som er gunstig for noen dataarkitekturer.

Parallelle trekantede løsere har blitt publisert for mange vektor- og parallelle arkitekturer, inkludert GPUer

For en omfattende behandling av parallelle tridiagonale og blokk tridiagonale løsere se

Referanser

  • Trykk, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). "Avsnitt 2.4" . Numeriske oppskrifter: The Art of Scientific Computing (3. utgave). New York: Cambridge University Press. ISBN 978-0-521-88068-8.