Formulare Met.sta¸ tionare Ideea met.GC Met.gradientului Met.dir.conj. Met.GC Precondi¸ tionare Sisteme de ecua¸ tii algebrice liniare - metode iterative nesta¸ tionare (semiiterative) Conf.dr.ing. Gabriela Ciuprina Universitatea "Politehnica" Bucure¸ sti, Facultatea de Inginerie Electric ˘ a, Departamentul de Electrotehnic ˘ a Suport didactic pentru disciplina Algoritmi Numerici, 2012
38
Embed
Sisteme de ecuatii algebrice liniare - metode iterative ...an.lmn.pub.ro/slides/AN_s8.pdfSisteme de ecua¸tii algebrice liniare - metode iterative nesta¸tionare (semiiterative) ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Problema este bine formulata din punct de vedere matematic(solutia exista si este unica)⇔matricea A este nesingulara (are determinantul nenul).Se scrie formal:
”x = A−1b”
trebuie citita ca:"x este solutia sistemului algebric liniar Ax = b"si NU "se calculeaza inversa matricei A care se înmulteste cuvectorul b".
Este o metoda iterativa nestationara, pentru rezolvarea unorsisteme de ecuatii algebrice de forma
Ax = b, (10)
unde A este simetrica si pozitiv definita.
• Algoritmul metodei gradientilor conjugatti (GC) este eficientpentru matrice rare.
• Pseudocodurile vor fi descrise simplificat, evidentiindoperatii de algebra liniara, presupuse a fi implementatetinând cont de raritatea structurilor de date.
Daca AT = A (matrice simetrica) atunci (14) ⇔ Ax = b.Deci solutia ecuatiei Ax = b este punct critic pentru f .Daca în plus, A este pozitiv definita, atunci punctul critic esteun minim.
Metoda celei mai rapide coborâri (a gradientului)Algoritm - varianta 0
procedur a metoda_gradientului_v0(n,A,b, x0,er ,maxit , x)· · ·xv = x0 ; initializeaza sirul iteratiilork = 0 ; initializare contor iteratiir = b − A · xv ; calculeaza reziduucât timp ‖r‖ > er si k ≤ maxit
α = rT r/(rT Ar)x = xv + αrr = b − A · xvxv = x ; actualizeaza solutia vechek = k + 1
•retur
Efortul cel mai mare de calcul: datorat produsului dintre omatrice si un vector. (doua astfel de produse la fiecare iteratie).
r(k+1) = r(k) − αk Ar (k), (33)procedur a metoda_gradientului(n, A, b, x0, er, maxit, x)· · ·xv = x0 ; initializeaza sirul iteratiilork = 0 ; initializare contor iteratiir = b − A · xv ; calculeaza reziduue = ‖r‖cât timp e > er si k ≤ maxit
m = A · rα = rT r/(rT m)e = ‖r‖x = xv + αrxv = x ; actualizeaza solutia vechek = k + 1r = r − αm
•retur
Observatii:
• 1 singur produs matrice vector pe iteratie;
• Reziduul se calculeaza recursiv. Se pot acumula erori derotunjire. Este bine ca periodic r(k) = b − Ax (k).
Metoda celei mai rapide coborâri (a gradientului)Analiza convergentei acestei metode se face pe bazanumarului de conditionare spectrala
κ =maxλi
minλi≥ 1. (34)
• Metoda poate converge rapid, într-un singur pas, dacapunctul de start este ales pe axele elipsoidului sau dacaforma patratica este sferica (ceea ce corespunde cazului încare toate valorile proprii sunt egale).
• În rest, convergenta depinde de numarul de conditionare κsi de initializare.
• Se poate demonstra ca eroarea la fiecare iteratie i estemarginita de
Metoda directiilor conjugateMetoda gradientului converge atât de încet deoarece directiilede cautare sunt ortogonale si se întâmpla ca pe parcursuliteratiilor directiile de cautare sa se repete.Ar fi de dorit sa existe exact n directii de cautare,d(0), d(1), . . . , d(n−1) astfel încât solutia sa fie gasita dupa exactn pasi.La fiecare pas nou
x(k+1) = x(k) + αkd(k), (36)
iar αk se va alege astfel încât eroarea e(k+1) sa fie ortogonalape d(k) si, în consecinta, nici o alta corectie sa nu se mai facaîn directia lui d(k):
(d(k))T e(k+1) = 0. (37)
OBS: În cazul particular în care directiile d(k) sunt reziduurile,se obtine exact metoda celei mai rapide coborâri.
Metoda directiilor conjugateSolutia consta în a face directiile de cautare A-ortogonale si nuortogonale:
(d(k))T Ad (j) = 0. j < k . (43)
Noua cerinta este ca e(k+1) sa fie A-ortogonal pe d(k), aceastaconditie fiind echivalenta cu gasirea unui punct de minim de-alungul directiei d(k), asa cum se facea la metoda gradientului.
TeoremaMetoda directiilor conjugate calculeaza solutia în exact n pasi.Pentru demonstratie consultati documentul extins.
Gasirea unui set de directii A-ortogonale d(k) se realizeazausor cu ajutorul procedurii Gram-Schmidt conjugate.
• Se porneste de la o multime de n vectori liniarindependentiu(0), u(1), . . . , u(n−1)
d(0) = u(0). (46)
• A doua directie porneste de la al doilea vector la care seadauga un vector orientat pe directia anterioara, scalatastfel încât rezultatul sa fie A-ortogonal pe directiaanterioara.
Metoda gradientilor conjugatiMetoda gradientilor conjugati este metoda directiilor conjugateîn care directiile de cautare sunt construite prin conjugareareziduurilor:
u(k) = r(k). (56)
Justificarea acestei alegeri:1. Intuitiv, inspirat de metoda celei mai rapide coborâri, în
care directiile de cautare erau directiile reziduurilor.2. Proprietatea reziduului de a fi ortogonal pe directiile de
cautare anterioare si pe reziduurile anterioare.(dk )T r(i) = 0, k < i , (57)
(rk )T r(i) = 0, k < i . (58)
De asemenea, reziduul rk este o combinatie liniara dintrereziduul anterior si produsul Ad (k−1):
Pentru i 6= k , membrul drept al acestei relatii este nenul doarpentru cazul i = k + 1, când valoarea lui este −(r(i))T r(i)/αi−1.Rezulta ca valorile β sunt nenule doar daca i = k + 1:
procedur a metoda_gradientilor_conjugati(n, A, b, x0, er, maxit, x)· · ·xv = x0 ; initializeaza sirul iteratiilork = 0 ; initializare contor iteratiir = b − A · xv ; calculeaza reziduucât timp ‖r‖ > er si k ≤ maxit
• Algoritmul este complet dupa n iteratii. Din acest motiv, semai spune ca metoda este semi-iterativa, sirul iteratiilor nutinde catre solutia exacta atunci când numarul iteratiilortinde la infinit, ci, într-o aritmetica exacta, solutia exacta seobtine dupa exact n iteratii.
• În practica însa metoda este folosita pentru probleme atâtde mari încât nu ar fi fezabil sa se execute toate cele niteratii. De aceea, iteratiile în algoritm sunt executateîntr-un ciclu cu test si nu într-un ciclu cu contor.
PreconditionarePreconditionare = transformarea problemei initiale într-unaechivalenta care are proprietati îmbunatatite considerabil.Preconditionare la stânga
Ax = b (65)
M−1Ax = M−1b, (66)
M matrice nesingulara, numita matrice de preconditionare saupreconditionator.
• Convergenta depinde de proprietatile matricei M−1A.
• M−1A nu se calculeaza explicit, ci se rezolva My = A
• Cazurile extreme: M = I si M = A - nu exista nici un câstig.
• O conditie puternica pentru un bun preconditionator este cavalorile proprii ale matricei M−1A sa fie apropiate de 1 si canorma ‖M−1A − I‖2 sa fie mica [Trefethen:97].
unde x = M−1y.Se pot folosi ambele tipuri de preconditionare simultan.Preconditionare matricelor simetrice si pozitiv definitePreconditionarea se face astfel încât sa se pastreze aceastaproprietate.Fie M = CCT - simetrica si pozitiv definita.
[
C−1AC−T]
CT x = C−1b, (68)
unde C−T = (C−1)T = (CT )−1, iar matricea din parantezadreapta este simetrica si pozitiv definita.
1. Preconditionarea Jacobi (sau scalarea diagonala):M = diag(A), nesingulara. Generalizare: M = diag(c), undec ales convenabil.
2. Factorizarea incompleta Cholesky sau LU în care se aplicaprocedura de factorizare, dar factorii nu sunt calculaticomplet, valorile care ar umple matricea nu sunt luate înconsiderare. Matricea de preconditionare se obtine caprodusul acestor factori incompleti.
• Aceste doua exemple de preconditionatori nu fac nicio referire laproblema initiala care a generat sistemul (65).
• Cel mai bun sfat general: de a încerca sa se construiascapreconditionatorul pe baza unei versiuni mai simple a problemei.Pe aceasta idee se bazeaza metodele multigrid care se bazeazasi pe preconditionatori obtinuti din Jacobi si SSOR..