Zajmiemy się przybliżonymi metodami rozwiązywania układów równań liniowych
z nieosobliwą rzeczywistą macierzą . Jak już sugerowaliśmy we wstępie, wraz z coraz większymi modelami pojawiającymi się w praktyce obliczeniowej, częściej zachodzi potrzeba rozwiązywania zadań algebry liniowej o bardzo wielkiej liczbie niewiadomych. Gdy jest dużego rozmiaru, metody bezpośrednie (wykorzystujące na przykład rozkład LU metodą eliminacji Gaussa lub inne rozkłady macierzy, np. QR) mogą być zbyt kosztowne lub mniej wygodne w użyciu. Przykładowo, jeśli niewiadomych jest kilka milionów, a macierz nie ma żadnej specjalnej struktury, to korzystając z eliminacji Gaussa musielibyśmy wykonać rzędu działań arytmetycznych (i zarezerwować rzędu bajtów — czyli GB — pamięci na czynniki rozkładu). Zakładając optymistycznie, że nasz komputer jest w stanie wykonać działań na sekundę (czyli jest w stanie realnie osiągnąć wydajność 10 Gflopów/s), dawałoby to sekund, czyli około 32 lat… Rozsądną alternatywą może być wtedy rozwiązanie układu w sposób przybliżony, ale za to znacznie tańszy lub wygodniejszy. Jednym ze sposobów przybliżonego rozwiązywania układów równań liniowych są metody iteracyjne, szczególnie użyteczne wówczas, gdy jest macierzą rozrzedzoną.
Macierze, w których bardzo wiele elementów jest zerowych, nazywamy macierzami rozrzedzonymi lub, potocznie, rzadkimi. Dla odróżnienia, macierze, które nie są rzadkie, nazwiemy gęstymi — przykładem takiej macierzy jest macierz, której wszystkie elementy są niezerowe. Intuicyjnie możemy spodziewać się, że praktyczne zadania liniowe wielkiego wymiaru będą prowadziły właśnie do macierzy rozrzedzonej, gdyż związki pomiędzy niewiadomymi w pojedynczym równaniu zadanego układu nie będą raczej dotyczyć wszystkich, tylko wybranej (nielicznej) grupy innych niewiadomych.
Wykorzystanie rozrzedzenia macierzy nie tylko może doprowadzić do algorytmów istotnie szybszych od ich analogonów dla macierzy gęstych (jak pamiętamy, standardowe algorytmy oparte na rozkładzie macierzy gęstej, np. LU, potrzebują działań arytmetycznych), ale wręcz może być jedynym realnym sposobem na to, by niektóre zadania w ogóle stały się rozwiązywalne przy obecnym stanie techniki obliczeniowej!
Gdy jest rozrzedzona, mnożenie takiej macierzy przez wektor jest bardzo tanie (koszt jest proporcjonalny do liczby niezerowych elementów macierzy). Dlatego, konstruując metodę przybliżonego rozwiązywania układu, warto oprzeć się na iteracji, których głównym składnikiem jest operacja mnożenia przez lub jej część.
Jak zobaczymy poniżej, rzeczywiście łatwo można spotkać realne zadania matematyki stosowanej, w których macierz wymiaru ma tylko niezerowych elementów. Omówimy tu dwie klasy takich zadań: dyskretyzacje równań różniczkowych oraz łańcuchy Markowa z dyskretną przestrzenią stanów.
Jednym ze szczególnie ważnych źródeł układów równań z macierzami rozrzedzonymi są równania różniczkowe cząstkowe (pochodzące np. z modeli pogody, naprężeń w konstrukcji samochodu, przenikania kosmetyków do głębszych warstw skóry, itp.).
Rozważmy modelowe eliptyczne równanie różniczkowe z jednorodnym warunkiem brzegowym Dirichleta
(5.1) | ||||
(5.2) |
w którym jest szukanym rozwiązaniem, a — zadaną funkcją. Aby znaleźć jego przybliżone rozwiązanie, możemy na przykład zastąpić równanie różniczkowe odpowiadającym mu równaniem różnicowym,
(5.3) | ||||
(5.4) |
gdzie ma odpowiadać wartości rozwiązania w węźle dyskretyzacji , , oraz , przy czym . Odpowiedzią na pytanie, jak dobrze (i czy w ogóle) takie rozwiązanie dyskretne aproksymuje rozwiązanie dokładne, zajmujemy się na wykładzie z Numerycznych równań różniczkowych; tutaj zobaczymy, do jakiego zagadnienia algebraicznego prowadzi równanie różnicowe (5.3).
Jest to oczywiście równanie liniowe na współczynniki ,
gdzie
(5.5) |
oraz . Ponieważ interesują nas dobre przybliżenia (to znaczy przypadek, gdy jest bardzo małe), znaczy to, że będzie bardzo duże. Nasza macierz jest rzeczywiście macierzą rozrzedzoną, bo ma nieco mniej niż niezerowych elementów. Jej współczynnik wypełnienia (ang. density), czyli stosunek liczby niezerowych do liczby wszystkich elementów macierzy, jest rzędu i maleje ze wzrostem .
Otrzymana powyżej macierz, aczkolwiek ma bardzo wiele cech charakterystycznych dla dyskretyzacji ,,poważniejszych” równań różniczkowych, wydaje się jednak zbyt trywialna, by traktować ją metodą inną niż eliminacja Gaussa (uwzględniając jej pasmową strukturę): rzeczywiście, jest to macierz trójdiagonalna (a przy tym: symetryczna i dodatnio określona), zatem właściwie zrealizowany algorytm eliminacji Gaussa (lub lepiej: rozkładu ) pozwoli nam wyznaczyć rozwiązanie układu kosztem , a więc — z dokładnością do stałej — optymalnym.
Jednak, gdy przejdziemy do wyższych wymiarów i być może dodatkowo regularną siatkę węzłów dyskretyzacji zastąpimy na przykład nieregularną siatką elementu skończonego, uzyskamy macierze o znacznie bardziej skomplikowanej strukturze, które już nie tak łatwo poddają się eliminacji Gaussa.
Przez analogię z poprzednim przykładem, rozważmy równanie Poissona w obszarze , z jednorodnym warunkiem Dirichleta:
(5.6) | ||||
(5.7) |
w którym jest szukanym rozwiązaniem, a — zadaną funkcją. oznacza operator Laplace'a,
W dalszym ciągu przyjmiemy, dla ominięcia dodatkowych trudności, że jest kostką jednostkową: .
Aby znaleźć przybliżone rozwiązanie, znów możemy na przykład zastąpić równanie różniczkowe odpowiadającym mu równaniem różnicowym. Wybierzemy tu najmniej efektywną, ale za to koncepcyjnie najprostszą metodę dyskretyzacji, opartą na równomiernej siatce węzłów w .
Przykładowo, jeśli , to weźmiemy siatkę węzłów , gdzie , przy czym jest krokiem siatki w kierunku i analogicznie , zob. rysunek LABEL:regulargrid.pstex_t.
Zastępując pochodne ilorazami różnicowymi [8]
(5.8) |
dostajemy równanie różnicowe
(5.9) |
W pozostałych węzłach siatki rozwiązanie przyjmuje wartość równą zero na mocy warunku brzegowego Dirichleta. Więcej na temat metod dyskretyzacji takich i podobnych równań różniczkowych można dowiedzieć się na wykładzie Numeryczne równania różniczkowe.
W dalszym ciągu, dla uproszczenia zapisu będziemy zakładać, że i w konsekwencji . W takim układzie mamy do wyznaczenia niewiadomych:
które spełniają liniowy układ równań o postaci macierzowej
gdzie jest tym razem pięciodiagonalną macierzą o blokowej strukturze,
(5.10) |
W kolejnych diagonalnych blokach znajdują się macierze trójdiagonalne , gdzie jest znaną już nam macierzą dyskretyzacji jednowymiarowego laplasjanu. Używając więc symbolu Kroneckera dla iloczynu tensorowego macierzy mamy przy naszej numeracji niewiadomych
W przypadku tej macierzy, prosta strategia polegająca na eliminacji Gaussa (z wykorzystaniem dodatkowo faktu, że jest pasmowa, o szerokości pasma ), dałaby nam szansę rozwiązać to równanie kosztem , co jest, przy dużych wielkościach , wartością trudną do zaakceptowania.
Prowadząc analogicznie dyskretyzację na jednorodnej siatce trójwymiarowego zadania Poissona na kostce jednostkowej (), dostalibyśmy oraz zadanie z macierzą siedmiodiagonalną (o szerokości pasma ):
(5.11) |
Nawet dla średnich wartości , układ ten trudno rozwiązać metodą bezpośrednią, opartą na prostym rozkładzie pasmowej macierzy (tutaj na przykład: rozkładzie Cholesky'ego), zarówno ze względu na koszt obliczeniowy, jak i koszt pamięciowy. Rzeczywiście, koszt rozkładu Cholesky'ego uwzględniającego to, że w czynnikach rozkładu poza pasmem nie pojawią się elementy niezerowe wyniesie w przypadku dwuwymiarowego równania Poissona i w przypadku trójwymiarowego równania Poissona (dlaczego?). To oczywiście mniej niż pesymistyczne , ale gdy jest duże, może być wystarczająco zachęcające do tego, by poszukać tańszych rozwiązań, dających sensowne rozwiązanie w sensownym czasie.
Rozważmy równanie
Dla uproszczenia przyjmiemy, że jest kwadratem jednostkowym. Wprowadzając dyskretyzację tego równania po zmiennej przestrzennej jak poprzednio, a po zmiennej czasowej — niejawny schemat Eulera (patrz rozdział o schematach różnicowych Numerycznych równań różniczkowych), otrzymujemy, po uwzględnieniu warunku brzegowego, liniowy układ równań algebraicznych na przybliżenie rozwiązania w chwili ,
gdzie jest określone jak w poprzednim przykładzie oraz
i węzły w numerujemy zgodnie z regułą podaną powyżej. Grupując niewiadome po lewej stronie, dostajemy równanie
a więc takie, w którym macierz układu jest dalej rozrzedzona, ale — dla dostatecznie małych — jest ,,małym zaburzeniem” macierzy jednostkowej.
Gdy siatka nie jest regularna1Zazwyczaj w zaawansowanych metodach dyskretyzacji równań różniczkowych stosuje się właśnie takie siatki, często — adaptacyjnie dopasowane do przebiegu rozwiązania., macierze dyskretyzacji także tracą regularną strukturę (w powyższych przykładach była ona odwzwierciedlona w tym, że niezerowe elementy macierzy układały się wzdłuż nielicznych diagonali). Macierze bez regularnej struktury są jeszcze trudniejsze dla metod bezpośrednich ze względu na rosnące kłopoty w uniknięciu wypełnienia czynników rozkładu macierzy.
Spójrzmy na macierz sztywności dla modelu silnika lotniczego, wygenerowaną swego czasu w zakładach Boeinga i pochodzącą z dyskretyzacji pewnego równania różniczkowego cząstkowego metodą elementu skończonego. Przykład pochodzi z kolekcji Tima Davisa. Jest to mała macierz, wymiaru 8032 (w kolekcji spotkasz równania z milionem i więcej niewiadomych).
Jej współczynnik wypełnienia (to znaczy, stosunek liczby niezerowych do wszystkich elementów macierzy) wynosi jedynie , a więc macierz jest bardzo rozrzedzona: w każdym wierszu są średnio tylko 44 niezerowe elementy.
We wspomnianej kolekcji znajdzuje się jeszcze więcej macierzy rozrzedzonych, pochodzących z najrozmaitszych realnych modeli, nie tylko opartych na równaniach różniczkowych. Choć sporo z nich — tak jak tutaj przedstawiona — będzie symetrycznych, nie jest to regułą; inne układy równań ze zgromadzonego zbioru nie muszą mieć żadnej z pożądanych przez numeryka cech: regularnej/pasmowej struktury, symetrii, ani dodatniej określoności. Jedną z nich przedstawiamy poniżej.
Współczesne układy elektroniczne mogą zawierać miliony części (tranzystorów, rezystorów, kondensatorów), a ich projektowania jest procesem bardzo złożonym i kosztownym. Co więcej, w miarę postępów opracowywania, coraz trudniej o dokonanie w nich poważniejszych zmian projektu. Z tego powodu konieczna jest komputerowa symulacja ich działania. W ogólności prowadzi to do ogromnego układu równań różniczkowo–algebraicznych, ale także bada się modele (prawa Kirchhoffa!), sprowadzające się do rozwiązania układu równań liniowych wielkiego rozmiaru ( na poziomie kilku milionów).
Wizualizacja grafu macierzy Circuit5M o rozmiarze powyżej pięciu milionów
(Źródło: The University of Florida Sparse Matrix Collection)Modele wielostanowych systemów kolejkowych (np. routera obsługującego wiele komputerów) także prowadzą do gigantycznych układów równań z macierzami rozrzedzonymi o specyficznej strukturze. Jeśli taki układ może z danego stanu przejść tylko do niewielu innych, macierz reprezentująca łańcuch Markowa będzie rozrzedzona.
Jednym z zadań, w którym rozważa się bodaj największy ,,naturalnie” pojawiający się łańcuch Markowa jest zadanie wyznaczania tzw. PageRank — wektora wartościującego strony internetowe w wyszukiwarce Google (zob. artykuł ,,Miara ważności” K. Diksa w Delcie 8/2008): macierz ta jest oryginalnie bardzo rozrzedzona, całkowicie nieregularna i niesymetryczna, a jej rozmiar jest równy liczbie indeksowanych stron WWW (a więc mniej więcej rzędu ).
Wykaż, że zadanie można rozwiązać, korzystając z eleminacji Gaussa bez wyboru elementu głównego kosztem .
Niech macierz będzie macierzą pasmową rozmiaru , o szerokości pasma :
Wykaż, że rozkład LU (bez wyboru elementu głównego) macierzy można wyznaczyć kosztem działań arytmetycznych. Jak zmieni się odpowiedź, gdy trzeba będzie dokonać wyboru elementu głównego w kolumnie?
Zbadaj koszt rozkładu LU macierzy , w którym wykorzystuje się jedynie informację o tym, że jest macierzą pasmową.
Mamy i szerokość pasma jest równa . Zatem na mocy poprzedniego zadania, koszt jest rzędu .
Zanim przystąpimy do omawiania metod rozwiązywania układów równań liniowych z macierzami rozrzedzonymi, warto zapoznać się ze sposobami reprezentacji (formatami) macierzy rozrzedzonych. Ponieważ macierze rozrzedzone mają dużo zerowych elementów, ogólną zasadą jest zapamiętywanie tylko tych różnych od zera, w połączeniu z informacją o ich lokalizacji w macierzy. Spośród wielu struktur danych wygodnych dla przechowywania macierzy rozrzedzonych, opisanych m.in. w monografii [13], największą popularnością wśród numeryków cieszą się dwa: format współrzędnych oraz format spakowanych kolumn (lub wierszy)2Mniej popularny format diagonalny spotkamy m.in. w reprezentacji macierzy pasmowych w LAPACKu.. Liczbę niezerowych elementów macierzy rozmiaru będziemy oznaczali, przez analogię do funkcji MATLABa, .
Jest to najprostszy sposób reprezentacji macierzy rozrzedzonych. Do zapamiętania macierzy rozmiaru , liczącej niezerowych elementów, wykorzystujemy trzy wektory: I
,
J
— oba typu int
— oraz V
, typu double
,
wszystkie o długości , przy czym zachodzi
zob. rysunek 5.4.
Zdefiniujemy niezbędne struktury danych i następnie wypełnimy je tak, by reprezentować macierz jednowymiarowego laplasjanu (5.5) w formacie współrzędnych. Macierz jest kwadratowa rozmiaru , o co najwyżej niezerowych elementach.
Poniższa struktura:
typedef struct { int I; int J; double V; } SpElem;będzie odpowiadała jednemu elementowi reprezentowanej macierzy. Cała macierz zmieści się zatem w tablicy elementów typu
SpElem
, na które przydzielamy miejsce:
SpElem *T; /* alokujemy miejsce na 3N elementów */ T = (SpElem *) calloc(3*N, sizeof(SpElem));
Zwróćmy uwagę na to, że do przydzielenia pamięci użyliśmy tym razem funkcji calloc()
, a nie malloc()
, jak zwykle. To dla większego bezpieczeństwa, bo calloc()
wypełnia zerami przydzieloną pamięć.
Teraz możemy wypełnić tablicę. Jak widzimy z dalszego ciągu kodu, zmienną T_NNZ
inkrementujemy od początkowej wartości za każdym razem, gdy do macierzy T
zapisujemy kolejny element — w ten sposób będziemy dokładnie wiedzieli, ile w rzeczywistości (potencjalnie) niezerowych elementów wpisaliśmy do zaalokowanej tablicy.
int nnz = 0; /* bieżąca liczba wpisanych do tablicy elementów */ /* wypełniamy macierz */ for(i = 1; i <= N-1; i++) { /* element diagonalny */ T[nnz].I = i; T[nnz].J = i; T[nnz].V = 2; nnz++; /* element naddiagonalny w i-tym wierszu */ T[nnz].I = i; T[nnz].J = i+1; T[nnz].V = -1; nnz++; /* element poddiagonalny w i-tej kolumnie */ T[nnz].I = i+1; T[nnz].J = i; T[nnz].V = -1; nnz++; } /* ostatni element, (N,N) */ T[nnz].I = N; T[nnz].J = N; T[nnz].V = 2; nnz++;
Nie zawsze taka forma implementacji formatu współrzędnych będzie możliwa: często wybór implementacji będzie narzucony przez biblioteki, jakich zechcemy używać.
Format współrzędnych nie narzucał żadnego uporządkowania elementów macierzy — można było je umieszczać w dowolnej kolejności. Z drugiej strony, narzucenie sensownego porządku mogłoby wspomóc realizację wybranych istotnych operacji na macierzy, na przykład, aby wygodnie było realizować działanie (prawostronnego) mnożenia macierzy przez wektor, wygodnie byłoby przechowywać elementy macierzy wierszami. Tak właśnie jest zorganizowany format spakowanych wierszy (CSR, ang. Compressed Sparse Row). Analogicznie jest zdefiniowany format spakowanych kolumn (CSC, Compressed Sparse Column), którym zajmiemy się bliżej.
Podobnie jak w przypadku formatu współrzędnych, macierz w formacie CSC jest
przechowywana w postaci trzech wektorów. V
jest wektorem typu
double
o długości , zawierającym kolejne niezerowe elementy macierzy wpisywane kolumnami, I
jest wektorem typu int
, także o długości , zawierającym numery wierszy macierzy , odpowiadających elementom z V
. Natomiast zamiast tablicy J
, jak to było w
formacie współrzędnych, mamy krótszy wektor typu int
, P
, o
długości , zawierający na miejscu indeks pozycji w V
, od
której w V
rozpoczynają się elementy -tej kolumny macierzy (zob. rysunek 5.5).
W ten sposób, wartości kolejnych elementów -tej kolumny macierzy znajdują się w tablicy V
na pozycjach o indeksach P[j-1]
…P[j]-1
. Konsekwentnie, zawsze P[0]=0
, a ostatni element, P[M]
, jest równy . Dzięki temu, takie operacje, jak na przykład wydobycie jednej kolumny z macierzy , lub mnożenie przez wektor, są łatwiejsze do implementacji w schludnej, bezwariantowej pętli [13].
Ostatecznie mamy więc zależność
Z tego rodzaju formatu reprezentacji macierzy rzadkich (z drobnymi modyfikacjami) korzystają np. pakiety Octave, MATLAB i UMFPACK.
Mając macierz w formacie CSC, zadaną tablicami I[NNZ]
, P[M+1]
, V[NNZ]
, możemy napisać zgrabną procedurę mnożenia jej przez wektor x[M]
. Wynik będziemy zapisywać w wektorze y[N]
:
for(i = 0; i < N; i++) y[i] = 0.0; /* zerujemy wektor wynikowy */ for(j = 0; j < M; j++) for(k = P[j]; k < P[j+1]; k++) y[I[k]] += V[k]*x[j];
Zapisz w pseudokodzie procedurę mnożenia macierzy rozrzedzonej przez wektor, gdy jest ona reprezentowana
w formacie współrzędnych,
w formacie CSR.
Teraz zajmiemy się prostymi i historycznie najstarszymi metodami iteracyjnego rozwiązywania układu równań
gdzie nieosobliwa macierz jest (zapewne wielkiego) rozmiaru . Są one bodaj najprostsze w analizie i implementacji, ale — jak można się domyślić — w praktyce najmniej efektywne. Z drugiej strony, stanowią one ważny składnik jednej z najszybszych metod rozwiązywania niektórych trudnych układów równań (por. rozdział 8.3).
Rozważane przez nas w tym rozdziale metody opierają się na rozkładzie macierzy na część ,,łatwo odwracalną”, , i ,,resztę”, . Dokładniej, równanie można zapisać jako zadanie punktu stałego
a jeśli jest nieosobliwa, to równoważnie:
Ponieważ jest to zadanie znajdowania punktu stałego postaci , można spróbować zastosować doń metodę iteracji prostej Banacha:
(5.12) |
Takie metody nazywamy stacjonarnymi metodami iteracyjnymi.
Wykaż, że każdą stacjonarną metodę iteracyjną można zapisać w wygodniejszej (dlaczego?) do praktycznej implementacji postaci
gdzie .
Jest to wygodniejsza postać, bo wymaga operowania wektorem residuum , na którym zapewne będziemy opierać kryterium stopu iteracji (więc i tak wtedy byśmy go wyznaczali)). Nie wymaga też jawnego .
Metody stacjonarne można zapisać w ogólnej postaci
(5.13) |
gdzie macierz oraz wektor są tak dobrane, by punkt stały równania (5.13) był rozwiązaniem równania wyjściowego .
Dla stacjonarnej metody iteracyjnej, oraz . Macierz nazywamy macierzą iteracji, gdyż zachodzi
Jasne jest, że z twierdzenia Banacha o punkcie stałym wynika od razu następujący warunek zbieżności:
Jeśli , to metoda (5.13) jest zbieżna co najmniej liniowo do dla dowolnego . Tutaj oznacza dowolną normę macierzową indukowaną przez normę wektorową.
Przy naszych założeniach, mamy do czynienia z kontrakcją , która odwzorowuje kulę w siebie:
Ponieważ, z założenia, stała Lipschitza dla wynosi , to z twierdzenia Banacha o kontrakcji (por. twierdzenie 9.1) wynika teza stwierdzenia.
∎Jeśli , to ciąg określony przez stacjonarną metodę iteracyjną jest zbieżny do oraz
Aby stwierdzić zbieżność, wystarczy w poprzednim stwierdzeniu podstawić oraz . Oszacowanie błędu jest konsekwencją własności kontrakcji.
∎Warunek konieczny i dostateczny zbieżności tej iteracji dla dowolnego wektora startowego podaje poniższe twierdzenie. Podkreślmy, że chodzi nam tu o zbieżność metody do rozwiązania układu, gdy startujemy z dowolnego przybliżenia początkowego .
Niech będzie macierzą iteracji metody (5.13). Ciąg określony tą metodą jest zbieżny do rozwiązania dla dowolnego wtedy i tylko wtedy, gdy
Na mocy (5.13) otrzymujemy równanie błędu ,
Konieczność warunku jest oczywista: jeśli metoda jest zbieżna dla każdego , to w szczególności dla takiego, że jest równe wektorowi własnemu macierzy odpowiadającego zadanej (dowolnej) wartości własnej . W konsekwencji,
a to oznacza, że .
To, że warunek wymieniany w tezie twierdzenia jest także wystarczający dla zbieżności metody, wynika z faktu (zob. [11]), że dla dowolnego istnieje norma macierzowa indukowana przez normę wektorową taka, że
Skoro więc z założenia , to można dobrać takie , by i w konsekwencji
skąd .
∎W powyższym dowodzie, jeśli jest zespolona, to odpowiadający jej wektor własny też jest zespolony, a więc — formalnie — nie może być uznany za kontrprzykład zbieżności, bo ta ma być ,,dla każdego ”, a nie — ,,dla każdego ”. Uzupełnij tę lukę pokazując, że jeśli nawet jeśli jest zespolona, to gdy można wskazać taki rzeczywisty wektor , że zbieżność nie będzie zachodzić.
Zaletą stacjonarnych metod iteracyjnych jest ich prostota powodująca, że są one wyjątkow wdzięczne do szybkiego zaprogramowania. Zobaczymy to na przykładzie kilku klasycznych metod stacjonarnych: Jacobiego, Gaussa–Seidela i SOR. Wszystkie będą bazować na podziale macierzy na trzy części: diagonalną, ściśle dolną trójkątną i ściśle górną trójkątną:
(5.14) |
gdzie
Biorąc w (5.12) , gdzie jest macierzą diagonalną składającą się z wyrazów stojących na głównej przekątnej macierzy (zob. (5.14)), otrzymujemy (o ile na przekątnej macierzy nie mamy zera) metodę iteracyjną
zwaną metodą Jacobiego.
Rozpisując ją po współrzędnych, dostajemy układ rozszczepionych równań (numer iteracji wyjątkowo zaznaczamy w postaci górnego indeksu):
co znaczy dokładnie tyle, że w -tym równaniu wyjściowego układu przyjmujemy za współrzędne wartości z poprzedniej iteracji i na tej podstawie wyznaczamy wartość .
Widzimy więc, że metoda rzeczywiście jest banalna w implementacji, a dodatkowo jest w pełni równoległa: każdą współrzędną nowego przybliżenia możemy wyznaczyć niezależnie od pozostałych.
W metodzie Jacobiego warunek dostateczny zbieżności, , jest spełniony np. wtedy, gdy macierz ma dominującą przekątną, tzn. gdy
(5.15) |
Rzeczywiście, ponieważ wyraz macierzy wynosi dla oraz dla , to
przy czym ostatnia nierówność wynika z warunku diagonalnej dominacji.
∎Niestety, w wielu ważnych wypadkach metoda Jacobiego, choć zbieżna, będzie zbieżna zbyt wolno, by nas zadowolić.
Macierz , zwana macierzą jednowymiarowego laplasjanu
pojawia się w bardzo wielu zastosowaniach (patrz przykład 5.1), również jako sztucznie wprowadzane podzadanie w niektórych algorytmach numerycznych. Ta macierz jest macierzą taśmową, symetryczną i dodatnio określoną, więc układ równań z tą macierzą można bez trudu rozwiązać metodami bezpośrednimi, kosztem . Jak jednak za chwilę się przekonamy, układ równań z macierzą będzie wyjątkowo trudny dla klasycznej metody stacjonarnej.
Stosując do metodę Jacobiego mamy oraz . Obliczając normę macierzy iteracji Jacobiego dostajemy , co — jak wiemy z twierdzenia 5.1 — nie rozstrzyga jeszcze o jej zbieżności lub niezbieżności, ale już może stanowić dla nas poważne ostrzeżenie.
Potrzebna będzie bardziej subtelna analiza. Okazuje się, że są znane wzory na wartości własne macierzy (por. ćwiczenie 5.8):
(a więc, ) dla W konsekwencji, wartościami własnymi są liczby . Ponieważ , znaczy to, że metoda Jacobiego jest zbieżna dla macierzy .
Z drugiej strony, nie dajmy się zwieść optymizmowi matematyka (,,nie martw się, jest zbieżny…”): nietrudno sprawdzić, że , co oznacza, że metoda Jacobiego — choć zbieżna! — dla dużych staje się zbieżna tak wolno, że w praktyce bezużyteczna: na przykład, gdy , , zatem potrzebowalibyśmy około 4600 iteracji, by mieć pewność, że początkowy błąd zredukowaliśmy zaledwie… 10 razy.
Dopiero w rozdziale 8.3 przekonamy się, jak — przez niebanalne wykorzystanie głębszych informacji o samym zadaniu — można wykorzystać metodę stacjonarną do konstrukcji metody iteracyjnej o optymalnym koszcie, którą będziemy mogli stosować także do macierzy dwu- i trójwymiarowego laplasjanu.
Wykaż, że wartości własne macierzy dwuwymiarowego laplasjanu — zob. (5.10) — są postaci
dla Podobnie pokaż, że, wartości własne macierzy trójwymiarowego laplasjanu — zob. (5.11) — są postaci
dla
Niech będzie rozkładem macierzy jednowymiarowego laplasjanu takim, że jest macierzą diagonalną zawierającą wartości własne, a taka, że zawiera wektory własne . Ponieważ macierz to konsekwentnie
Stąd wynika teza. Analogicznie postępujemy dla macierzy trójwymiarowego laplasjanu.
Wykaż, że jeśli oraz , to rzeczywista trójdiagonalna macierz Toeplitza3Macierzą Toeplitza nazywamy macierz o stałych współczynnikach na diagonalach.
(5.16) |
ma jednokrotne wartości własne, równe
(5.17) |
gdzie
Zwróć uwagę na to, że gdy , wartości własne są zespolone. Wektor własny macierzy odpowiadający ma współrzędne dane wzorem
(5.18) |
Dla zachodzi
gdzie
Znaczy to, że jest podobna do macierzy — a więc ma te same wartości własne. Nietrudno sprawdzić wprost (ze wzorów trygonometrycznych), że ma wektory i wartości własne takie, jak przewiduje wzór.
Niech będzie losową kwadratową macierzą , która ma średnio elementów w wierszu (zatem jej współczynnik wypełnienia wynosi ) i niech
Dobierając do wartość możemy sterować stopniem diagonalnej dominacji macierzy i, ostatecznie, zagwarantować sobie, że jest diagonalnie dominująca.
W poniższym eksperymencie komputerowym możemy naocznie przekonać się, jak stopień dominacji diagonali wpływa na szybkość zbieżności metody Jacobiego. Dla porównania zobaczymy, jak z naszą macierzą radzi sobie metoda bezpośrednia: oparta na rozkładzie LU macierzy i starająca się wykorzystać w inteligentny sposób jej rozrzedzenie.
Przekonaj się, czy stopień diagonalnej dominacji (wartość parametru p w skrypcie) ma istotny wpływ na szybkość zbieżności.
Domyślnie testy prowadzimy dla macierzy rozmiaru 2500. Sprawdź, jak zmieni się czas wykonania skryptu, gdy będzie jeszcze większe: która metoda: iteracyjna, czy bezpośrednia zagwarantuje nam sensowny wynik w krótszym czasie?
Przekonaj się, że gdy rozmiar macierzy jest niewielki, na przykład , nie ma większego sensu stosować metody iteracyjnej. Przy jakim poziomie tolerancji tol metoda iteracyjna staje się konkurencyjna dla bezpośredniej (pod względem czasu działania)?
Uzupełnij powyższy skrypt o wyznaczenie teoretycznej wartości współczynnika redukcji błędu w normie i porównaj ją z faktyczną szybkością redukcji błędu.
Sprawdź, że symetria nie ma większego wpływu na szybkość zbieżności.
Zdarzają się macierze — niestety, nie są to sztucznie generowane, akademickie przypadki — które są patologicznie trudne dla stacjonarnej metody iteracyjnej, a bardzo łatwe dla metody bezpośredniej. Jedną taką macierz już znamy: jest to macierz jednowymiarowego laplasjanu .
W naszym teście, dla zadania z macierzą i różnych wartości parametru zbadamy szybkość zbieżności metody Jacobiego i porównamy czas jej działania z metodą bezpośrednią (w przypadku macierzy trójdiagonalnej jest ona praktycznie optymalna).
Tym razem zmiana wyraźnie wpływa na szybkość zbieżności, a dla zbieżność jest — jak już zdążyliśmy się przekonać także analitycznie — jest bardzo wolna.
Wyjaśnij przyczynę szybkiej zbieżności metody dla dużych .
Domyślnie eksperymenty prowadzimy dla macierzy rozmiaru 25. Sprawdź, jak zmieni się czas wykonania skryptu, gdy będzie większe: która metoda zagwarantuje nam wynik w krótszym czasie? Jak odpowiedź zależy od ?
Jeśli zależałoby nam na obliczeniu dokładnego rozwiązania układu, powinniśmy znacząco zmniejszyć warunek stopu metody, tol, na przykład do poziomu . Jak teraz wypada porównanie metody Jacobiego i bezpośredniej, gdy ?
Rozważmy macierz
Wykaż, że
,
metoda Jacobiego dla tej macierzy jest zbieżna, wtedy i tylko wtedy, gdy .
Czy rezultat o zbieżności metody Jacobiego można uogólnić na przypadek, gdy rozmiaru ma na diagonali same jedynki, a poza nią wszystkie jej elementy są równe ?
Heurystyka tej metody opiera się na zmodyfikowaniu metody Jacobiego tak, by w każdym momencie iteracji korzystać z najbardziej ,,aktualnych” współrzędnych przybliżenia rozwiązania . Rzeczywiście, przecież wykonując jeden krok metody Jacobiego, czyli rozwiązując kolejno równania skalarne względem dla :
nietrudno zauważyć, że w części sumy, dla , moglibyśmy odwoływać się — zamiast do ,,starych” — do ,,dokładniejszych”, świeżo wyznaczonych, wartości , tzn. ostatecznie wyznaczać
W języku rozkładu macierzy i iteracji mielibyśmy więc (dolny trójkąt macierzy z diagonalą) oraz (ściśle górny trójkąt ) i konsekwentnie zapis macierzowy iteracji
Jeśli macierz jest diagonalnie dominująca, to metoda Gaussa–Seidela jest zbieżna do dla dowolnego wektora startowego .
Inny wariant tej metody dostalibyśmy, biorąc za górny trójkąt macierzy .
Obie metody, Jacobiego i (zwłaszcza) Gaussa–Seidela stosuje się także czasem w prostych algorytmach rozwiązywania układów równań nieliniowych: ich zaletą jest to, że głównym składnikiem iteracji jest rozwiązywanie skalarnego równania nieliniowego na każdym kroku metody.
Metoda Gaussa–Seidela jest w wielu przypadkach rzeczywiście szybciej zbieżna od metody Jacobiego, np. tak jest w przypadku macierzy jednowymiarowego laplasjanu, patrz wniosek 5.2. Wciąż jednak, dodajmy, dla tego zadania jej zbieżność jest zbyt wolna, by ją stosować jako samodzielną metodę.
Kontynuując przykład 5.8, porównamy szybkość zbieżności metody Gaussa–Seidela i Jacobiego na tym samym zadaniu.
Porównaj szybkość zbieżności metod Jacobiego i Gaussa–Seidela na macierzy jednowymiarowego laplasjanu.
Możesz przeprowadzić porównanie, prowadząc dobrze zaplanowane eksperymenty numeryczne. W MATLABie łatwo utworzysz macierz poleceniem
e = ones(N,1); TN = spdiags([-e, 2*e, -e], [-1,0,1], N, N);Jeśli interesuje Cię wynik teoretyczny, czytaj dalej.
Zbieżność metody Gaussa–Seidela można przyspieszyć, wprowadzając parametr relaksacji i kolejne współrzędne nowego przybliżenia wyznaczać, kombinując ze sobą poprzednie przybliżenie oraz współrzędną nowego przybliżenia , uzyskanego metodą Gaussa–Seidela:
Gdyby , dostalibyśmy z powrotem metodę Gaussa–Seidela. Ponieważ zwykle wybiera się , powstałą metodę nazywa się metodą nadrelaksacji (ang. successive overrelaxation, SOR), która jest na swój sposób szczytowym osiągnięciem wśród metod stacjonarnych. Rozkład macierzy odpowiadający metodzie SOR z parametrem jest zadany przez
Jeśli ma niezerową diagonalę, a metoda SOR jest zbieżna, to musi być .
Wystarczy zbadać promień spektralny macierzy iteracji metody SOR, która jest równa . Ponieważ macierz jest macierzą trójkątną o diagonali , to i w konsekwencji
Ze względu na to, że wyznacznik macierzy jest równy produktowi jej wartości własnych, dochodzimy do wniosku, że , co kończy dowód.
∎Jako ciekawostkę odnotujmy poniższe
Jeśli , to SOR jest zbieżna dla dowolnego .
Dowód tego twierdzenia można znaleźć na przykład w [15, rozdział 8.3].
Dla klasy macierzy obejmującej niektóre spotykane w praktycznych zastosowaniach, można wskazać brzemienny w konsekwencje związek promienia spektralnego macierzy iteracji metody SOR i metody Jacobiego.
Rzeczywistą macierz kwadratową rozmiaru , o niezerowych elementach na diagonali, nazywamy macierzą zgodnie uporządkowaną, jeśli wartości własne macierzy
gdzie , , są niezależne od .
Zauważmy, że jest macierzą iteracji metody Jacobiego dla macierzy .
Szczególnym przypadkiem macierzy zgodnie uporządkowanych są macierze postaci
(5.19) |
w których są nieosobliwymi macierzami diagonalnymi.
Rzeczywiście, dla macierzy postaci (5.19) mamy
gdzie
i w konsekwencji
Zatem macierz jest podobna do i w konsekwencji ma te same wartości własne, co (niezależnie od ), a więc — jest zgodnie uporządkowana.
Wykaż, że jeśli jest macierzą trójdiagonalną (taką, jak na przykład ) lub blokowo trójdiagonalną (taką, jak na przykład ) to można poddać takiej permutacji wierszy i kolumn, że uzyskana macierz jest postaci (5.19)4W rzeczywistości, można wykazać więcej, że nawet bez tej permutacji macierze i są zgodnie uporządkowane..
Rzeczywiście, w przypadku macierzy trójdiagonalnej wystarczy wziąć najpierw zmienne o indeksach nieparzystych, a potem — o indeksach parzystych: . Dla macierzy wybieramy podobnie (tzw. red-black ordering).
Niech będzie macierzą zgodnie uporządkowaną i niech . Wtedy jeśli jest wartością własną macierzy iteracji metody Jacobiego, to też nią jest. Ponadto, jeśli jest różną od zera wartością własną macierzy iteracji metody SOR z parametrem relaksacji oraz zachodzi
to jest wartością własną macierzy iteracji Jacobiego. Na odwrót, jeśli jest wartością własną macierzy iteracji Jacobiego, to zadane powyższym wzorem jest wartością własną macierzy iteracji SOR.
Macierz iteracji metody Jacobiego to po prostu
(ostatnia równość na mocy założenia). Stąd oczywiście wynika część pierwsza tezy.
Macierz iteracji metody SOR ma postać
Niech teraz będzie wartością własną macierzy iteracji metody SOR,
Ponieważ , mamy równoważnie
Zatem jest wartością własną wtedy i tylko wtedy, gdy jest wartością własną macierzy .
W konsekwencji, jeśli tylko , to jest wartością własną macierzy . Na mocy założenia, ma te same wartości własne, co , co kończy dowód drugiej części twierdzenia. Dowód części trzeciej pozostawiamy jako ćwiczenie.
∎Jeśli jest zgodnie uporządkowana i promień spektralny macierzy iteracji metody Jacobiego dla jest równy , to promień spektralny macierzy iteracji metody Gaussa–Seidela jest równy . Znaczy to, że metoda Gaussa–Seidela jest dwukrotnie szybsza od metody Jacobiego.
Rzeczywiście, na mocy twierdzenia Vargi, każdej niezerowej wartości własnej macierzy SOR odpowiada wartość własna macierzy iteracji Jacobiego , spełniająca równanie
Dla metody Gaussa–Seidela, , i w konsekwencji .
∎Korzystając z twierdzenia Vargi można udowodnić
Niech macierz będzie symetryczną macierzą zgodnie uporządkowaną i niech będzie równe promieniowi spektralnemu macierzy iteracji metody Jacobiego. Wtedy optymalna wartość parametru relaksacji , gwarantująca najmniejszy promień spektralny macierzy iteracji metody SOR, jest równa
Promień spektralny macierzy iteracji SOR z tym parametrem wynosi wtedy
Dowód powyższego twierdzenia można znaleźć na przykład w [15, rozdział 8.3].
Jakkolwiek piękne teoretycznie, nawet twierdzenia Younga i Vargi są dość bezlitosne dla metody SOR w wielu praktycznych zastosowaniach.
Dla macierzy jednowymiarowego laplasjanu rozmiaru , oznaczając , mamy i w konsekwencji . Zatem, dla , gdy , promień spektralny macierzy iteracji SOR z optymalnym parametrem relaksacji jest równy aż , a więc jest praktycznie tak samo blisko jedności, jak w przypadku metody Jacobiego!
Kontynuując przykład 5.9, porównamy szybkość zbieżności metody SOR, Gaussa–Seidela (czyli SOR z parametrem ) i Jacobiego na tym samym, ekstremalnie trudnym dla metod iteracyjnych zadaniu. Na początek weźmiemy i zbadamy zależność szybkości zbieżności SOR od wartości . Korzystając z wyniku poprzedniego przykładu, będziemy mogli także uruchomić SOR z optymalnym parametrem.
Zwróć uwagę na dramatyczną przewagę SOR z optymalnym parametrem nad metodą Gaussa–Seidela. Zbadaj, jak zmienią się wyniki, gdy wyraźnie zwiększysz , np. do tysiąca.
Gdy macierz iteracji metody stacjonarnej
jest daleka od normalnej, numeryczna realizacja iteracji w arytmetyce zmiennoprzecinkowej ograniczonej precyzji może napotkać na problemy: w początkowych iteracjach residuum może znacząco rosnąć, co w efekcie może doprowadzić do praktycznej utraty zbieżności.
Zbadaj to na przykładzie–zabawce (por. [2, 10.2.3]),
gdy . Wyznacz promień spektralny tej macierzy, jej normę, a także wykres normy w zależności od .
Dla (wyraźnie większych od 1), macierz iteracji , choć o promieniu spektralnym mniejszym niż 1, ma tę właściwość, że norma jej kolejnych potęg początkowo rośnie.
lam = 0.9995; B = [lam 1; 0 lam]; resid=[]; x = [1;1]; for i = 1:100000, x = B*x; resid(i) = norm(x); end; semilogy(resid);
Metoda Richardsona z parametrem jest określona wzorem
Niech macierz będzie symetryczna.
Sprawdź, że jest to stacjonarna metoda iteracyjna oparta na rozszczepieniu , gdzie .
Wykaż, że jeśli jest nieokreślona, dla żadnego wyboru nie jest prawdą, że metoda Richardsona jest zbieżna do dla dowolnego .
Wykaż, że jeśli jest dodatnio określona, to metoda Richardsona jest zbieżna dla , a dla
promień spektralny macierzy iteracji jest najmniejszy możliwy i równy
Niech i niech istnieją stałe takie, że dla każdego
Wykaż, że wtedy metoda Richardsona jest zbieżna w normie euklidesowej dla . Ponadto, jeśli , to współczynnik zbieżności w tej normie można oszacować przez .
Niech będą macierzami symetrycznymi i dodatnio określonymi. Dla dwóch macierzy symetrycznych będziemy pisali , jeśli , czyli, innymi słowy, gdy dla każdego . Wykaż, że:
Jeśli
to iteracja
jest zbieżna, a dokładniej, macierz iteracji, , spełnia
Jeśli dla pewnych zachodzi
to wszystkie wartości własne są rzeczywiste oraz .
Pewnym remedium na powolną zbieżność metod stacjonarnych jest stosowanie metod blokowych, w których iterację konstruuje się tak jak dotychczas, ale zamiast na elementach, działa się na całych blokach macierzy (naturalnie, jeśli trzeba, musimy założyć ich odwracalność). Dla poprawienia zbieżności często stosuje się wariant z zakładką, zob. rysunek 5.6. W praktyce takie metody mogą być wyraźnie skuteczniejsze od dotychczas rozważanych: rzeczywiście, w skrajnym przypadku, pojedynczego ,,bloku” — rozmiaru — wszystkie wyżej omówione metody stacjonarne redukują się do metody bezpośredniej…
Ciekawym i nietrywialnym uogólnieniem metod z zakładką jest addytywna metoda Schwarza: jeden z przedstawicieli klasy tzw. metod dekompozycji obszaru, będących bardzo efektywnymi i naturalnie równoległymi operatorami ściskającymi (mówimy o nich w rozdziale 7) dla dyskretyzacji równań różniczkowych cząstkowych, [14].
Dotychczas omówione metody opierają się na czysto formalnym, mechanicznym, podziale macierzy, bezpośrednio związanym z jej strukturą. Tymczasem można zdefiniować metody iteracyjne o podobnym koszcie iteracji, ale w których kolejne przybliżenia rozwiązania będziemy wybierać tak, by w jakimś sensie zminimalizować błąd.
Metodę iteracyjną będziemy definiować w formie aktualizacji poprzedniego przybliżenia,
,,Idealna poprawka” , oznaczmy ją , powinna spełniać więc równanie
bo wtedy dostalibyśmy . Ma ona jednak tę wadę, że do jej wyznaczenia musielibyśmy dokładnie rozwiązać nasz układ równań (co prawda z nieco inną prawą stroną, ale to bez znaczenia!) — a więc wpadlibyśmy z deszczu pod rynnę! Jednak, gdyby można było tanio rozwiązać ten układ równań w przybliżeniu, to może w ten sposób udałoby się nam określić zbieżną metodę?
Aby określić przybliżone rozwiązanie równania poprawki, najpierw przeformułujemy je nieco. Niech dwie macierze: i mają tę własność, że kolumny każdej z nich tworzą bazę . Wtedy rozwiązanie dokładne równania idealnej poprawki, , możemy reprezentować w bazie , dla pewnego . Co więcej, z nieosobliwości macierzy i wynika, że
To daje nam pomysł na definicję przybliżonej poprawki idealnej: niech i będą macierzami pełnego rzędu, tego samego zadanego z góry rozmiaru . Wtedy poprawkę określimy jako wektor
taki, że spełnia równanie
(5.20) |
Jest to właśnie metoda projekcji.
Ponieważ macierz zredukowana jest kwadratowa rozmiaru , to będzie tanie do wyznaczenia, gdy jest niewielkie. Nazwa metody bierze się stąd, że z powyższej definicji wynika, że wektor residualny równania poprawki, jest prostopadły do podprzestrzeni rozpiętej przez kolumny :
Z drugiej strony, będzie dobrze określone tylko wtedy, gdy macierz zredukowana będzie nieosobliwa — co nie zawsze musi być prawdą, nawet jeśli jest nieosobliwa (pomyśl o macierzy i ). Aby zagwarantować sobie odwracalność macierzy zredukowanej, zwykle wybiera się macierz pełnego rzędu i w zależności od własności macierzy dobiera się macierz :
Jeśli , to kładziemy . Wtedy macierz zredukowana jest symetryczna i dodatnio określona.
Jeśli jest tylko nieosobliwa, to kładziemy . Macierz zredukowana jest postaci , a więc jest macierzą zredukowaną poprzedniego rodzaju, ale dla macierzy równań normalnych, .
Jak możemy się domyślić, metody projekcji są metodami minimalizacji, co potwierdza poniższy dwuczęściowy lemat:
Niech będzie zadaną macierzą , pełnego rzędu. Oznaczmy przez podprzestrzeń rozpiętą przez kolumny .
Dowód zostawiamy jako ćwiczenie.
Udowodnij lemat 5.1.
Jednym z bardziej prominentnych przykładów metody projekcji jest metoda najszybszego spadku, działająca w przypadku, gdy macierz jest symetryczna i dodatnio określona. W tej metodzie wybieramy . Ponieważ wymiar przestrzeni rozpiętej przez kolumny jest równy , równanie poprawki upraszcza się do jednego równania skalarnego na ,
i w konsekwencji .
Nazwa metody wywodzi się stąd, że wektor poprawki w tej metodzie jest proporcjonalny do residuum, które z kolei jest kierunkiem gradientu funkcjonału w punkcie :
W metodzie najszybszego spadku,
gdzie .
Łatwo wykazać (por. [13, twierdzenie 5.2]), że jeśli ,
Teza wynika z lematu, którego elegancki dowód, pochodzący od Braessa, można znaleźć w [2]:
Niech . Wtedy dla dowolnego ,
Wykaż, że w metodzie najszybszego spadku zachodzi .
Ponieważ , to
zatem
z definicji .
Kontynuujemy przykład 5.8. Chcąc porównywać trzy metody: Jacobiego, Gaussa–Seidela oraz metodę najszybszego spadku, musimy zadbać o to, żeby były spełnione warunki zbieżności tej ostatniej — a więc, aby macierz była symetryczna i dodatnio określona. Dlatego, tym razem położymy, dla dodatniego ,
Choć wydaje się dosyć gęsta, w rzeczywistości wciąż jest macierzą rzadką. Zwróćmy uwagę nie tylko na samą szybkość zbieżności — mierzoną liczbą iteracji — ale także na efektywność metody: ile czasu zajmuje wyznaczenie przybliżenia z zadaną dokładnością. Metoda najszybszego spadku niewątpliwie ma najtańszą iterację (a najdroższą — metoda Gaussa–Seidela), co ostatecznie przekłada się na większą efektywność metody najszybszego spadku (pomimo mniejszej szybkości zbieżności).
Wyjaśnij, dlaczego w powyższym przykładzie, dla małych wartości , metoda Jacobiego czasem nie jest zbieżna.
Bo macierz nie musi być diagonalnie dominująca.
Dla macierzy jednowymiarowego laplasjanu, mamy
zatem dla mamy współczynnik redukcji błędu na poziomie . Znaczy to dokładnie tyle, że metoda nie nadaje się do rozwiązywania takich zadań, gdy jest duże. Szybkość zbieżności metody najszybszego spadku jest w naszym przykładzie porównywalna z szybkością metody Jacobiego i gorsza od metody SOR z optymalnym parametrem relaksacji.
Gdy o macierzy wiemy jedynie, że jest nieosobliwa, możemy zastosować metodę najmniejszego residuum. W tej metodzie wybieramy oraz . Równanie poprawki znów upraszcza się do jednego równania skalarnego na ,
i w konsekwencji .
Załóżmy, że macierz jest dodatnio określona i oznaczmy . Wtedy
nazywana jest częścią symetryczną macierzy .
Przeprowadź dowód twierdzenia o zbieżności metody najmniejszego residuum.
Zob. dowód twierdzenia 5.3 w [13].
Przypuśćmy, że umiemy tanio rozwiązywać układy równań z (nieosobliwą) macierzą rozmiaru . Niech będzie dana macierz
gdzie oraz .
Wskaż warunek konieczny i dostateczny na to, by macierz była nieosobliwa.
Podaj możliwie tani algorytm rozwiązywania układu równań z macierzą .
jest nieosobliwa wtedy i tylko wtedy, gdy .
Przypuśćmy, że umiemy tanio rozwiązywać układy równań z (nieosobliwą) macierzą rozmiaru . Niech będzie dana macierz
gdzie .
Wskaż warunek konieczny i dostateczny na to, by macierz była nieosobliwa.
Podaj możliwie tani algorytm rozwiązywania układu równań z macierzą .
Czy metodę iteracyjną warto stosować do rozwiązywania układu z macierzą , w przypadku, gdy jest bardzo duże oraz jest rzadka?
Tutaj, jak wynika z naszych dotychczasowych rozważań, odpowiedź jest zniuansowana. Jedno mnożenie wektora przez kosztuje zapewne flopów, więc metoda iteracyjna będzie miała sens, gdy satysfakcjonujące przybliżenie dostaniemy po iteracjach (a to, jak wiemy, nie zawsze jest gwarantowane). Z drugiej strony, może istnieć skuteczny reordering macierzy (czyli zmiana uporządkowania niewiadomych lub równań), pozwalający tanio wyznaczyć rozwiązanie metodą bezpośrednią [13].
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.