Dominująca wiersz
Transkrypt
Dominująca wiersz
Metody numeryczne
Wykład nr 3
dr hab. Piotr Fronczak
Rozwiązywanie układów
algebraicznych równań liniowych
Pojęcia podstawowe
1. Układ algebraicznych równań liniowych
Układ liniowy m równań z n niewiadomymi postaci
𝑎11𝑥1 + ⋯ + 𝑎1𝑛𝑥𝑛
𝑎21𝑥1 + ⋯ + 𝑎2𝑛𝑥𝑛
…
𝑎𝑚1𝑥1 + ⋯ + 𝑎𝑚𝑛𝑥𝑛
Postać macierzowa
=
=
𝑏1
𝑏2
=
𝑏𝑚
𝐴∗𝑥 =𝑏
a11
a
21
a31
a12
a22
a32
a13
a23
a33
x1 b1
x2 b2
b3
x3
Gdy m > n – układ równań liniowych nadokreślonych
Gdy m < n – układ równań liniowych niedookreślonych (wtedy np. metoda
najmniejszych kwadratów)
a11
0
0
0
2. Macierz diagonalna (wszystkie współczynniki
leżące poza główną przekątną są zerowe)
3. Macierz jednostkowa
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
a22
0
0
0
0
a33
0
0
0
0
a44
4. Dolna macierz trójkątna (wszystkie
elementy ponad przekątną są zerowe)
5. Górna macierz trójkątna (wszystkie
elementy pod przekątną są zerowe)
6. Macierz przekątniowo dominująca
(wartości bezwzględne elementów na
głównej przekątnej są większe od sumy
wartości bezwzględnych pozostałych
elementów w wierszach)
a11
a
21
a31
a41
0
a22
a32
a42
0
0
a33
a43
0
0
0
a44
a11
0
0
0
a12
a22
0
0
a13
a23
a33
0
a14
a24
a34
a44
10
1
3
0
2
8
2
1
0
2
14
4
1
2
1
6
Metody dokładne
Polegają na takim przekształcaniu danych A i b, że po skończonej liczbie
dokładnie wykonywanych działań arytmetycznych otrzymujemy rozwiązanie.
Np. wzory Cramera
Wi
xi
W
gdzie W – wyznacznik macierzy A, a wyznacznik Wi powstaje przez wstawienie
kolumny wyrazów wolnych do i-tej kolumny wyznacznika W
Stosując wzory Cramera należy obliczyć (n+1) wyznaczników, które wymagają co
najmniej (n+1)! mnożeń. Jest to więc metoda bardzo pracochłonna
i dlatego jej się nie stosuje dla n>4.
Układy równań z macierzą trójkątną górną
Jeżeli macierz A układu n równań z n niewiadomymi Ax = b jest macierzą
trójkątną górną i wszystkie elementy na przekątnej głównej są różne od zera,
rozwiązanie x takiego układu można otrzymać rekurencyjnie.
Przykład:
1x1
x4 = 2
+1x2
–1x3
+4x4
=
8
– 2x2
–3x3
+1x4
=
5
2x3
– 3x4
=
0
2x4
=
4
Przykład:
1x1
x3 = 3
+1x2
–1x3
=
0
– 2x2
–3x3
=
3
2x3
=
6
=
4
2x4
Przykład:
1x1
x2 = -6
+1x2
=
3
– 2x2
=
12
=
6
=
4
2x3
2x4
Przykład:
1x1
– 2x2
2x3
2x4
=
9
=
12
=
6
=
4
Układy równań z macierzą trójkątną górną
xn
bn
ann
bi
xi
j n
a
j i 1
aii
ij
xj
i n 1, n 2,...,1
for(i = n; i>=1; i--)
{
x[i] = b[i] / a[i][i];
for(j = 1; j<i; j++)
b[j] = b[j] x[i]*a[j][i];
}
Układy równań z macierzą trójkątną dolną
x1
b1
a11
bi
xi
j i 1
a
j i
aii
ij
xj
i 2,3,..., n
for(i = 1; i<=n; i++)
{
x[i] = b[i] / a[i][i];
for(j = i+1; j<=n; j++)
b[j] = b[j] x[i]*a[j][i];
}
Układy równań z macierzą diagonalną
a11
0
0
0
a22
0
0 x1 b1
0 x2 b2
0
0 ann xn bn
Liczba operacji konieczna do przekształcenia danej macierzy
do formy diagonalnej jest większa niż do formy trójkątnej.
Metoda eliminacji Gaussa
Najczęściej stosowana metoda do numerycznego rozwiązywania układu
niewielu równań liniowych.
Dwa etapy:
1. Sprowadzamy układ do postaci trójkątnej górnej
2. Rozwiązujemy nowy układ tak jak na poprzednich slajdach
a11 a12
12
a0 aa'
22
22
21
a31 a32
32
42
a41 a42
a21
m21
a11
a13
a '23
23
a33
a43
a14 x1 bb11
a '2424 x2 bb'2
a34 x3 bb33
a44 x4 bb44
a21 x1 a22 x2 a23 x3 a24 x4 b2
m21 a11 x1 a12 x2 a13 x3 a14 x4 m21b1
0 (a22 m21a12 ) x2 (a23 m21a13 ) x3 (a24 m21a14 ) x4 b2 m21b1
a'22
a'23
a'24
b'2
a11 a12
0 a'
22
a031 aa'3232
a41 a42
a31
m31
a11
a13
a '23
aa'3333
a43
a14 x1 b1
a '24 x2 b'2
aa'3434 x3 bb'33
a44 x4 b4
a31 x1 a32 x2 a33 x3 a34 x4 b3
m31 a11 x1 a12 x2 a13 x3 a14 x4 m31b1
0 (a32 m31a12 ) x2 (a33 m31a13 ) x3 (a34 m31a14 ) x4 b3 m31b1
a'32
a'33
a'34
b'3
a13
a14
a11 a12
b11
12
13
14 x11
0 a'
x b'
a
'
a
'
22
22
23
23
24
24 22
22
0 a '32
x33 b'33
a '33
a '34
32
33
34
a041 aa'42 aa'43 aa'44 x44 bb'4
a41
m41
a11
a41 x1 a42 x2 a43 x3 a44 x4 b4
m41 a11 x1 a12 x2 a13 x3 a14 x4 m41b4
0 (a42 m41a12 ) x2 (a43 m41a13 ) x3 (a44 m41a14 ) x4 b4 m41b1
a'42
a'43
a'44
b'4
aa1212 aa1313 a14
a11
b11
11
14 x1
0 aa''
x b'
a
a
'
'
a
'
22
22
23
23
24
24 2
22
0 a0'32 aa' '33 aa''3434 x3 bb''3
44 x4
b'44
0 aa''4242 aa''4343 a'44
a'32
m32
a'22
a'32 x2 a'33 x3 a'34 x4 b'3
m32 a'22 x2 a'23 x3 a'24 x4 m32b'2
0 (a'33 m32 a'23 ) x3 (a'34 m32 a'24 ) x4 b'3 m32b'2
a' '33
a ' '34
b' '3
a11 a12 a13 a14 x1 b1
0 a'
x b'
a
'
a
'
22
23
24 2
2
0
0 a ' '33 a ' '34 x3 b' '3
0 a0'42 aa''4343 aa'''4444 x4 bb'''44
a'42
m42
a'22
a'42 x2 a'43 x3 a'44 x4 b'4
m42 a'22 x2 a'23 x3 a'24 x4 m42b'2
0 (a'43 m42 a'23 ) x3 (a'44 m42 a'24 ) x4 b'4 m42b'2
a ' '43
a' '44
b' '4
a11 a12 aa1313 a1414 x1 b1
0 a'
x b'
a
'
a
'
a
'
23
24 2
22
23
24
2
0
0 aa''''3333 a ' '3434 x3 b' '3
0 a0' '43 aa'' '44 x4 bb'''''44
0
a' '43
m43
a' '33
a' '43 x3 a' '44 x4 b' '4
m43 a' '33 x3 a' '34 x4 m43b' '3
0 (a' '44 m43a' '34 ) x4 b' '4 m43b' '3
a' ' '44
b' ' '4
a14 x1 b1
a11 a12 a13
0 a'
x b'
a
'
a
'
22
23
24 2
2
0
0 a ' '33 a ' '34 x3 b' '3
0
0 a ' ' '44 x4 b' ' '4
0
Otrzymaliśmy zatem układ równań z macierzą trójkątną górną.
Dalej postępujemy zgodnie z algorytmem dla macierzy trójkątnych.
Metoda Gaussa: uwagi
Układ postaci:
0 x1 2 x2 3x3 46
4 x1 3x2 2 x3 16
2 x 4 x 3x 12
2
3
1
nie może być rozwiązany przy pomocy metody Gaussa –
element podstawowy w pierwszym równaniu równy jest zero.
Rozwiązanie:
4 x1 3x2 2 x3 16
0 x1 2 x2 3x3 46
2 x 4 x 3x 12
2
3
1
Wniosek: Należy tak przestawić równania, by element podstawowy był
jak największy.
Metoda Gaussa: uwagi
Robimy tak nie tylko wtedy, gdy element podstawowy jest równy zeru.
Zawsze wybieramy równanie podstawowe z największym elementem podstawowym.
W przeciwnym wypadku rozwiązanie może być obarczone dużym błędem
zaokrągleń.
Po każdym etapie algorytmu, równania są modyfikowane – zatem za każdym razem
należy sprawdzić, które z równań najbardziej nadaje się na równanie
podstawowe.
Jeśli układ równań ma rozwiązania (nie jest sprzeczny), to zawsze można znaleźć
równanie podstawowe z niezerowym elementem podstawowym.
W metodzie Gaussa należy wykonać łącznie
1
3
n 3 n 2 13 n mnożeń i dzieleń.
Za pomocą wzorów Cramera (n+1)! mnożeń.
Dla 15 równań
–
16! = 20922789888000
153 = 3375
Metoda eliminacji Gaussa-Jordana
Podobna do metody Gaussa. Dążymy do uzyskania macierzy diagonalnej.
a11
a
21
an1
a12
a22
an 2
a '11
0
0
a1n x1 b1
a2 n x2 b2
ann xn bn
0
a '22
0
Macierz rozszerzona:
a11
a
21
an1
a12
a22
an 2
a1n b1
a2 n b2
ann bn
0 x1 b'1
0 x2 b'2
0
0 a 'nn xn b'n
4 x1 2 x2 3 x3 12
Przykład:
6 x1 7 x2 6 x3 6
x1 7 x2 6 x3 16
4 2 3 12
6 7
6.5 6
1 7.5 6.25 16
1 0.5 0.75 3
0
4
2
12
0
8
7
13
1 0
0 1
0 0
0.5 4.5
0.5
3
3
11
1 0 0
0 1 0
0 0 1
29
6
113
16
6
3
2
12
44
4
4
4
6 7
6.5 6
1 7.5 6.25 16
1 0.5 0.75 3
0
4
2
12
4
4
4
0
8
7
13
1 0
0 1
0 0
0.5
0.5
3
3
x1 16 / 6
x2 29 / 6
x3 11 / 3
4.5
3
113
1 0.5 0.75 3
6
(6) 1 0.5 0.75 3
7
6
.
5
6
1
7.5
6.25 16 1 1 0.5 0.75 3
1 0.5 0.75 3 (0.5) 0 1 0.5 3
0
1
0
.
5
3
0
8
7
13 8 0 1 0.5 3
1 0
0 1
0 0
0.5 4.5 (0.5) 0 0 1 11
3
0.5
3 0.5 0 0 1 113
1
113
Metoda eliminacji Gaussa-Jordana: uwagi
Łatwo uogólnić do rozwiązywania kilku układów równań jednocześnie:
a11
a
21
an1
a12
a22
an 2
a1n b1
a2 n b2
ann bn
a11
a
21
an1
a12
a22
an 2
a1n b1 c1 d1
a2 n b2 c2 d 2
ann bn cn d n
Należy pamiętać o właściwym wyborze równania podstawowego (jak w metodzie
Gaussa)
Liczba działań około 1.5 razy większa niż w metodzie Gaussa
Rozkład macierzy LU
Dany jest układ
Macierz trójkątna dolna (Lower)
[a][x] = [b].
Przedstawmy macierz [a] jako iloczyn: [a] = [L] [U].
Macierz trójkątna górna (Upper)
Zatem:
[L][U][x] = [b]
Niech:
[U][x] = [y]
[L][y] = [b]
Czyli rozwiązanie problemu dwuetapowe:
1. Znajdujemy [y] (korzystając ze wzorów na układy równań z macierzą trójkątną dolną)
2. Znajdujemy [x] (korzystając ze wzorów na układy równań z macierzą trójkątną górną)
Metoda Doolittle’a
a11
a
A 21
a31
a41
u11
l u
A 21 11
l 31 u11
l 41 u11
a12
a22
a32
a42
a13
a23
a33
a43
u12
l 21 u12 u 22
l 31 u12 l 32 u 22
l 41 u12 l 42 u 22
a14 1
a24 l21
l31
a34
a44 l41
0
1
l32
l42
0
0
1
l43
0 u11 u12 u13 u14
0 0 u22 u23 u24
0 0
0 u33 u34
1 0
0
0 u44
u13
l 21 u13 u 23
l 31 u13 l 32 u 23 u 33
l 41 u13 l 42 u 23 l 43 u 33
u14
l 21 u14 u 24
l 31 u14 l 32 u 24 u 34
l 41 u14 l 42 u 24 l 43 u 34 u44
wiersz 1 : u11 a11 ; u12 a12 ; u13 a13 ; u14 a14
st
1Kolumna
column:
1: l21 a21 / u11 ; l31 a31 / u11 ; l41 a41 / u11
Metoda Doolittle’a
u11
l u
A 21 11
l 31 u11
l 41 u11
u12
l 21 u12 u 22
l 31 u12 l 32 u 22
l 41 u12 l 42 u 22
nd
2 row2::
Wiersz
u13
l 21 u13 u 23
l 31 u13 l 32 u 23 u 33
l 41 u13 l 42 u 23 l 43 u 33
u14
l 21 u14 u 24
l 31 u14 l 32 u 24 u 34
l 41 u14 l 42 u 24 l 43 u 34 u44
l21u12 u22 a22 ; l21u13 u23 a23 ; l21u14 u24 a24
u22 a22 l21u12
u23 a23 l21u13
u a l u
24
24
21 14
nd
2:
2Kolumna
column:
l31u12 l32u22 a32 ; l41u12 l42u22 a42
l32 (a32 l31u12 ) / u22
l42 (a42 l41u12 ) / u22
Metoda Doolittle’a
u11
l u
A 21 11
l 31 u11
l 41 u11
u12
l 21 u12 u 22
l 31 u12 l 32 u 22
l 41 u12 l 42 u 22
u13
l 21 u13 u 23
l 31 u13 l 32 u 23 u 33
l 41 u13 l 42 u 23 l 43 u 33
u14
l 21 u14 u 24
l 31 u14 l 32 u 24 u 34
l 41 u14 l 42 u 24 l 43 u 34 u44
rd
3Wiersz
row3:: l31u13 l32u23 u33 a33 ; l31u14 l32u24 u34 a34
u33 a33 l31u13 l32u23
u34 a34 l31u14 l32u24
rd
3
column:
Kolumna
3: l43 ( a43 l41u13 l42u23 ) / u33
4 row:4: u44 a44 l41u14 l42u24 l43u34
Wiersz
th
Metoda Doolittle’a – algorytm:
for i = 1 … n
{
Lii = 1
for j = 1 … i
for i = 1 … n
{
for j = 1 … i
j 1
a ji a ji a jk aki
j 1
U ji a ji L jkU ki
k 1
k 1
for j = i+1 … n
for j = i+1 … n
i 1
i 1
L ji
}
a ji L jkU ki
k 1
U ii
a ji
a ji a jk aki
}
Każdy element aij potrzebny jest tylko raz, zatem możemy wykorzystać
jego miejsce w macierzy (tablicy) na przechowanie wartości Lij lub Uij.
k 1
aii
Rozkład LU: uwagi
Pamiętajmy o wyborze równania podstawowego.
Trzeba zapamiętać permutacje wierszy macierzy A, by po zakończeniu
działania algorytmu dostosować położenie elementów kolumny wyrazów wolnych.
Rozkład LU można stosować do równoczesnego rozwiązywania wielu układów
równań różniących się jedynie wektorami wyrazów wolnych.
Odwracanie macierzy
a a 1 I
Zatem należy rozwiązać układ:
a11
a
21
a31
a41
a12
a22
a32
a42
a13
a23
a33
a43
a14
a24
a34
a44
x11
x
21
x31
x41
x12
x22
x32
x42
x13
x23
x33
x43
x14 1
x24 0
x34 0
x44 0
0
1
0
0
0
0
1
0
0
0
0
1
Dostajemy cztery układy równań różniące się tylko kolumną wyrazów wolnych
a11 a12 a13 a14 x11 1
a11 a12 a13 a14 x12 0
a
x 0
a
x 1
a
a
a
a
a
a
21
22
23
24
21
21
22
23
24
22
a31 a32 a33 a34 x31 0
a31 a32 a33 a34 x32 0
a
a
a
a
x
a
a
a
a
0
42
43
44 41
42
43
44 x42
0
41
41
a11
a
21
a31
a41
a12
a22
a32
a42
a13
a23
a33
a43
a14
a24
a34
a44
x13 0
x 0
23
x33 1
x43 0
a11
a
21
a31
a41
Doskonale nadaje się to tego celu rozkład LU.
a12
a22
a32
a42
a13
a23
a33
a43
a14
a24
a34
a44
x14 0
x 0
24
x34 0
x44 1
Metody iteracyjne
Analogia do rozwiązania równań nieliniowych metodą szukania punktu stałego.
x1 b1 a12 x2 a13 x3 a14 x4 / a11
a11 x1 a12 x2 a13 x3 a14 x4 b1
x2 b2 a21 x1 a23 x3 a24 x4 / a22
a21 x1 a22 x2 a23 x3 a24 x4 b2
x3 b3 a31 x1 a32 x2 a34 x4 / a33
a31 x1 a32 x2 a33 x3 a34 x4 b3
x4 b4 a41 x1 a42 x2 a43 x3 / a44
a41 x1 a42 x2 a43 x3 a44 x4 b4
bi
i
aii
aij
ij
dla i j
aii
Układ można zapisać w postaci macierzowej
x x
ij 0 dla i j
Metoda Jacobiego
Jako rozwiązanie początkowe, obiera się dowolny wektor (np. wektor zerowy) i
oblicza się kolejne iteracje:
x (1) x ( 0)
x ( 2) x (1)
x( k 1) x( k )
xi( k 1)
(*)
n
1
( k )
bi aij x j
aii
jj 1i
i 1,2,..., n
Kolejne przybliżenia x(0), x(1) , x(2) utworzą ciąg wektorów. Jeżeli istnieje
granica tego ciągu, wtedy jest ona rozwiązaniem układu równań liniowych.
Ciąg wektorów musi być zatem ciągiem zbieżnym.
Tw. Ciąg określony wzorem (*) przy dowolnym wektorze x(0) jest zbieżny wtedy
i tylko wtedy, gdy ()<1.
() – promień spektralny macierzy = max |i|, i – wartości własne macierzy .
Znalezienie wartości własnych jest pracochłonne. Stosuje się często mniej szerokie,
ale również wystarczające kryteria, takie jak np.
ii
n
j 1, j i
ij
Warunek wystarczający (nie konieczny)
Macierze przekątniowo dominujące
Metoda Gaussa-Seidela
Podobna do metody Jacobiego, ale tu wyznaczając w jednym kroku iteracyjnym
kolejne elementy wektora x(k+1), korzystamy zarówno z wartości wektora x(k)
jak i z wyznaczonych już elementów wektora x(k+1).
x1( k 1) f ( x1( k ) , x2( k ) , x3( k ) , , xn( k ) )
x2( k 1) f ( x1( k 1) , x2( k ) , x3( k ) , xn( k ) )
x3( k 1) f ( x1( k 1) , x2( k 1) , x3( k ) , xn( k ) )
Metoda szybciej zbieżna (zwykle kilka iteracji wystarczy do uzyskania zadowalającej
dokładności rozwiązań).
Metody dokładne są ogromnie czasochłonne dla n dużych (np. > 100) i podatne
na błędy.
Wiele problemów fizycznych opisanych jest przez macierze przekątniowo
dominujące, np. Równanie Laplace’a).
Dla macierzy rzadkich metody iteracyjne oszczędzają pamięć i liczbę obliczeń.
Czy poniższy układ równań może być rozwiązany za pomocą metody Gaussa-Seidla?
12 3
A 1 5
3 7
5
3
13
a11 12 12 a12 a13 3 5 8
a22 5 5 a21 a23 1 3 4
a33 13 13 a31 a32 3 7 10
Czy poniższy układ równań może być rozwiązany za pomocą metody Gaussa-Seidla?
3 7 13
A 1 5 3
12 3 5
Tak, ale trzeba zmienić kolejność wierszy.