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.