Metody rozwiązywania układów równań liniowych
Parę słów o macierzach Macierz m´n: tablica m na n (m wierszy n kolumn) liczb (np. tabliczka mnożenia). Macierz kwadradowa: m=n Macierz symetryczna (zawsze kwadratowa): aij=aji Macierz transponowana AT: (AT)ij=aji Macierz nieosobliwa: macierz o niezerowym wyznaczniku. Macierz dodatnio określona: xTAx>0 dla każdego niezerowego wektora x. Norma euklidesowa macierzy: Norma spektralna macierzy Wskaźnik uwarunkowania macierzy
Metody skończone: Metoda Gaussa Metoda Gaussa-Jordana Metody Choleskiego Metoda Householdera Metoda sprzężonych gradientów Metody iteracyjne dla dużych układów równań: Metoda Jacobiego Metoda Gaussa-Seidla
Metoda eliminacji Gaussa z wyborem elementu głównego w kolumnie Układ równań sprowadzamy do postaci trójkątnej Układ z macierzą trójkątną można następnie łatwo rozwiązać zaczynając od obliczenia wartości xn z n-tego równania, następnie wstawić xn do równania n-1 i wyliczyć z niego xn-1, następnie wstawić xn oraz xn-1 do równania n-2 i wyliczyć xn-2 aż do dotarcia do równania pierwszego i wyznaczenia x1.
Wybieramy równanie i takie, że |ai1| jest największym elementem w pierwszej kolumnie po czym przestawiamy i-te równanie na początek i eliminujemy x1 z równań od 2 do n. Procedurę powtarzamy z macierzą A(1) o rozmiarach (n-1)x(n-1) i wektorem b(1) o rozmiarze n-1, eliminując z nich drugą zmienną i otrzymując macierz A(2) o rozmiarach (n-2)x(n-2) i wektor b(2) o rozmiarze n-2. W ten sam sposób postępujemy z kolejnymi macierzami A(2), A(3),..., A(n-1) oraz wektorami b(2), b(3),..., b(n-1).
Dla j-tego kroku Po zakończeniu operacji otrzymujemy układ równań z macierzą trójkątną p jest liczbą przestawień wierszy macierzy A podczas sprowadzania układu równań do postaci trójkątnej.
Z otrzymanego układu równań z macierzą trójkątną wyznaczamy po kolei xn, xn-1,..., x1. Wysiłek obliczeniowy (liczba mnożeń i dzieleń) w metodzie eliminacji Gaussa: Faktoryzacja macierzy A: n(n2-1)/3 operacji Przekształcenie wektora b: n(n-1)/2 operacji Obliczenie x: n(n+1)/2 operacji. Razem: n3/3+n2-n/3≈n3/3 operacji. Kod źródłowy metody eliminacji Gaussa.
Zastosowania metody eliminacji Gaussa i innych metod rozwiązywania układów równań liniowych. 1. Odwracanie macierzy Należy więc jednocześnie rozwiązać n układów równań z wektorami jednostkowymi poszczególnych osi w przestrzeni n-wymiarowej jako wyrazami wolnymi. Wszystkie wektory wyrazów wolnych przekształca się jednocześnie w czasie faktoryzacji macierzy A. Koszt obliczeniowy operacji wynosi (4/3)n3-n/3 operacji.
2. Mnożenie macierzy przez macierz odwrotną Jeżeli macierz A ma rozmiar nxn to macierz B musi mieć n wierszy (liczba kolumn może być dowolna, np. m). Zagadnienie sprowadza się do jednoczesnego rozwiązania m układów równań liniowych, których wektory wyrazów wolnych są równe kolejnym kolumnom macierzy B. Podobie jak przy odwracaniu macierzy podczas faktoryzacji A jednocześnie przekształcamy wszystkie kolumny macierzy B. Wysiłek obliczeniowy wynosi n3/3-n/3+mn2 operacji.
Metoda Gaussa-Jordana W odróżnieniu od metody eliminacji Gaussa eliminujemy poszczególne zmienne nie tylko z równań następujących po danym równaniu ale również z równań je poprzedzających. W wyniku tej operacji końcowy układ równań ma postać diagonalną a w kroku j-1 ma on następującą postać:
Dla dużych n metoda Gaussa-Jordana wymaga ok. n3/2 operacji.
Metody typu Choleskiego dla macierzy symetrycznych silnie nieosobliwych LT D L L klasyczna metoda Choleskiego tylko dla macierzy dodatnio określonych.
Postępowanie przy rozwiązywaniu układów równań metodą faktoryzacji Choleskiego. Wyznaczenie faktorów L i D. Układ przyjmuje postać LDLTx=b 2. Obliczenie pomocniczego wektora w. w=L-1b przez rozwiązanie układu równań Lw=b. Ponieważ L jest macierzą trójkątną dolną układ ten rozwiązuje się wyliczając kolejno w1, w2,…, wn podobnie jak w koncowym etapie eliminacji Gaussa. 3. Obliczenie z=D-1w (D jest macierzą diagonalną więc po prostu dzielimy wi przez dii. Ten etap nie występuje w klasycznej metodzie Choleskiego. 4. Obliczenie x poprzez rozwiązanie układu równań z macierzą trójkątną górną LTx=z Ten etap jest identyczny z ostatnim etapem metody eliminacji Gaussa. Metoda wymaga ok. n3/6 operacji (2 razy mniej niż metoda eliminacji Gaussa). Uwaga: klasyczna metoda Choleskiego wymaga ponadto n pierwiastkowań.
Klasyczna faktoryzacja Choleskiego (A=LLT)
Faktoryzacja “bezpierwiastkowa” kod źródłowy
Metoda Householdera
Iteracyjna poprawa rozwiązania układu równań liniowych Proces kończymy gdy
Metoda sprzężonych gradientów Rozwiązanie układu równań przedstawiamy jako rozwiązanie zagadnienia minimalizacji funkcji E(x), której gradient jest różnicą pomiędzy lewą a prawą stroną układu równań. Metoda polega na wykonaniu n kroków w kierunkach d0, d1,…, dn-1 stopniowo zbliżających się do kierunku jednej z osi hiperparaboloidy E(x); długość kroku w każdym kierunku jest tak dobrana aby zlokalizować minimum E na tym właśnie kierunku. Poszczególne kierunki są A-ortogonalne, tj. dk+1Adk=0
Wybieramy punkt startowy x0. Obliczamy d0=-g0=b-Ax0. Jeżeli Wybieramy punkt startowy x0. Obliczamy d0=-g0=b-Ax0. Jeżeli g0=0 procedura jest zakończona. W kroku k=0,1,…,n-1 obliczamy Wstawiamy xk+1=xk+akdk Wstawiamy gk+1=gk+akAdk. Jeżeli ||gk+|||<e kończymy proces, w przeciwnym wypadku wstawiamy a następnie wstawiamy dk+1=-gk+1+bkdk Procedura jest teoretycznie zawsze zbieżna w n krokach (0,1,…,n-1). Dla dobrze uwarunkowanego zadania zbieżność jest szybsza a dla źle uwarunkowanego zadania często występują oscylacje. Kod źródłowy metody sprzężonych gradientów.
Metody iteracji Jacobiego oraz iteracji Gaussa-Seidla Metody te stosuje się dla dużych układów równań, pojawiających się przykładowo przy rozwiązywaniu równań różniczkowych cząstkowych lub równań całkowych. Iteracja Jacobiego Wyznaczamy przybliżenie początkowe x(0) Kolejne przybliżenia x(1), x(2),…, obliczamy wyznaczając xi z i-tego równania dla i=1,2,…,n a następnie podstawiając po prawej stronie poprzednie przybliżenie x. 3. Proces kończymy jeżeli ||x(p+1)-x(p)||<d.
Metoda iteracji Gaussa-Seidla. Metoda ta różni się od metody iteracji Jacobiego tym, że kolejne przybliżenie i-tej współrzędnej wektora x obliczamy wykorzystując przybliżenia x1,…,xi-1 wyliczone w aktualnej iteracji oraz przybliżenia xi+1,…,xn z poprzedniej iteracji. Metoda iteracji Gaussa-Seidla jest zawsze zbieżna dla macierzy dodatnio określonych.
Wartość czynnika relaksacji łatwa do obliczenia. Optymalna wartość czynnika relaksacji; l1 jest największą wartością własną macierzy B=B(l)+B(r) Wartość czynnika relaksacji łatwa do obliczenia. Kod źródłowy metody Gaussa-Seidla.