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.
Metoda Gaussa-Seidla.