Algoritmus tridiagonální matice - Tridiagonal matrix algorithm
v numerická lineární algebra, algoritmus tridiagonální matice, také známý jako Thomasův algoritmus (pojmenoval podle Llewellyn Thomas ), je zjednodušená forma Gaussova eliminace které lze použít k řešení tridiagonální soustavy rovnic. Trojúhelníkový systém pro n neznámé mohou být zapsány jako
kde a .
U těchto systémů lze řešení získat v operace místo požadováno Gaussova eliminace. První zametání vylučuje a poté (zkrácená) zpětná substituce vytvoří řešení. Příklady takových matic běžně vyplývají z diskretizace 1D Poissonova rovnice a přírodní kubický spline interpolace.
Thomasův algoritmus není stabilní obecně, ale je tomu tak v několika zvláštních případech, například když je matice diagonálně dominantní (buď podle řádků nebo sloupců) nebo symetrický pozitivní určitý;[1][2] pro přesnější charakterizaci stability Thomasova algoritmu viz Higham Theorem 9.12.[3] Je-li obecně vyžadována stabilita, Gaussova eliminace s částečné otočení Místo toho se doporučuje (GEPP).[2]
Metoda
Průběh dopředu sestává z výpočtu nových koeficientů následujícím způsobem, označujících nové koeficienty s prvočísly:
a
Řešení se poté získá zpětnou substitucí:
Výše uvedená metoda nemění původní vektory koeficientů, ale musí také sledovat nové koeficienty. Pokud lze vektory koeficientů upravit, pak algoritmus s menším vedením účetnictví je:
- Pro dělat
následuje zpětné střídání
Níže je uvedena implementace v podprogramu VBA bez zachování vektorů koeficientů
Sub TriDiagonal_Matrix_Algorithm(N%, A#(), B #(), C#(), D #(), X#()) Ztlumit i%, W # Pro i = 2 Na N Ž = A(i) / B(i - 1) B(i) = B(i) - Ž * C(i - 1) D(i) = D(i) - Ž * D(i - 1) další i X(N) = D(N) / B(N) Pro i = N - 1 Na 1 Krok -1 X(i) = (D(i) - C(i) * X(i + 1)) / B(i) další iKonec Sub
Derivace
Odvození algoritmu tridiagonální matice je zvláštním případem Gaussova eliminace.
Předpokládejme, že neznámí jsou , a že rovnice, které mají být vyřešeny, jsou:
Zvažte úpravu druhé () rovnice s první rovnicí následovně:
který by dal:
Všimněte si, že byl vyloučen z druhé rovnice. Podobnou taktiku využijeme u upraveno druhá rovnice na třetí rovnici poskytuje:
Tentokrát byl vyloučen. Pokud se tento postup opakuje až do řádek; (upravený) rovnice bude zahrnovat pouze jednu neznámou, . To může být vyřešeno a poté použito k vyřešení rovnice atd., dokud nebudou vyřešeny všechny neznámé.
Je zřejmé, že koeficienty na upravených rovnicích jsou stále komplikovanější, pokud jsou výslovně uvedeny. Prozkoumáním postupu lze místo toho definovat rekurzivně upravené koeficienty (označené tildes):
Chcete-li dále urychlit proces řešení, lze rozdělit (pokud neexistuje dělení nulovým rizikem), novější upravené koeficienty, každý označený prvočíslem, budou:
Získáte následující systém se stejnými neznámými a koeficienty definovanými v podmínkách původních výše:
Poslední rovnice zahrnuje pouze jednu neznámou. Jeho řešení zase sníží další poslední rovnici na jednu neznámou, takže lze tuto zpětnou substituci použít k nalezení všech neznámých:
Varianty
V některých situacích, zejména těch, které se týkají periodické okrajové podmínky, bude možná potřeba vyřešit mírně narušenou formu trojdiagonálního systému:
V tomto případě můžeme využít Sherman-Morrisonův vzorec vyhnout se dalším operacím Gaussovy eliminace a stále používat Thomasův algoritmus. Metoda vyžaduje řešení upravené necyklické verze systému pro vstupní i řídký korekční vektor a následnou kombinaci řešení. To lze provést efektivně, pokud jsou obě řešení počítána najednou, protože lze sdílet přední část algoritmu čisté tridiagonální matice.
V jiných situacích může být soustava rovnic blokovat tridiagonální (vidět bloková matice ), s menšími dílčími maticemi uspořádanými jako jednotlivé prvky ve výše uvedeném maticovém systému (např. 2D Poissonův problém ). Pro tyto situace byly vyvinuty zjednodušené formy Gaussovy eliminace.[4]
Učebnice Numerická matematika Quarteroni, Sacco a Saleri, uvádí upravenou verzi algoritmu, která se vyhýbá některým divizím (místo toho používá násobení), což je výhodné pro některé počítačové architektury.
Pro mnoho vektorových a paralelních architektur, včetně GPU, byly publikovány paralelní tridiagonální řešiče[5][6]
Pro rozsáhlou léčbu paralelních trojdiagonálních a blokových tridiagonálních řešičů viz [7]
Reference
- ^ Pradip Niyogi (2006). Úvod do výpočetní dynamiky tekutin. Pearson Education India. p. 76. ISBN 978-81-7758-764-7.
- ^ A b Biswa Nath Datta (2010). Numerická lineární algebra a aplikace, druhé vydání. SIAM. p. 162. ISBN 978-0-89871-765-5.
- ^ Nicholas J. Higham (2002). Přesnost a stabilita numerických algoritmů: Druhé vydání. SIAM. p. 175. ISBN 978-0-89871-802-7.
- ^ Quarteroni, Alfio; Sacco, Riccardo; Saleri, Fausto (2007). „Oddíl 3.8“. Numerická matematika. Springer, New York. ISBN 978-3-540-34658-6.
- ^ Chang, L.-W .; Hwu, W, -M. (2014). Msgstr "Průvodce implementací tridiagonálních řešičů na GPU". V V. Kidratenko (ed.). Numerické výpočty s GPU. Springer. ISBN 978-3-319-06548-9.
- ^ Venetis, I.E .; Kouris, A .; Sobczyk, A .; Gallopoulos, E .; Sameh, A. (2015). "Přímý třírozměrný řešič založený na rotacích Givens pro architektury GPU". Parallel Computing. 49: 101–116.
- ^ Gallopoulos, E .; Philippe, B .; Sameh, A.H. (2016). „Kapitola 5“. Rovnoběžnost v maticových výpočtech. Springer. ISBN 978-94-017-7188-7.
- Conte, S.D. & deBoor, C. (1972). Základní numerická analýza. McGraw-Hill, New York. ISBN 0070124469.
- Tento článek včlení text z článku Tridiagonal_matrix_algorithm _-_ TDMA_ (Thomas_algorithm) na CFD-Wiki to je pod GFDL licence.
- Stiskněte, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). „Oddíl 2.4“. Numerické recepty: Umění vědecké práce na počítači (3. vyd.). New York: Cambridge University Press. ISBN 978-0-521-88068-8.