Definice Matice je řídká, pokud obsahuje málo nenulových prvků. Mluvíme-li o nějaké třídě matic, slovem „málo“ se většinou myslí .Definicealternativní Matice je řídká, pokud jsme schopni využít znalosti struktury nenulových prvků k účinnému řešení soustavy.
Soustavy s řídkými maticemi často vznikají z řešení parciálních diferenciálních rovnic metodou sítí, konečných objemů nebo konečných prvků.
Příklad Mějme metodu konečných diferencí pro dvourozměrnou Poissonovu rovnici:Zvolíme mřížku a aproximujemeSoustavu potom můžeme zapsat jako matici, která má v každém řádku nanejvýš pět nenulových prvků. (Detaily viz NM2.)
Kdybychom měli jemnost třeba a chtěli to řešit naivně, na matici bychom potřebovali 8 TB paměti. Ovšem pokud ji uložíme jako řídkou, potřebujeme jen několik MB. A jelikož dokonce známe její přesný tvar, můžeme ji uložit jako implicitní a to nezabere téměř žádnou paměť.
Reprezentace řídkých matic v počítači
Chceme řídkou matici uložit tak, aby zabrala co nejméně paměti a efektivně se s ní počítalo.
Souřadnicový formát
Jedno pole reálných řísel obsahující hodnoty všech nenulových prvků;
dvě celočíselná pole délky obsahující jejich indexy.
Příklad Maticiuložíme jako
Nevýhoda je, že v takové reprezentaci je těžké například najít prvek na dané pozici.
Komprimované řídké řádky (CSR)
Jedno pole reálných řísel obsahující hodnoty všech nenulových prvků seřazené po řádcích;
jedno celočíselné pole délky obsahující jejich sloupcové indexy;
jedno celočíselné pole délky , kde -tý prvek obsahuje index začátku -tého řádku v předchozích dvou polích. Ten jeden navíc ukazuje za konec pole (tím se zjednoduší algoritmy iterující přes daný řádek).
Příklad Maticiuložíme jako
Oproti souřadnicovému formátu to šetří paměť. Nevýhodou ovšem je, že je obtížné přidávat nové nenulové prvky, což může být důležité třeba u metod založených na Gaussově eliminaci.
Analogicky můžeme mít komprimované řídké sloupce (CSC).
Modifikované komprimované řídké řádky (MSR)
Motivací je, že často potřebujeme efektivnější přístup k prvkům na hlavní diagonále.
Jedno pole reálných řísel obsahující hodnoty všech nenulových prvků počínaje diagonálními, poté zarážku a zbylé prvky po řádcích;
jedno celočíselné pole délky obsahující nejprve indexy začátků řádků a poté sloupcové indexy nediagonálních prvků.
Příklad Maticiuložíme jako
Kromě efektivního přístupu k diagonále má stejné výhody a nevýhody jako CSR.
Ellpack
Tento formát je populární na vektorových počítačích.
Využívá se pro matice, kde počet nenulových prvků v jednom řádku je omezený nějakou konstantou .
Jedno pole reálných čísel velikosti obsahující hodnoty nenulových prvků v jednotlivých řádcích;
jedno celočíselné pole velikosti obsahující jejich indexy.
Příklad Matici (jinou než v předchozích příkladech)uložíme jako
Formát je jednoduchý a většinou se s ním dobře pracuje, akorát nejde použít, když má matice nějaké husté řádky.
Diagonální uložení
Vhodné pro matice, které mají nenulové prvky pouze podél několika málo diagonál (například ty vzniklé z metody konečných diferencí).
Prostě uložíme hodnoty těchto diagonál a k tomu si poznamenáme, kolikáté jsou.
Příklad Maticiuložíme jako
Přímé metody řešení soustav
Mějme soustavu , kde . Z NMA víme, že řešením soustavy řádkovými úpravami pro silně regulární matici vznikne rozklad , kde je dolní trojúhelníková a je horní trojúhelníková. Získáme-li tento rozklad, můžeme snadno řešit jakoukoli soustavu s tou samou maticí: stačí spočítat podle a podle .
Je-li pozitivně definitní, potom , takže jde o Choleského rozklad: .
TBD
Popis struktury řídkých matic
Definice Graf matice je graf , kde aPříkladPříklad Je-li matice strukturálně symetrická, můžeme uvažovat neorientovaný graf:
Vznik zaplnění
Mějme matici , na kterou aplikujeme první krok podmaticového algoritmu. Tím se změní její zaplnění:
Obecně to funguje tak, že v -tém kroku se všechny sousední vrcholy propojí do kliky. To je formálně vyjádřeno v následujícím lemmatu:
Lemmao zaplnění Nechť je pozitivně definitní, . PotomDůkaz Triviálně plyne z podmaticového algoritmu.Větao zaplnění Nechť je pozitivně definitní, . Potom , právě když v existuje cesta taková, že pro všechna je . (Jinými slovy, cesta musí ležet v podgrafu indukovaném vrchholy .)Důkaz Indukcí podle předchozího lemmatu. TBD
Eliminační strom
Definice Eliminační strom matice s Choleského rozkladem je strom , kde aJinými slovy, předkem -tého vrcholu je vrchol s indexem odpovídajícím řádku, v němž je první nenulový prvek pod diagonálou v -tém sloupci .PříkladPozorování Kořen eliminačního stromu je prvek s nejvyšším indexem, tedy .Věta Je-li pro , potom je předek v .Důkaz Pokud je nejmenší splňující , potom je z definice stromu přímý předek. TBDPoznámka Implikaci nelze obrátit. V předchozím příkladě je předkem , ale .Důsledek Jsou-li a disjunktní podstromy s kořeny , potom pro všechny je .Věta Nechť je pozitivně definitní, . Potom , právě když je předkem nějakého takového, že .DůkazTBDDefinice Struktura -tého sloupce matice jeVěta Pro matici v Choleského rozkladu platí
Přeuspořádání matic
Příklad Mějme matici ve tvaruJiž po jednom kroku eliminace se zaplní všechny prvky pod diagonálou:Co kdybychom ale nejdřív permutovali řádky a sloupce? Vezměme permutační maticiPotom budeme pracovat s maticíV té se v žádném kroku nic nezaplní. Permutací jsme tedy výrazně zvýšili efektivitu. Všimněme si také, že
se liší jen označením vrcholů od :
Pozorování Je-li symetrická matice a permutační matice odpovídající permutaci , potom je symetrická a platí
;
;
.
Grafy a se tedy liší jen označením vrcholů.
Je otázkou, jakou permutaci zvolit, abychom si usnadnili práci co nejvíce. K tomu je několik různých přístupů.
Algoritmy pro vytvoření pásu/profilu
Definice Pro danou matici a označmeŠířka profilu -tého řádku je . Profil matice jeŠířka pásu je . Pás matice jePříklad
Přeuspořádáme pro vytvoření lepšího profilu a pásu:
AlgoritmusCathill–McKee [CMK]
Zvol libovolný vrchol , přidej ho do permutace a nastav .
Dokud :
.
Přidej do permutace všechny vrcholy .
.
Příklad
Všimněme si, že tato matice má oproti jiným možným permutacím hodně hezký profil a pás.
Aby vznikl úzký pás, chceme mít hodně malých úrovní. Jako počáteční vrchol je tedy vhodné zvolit jeden z periferních vrcholů – těch, u kterých se nabývá maximální vzdálenosti mezi dvěma vrcholy (tedy průměru grafu). Ovšem hledání takových vrcholů je moc náročné (), takže se většinou hledá aproximace – pseudoperiferní vrcholy.
Pro hledání pseudoperiferních vrcholů můžeme využít GPS algoritmus. Zvolíme libovolný počáteční vrchol a pomocí CMK algoritmu k němu najdeme nějaký koncový vrchol (vrchol z poslední vrstvy). Ten si zvolíme jako nový počáteční vrchol a opakujeme. Zjevně se v žádném kroku nesníží vzdálenost, takže můžeme opakovat, až se ustálí.
Nápříklad v obdélníkové síti, začneme-li někde uprostřed, již v prvním kroku se dostaneme do rohu a v druhém kroku do opačného grafu, což nám dá periferní vrcholy.
Někdy se taky v CMK vyplatí číslovat opačně, čímž vznikne RCM (Reverse Cathill-McKee).
Uspořádání minimalizující zaplněnost
Chceme najít permutační matici takovou, že je minimální.
Není známý efektivní algoritmus, který by vždy nalezl optimální řešení.
Algoritmusminimálního stupně
.
Pro každé :
V najdi vrchol s nejmenším stupněm a očísluj ho .
Odeliminuj z , čímž vznikne .
Myšlenka je, že vrchol s nejmenším stupněm většinou způsobí nejmenší zaplnění.Příklad Mějme matici s následujícím grafem:
Vrcholy budeme eliminovat například v tomto pořadí, čímž vznikne jen jedna nová hrana:
Poznámka Existuje varianta zvaná aproximovaný minimální stupeň, která nepočítá stupně vrcholů, ale pouze je odhaduje.
Uspořádání přizpůsobující matici počítačové architektuře
Máme paralelní počítač a chceme vrcholy eliminovat v takovém pořadí, aby se to dalo dobře paralelizovat.
Mějme graf, který se po odstranění nějaké malé podmnožiny vrcholů (separátoru ) rozdělí na dvě podobně velké komponenty a . Potom coloki, co budeme dělat s jednou z komponent, ovlivní jen tuto komponentu a separátor. Pro paralelizaci se tedy vyplatí očíslovat vrcholy v pořadí , takže a potom můžeme eliminovat paralelně.
Rozdělování můžeme rekurzivně opakovat, dokud jsou komponenty dostatečně velké, aby se to vyplatilo. Tomu se říká metoda vnořených řezů (nested dissection method).
Frontální metoda
Místo abychom uspořádání stanovili předem, budeme ho hledat dynamicky za běhu eliminace.
V každém kroku přehodíme řádky a sloupce tak, aby nenulové prvky šly co nejblíž k diagonále.
Často tím vzniknou malé husté podmatice, které můžeme řešit standardními metodami.
Nevýhoda je, že permutování za běhu může být náročné.
Výhoda je, že můžeme konstruovat Choleského rozklad matice, i když ji ještě nemáme celou spočtenou. To se může vyplatit například u metody konečných prvků, kde počítání matice je náročné.
Poznámky k obecnějším systémům
Zatím jsme se zabývali metodami pro pozitivně definitní matice. Jak se tyto poznatky dají zobecnit na jiné třídy matic?
Indefinitní symetrické matice
Příklad Mějme symetrickou indefinitní matici . Kdybychom se pokoušeli spočítat Choleského rozklad, narazili bychom na to, že máme dělit nulou. Ani žádná symetrická permutace nám s tím nepomůže. Mohli bychom použít asymetrickou permutaci, ale tím bychom obecně ztratili symetrii matice.
Symetrické indefinitní matice v praxi vznikají při použití smíšené formulace metody konečných prvků na eliptickou úlohu druhého řádu nebo také při hledání vázaných extrémů metodou Lagrangeových multiplikátorů. V obou těchto případech vznikne matice tvaru , kde je pozitivně definitní, . Soustava je tedy ve tvaru
Jelikož je pozitivně definitní, můžeme najít její Choleského rozklad . Podle první rovnice je . Dosazením do druhé rovnice máme
kde je Schurův doplněk. Dokážeme, že je pozitivně definitní. Pro je
Soustavu s maticí tedy můžeme řešit Choleského rozkladem. Akorát je problém v tom, že může být hustá, i když je řídká. Vyplatí se to tedy, jenom když je malá. V opačném případě je možné to nějak prokletě zkombinovat s iterační metodou (typicky konjugované gradienty). Potom nemusíme explicitně sestavovat, ale stačí s ní umět násobit vektory. K tomu nám stačí na vektor postupně aplikovat .
Obecné regulární matice
U matice, která není symetrická, nemáme Choleského rozklad, ale jen LU rozklad. Ten navíc nnexistuje, když matice není silně regulární; v takovém případě ještě navíc potřebujeme pivotaci. Pivotace by ideálně neměla způsobit velké zaplnění, což je ale často v rozporu s požadavky výše uvedených metod. Navíc výběr pivota obvyklým způsobem závisí na numerických hodnotách, takže není možné analyzovat strukturu předem.
Místo pivotace za běhu můžeme zkusit najít takovou permutaci, která přesune absolutně velké prvky na diagonálu.
Příklad Mějme matici ve tvaruVytvoříme k ní bipartitní graf, kde budeme mít zvlášť vrcholy pro řádky a pro sloupce.
Přesunutí nenulových prvků na diagonálu odpovídá maximálnímu párování v tomto grafu. Přitom hrany budou ohodnocené prvky matice a váhu párování budeme počítat jako součin vah hran. Problém je, že to může způsobit velké zaplnění.Věta Dokážeme-li matici dostat do blokově trojúhelníkového tvaru, stačí umět rozložit diagonální bloky.Důkaz Nechť (pro více než dva bloky použijeme indukci). Rozložíme . Pokusíme se najít rozklad :Stačí tedy zvolit .
K nalezení permutace řádků a sloupců, které nám umožní matici převést na blokově trojúhelníkový tvar, použijeme orientovaný graf matice. Najdeme silně souvislé komponenty, topologicky je seřadíme a z každé uděláme blok, přičemž je řadíme v opačném pořadí.
Příklad Pro matici s grafem
permutujeme vrcholy tak, aby ty v byly v prvním bloku, ty v v druhém bloku a ty v ve třetím bloku.
K rozkladu jednotlivých bloků se dá použít částečná pivotace (pivota hledáme jen v příslušném řádku/sloupci) nebo úplná pivotace (pivota hledáme v celé podmatici).
TBD
Iterační zpřesnění
Ke zpřesnění výsledku přímé metody můžeme využít iterační metodu. Předpokládejme, že známe a je aproximace řešení získaná přímou metodou: . Kvůli počítačové aritmetice nám ale nemusí vyjít přesně. Můžeme ho zkusit vylepšit tím, že spočteme , vyřešíme pomocí LU rozkladu soustavu a změníme . Toto opakujeme, až bude .
Pokud nechceme počítat všechno ve dvojité přesnosti, stačí v ní spočítat jen a vše ostatní v jednoduché. Tím většinou dostaneme dobrou aproximaci i po jednom kroku.
Iterační metody
Z 01NMA známe stacionární metody: prostá iterace, Jacobi, Gauss-Seidel, SOR. Z 01PNL známe nestacionární krylovské metody: konjugované gradienty, minimální reziduum, zobecněné minimální reziduum, bikonjugované gradienty, kvadratické minimální reziduum.
Všechny tyto metody rychle konvergují, pokud . Když to neplatí, můžeme si soustavu upravit levým předpodmíněním
nebo pravým předpodmíněním
Matici potřebujeme zvolit tak, aby bylo nebo a zároveň šla snadno najít.
Je-li pozitivně definitní, musíme si dávat pozor, aby se to předpodmíněním neporušilo. Toho docílíme tím, že předpodmíníme oboustranně: máme-li Choleského rozklad , potom budeme řešit
Předpodmiňování stacionárních metod
Nechť , kde je regulární matice. Potom
Budeme hledat posloupnost takovou, že . Z toho máme
kde je reziduum -té aproximace. Stačí tedy vždy spočítat reziduum , spočítat opravu a opravit . Tato iterace konverguje pro .
Definice Matice tvoří regulární rozklad matice , pokud , je regulární a .Věta Nechť je regulární rozklad. Označme . Potom , právě když je regulární a .Důkaz
(⇒)
Z předpokladu je regulární a platíDíky tomu je regulární a .
(⇐)
Podle předpokladu je regulární, takže i je regulární. Jelikož , podle Perronovy–Frobeniovy věty existuje nenulový vektor takový, že . PotomAby tato nerovnost mohla platit, musí být .
Definice Regulární matice je M-matice, pokud
;
;
.
Poznámka Podle předchozí věty je konvergentní, pokud je M-matice.Poznámka M-matice často vznikají například z metody konečných diferencí.
Rychlost konvergence stacionárních metod
Nechť je regulární rozklad a . Máme aproximaci a chceme určit, jak se liší od přesného řešení . Označme . Podle předpisu iterace je . Rozvinutím dostáváme
kde je počáteční chyba. Z toho plyne odhad . Podle nějaké věty je . Když to rozepíšeme z definice, máme
Jednoduchými úpravami dostaneme . Pokud , můžeme zvolit takové, aby , takže od nějakého členu dál bude chyba exponenciálně klesat. Nevíme ovšem, jak se to bude chovat na začátku. Konvergence dokonce ani nemusí být monotónní, tedy může se stát, že na začátku bude chyba růst.
Speciálně je-li normální, máme , takže v tomto případě máme monotónní konvergenci zaručenou. Počet iterací potřebný k dosažení chyby nanejvýš v poměru k počáteční chybě je potom .
Volba předpodmínění u stacionární metody
Vezmeme-li , máme metodu prosté iterace, která konverguje, pokud . Ideálně , tedy vlastní čísla jsou všechna blízká . Pokud tomu tak není, musíme předpodmiňovat.
Richardsonovo předpodmínění
, kde je relaxační parametr. Potom o konvergenci rozhoduje . Často je možné vhodně zvolit tak, aby konvergence fungovala, i když může být pomalá.
Jacobiho předpodmínění
, kde je diagonální matice se stejnou diagonálou jako . O konvergenci potom rozhoduje . O tom obecně nemůžeme říct, ale občas se to hodí a je to hodně jednoduché na výpočet.
Gaussovo–Seidelovo předpodmínění
, kde je dolní trojúhelník (i s diagonálou) . potom získáme řešením soustavy s trojúhelníkovou maticí, což se taky počítá snadno, ale na rozdíl od Jacobiho nejde snadno paralelizovat.
SOR metoda
, kde je relaxační parametr. Ten volíme tak, aby bylo minimální. Ještě se dostaneme k tomu, jak to udělat.
Chceme-li předpodmínění použít u krylovských metod pracujících se symetrickou maticí (např. metoda sdružených gradientů), musíme ho zvolit tak, aby se symetrie zachovala. U Richardsona nebo Jacobiho to není problém, ale SOR musíme upravit, čímž vznikne SSOR (Symmetric SOR). Definujme , kde je horní trojúhelníková část . Potom budeme střídavě řešit
kde . Ve výsledku máme
Předpodmínění metody sdružených gradientů
Je-li symetrická, existuje Choleského rozklad . Potom můžeme metodu sdružených gradientů aplikovat na rovnici
Mějme pozitivně definitní matici a počáteční reziduum . Vyřešíme si rovnici . Následně v metodě budeme na některých místech místo používat a po každém kroku si dopočteme další . Rychlost konvergence bude
Všimněme si, že to vždy bude konvergovat, i když pro velké hodně pomalu.
Příklad Mějme pozitivně definitní matici velikosti pocházející z diskretizace diferenciální rovnice ve tvaruJak jsme si možná dokázali na 01NM2, vlastní čísla jsou ve tvaruSpeciálně je o maličko větší než a je o maličko menší než . Pro metodu prosté iterace máme , takže nebude konvergovat. Richardsonovo předpodmínění konverguje pro . Jacobiho vychází stejně jako Richardsonovo pro , konkrétněU Gausse–Seidela se nějak dá odvodit, že rychlost konvergence je stejná jako u Jacobiho. Co se týče SOR metody, dá se dokázat, že optimální relaxační parametr jePo dlouhých úpravách z toho vyjde , což je lepší než u Gausse–Seidela. Proto je SOR tak populární. Dále můžeme použít metodu sdružených gradientů, u které nás zajímá podmíněnost:Takže i bez předpodmínění je to stejně dobré jako SOR s optimálním předpodmíněním.
Neúplné LU rozklady
Při úplném LU rozkladu vzniká hodně zaplnění. Místo toho můžeme spočítat jen nějakou jeho aproximaci a tu následně použít pro předpodmínění.
Klasický LU rozklad (řádková varianta) vypadá takto:
Pro každé :
Pro každé :
Pro každé :
Neúplný LU rozklad bude vypadat stejně, ale s tím, že přepisujeme jen některé prvky. Základní varianta je ILU(0), kde přepisujeme jen ty prvky, které už jsou nenulové. Obecněji si můžeme předepsat množinu pozic , u kterých ignorujeme zaplnění. Jelikož diagonální pozice jsou důležité, do je nikdy nebudeme zahrnovat, tedy
Věta Je-li M-matice, potom algoritmus ILU() neselže a zkonstruuje neúplný LU rozklad , který je regulární (tedy metoda prosté iterace bude konvergovat). Přitom matice odpovídá zanedbaným prvkům.Poznámka ILU(0) je speciální případ ILU(), kde
Chceme-li přesnější neúplný LU rozklad, můžeme připustit i nějaké větší zaplnění.
Definice Úroveň zaplnění složky je číslo definované následovně:
Je-li , potom ;
Je-li a na pozici vzniká zaplnění součinem prvků a , potom .