Układ Liniowych Równań Algebraicznych
Z liniowym układem równań algebraicznych mamy do czynienia w sytuacji, gdy wszystkie zmien- ne występujące w równaniach układu występują jedynie w pierwszej potędze; można go skrótowo zapisać przy pomocy następującego wzoru:
m i
d x
n a
j ij j i , 1,2,3 ,...,
1
=
=
∑
⋅=
..., (1) w którym oznaczono odpowiednio:
a - elementy macierzy głównej układu, ij
x - elementy wektora niewiadomych, j
d - elementy wektora prawej strony. i
W zależności od proporcji liczby liniowo niezależnych równań m do liczby występujących w nich zmiennych n , możemy mieć do czynienia z trzema sytuacjami:
1. m>n - nadokreślony układ równań, 2. m=n - oznaczony układ równań, 3. m<n - niedookreślony układ równań.
W dalszej części tego rozdziału zajmiemy się przypadkiem drugim z wymienionych powyżej, czyli oznaczonym układem równań. Dla układu równań liniowych, w którym liczba zmiennych n jest równa liczbie równań m warunek liniowej niezależności jest równoważny żądaniu by macierz główna układu A , o elementach a , miała wyznacznik różny od zera (ij det(A)≠0). W takiej sytu- acji układ równań (1) ma jedno i tylko jedno rozwiązanie. Poniżej omówimy podstawowe metody jego znajdowania. Metody te możemy podzielić na dwie kategorie:
1. metody eliminacyjne, do których zaliczamy:
• metodę eliminacji Gaussa,
• metodę rozkładu L U,
• metodę Choleskiego - Banachiewicza;
2. metody iteracyjne, do których należą:
• metoda Jacobiego,
• metoda Gaussa – Seidla.
Do zalet metod eliminacyjnych należą między innymi łatwość rozwiązywania układu równań z wie- loma prawymi stronami (sytuacja często występująca w praktyce), możliwość precyzyjnego osza- cowania czasu obliczeń na podstawie rozmiaru zadania czy wreszcie gwarancja uzyskania wyniku po wykonaniu możliwej do określenia z góry liczby operacji. Zaletą metod iteracyjnych jest prosto- ta algorytmu i niewielkie zapotrzebowanie na pamięć operacyjną w trakcie obliczeń. Wszystkie te metody zostaną przedstawione poniżej w najbardziej podstawowej wersji, pomimo że każda z nich ma wiele wariantów dostosowanych np. do szczególnych postaci macierzy A .
Metoda eliminacji Gaussa
Z układu równań (1), który w postaci macierzowej możemy krótko zapisać jako:
D X
A⋅ = , (2)
gdzie:
⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢⎢
⎢
⎣
⎡
=
mn mj
m
in ij
i
n j
a a
a
a a
a
a a
a
A
L
L M M
M
L
L M M
M
L L
1 1
1 1
11
,
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
n i
x x x X
M M1
,
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
n i
d d d D
M M1
. (3)
uwzględniając fakt, że m=n , tworzymy tablicę (4), którą następnie równoważnie przekształcamy tak, aby doprowadzić ją do postaci trójkątnej górnej (5). Operację tę nazywamy krokiem w przód.
→
↓
⎥⎥
⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢⎢
⎢⎢
⎢
⎣
⎡ k
n nn nk
ni n
j jn jk
ji j
i in ik
ii i
n k
i
j
d a a
a a
d a a
a a
d a a
a a
d a a
a a
L L
L M M M M
M
L L
L M M M M
M L M L M L M M
M L L L
1 1 1
1 1 1
1 11
, (4)
⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢⎢
⎢
⎣
⎡
n nn
i in ii
n i
d a
d a a
d a a
a
L
L M M M
M L M L M M
M L L
0 0
0
1 1 1
11
. (5)
Przekształcenia prowadzimy korzystając z faktu, że:
• przestawienie dwóch wierszy,
• przemnożenie wszystkich elementów wiersza przez tę samą liczbę,
• dodanie do elementów jednego wiersza odpowiednio elementów innego wiersza,
• dodanie do elementów jednego wiersza odpowiednio kombinacji liniowej elementów in- nych wierszy,
przekształcają tablicę równoważnie, czyli w sposób nie zmieniający rozwiązania układu równań.
Obliczenia rozpoczynamy od pierwszej kolumny tablicy (4). Naszym celem jest takie przekształce- nie wierszy tej tablicy o numerach j=2,...,m , aby w pierwszej kolumnie pojawiło się w nich zero.
W tym celu dla każdego wiersza j wyznaczamy mnożnik mj1=−aj1 a11 a następnie mnożymy przez ten mnożnik elementy pierwszego wiersza i dodajemy do odpowiednich elementów wiersza j . Następnie operację tę powtarzamy dla drugiej kolumny, rozpoczynając przekształcenia od wier- sza trzeciego i kontynuujemy dla kolejnych kolumn i za każdym razem rozpoczynając przekształ- cenia od wiersza o numerze j= i+1 , aż dojdziemy do kolumny n−1 i wiersza m . Ogólne wzory, pozwalające wyznaczyć nowe, zmienione wartości elementów tablicy (4) po wyeliminowaniu ele- mentu a w kolumnie i (patrz wzór (4)) mają postać: ji
n i
i k d m d d
n i
i j a m a a
n a i
m a
i ji j j
ik ji jk jk
ii ji ji
,..., 2 , 1
,..., 2 , 1
1 ,..., 2 , 1
+ +
=
⋅ +
=
+ +
=
⋅ +
=
−
=
−
=
. (6)
Na kolejnym etapie obliczeń, nazywanym krokiem wstecz, dokonujemy albo eliminacji elementów tablicy powyżej przekątnej głównej, albo, korzystając ze wzorów (7), wyznaczamy wartości wszystkich składowych wektora X w kolejności od x do n x1 :
ii n
i
j ij j
i
i d a x a
x 1
1
⎥⋅
⎦
⎢ ⎤
⎣
⎡ − ⋅
=
∑
+
=
, i= nn, −1,...,1 . (7) Dla lepszego przedstawienia opisanego powyżej sposobu postępowania rozwiążemy metodą elimi- nacji Gaussa układ trzech liniowych równań algebraicznych przedstawiony poniżej (8).
⎥⎥
⎦
⎤
⎢⎢
⎣
=⎡
⎥⎥
⎦
⎤
⎢⎢
⎣
⋅⎡
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡− − −
43 0 1
2 31 13 42 2
3 2 1
x x x
. (8)
Obliczenia w kroku w przód rozpoczynamy od utworzenia z tego układu równań przez dołączenie wektora wyrazów wolnych do macierzy współczynników stosownej tablicy mającej postać (9):
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡− − −
000 , 4 000 , 1 000 , 2 000 ,
3,000 3,000 4,000 3,000 1,000 1,000 2,000 0,000 2
, (9)
mnożniki służące do wyeliminowania elementów a21 i a22 są równe odpowiednio:
500 , 2 1 3
500 , 2 0 1
11 31 31
11 21 21
−
=
−
=
−
=
=
=
−
=
a m a
a m a
(10)
i zapiszemy je przy odpowiednich wierszach tablicy, pamiętając, że mnożymy przez nie elementy wiersza pierwszego i dodajemy je odpowiednio do elementów wierszy drugiego i trzeciego:
500 , 1,500 000 0
, 4 000 , 1 000 , 2 000 ,
31,,000000 31,,000000 42,,000000 03,,000000 2
−
××
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡− − −
. (11)
W wyniku otrzymamy równoważną tablicę (12), w której wszystkie elementy pierwszej kolumny poniżej przekątnej głównej są równe 0 :
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡ − −
000 , 4 000 , 4 500 , 0 000 ,
0,000 2,500 3,000 3,000 0,000 1,000 2,000 0,000 2
. (12)
Analogicznie przekształcamy kolumnę drugą, rozpoczynając działania od elementu a32 . Stosowny mnożnik będzie równy:
200 , 500 0 , 2
500 , 0
22
32 32 =
= −
−
= a
m a , (13)
i zapiszemy go podobnie jak poprzednio przy odpowiednim wierszu tablicy, pamiętając również, że mnożymy przez niego elementy wiersza drugiego i dodajemy je do elementów wiersza trzeciego:
200 , 000 0 , 4 000 , 4 500 , 0 000 ,
0,000 2,500 3,000 3,000 0,000 1,000 2,000 0,000 2
⎥×
⎥
⎦
⎤
⎢⎢
⎣
⎡ − −
. (14)
w rezultacie otrzymując równoważną tablicę (15) sprowadzoną do postaci trójkątnej górnej:
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡ − −
600 , 4 600 , 4 000 , 0 000 ,
0,000 2,500 3,000 3,000 0,000 1,000 2,000 0,000 2
. (15)
Krok wstecz zrealizujemy wyznaczając z kolejnych równań, poczynając od ostatniego, poszczegól- ne niewiadome xi , i=1,2,3 :
000 , 1
000 , 0
000 , 1 000
, 0 000
, 2 000 , 1 000 , 2
000 , 3 000 , 3 500 , 2
600 , 4 600
, 4
1 2
3
3 2
1
3 2
3
===
⇒⇒
⇒
=
⋅
−
⋅ +
⋅ ⋅ + ⋅ =
− ⋅ =
x x
x x
x x
x x
x
. (16)
Na zakończenie zwróćmy jeszcze uwagę na kilka sytuacji szczególnych z jakimi możemy się ze- tknąć stosując metodę eliminacji Gaussa w obliczeniach:
1. w trakcie obliczeń może się zdarzyć, że na przekątnej głównej tablicy pojawi się 0 (aii =0); nie można wówczas wprost skorzystać ze wzoru (6)1 (dzielenie przez 0), jednak wystarczy zauwa- żyć, że przecież rozwiązanie układu liniowych równań algebraicznych nie zależy od kolejności tych równań, i wobec tego wystarczy zamienić równanie z zerem na przekątnej głównej z do- wolnym innym równaniem znajdującym się poniżej przekątnej głównej a nie posiadającym zera w kolumnie i , aby móc kontynuować obliczenia;
2. gdyby jednak okazało się, że wszystkie elementy w kolumnie i na oraz poniżej przekątnej głównej są równe 0 oznaczałoby to że macierz główna układu równań (1) jest osobliwa, i wobec tego ten układ równań nie ma jednoznacznego rozwiązania;
3. w celu poprawy stabilności numerycznej metody należy stosować procedurę zwaną wymianą wierszy i ewentualnie wymianę kolumn; wymiana wierszy polega na tym, że przed rozpoczę- ciem zerowania elementów tablicy w danej kolumnie wyszukujemy największy z nich co do modułu, i tak zamieniamy wiersze aby wprowadzić go na przekątną główną, dalsza procedura eliminacji przebiega bez zmian; wymiana kolumn przebiega analogicznie, tyle, że w poszukiwa- niu największego co do modułu elementu przeszukujemy wiersz a nie kolumnę, niestety ubocz- nym skutkiem wymiany kolumn jest konieczność zapamiętywania sekwencji wymian (zamiana kolumn zmienia kolejność składowych w wektorze niewiadomych!);
4. obliczenie wyznacznika wyjściowej macierzy A jest trywialne w przypadku gdy zostanie ona sprowadzona do postaci trójkątnej górnej (wniosek z twierdzenia o obliczaniu wyznacznika przez rozwinięcie względem wiersza lub kolumny).
Metoda rozkładu L·U
Metoda ta polega na zastąpieniu jednego układu liniowych równań algebraicznych o n niewiado- mych, opisanego macierzą pełną, dwoma układami równań o tej samej liczbie niewiadomych, lecz opisanymi macierzami trójkątnymi górną U i dolną L . Jak to już zostało pokazane powyżej (krok wstecz w metodzie eliminacji Gaussa) rozwiązanie układu równań opisanego macierzą trójkątną jest łatwe, wystarczy tylko zachować odpowiednią kolejność wyznaczania wartości niewiadomych.
Postępowanie rozpoczyna się od wyznaczenia macierzy L i U takich, że:
U L
A= ⋅ , (17)
gdzie macierz A jest macierzą główną układu (1). Wówczas zachodzi D
X U L X
A⋅ = ⋅ ⋅ = , (18)
jeżeli teraz wprowadzimy oznaczenie
Y X
U⋅ = , (19)
to zamiast układu równań (1) o n niewiadomych otrzymamy dwa układy równań (20) również o n niewiadomych:
D Y L
Y X U
=
⋅
=
⋅ . (20)
Do wyznaczenia elementów macierzy L i U wykorzystamy zależność (17). Jest ona źródłem n 2 niezależnych równań. Ponieważ jednak poszukiwanych niewiadomych jest n2+n , to dokładnie n z nich możemy określić arbitralnie. Wobec tego przyjmijmy, że współczynniki 1lii = . Wówczas:
n i
n i
i u k
u l a
l
n i
i k u l a
u
ii i j
ji kj ki
ki
i j
jk ij ik ik
,..., 2 , 1 ,...,
2 , 1
,..., 1 ,
1 1 1
1
=
⎪⎪
⎭
⎪⎪
⎬
⎫
+ +
=
⋅
−
=
+
=
⋅
−
=
∑
∑
−
=
−
=
. (21)
Przy właściwej kolejności prowadzenia obliczeń (np. algorytm Crouta, w którym naprzemiennie wyznaczamy wiersz macierzy U i kolumnę macierzy L ) zawsze mamy do czynienia z sytuacją w której z jednego równania wyznaczamy tylko jedną niewiadomą u lub ik l . ki
Tok postępowania prześledźmy na przykładzie rozwiązania układu równań:
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
−
−
−
48 9 10
15 1 2
2 7 4
1 3 2
3 2 1
x x x
. (22)
Warunek (17) można w naszym przypadku przedstawić jako:
A U
l l l
u u u
u u u
L
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
−
−
−
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
15 1 2
2 7 4
1 3 2 1 0 1
0 0 1
0 0 0
32 31 21
33 23 22
13 12 11
, (23)
co prowadzi do następującego zestawu równań na wyznaczenie niewiadomych u oraz ik l : ki
2 4
4 1 1 2
1 3 2
1 1
1 2 1
7 1
2 4 1 1
3 1
2 1
33 32
23 22 31 21 13 12 11
33 23
32 13 31
22 32 12 31
23 13
21
22 12
21
11 31
11 21
13 12 11
−
=
=
=
−
=
−
=
=
−
=
−
=
=
⇒
⇒
⇒
⇒
⇒
⇒
⇒
⇒
⇒
=
⋅ +
⋅ +
⋅
−
=
⋅ +
⋅
=
⋅ +
⋅
−
=
⋅ +
⋅
−
=
⋅
=
⋅
−
=
⋅
−
=
⋅
=
⋅
u l u u
l l u u u
u u
l u l
u l u l
u u
l
u u
l
u l
u l
u u u
, (24)
czyli ostatecznie układy równań (20) przyjmą postać:
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
−
−
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
3 2 1
3 2 1 3 2 1
2 0 0
4 1 0
1 3 2
48 9 10 1
4 1
0 1 2
0 0 1
y y y
x x x y y y
, (25)
a po wyznaczeniu z kolejnych równań niewiadomych yi , i=1,2,3 oraz xi , i=3,2,1 (26) znaj- dziemy ostateczne rozwiązanie problemu (22) w postaci (27):
2 1 3 6
11 10
10 1
3 2
11 4
1
6 2
48 1
4 1
9 1
2
10 1
1 2 3 3 2
1
3 2 1
3 2
3 3 2 1
2 1
1
=
−
=
−
=
=
−
=
=
⇒
⇒
⇒
⇒
⇒
⇒
=
⋅
−
⋅
−
⋅
−
=
⋅ +
⋅
−
=
⋅
−
−
=
⋅ +
⋅ +
⋅
−
=
⋅ +
⋅
=
⋅
x x x y y
y
x x x
x x
x y y y
y y
y
. (27)
Przy okazji, korzystając z twierdzeń o wyznacznikach możemy zauważyć, że:
∏
==
=
⋅
=
⋅
= n
i
uii
U U
L U
L A
1
) det(
) det(
) det(
) det(
)
det( . (28)
Metoda Choleskiego
Metoda Choleskiego, podobnie jak metoda rozkładu L·U polega na zastąpieniu jednego układu równań o n niewiadomych opisanego macierzą pełną dwoma układami równań również o n nie- wiadomych, ale za to opisanymi macierzami trójkątnymi. Różnica w stosunku do metody rozkładu L·U polega na tym, że w metodzie Choleskiego macierz U jest transpozycją macierzy L. Z faktu te- go wynikają pewne ograniczenia na postać macierzy A , a mianowicie macierz ta musi być syme- tryczna (A=AT) oraz dodatnio określona (XT⋅A⋅X >0 dla każdego X takiego, że X ≠0 , przypadek taki jest dość częsty w praktyce, np. przy rozwiązywaniu problemów inżynierskich Me- todą Elementów Skończonych). Wówczas:
LT
L
A= ⋅ , (29)
i dalej, przez analogię do (19) i (20):
D X L L X
A⋅ = ⋅ T⋅ = , (30)
oraz:
D Y L
Y X LT
=
⋅
=
⋅ . (31)
Analogicznie do przypadku rozkładu L·U, w celu wyznaczenia elementów macierzy L posłużymy się zależnością (29). Jest ona źródłem n równań, z których jedynie 2 12⋅(n+1)⋅n jest niezależne i prowadzi do poniższych wzorów (32). Gdyby w trakcie obliczeń we wzorze (32)1 pod pierwiast- kiem pojawiła się liczba ujemna, oznacza to, że wyjściowa macierz A nie jest dodatnio określona i metody Choleskiego stosować nie można.
1 ,..., 2 , 1 1
,..., 2 , 1
1 1
1 1
2
−
=
⎟⎟⋅
⎠
⎜⎜ ⎞
⎝
⎛ − ⋅
=
=
−
=
∑
∑
−
=
−
=
j l i
l l a l
n j
l a
l
jj j
k
jk ik ij
ij
j
k jk
jj jj
. (32)
W celu lepszego zapoznania się z tokiem postępowania przy stosowaniu metody Choleskiego, roz- wiążmy przy jej zastosowaniu następujący układ równań:
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
0 4 6
14 2 2
2 2 2
2 2 4
3 2 1
x x x
. (33)
Warunek (29) można tu przedstawić następująco:
A L
l l l
l l l
l l l
l l l
L
T
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
14 2 2
2 2 2
2 2 4 0 0 0
0 0 0
33 32 31
22 21 11
33 23 22
13 12 11
, (34)
co prowadzi do następującego układu równań na wyznaczenie niewiadomych l : ij
2 3 1
1 1 2
14 2 2 2
2 4
33 32 23
22 31 13
21 12
11
2 33 23 32 13 31
23 22 13 21
2 22 12 21
13 11
12 11
2 11
=
=
=
=
=
=
−
=
=
=
⇒
⇒
⇒
⇒
⇒
⇒
= +
⋅ +
⋅
=
⋅ +
⋅
= +
⋅
=
⋅
−
=
⋅
=
l l l
l l l
l l
l
l l l l l
l l l l
l l l
l l
l l
l
. (35)
Ostatecznie układy równań (31) przyjmą w naszym przypadku postać:
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡ −
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
3 2 1
3 2 1 3 2 1
2 0 0
3 1 0
1 1 2
0 4 6 2
3 1
0 1 1
0 0 2
y y y
x x x y y y
, (36)
i podobnie jak w metodzie rozkładu L·U wyznaczając z kolejnych równań najpierw niewiadome 3
, 2 , 1 , i=
yi a następnie 1xi , i=3,2, znajdujemy rozwiązanie problemu (33) w postaci (37):
3 1 0 0 1 3
3 1
1 2
1 3 1
0 2
0 2
3 1
4 1
1
6 2
1 2 3 3 2 1
3 2 1
3 2
3 3 2
1
2 1
1
−
=
=
=
=
=
−
=
⇒
⇒
⇒
⇒
⇒
⇒
−
=
⋅ +
⋅
−
⋅
=
⋅ +
⋅
=
⋅
=
⋅ +
⋅ +
⋅
=
⋅ +
⋅
−
−
=
⋅
x x x y y y
x x x
x x
x y y
y
y y
y
. (37)
Podobnie jak poprzednio, korzystając z twierdzeń o wyznacznikach, możemy stwierdzić, że:
2
1
)2
det(
) det(
) det(
) det(
)
det( ⎟
⎠
⎜ ⎞
⎝
=⎛
=
⋅
=
⋅
=
∏
= n i
ii T
T L L L l
L L
A . (38)
Metody iteracyjne
Każda metoda iteracyjna dotycząca rozwiązania problemu F(X)=0 , do poprawnego zdefiniowa- nia wymaga podania dwóch informacji: po pierwsze funkcji iteracyjnej, czasem nazywanej również schematem iteracyjnym, po drugie warunku lub warunków zakończenia obliczeń. Funkcja iteracyj- na służy do wyznaczenia kolejnego, lepszego w sensie pewnych norm, przybliżenia poszukiwanego rozwiązania problemu na podstawie przybliżenia poprzedniego natomiast warunki zakończenia ob- liczeń służą do stwierdzenia, czy ostatnio znalezione przybliżenie jest na tyle dobre, aby obliczenia zakończyć. O ile funkcja iteracyjna zależy ściśle od klasy problemu i metody jego rozwiązania, o tyle warunki zakończenia obliczeń zwykle należą do dwóch kategorii:
1. błąd zbieżności, rozumiany jako iloraz normy z zmiany rozwiązania X na ostatnio wykonanym kroku iteracyjnym i normy z bieżącego rozwiązania X , gdzie { }n
{ }
n oznacza numer iteracji:{ } { }
{ }n z
n n
X ε X
X − −1 ≤
; (39)
2. błąd residuum, rozumiany jako iloraz normy z wyrażenia )F( X obliczonej dla rozwiązania bie- żącego
{ }
n i rozwiązania początkowego{ }
0 :( )
{ }( )
{ } rn
X ε F
X
F 0 ≤ . (40)
Dla zagadnienia (1), przy przyjęciu standardowej normy euklidesowej warunki (39) i (40) przyjmą odpowiednio postać:
1. błąd zbieżności:
{ } { }
( )
( )
{ } zn i
n i n
i
n i n i
ε x
x x
≤
−
∑
∑
=
=
−
1 2 1
1 2
; (41)
2. błąd residuum:
{ }
{ }
r n
i n
j ij j j
n i
j n
j
n j ij
ε d
x a
d x a
≤
⎟⎟⎠
⎜⎜ ⎞
⎝
⎛ ⋅ −
⎟⎟⎠
⎞
⎜⎜⎝
⎛ ⋅ −
∑ ∑
∑ ∑
= =
= =
1
2
1 0 1
2
1 . (42)
i będą one identyczne zarówno dla metody Jacobiego jak i dla metody Gaussa-Seidla. Istotnym z punktu widzenia praktycznego stosowania metody iteracyjnej jest jeszcze tak zwany warunek zbieżności, który podaje kryteria konieczne lub wystarczające zbieżności metody iteracyjnej. I tak w przypadku obydwu rozważanych tu metod wystarczającym, lecz nie koniecznym warunkiem zbieżności jest ścisłe zdominowanie przez diagonalę (warunek (43) spełniony dla każdego i ):
∑
≠
=
> n
i j
j ij
ii a
a
1
, (43)
lub dodatnia określoność macierzy A .
Metoda Jacobiego
Schemat iteracyjny metody Jacobiego przedstawia się następująco:
{ } { }
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
+
⋅
−
⋅
=
∑
≠=
− i n
i j j
n j ij ii
n
i a x d
x a
1
1 1
. (44)
Warunki zakończenia obliczeń (41) i (42).
Dla lepszego przedstawienia toku postępowania prowadzącego do uzyskania wyniku zastosujmy metodę Jacobiego do rozwiązania zadania:
0 4 6
14 2
2
2 2
2
2 2 4
0 4 6
14 2 2
2 2 2
2 2 4
3 2
1
3 2
1
3 2 1
3 2
1 −
=
=
=
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
−
⋅ +
⋅
−
⋅
⇒
⇒
⇒
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
⋅
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
x x
x
x x
x
x x x
x x x
. (45)
W obliczeniach przyjmijmy punkt startowy (46). Jako kryterium zakończenia obliczeń przyjmijmy warunek εz =εr =ε=0,0001 .
{ } { } { }
{ } ⎥⎥⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
000 , 0
000 , 2
500 , 1
0 3
0 2
0 1 0
x x x
X (46)
Schemat iteracyjny metody Jacobiego dla zadania (45) zgodnie z (44) dany jest zależnością (47):
{ } { } { }
{ } { }
{ } { }
{ } { } 0
2
7 2 1 1
17
3 1
32 2 3
2 1 12
1 3
1 2
1 1
+
⋅
−
⋅
−
+
−
−
⋅
−
⋅
=
=
=
+ + +
i i
i i
i i
i i i
x x
x x
x x
x x x
, (47)
co prowadzi do następujących rezultatów:
{ } { } { } { }
{ } { }
{ }
{ }
{ } { }
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
+ +
−
⋅
⋅ +
−
−
⋅
⋅
− + +
⋅
−
⋅
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
071 , 0
500 , 0
500 , 0 000
, 0
000 , 2
500 , 1 0
000 , 1
500 , 0 143
, 0
0 500 , 0 143
, 0
000 , 1
0
0 3
0 3
0 2
0 2
0 1
0 1 1
3 1 2
1 1
1 x
x
x x
x x x
x x
X , (48)
{ } { }
{ }1 2,539
0 1
− = X
X
X , (49)
{ }
{ }0 0,727
1
− =
⋅
−
⋅
D X A
D X
A , (50)
{ } { } { } { }
{ } { }
{ }
{ }
{ } { }
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
+ +
−
⋅
⋅ +
−
−
⋅
⋅
− + +
⋅
−
⋅
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
000 , 0
571 , 1
214 , 1 000
, 0
000 , 2
500 , 1 0
000 , 1
500 , 0 143
, 0
0 500 , 0 143
, 0
000 , 1
0
1 3
1 3
1 2
1 2
1 1
1 1 2
3 2 2
2 1
2 x
x
x x
x x x
x x
X , (51)
{ } { }
{ }2 0,649
1 2
− = X
X
X , (52)
{ }
{ }0 0,518
2
− =
⋅
−
⋅
D X A
D X
A , (53)
ostatecznie po 64 iteracjach:
{ }
{ } { }
{ } ⎥⎥⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
000403 ,
0
001567 ,
1
998943 ,
0
63 3
63 2
63 1 63
x x x
X , { }
{ } { }
{ } ⎥⎥⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
000375 ,
0
001460 ,
1
999015 ,
0
64 3
64 2
64 1 64
x x x
X , (54)
{ } { }
{ } ε
X X
X − = <
000094 ,
64 0
63 64
, (55)
{ }
{ } ε
D X A
D X
A = <
−
⋅
−
⋅ 0 0,000097
64
. (56)
Metoda Gaussa-Seidla
Schemat iteracyjny metody Gaussa-Seidla różni się od schematu iteracyjnego metody Jacobiego tym, że nowych wartości zmiennych xi zaczyna się używać natychmiast jak tylko staną się dostęp- ne (poczynając od kolejnego równania) a nie dopiero w następnej iteracji:
{ } { } { }
⎟⎟⎠
⎜⎜ ⎞
⎝
⎛− ⋅ − ⋅ +
⋅
=
∑ ∑
+
=
− −
= i
n i j
n j ij i
j
n j ij ii
n
i a x a x d
x a
1 1 1
1
1 . (57)
Warunki zakończenia obliczeń (41) i (42) są takie same jak w metodzie Jacobiego.
Poniżej rozwiążemy zadanie (45), (46) ponownie, przy tych samych warunkach zakończenia obli- czeń, tym razem jednak posługując się metodą Gaussa-Seidla. Zgodnie z (57) schemat iteracyjny wygląda tu następująco:
{ } { } { }
{ } { }
{ } { }
{ } { } 0
2
1 7 2 1 1 7 1 1
3 1
1
32 2 3
2 1 12
1 3
1 2
1 1
+
⋅
−
⋅
−
+
−
−
⋅
−
⋅
=
=
=
+ +
+ +
+ +
i i
i i
i i
i i i
x x
x x
x x
x x x
, (58)
co prowadzi do następujących rezultatów:
{ } { } { } { }
{ } { }
{ }
{ }
{ } { }
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
+ +
−
⋅
⋅ +
−
−
⋅
⋅
− + +
⋅
−
⋅
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
143 , 0
500 , 1
500 , 0 000
, 0
000 , 2
500 , 1 0
000 , 1
500 , 0 143
, 0
0 500 , 0 143
, 0
000 , 1
0
0 3
0 3
1 2
0 2
1 1
1 1 1
3 1 2
1 1
1 x
x
x x
x x x
x x
X , (59)
{ } { }
{ }1 0,710
0 1
− = X
X
X , (60)
{ }
{ }0 0,151
1
− =
⋅
−
⋅
D X A
D X
A , (61)
{ } { } { } { }
{ } { }
{ }
{ }
{ } { }
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
+ +
−
⋅
⋅ +
−
−
⋅
⋅
− + +
⋅
−
⋅
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
112 , 0
464 , 1
679 , 0 000
, 0
000 , 2
500 , 1 0
000 , 1
500 , 0 143
, 0
0 500 , 0 143
, 0
000 , 1
0
1 3
1 3
2 2
1 2
2 1
2 1 2
3 2 2
2 1
1 x
x
x x
x x x
x x
X , (62)
{ } { }
{ }2 0,114
1 2
− = X
X
X , (63)
{ }
{ }0 0,029
2
− =
⋅
−
⋅
D X A
D X
A , (64)
ostatecznie po 48 iteracjach:
{ }
{ } { }
{ } ⎥⎥⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
000194 ,
0
000790 ,
1
999433 ,
0
47 3
47 2
47 1 47
x x x
X , { }
{ } { }
{ } ⎥⎥⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
−
−
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
000168 ,
0
000686 ,
1
999508 ,
0
48 3
48 2
48 1 48
x x x
X (65)
{ } { }
{ } = <ε
−48 0,000093
47 48
X X
X , (66)
{ }
{ } = <ε
−
⋅
−
⋅ 0 0,000052
48
D X A
D X
A . (67)
Jak widać, w przypadku rozważanego zadania metoda Gaussa-Seidla okazała się istotnie szybsza niż metoda Jacobiego (przy tej samej dokładności obliczeń zysk na liczbie iteracji jest równy 33%, przy praktycznie identycznym czasie wykonania jednej iteracji każdą z metod). Sytuacja taka jest zgodna z oczekiwaniami, ponieważ stosując na każdym kroku iteracyjnym najbardziej aktualne in- formacje o postaci wektora niewiadomych (metoda Gaussa-Seidla) należało oczekiwać przyspie- szenia obliczeń.