Zalety:
1) Duża wydajność dla dużej liczby równań.
Rozkład LU opłaca się stosować w przypadku rozwiązywania wielu układów równań z tą samą macierzą współczynników układu A. Każdy układ równań różni się wtedy tylko wektorem wyrazów wolnych. Rozkład LU wykonuje się w takim przypadku tylko raz (ilość operacji ~n3). Rozwiązanie pojedynczego układu równań można znaleźć przy zastosowaniu algorytmu postępowania odwrotnego (ilość operacji ~n2).
2) Oszczędność zajmowanej pamięci.
Elementy macierzy L i U mogą zostać zapisane w macierzy A. Pomija się elementy diagonalne, których wartośc jest równa 1.
3) Jeśli macierz A jest symetryczna i dodatniookreslona to nie trzeba dokonywać wyboru elementów podstawowych. Jeśli macierz jest symetryczna i silnie
diagonalnie dominująca to macierz jest dodatniookreślona.
Rozwiązywanie układów równań liniowych
Układy równań z macierzą symetryczną.
Rozkład LDLT
Oznaczmy rozkład LU jako:
Szukamy rozkładu macierzy A w postaci:
gdzie: L – macierz trójkątna dolna z jedynkami na diagonali
D – macierz diagonalna z elementami diagonalnymi macierzy U – macierz trójkątna górna z jedynkami na diagonali
Jeśli macierz A jest symetryczna:
Dla macierzy symetrycznych istnieje jednoznaczny rozkład:
Rozwiązywanie układów równań liniowych
Elementy macierzy L i D wyznaczamy ze wzorów:
a dla i=2,3,...,n oblicza się na przemian:
W celu wyznaczenia rozkładu LDLT należy wykonać:
-operacji mnożenia i dzielenia
-operacji dodawania i odejmowania
Rozwiązywanie układów równań liniowych
Układ równań Ax=b rozwiązuje się w trzech etapach:
Zaletą rozkładu LDLT jest dwukrotnie mniejszy nakład obliczeń potrzebny do znalezienia rozwiązania układu równań niż w metodzie Gaussa-Crouta.
Ponadto zamiast posługiwać się pełną macierzą o n2 elementach wystarczy zapamiętać dolną macierz trójkątną z elementami diagonalnymi. Liczba elementów potrzebnych do zapamiętania wynosi zatem:
Rozwiązywanie układów równań liniowych
Rozkład Banachiewicza-Cholesky'ego
Jeśli macierz A jest macierzą symetryczną dodatnio okresloną wówaczas można dokonać następującego rozkładu:
Macierz L jest macierzą trójkątną dolną z elementami na diagonali mogącymi się różnić od 1.
Macierz
z rozkładu LU również spełnia warunek:
więc rozkład ten nie jest jednoznaczny. Jeśli jednak liczby na diagonali macierzy L są ddatnie wówczas rozkład jest jednoznaczny, a elementy macierzy wyznaczamy ze wzorów:
Rozwiązywanie układów równań liniowych
Aby przeprowadzić rozkład LLT należy wykonać:
n obliczeń pierwiastka kwadratowego
- operacji mnożenia i dzielenia
- operacji dodawania i odejmowania Rozkład LLT pozwala na wykonanie dwukrotnie mniejszej liczby operacji oraz zajęcie prawie dwukrotnie mniejjszej liczby komórek pamięci niż metoda Gaussa-Crouta.
Rozwiązywanie układów równań liniowych
Przykład:
obliczenia elementów:
Rozwiązywanie układów równań liniowych
Układy równań z macierzą trójdiagonalną Szukamy rozwiązania układu równań:
Zdarza się że macierz układu równań jest macierzą postaci:
Można wykonać rozkład LU macierzy T, macierze te mają postać:
Rozwiązywanie układów równań liniowych
Elementy li oraz ui oblicza się rekurencyjnie:
Rozwiązanie układu Tx=d czyli Lux=d rozwiązuje się dwuetapowo:
wykorzystując wzory:
Rozwiązywanie układów równań liniowych
Dokonując rozkładu T=LU należy wykonać:
M=2n-2 - operacji mnożenia i dzielenia oraz
D=n-1 - operacji dodawania i odejmowania
Uwzględniając dodatkowo rozwiązanie układu równań należy w sumie wykonać:
M=3n-2 i D=2n-2 działań. Ponadto elementy macierzy L i U można zapamiętać
w macierzy T. Liczba zajętych komórek pamięci wynosi: P=3n-2. Zamiast posługiwać się macierzami można używać 3 wektorów jednowymiarowych.
Jeśli macierz jest dominująca kolumnowo to rozkład T=LU jest równoważny
rozkładowi z częściowym wyborem elementu podstawowego (niezawodność metody).
Elementy macierzy L spełniają warunek:
co poprawia oszacowanie błędów zaokrągleń.
Rozwiązywanie układów równań liniowych
Rozkład LU – obliczanie wyznacznika
Aby obliczyć wyznacznik macierzy A możemy posłużyć się rozkładem
Macierz E jest macierzą zaburzeń. Jej obecność w powyższych wzorach jest wynikiem błędów zaokrągleń pojawiających się podczas obliczania rozkładu.
Wyznacznik macierzy U można łatwo obliczyć, gdzyż jest on iloczynem n elementów stojących na diagonali tej macierzy. Dysponując rozkładem LU wystarczy wykonanie n-1 operacji mnożenia w celu wyznaczenia wyznacznika macierzy A.
Małe zaburzenia wartości elementów macierzy mogą powodować duże zmiany wartości wyznacznika macierzy. Zmiany te zależą od wielkości:
Rozwiązywanie układów równań liniowych
Rozkład LU – odwracanie macierzy.
Aby znaleźć przy pomocy macierzy L i U macierz odwrotną A-1 należy rozwiązać n układów równań:
gdzie: -jest wersorem w n-wymiarowej przestrzeni
Rozwiązania układów równań x(i) stanowią kolumny macierzy odwrotnej A-1 (po uwzględnieniu ewentualnych przestawień wierszy wynikających z
wyboru elementu podstawowego).
Przykład. Znaleźć macierz A-1 jeśli macierz A jest zdefiniowana:
Rozwiązywanie układów równań liniowych
Wektor przestawień (wektor permutacji)
Macierz odwrotna:
Rozwiązywanie układów równań liniowych
Iteracyjne poprawianie rozwiązania układu równań Błąd rozwiązania można sprawdzić obliczając wektor reszt:
Zazwyczaj współrzędne wektora r są różne od zera. Oznacza to że nie uzyskaliśmy dokładnego rozwiązania, ale przybliżone. Rozwiązanie to chcemy poprawić:
gdzie: jest poprawką, którą można łatwo wyznaczyć
Należy jednak pamiętać że wyznaczając poprawkę znowu popełniamy jakiś błąd i rozwiązanie które uzyskamy będzie miało postać:
Rozwiązywanie układów równań liniowych
Lemat. Jeżeli wektor reszt r=b-Ax jest obliczony dokładnie, poprawka x została wyznaczona metodą Gaussa-Crouta oraz zachodzi warunek:
to wtedy:
Sposób iteracyjnego poprawiania rozwiązania:
1. Rzowiązujemy układ Ax(1)=b metodą Gaussa
2. Obliczamy wektor reszt r(1) i sprawdzamy rozwiązanie 3. Sprawdzamy czy poniższy warunek jest prawdziwy
jeśli nie to przerywamy obliczenia. Jeśli jest spełniony to kontynuujemy.
4. Obliczamy poprawkę i wyznaczamy
5. Wyznaczamy wektor reszt r(2) i sprawdzamy rozwiązanie. W razie konieczności
Rozwiązywanie układów równań liniowych
Metody iteracyjne rozwiązywania układów równań.
Idea metody. Rozważamy ciąg wektorów x(0), x(1),x(0),...generowany przez wyrażenie rekurencyjne:
gdzie: x(0) jest ustalonym wektorem, M jest macierzą kwadratową, w jest wektorem.
Ciąg określony powyższą relacją rekurencyjną przy dowolnym wektorze x(0) jest zbieżny do jedynego punktu granicznego wtedy i tylko wtedy gdy:
Promień spektralny jest to największa co do wartości bezwględnej wartość własna macierzy.
Poszukując iteracyjnie kolejnych elementów ciągu dążymy do osiągnięcia:
Aby znaleźć iteracyjnie rozwiązanie układu równań należałoby użyć dowolnej macierzy M okreslonej w lemacie oraz wektor w zdefiniowany:
Rozwiązywanie układów równań liniowych
Takie postępowanie wymagałoby znalezienia macierzy odwrotnej układu co byłoby nieekonomiczne. Aby tego uniknąć zakładamy:
gdzie: N jest pewną macierzą kwadratową.
Określamy macierz M w postaci:
i otrzymujemy ogólny przepis iteracyjny:
Zastosowanie powyższej realacji pozwala wyznaczyć wektor rozwiązań jeśli spełniony jest warunek:
Istnieją sposoby określenia macierzy N. istotnym problemem jest efektywność poszczególnych metod (liczba wykonywanych działań ~ liczba iteracji)
oraz błędy zaokrągleń wpływające na wynik końcowy. Efektywność można badać określając wektor błędu:
Rozwiązywanie układów równań liniowych
Efektywność metod iteracyjnych związana jest ściśle z promieniem spektralnym macierzy M.
Metody iteracyjne są bardzo czułe na błędy zaokrągleń. W każdej iteracji zamiast:
otzrymujemy:
Nawet przy małej wartości błędów zaokrągleń, duża liczba iteracji może spowodować kumulację błędów:
W skrajnym przypadku błąd zaokrągleń:
może doprowadzić do uzyskania
i ciąg wektorów nie jest zbieżny do rozwiązania.
Rozwiązywanie układów równań liniowych
Metoda Jacobiego.
W metodzie jacobiego macierz układu A rozkładamy na 3 składniki
gdzie: L – macierz poddiagonalna, D – macierz diagonalna, U – macierz naddiagonalna
Jeśli przyjmiemy:
wówczas macierz M ma postać:
Rozwiązywanie układów równań liniowych
Wzór iteracyjny Jacobiego przyjmuje postać:
Elementy D-1 są odrotnościami elementów diagonalnych macierzy D.
Aby móc zastosować wzór Jacobiego należy najpierw sprawdzić czy w macierzy A na diagonali nie ma elementów zerowych. Jeśli są, wówczas należy przestawić wiersze w A tak by miały one niezerowe wartości. Procedura zmiany kolejności wierszy nie gwarantuje spełnienia waruku zbieżności:
Metoda jest zbieżna jeśli macierz jest silnie diagonalnie dominująca lub silnie diagonalnie dominująca kolumnowo.
Rozwiązywanie układów równań liniowych
Metoda Gaussa-Seidla
Zakładamy że macierz układu jest sumą 3 macierzy:
ale przyjmujemy inną postać macierzy N:
Macierz M w procedurze iteracyjnej wyraża się następująco:
Wzór iteracyjny w metodzie Gaussa-Seidla:
Rozwiązywanie układów równań liniowych
Nie ma problemu z obliczeniem prawej strony równania. Zaczynając obliczenia
od elementu pierwszego tj. x1(i+1) , można zauważyć, że obliczana wartość nie zależy
od x(i+1) (zapewnia to macierz L). Przy wyznaczaniu wartości x2(i+1) zauważamy, że
potrzebujemy x1(i+1) itd. Obliczając i-ty element wektora x(i+1) korzystamy
z elementów już obliczonych czyli, xk(i+1), i=1,2,...,i-1. Zabieg ten może w pewnych przypadkach znacznie podnieść efektywność metody.
Metodę GS można zastosować w przypadku niezerowych elementów diagonalnych macierzy A. Metoda jest zbieżna jeśli macierz jest symetryczna i dodatnio określona oraz gdy jest silnie diagonalnie dominująca lub silnie diagonalnie dominująca
kolumnowo. Na ogół metoda Gaussa-Seidla jest szybciej zbieżna od metody Jacobiego, choć nie jest to regułą.
Nakład obliczeń i testy stopu.
Zadaniem metod iteracyjnych jest zmniejszenie początkowego błędu do małej wartości
Nie można wieć z góry przewidzieć jaka będzie potrzebna liczba iteracji aby spełnić ten warunek. Liczbę ta można jedynie oszacować:
Rozwiązywanie układów równań liniowych
Oszacowanie to nie uwzględnia błędów zaokrągleń, które mogą zmniejszyć efektywność metody.
W celu uniknięcia niedoszacowania rozwiązania należy zastosować test stopu:
a)
b)
Testy te mogą być jednak zawodne. Jeśli norma macierzy A jest mała to wartość reszty
Może być mała mimo dużego odchylenia x(i+1) od rozwiązania dokładnego.
Również mała wartość
nie świadczy o zbliżaniu się do rozwiązania dokładnego, co wynika z poniższego
Rozwiązywanie układów równań liniowych
Jeśli macierz (I-M) ma małą normę to mimo dużego błędu e(i) wektory
x(i+1) oraz x(i) mogą się niewiele różnić. W przypadku wolnej zbieżności
należy wówczas zastosować test:
lub jeśli potrafimy oszacować normę macierzy A-1 test: