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 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.