1 Rozwiązywanie algebraicznych równań li

Transkrypt

1 Rozwiązywanie algebraicznych równań li
1
Rozwiązywanie algebraicznych równań liniowych
1.1
Metoda Gaussa
Rozwiązujemy układ n równań liniowych z m prawymi stronami postaci:
AX = B
(1.1)
gdzie
A = {aij },
X = {xij },
B = {aij },
i, j = 1, 2, 3, . . . , n
i = 1, 2, 3 . . . , n; j = 1, 2, 3 . . . , m
i = 1, 2, 3 . . . , n; j = n + 1, n + 2, n + 3, . . . , n + m
Układ równań rozwiązujemy w dwóch etapach:
1. Eliminacja
(k−1)
(k)
aij
=
(k−1)
aij
−
aik
(k−1)
a
(k−1) kj
akk
(1.2)
dla
k =1, 2, 3, . . . n − 1,
i =k + 1, k = 2, k + 3, . . . , n,
j =k + 1, k + 2, k + 3, . . . , k + m
Po eliminacji macierz układu jest macierzą trójkątną górną.
2. Postępowanie odwrotne.
(n−1)
a
xni = nn+i ,
ann
dla i = 1, 2, 3, . . . , m
(k−1)
akn+i −
xki =
n
X
j=k+1
(k−1)
akk
(k−1)
akj
(1.3)
xji
,
dla k = n − 1, n − 2, n − 3, . . . , 1,
2
i = 1, 2, 3, . . . , m
Obliczanie macierzy odwrotnej i wyznacznika metodą Gaussa
Szukamy macierzy X = {xij }, i, j = 1, 2, 3, . . . , n odwrotnej do macierzy A = {aij }, i, j = 1, 2, 3, . . . , n, szukamy więc macierzy spełniającej
warunek:
AX = E
(2.4)
gdzie E jest macierzą jednostkową. Wystarczy więc rozwiązać metodą Gaussa układ n równań z n prawymi stronami. Prawe strony układu równań są
utworzone z kolumn macierzy jednostkowej.
Przekształcenia dokonywane w procesie eliminacji Gaussa (dodawanie
wierszy wymnożonych przez stałą) nie zmieniają wyznacznika macierzy, mamy więc
det(A) = det(An−1 )
(2.5)
Macierz An−1 jest macierzą trójkątną, a wyznacznik takiej macierzy jest
iloczynem elementów z przekątnej głównej. Czyli
(1)
(2)
(n−1)
‘
det(A) = a11 a22 a33 · . . . · ann
3
(2.6)
Rozkład LLT - metoda Banachiewicza
Rozwiązujemy układ n równań liniowych postaci
Ax = b
(3.7)
gdzie macierz A jest macierzą symetryczną, czyli A = AT i
A = {aij },
i, j = 1, 2, 3, . . . , n
xT = {xi },
i = 1, 2, 3 . . . , n
bT = {bi },
i = 1, 2, 3 . . . , n;
Macierz A należy rozłożyć na czynniki trójkątne:
A = LLT
(3.8)
gdzie L = {lij }, i, j = 1, 2, 3, . . . , n jest macierzą trójkątną dolną. Dostajemy zatem układ równań postaci:
T
LL
| {zx} = b
(3.9)
y
i, jeżeli uwzględnimy powyższe oznaczenie, to rozwiązanie układu 3.9, co
za tym idzie układu 3.7 można sprowadzić do rozwiązania dwóch układów
równań o macierzach trójkątnych:
Ly = b y T = {y1 , y2 , y3 , . . . , yn }
(3.10)
LxT = y
(3.11)
Elementy macierzy L można policzyć z wzorów
l11 =
√
a11 ,
li1 =
ai1
,
l11
v
u
i−1
u
X
2
lii = taii −
lik
,
aij −
1<i¬n
k=1
j−1
X
(3.12)
lik ljk
k=1
lij =
i > 1,
lij
i < j.
lij = 0,
,
i>j
Rozwiązanie układów (3.10)(3.11) równań otrzymujemy licząc kolejno
y1 =
b1
,
l11
bi −
i−1
X
lik yk
k=1
yi =
,
lii
yn
xn =
lnn
yi −
(3.13)
n
X
lki xk
k=i+1
xi =
i>1
lii
,
i<n
Rozkład LDLT
4
Rozwiązujemy układ n równań liniowych postaci
Ax = b
(4.14)
gdzie macierz A jest macierzą symetryczną, czyli A = AT i
A = {aij },
T
i, j = 1, 2, 3, . . . , n
x = {xi },
i = 1, 2, 3 . . . , n
bT = {bi },
i = 1, 2, 3 . . . , n;
Macierz A rozkładamy na czynniki trójkątno - diagonalne:
A = LDLT ,
gdzie
L ={lij }, i, j = 1, 2, 3, . . . , n - macierz trójkątna dolna
lii =1, i = 1, 2, 3, . . . , n
D ={dij } i, j = 1, 2, 3, . . . , n - macierz diagonala
(4.15)
Dostajemy zatem układ równań postaci:
T
L D |L{z
x} = b
(4.16)
z
| {z }
y
i, jeżeli uwzględnimy powyższe oznaczenie, to rozwiązanie układu 4.16, co za
tym idzie układu 4.14 można sprowadzić do rozwiązania trzech układów n
równań o macierzach trójkątnych lub diagonalnych:
Ly = b
(4.17)
Dz = y
(4.18)
LxT = y
(4.19)
Elementy macierzy L, D policzymy z wzorów
d11 = a11 ,
dii = aii −
aij −
li1 =
i−1
X
ai1
,
d11
2
lik
dkk ,
k=1
j−1
X
1<i¬n
lij = 0,
lii = 1,
(4.20)
lik ljk dkk
k=1
lij =
i > 1,
,
dij
i < j,
i > 0.
i>j
Rozwiązanie układów (4.17),(4.18),(4.19) równań otrzymujemy licząc kolejno
y 1 = b1 ,
y i = bi −
i−1
X
lik yk ,
i>1
k=1
yi
,
dii
xn = zn
zi =
zi −
xi =
5
i ­ 1,
n
X
(4.21)
lki xk
k=i+1
lii
,
i<n
Rozkład LU (metoda Choleskiego)
Rozwiązujemy układ n równań liniowych postaci:
Ax = b
(5.22)
gdzie
A = {aij },
i, j = 1, 2, 3, . . . , n
T
x = {xi },
i = 1, 2, 3 . . . , n
bT = {bi },
i = 1, 2, 3 . . . , n;
Macierz A należy rozłożyć na czynniki trójkątne:
A = LU
(5.23)
gdzie L = {lij }, i, j = 1, 2, 3, . . . , n jest macierzą trójkątną dolną, a U =
{uij }, i, j = 1, 2, 3, . . . , n jest macierzą trójkątną górną. Dostajemy zatem
układ równań postaci:
LU
x=b
|{z}
(5.24)
y
i, jeżeli uwzględnimy powyższe oznaczenie, to rozwiązanie układu 5.24, co
za tym idzie układu 5.22 można sprowadzić do rozwiązania dwóch układów
równań o macierzach trójkątnych:
Ly = b
(5.25)
Ux = y
(5.26)
Elementy macierzy L i U można policzyć z wzorów
i ­ 1,
li1 = ai1 ,
lij = aij −
j−1
X
lik ukj ,
i­j>1
k=1
u1j =
a1j
,
l11
aij −
i−1
X
lik ukj
k=1
uij =
(5.27)
i > 1,
,
lii
i­j>1
Rozwiązanie układów (5.25)(5.26) równań otrzymujemy licząc kolejno
yi =
b1
,
l11
bi −
yi =
i−1
X
lik yk
k=1
lii
,
i>1
xn = yn
xi = yi −
n
X
k=i+1
uik xk ,
i<n
(5.28)
6
Rozkład LDU
Rozwiązujemy układ n równań liniowych postaci:
Ax = b
(6.29)
gdzie
A = {aij },
T
i, j = 1, 2, 3, . . . , n
x = {xi },
i = 1, 2, 3 . . . , n
bT = {bi },
i = 1, 2, 3 . . . , n;
Macierz A rozkładamy na czynniki trójkątno - diagonalne:
A = LDU ,
(6.30)
gdzie
L ={lij }, i, j = 1, 2, 3, . . . , n - macierz trójkątna dolna
lii = 1, i = 1, 2, 3, . . . , n
D ={dij } i, j = 1, 2, 3, . . . , n - macierz diagonala
U ={uij }, i, j = 1, 2, 3, . . . , n - macierz trójkątna górna
uii = 1, i = 1, 2, 3, . . . , n
Dostajemy zatem układ równań postaci:
L D |{z}
Ux = b
(6.31)
z
| {z }
y
i, jeżeli uwzględnimy powyższe oznaczenie, to rozwiązanie układu 6.31, co za
tym idzie układu 6.29 można sprowadzić do rozwiązania trzech układów n
równań o macierzach trójkątnych lub diagonalnych:
Ly = b
(6.32)
Dz = y
(6.33)
Ux = y
(6.34)
Elementy macierzy L, D U policzymy z wzorów
d11 = a11 ,
i−1
X
dii = aii −
lik uki dkk ,
i>1
k=1
li1 =
ai1
,
d11
i¬n
aij −
j−1
X
lik ukj dkk
k=1
lij =
djj
(6.35)
,
i>j>1
,
1<i<j
a1j
u1j =
,
d11
aij −
i−1
X
lik ukj dkk
k=1
uij =
dii
Rozwiązanie układów (6.32),(6.33),(6.34) równań otrzymujemy licząc kolejno
y1 = b1
yi = bi −
i−1
X
lik yk ,
i>1
k=1
yi
dii
xn = zn
zi =
(6.36)
xi = zi −
n
X
uik xk ,
i<n
k=i+1
7
Metoda iteracji prostej (Jacobiego)
Rozwiązujemy układ n równań liniowych postaci:
Ax = b
(7.37)
gdzie
A = {aij },
xT = {xi },
T
b = {bi },
i, j = 1, 2, 3, . . . , n
i = 1, 2, 3 . . . , n
i = 1, 2, 3 . . . , n;
Macierz A zapisujemy w postaci sumy trzech macierzy
A=L+D+U
(7.38)
gdzie
lij =

0
aij
i¬j
,
i>j
dij =

0
aij
i 6= j
,
i=j
uij =

0
aij
i­j
i<j
(7.39)
Uwzględniając powyższe, zapiszmy układ 7.37 w postaci
(L + U )x + Dx = b
(7.40)
a następnie przekształćmy go do postaci
x = D −1 b − D −1 (L + U )x + Dx
(7.41)
Po wprowadzeniu oznaczeń
C = −D −1 (L + U ),
f = D −1 b
(7.42)
równanie 7.41 przyjmuje postać
x = Cx + f
(7.43)
Warto zauważyć, że elementy macierzy C i współrzędne wektora f można
policzyć z wzorów

0
i=j
bi
cij =
, fi =
(7.44)
− aij i 6= j
aii
aii
Na podstawie wzoru 7.43 budujemy następujący proces iteracyjny
x(i) = Cx(i−1) + d,
dla i = 1, 2, 3, . . .
x(0) − jest przybliżeniem początkowym
(7.45)
− zwykle przyjmuje się x(0) = f
Proces iteracyjny można zakończyć jeśli
(i)
x − x(i−1) <ε
(i) x (7.46)
gdzie ε jest żądaną dokładnością rozwiązania.
8
Metoda iteracji Gaussa-Seidel’a
Rozwiązujemy układ n równań liniowych postaci:
Ax = b
gdzie
A = {aij },
T
i, j = 1, 2, 3, . . . , n
x = {xi },
i = 1, 2, 3 . . . , n
bT = {bi },
i = 1, 2, 3 . . . , n;
(8.47)
Macierz A zapisujemy w postaci sumy trzech macierzy
A=L+D+U
(8.48)
gdzie
lij =

0
i¬j
,
i>j
aij

0
dij =
aij
i 6= j
,
i=j
uij =

0
aij
i­j
i<j
(8.49)
Zapiszmy układ 8.47 w postaci
Lx + U x + Dx = b
(8.50)
a następnie przekształćmy go do postaci
x = D −1 b − D −1 Lx − D −1 U x
(8.51)
Po wprowadzeniu oznaczeń
G = −D −1 L,
H = −D −1 U ,
p = −D −1 b
(8.52)
równanie 8.51 przyjmuje postać
x = Gx + Hx + p
(8.53)
Warto zauważyć, że elementy macierzy G, H i współrzędne wektora p można
policzyć z wzorów
gij =

0
− aij
aii
i¬j
i>j

0
hij =  aij
− aii
i­j
,
i<j
pi =
bi
aii
(8.54)
Na podstawie wzoru 8.53 budujemy następujący proces iteracyjny
x(i) = Gx(i) + Hx(i−1) + p,
dla i = 1, 2, 3, . . .
x(0) − jest przybliżeniem początkowym
− zwykle przyjmuje się x
(0)
(8.55)
=p
Proces iteracyjny można zakończyć jeśli
(i)
x − x(i−1) <ε
(i) x gdzie ε jest żądaną dokładnością rozwiązania.
(8.56)