Rozwiązywanie algebraicznych układów równań liniowych metodami iteracyjnymi
Plan wykładu:
1. Przykłady macierzy rzadkich i formaty ich zapisu 2. Metody: Jacobiego, Gaussa-Seidla, nadrelaksacji 3. Zbieżność metod iteracyjnych
4. Metody: największego spadku, sprzężonego gradientu.
Literatura: Yousef Saad „Iterative methods for sparse linear systems”
DWT 87: WIeża DWT 234: Wieża z platformą DWT 607: Wirnik Wankela Matrix Market - DWT: Everstine's collection from the Harwell-Boeing Collection
Łopata turbiny 2802 x 2802, 6342 NZ
Cylinder z kołnierzem 2919 x 2919,
7593 NZ
3 Wybrane formaty zapisu macierzy rzadkich
- CSR (compressed sparse row) – trzy wektory: wartości, numery kolumn, początki wierszy (pierwsze nie-zero w wierszu)
- CSC (compressed sparse column) – trzy wektory: wartości, numery wierszy, początki kolumn (pierwsze nie-zero w kolumnie)
- CF (coordinate format) – trzy wektory dla: wartości, oraz numery kolumn i wierszy dla nie-zer
CSR dla macierzy symetrycznej – zapamiętujemy tylko macierz U
CSR dla macierzy niesymetrycznej
wartości = (1 -1 -3 5 4 6 4 7 -5) kolumna = (1 2 4 2 3 4 5 4 5) wiersz = (1 4 5 8 9 10)
wartości = (1 -1 -3 -2 5 4 6 4 -4 2 7 8 -5) kolumna = (1 2 4 1 2 3 4 5 1 3 4 2 5) wiersz = (1 4 6 9 12 14)
Mnożenie Ax=y w formacie CSR dla macierzy niesymetrycznej
a[ ] - elementy macierzowe, k[] - numery kolumn, w[]-indeksy z poczatkami wierszy
y=0;
for(i=1; i<n; i++){
l1=w[i]; // początek indeksow dla i-tego wiersza l2=w[i+1]-1; // koniec indeksów dla i-tego wiersza
for(l=l1; l<=l2; l++){
j=k[l]; //numer kolumny y[i]=y[i]+a[l]*x[j];
} }
X
n j=1a
ijx
j= y
i5 Mnożenie Ax=y w formacie CSR dla macierzy symetrycznej
A=U+D+L oraz L=UT
(U+D+L)x = y =(D+U)x + (x
TU)
TCzyli
Jeśli zamienimy wskaźniki w drugiej sumie to element aij*xi będzie dawać wkład do yj , które zostanie wyznaczone później (j>i) – w ten sposób dochodząc do wiersza j-tego wartość drugiej sumy będzie znana.
a[ ] - wektor elementów macierzowych, k[] - numery kolumn, w[]-indeksy z początkami wierszy y=0;
for(i=1; i<=n; i++){
l1=w[i]; // początek indeksow dla i-tego wiersza l2=w[i+1]-1; // koniec indeksów dla i-tego wiersza
for(l=l1; l<=l2; l++){
j=k[l]; //numer kolumny y[i]=y[i]+a[l]*x[j];
if( i!=j ) y[j]=y[j]+a[l]*x[i]; // sumowanie tyko po elementach pozadiagonalnych // modyfikacja pochodzi od drugiej sumy
} }
X
n j=1a
ijx
j= y
i! X
nj=i
a
ijx
j+ X
j<i
x
ja
jiOznaczmy A jako sumę 3 macierzy
Metoda Jacobiego
Dla dowolnie wybranego przybliżenia rozwiązania x0 chcemy tak przekształacać iteracyjnie wektor x(k) aby doprowadzić do znikania składowych wektora reszt w k iteracjach
co można zapisać Szukamy rozwiązania układu n równań
liniowych
Dlaczego używamy metod iteracyjnych?
Przykład
N=50000 – liczba równań w układzie fl2 = 8 bajtów/liczbę – podwójna precyzja a) Ograniczenia pamięci
Pd<N2fl2= 20 GB (10GB) – zaalokowana pamięć w komputerze
Ale jeśli układ jest np. pięcioprzekątniowy to do zapisu macierzy A (w postaci wektorowej)
potrzebujemy tylko Pi<5Nfl2 =2MB pamięci
b) większa wydajność dla macierzy rzadkich (liczba elementów macierzy różnych od 0 jest rzędu N) w stosunku do metod bezpośrednich Macierze takie często pojawiają się w
obliczeniach naukowych i inżynierskich (FEM, PDE)
Ax = b; A 2 R
n£n; x; b 2 R
nx = [»
1; »
2; : : : ; »
n] b = [¯
1; ¯
2; : : : ; ¯
n]
(b ¡ Ax
(k))
i= 0
¯
i¡ X
nj
a
ij»
j(k)= 0 A = L + D + U
D
U
L
7 Składowe wektora reszt znikają w kolejnych
iteracjach, więc możemy zapisać
oraz dla całego wektora
W metodzie Jacobiego obliczamy kolejno wszystkie składowe nowego przybliżenia wektora rozwiązań.
Metoda Gaussa-Seidla
Różni się od metody Jacobiego tym, że obliczone już składniki
wykorzystywane są w obliczeniach składników j+1,j+2,...,n.
»
ik+1= 1 a
ii0
B @¯
i¡ X
nj j6=i
a
ij»
j(k)1 C A a
ii»
i(k)= ¯
i¡
X
nj j6=i
a
ij»
j(k); i = 1; 2; : : : ; n
»
ik; i = 1; 2; : : : ; j
»
i(k+1)=
= 1 a
ii0
@¡
i¡1
X
j=1
a
ij»
j(k+1)¡
X
n j=i+1a
ij»
j(k)+ ¯
i1 A
x
(k+1)= ¡D
¡1(L + U )x
(k)+ D
¡1b
b ¡ Lx
(k+1)¡ Dx
(k+1)¡ U x
(k)= 0 x
(k+1)= ¡D
¡1Lx
(k+1)¡ D
¡1U x
(k)+ D
¡1b
¯
i¡
i¡1
X
j=1
a
ij»
j(k+1)¡a
ii»
i(k+1)¡
X
n j=i+1a
ij»
j(k)= 0
8 Metody Jacobiego i GS można zapisać ogólnie
w postaci
M x
(k+1)= N x
(k)+ b = (M ¡ A)x
(k)+ b A = M ¡ N
metoda Jacobiego:
metoda Gaussa-Seidela:
Metoda relaksacji
Metoda nadrelaksacji (SOR) (Successive Over Relaxation)
M = D
»
i(k+1)= !»
i(k+1)GS+ (1 ¡ !)»
i(k)! 2 (1; 2)
Macierze iterujące i ich przekształcenia (preconditioning)
Ogólny schemat iteracyjny
przy podziale macierzy A
definiujemy iterację do ustalonego punktu w jako
Z porównania obu zapisów dostajemy
A = M ¡ N
x
(k+1)= M
¡1N x
(k)+ M
¡1b
G = M
¡1N = M
¡1(M ¡ A) = I ¡ M
¡1A f = M
¡1b
x
(k+1)= Gx
(k)+ f G
J(A) = I ¡ D
¡1A
G
GS(A) = I ¡ (D + L)
¡1A M = D + L
(D + !L)x
(k+1)= [ ¡!U + (1 ¡ !)D]x
k+ !b A = L + D + U
!A = !D + !L + !U
!A = (D + !L) + (!U ¡ (1 ¡ !)D)
b ¡ Lx
(k+1)¡ Dx
(k+1)¡ U x
(k)= 0
9 Zbieżność metod iteracyjnych
Dla macierzy
definiujemy liczbę
którą nazywamy promieniem spektralnym macierzy.
Dla dowolnej macierzy kwadratowej zgodnej z normą wektorów prawdziwa jest nierówność
Lemat
Tw. Dla każdego wektora elementy ciągu
dążą do zera wtedy i tylko wtedy gdy
Dowód Proces iteracyjny
możemy potraktować także jako problem rozwiązania układu
co dla G=I-M-1A daje układ równań
Układ ten ma identyczne rozwiązanie jak układ pierwotny. Co nam to daje?
Z przepisu iteracyjnego
wynika, że musimy w każdej iteracji obliczyć
Ponieważ M-1 nie znamy, więc chcemy
niewielkim kosztem rozwiązać układ równań
Dla metod Jacobiego, Gaussa-Seidla i SOR macierz ta ma postać:
x
(k+1)= Gx
(k)+ f
(I ¡ G)x = f
M
¡1Ax = M
¡1b
A 2 R
n£nj¸
ij · jjAjj; ¸
i2 Z
x 2 R
n½(A) < 1 Ax; A
2x; : : : ; A
ix; : : :
^
">0
_
jjAjjp
jjAjj
p· ½(A) + "
M
J= D
M
GS= D + L M
SOR= 1
! (D + !L)
½(A) = max
i=1;2;:::;n
j¸
ij
x
(k+1)= M
¡1N x
(k)+ M
¡1b
M
¡1N x
(k)= M
¡1y
(k)= z
(k)M z
(k)= y
(k)" = 1 ¡ ½(A) 2
jjAjj
p· 1 + ½(A)
2 < 1
jjA
nx jj
p· jjAjj
npjjxjj
p! 0
A
nx ! 0
Tw. Ciąg wektorów
którego elementy wyznaczamy według wzoru
jest zbieżny do jedynego punktu granicznego wtedy i tylko wtedy gdy
Dowód
x
(0); x
(1); : : : ; x
(i); : : :
x
(i+1)= Gx
(i)+ f; i = 0; 1; : : :
x
(i+1)= Gx
(i)+ f = G(Gx
(i¡1)+ f ) + f = : : :
= G
i+1x
(0)+ (G
if + G
i¡1f + : : : + f )
i
lim
!1G
i+1x
(0)! 0
jjf + G
1f + : : : + G
if + : : : jj
p·
· X
1i=0
jjfjj
pjjGjj
ip= jjfjj
p1 ¡ jjGjj
pZbieżność w metodzie SOR
Jeśli macierz układu jest symetryczna,
dodatniookreślona i nieosobliwa to procedura iteracyjna jest zawsze zbieżna dla
G
SOR= (D + !L)
¡1[ ¡!U + (1 ¡ !)D]
det(G
SOR) = det ¡
(D + !L)
¡1¢
£ det (¡!U + (1 ¡ !)D)
det ( ¡!U + (1 ¡ !)D) = det((1 ¡ !)D)
= (1 ¡ !)
ndet(D) det(G
SOR) = (1 ¡ !)
ndet(G
SOR) = ¸
1¸
2: : : ¸
nj1 ¡ !j · max
i=1;:::;n
¸
i= ½(G
SOR) < 1 0 < ! < 2
0 < ! < 2 det ¡
(D + !L)
¡1¢
= 1
det(D + !L) = 1 det(D)
½(G) < 1
11 Minimalizacja formy kwadratowej
Jeśli Ax=b i r=b-Ax to możemy utworzyć formę kwadratową postaci
Która jest dodatniookreślona i przyjmuje wartość minimalną dla dokładnego rozwiązania x.
W dalszych rozważaniach zakładamy że macierz A jest symetryczna i dodatniookreślona, wówczas możemy użyć formy kwadratowej postaci
która ma minimum w x, ponieważ
Proces poszukiwania rozwiązania dokładnego przebiega iteracyjnie, tj. szukamy ciągu przybliżeń
gdzie:
Od sposobu wyznaczania αi i vi zależy zbieżność i szybkość metody.
R = r
Tr = (b ¡ Ax)
T(b ¡ Ax)
Q(x + ¢x) ¡ Q(x) = 1
2 ¢x
TA¢x > 0
x
1; x
2; x
3; : : : x
i+1= x
i+ ®
iv
ix1
x2
x6 x5 x4 x3
Związek gradientu Q z kierunkiem poszukiwania przybliżonego rozwiązania. Prosta interpretacja
geometryczna w 2D – powierzchnie o stałej wartości Q mają kształt elipsy (hiperelipsy w przestrzeni o większej liczbie wymiarów).
Q = 1
2 x
TAx ¡ x
Tb
Metoda największego spadku
Przybliżone rozwiązanie w i+1 iteracji ma postać
Jako vi wybieramy kierunek gradientu Q
W celu znalezienia współczynnika i obliczamy Q(xi+1)
i różniczkujemy je po parametrze
wariacyjnym w celu znalezienia minimum
x
i+1= x
i+ ®
iv
irQ = Ax
i¡ b = ¡r
iv
i= ¡r
iQ(x
i¡ ®
ir
i) = ¡ 1
2 x
Tir ¡ 1 2 x
Tib + 1
2 ®
2ir
iTAr
i+ ®
ir
Tir
i@Q
@®
i= r
Tir
i+ ®
ir
iTAr
i@Q
@®
i= 0 ! ®
i= ¡ r
Tir
ir
iTAr
ix
i+1= x
i+ r
iTr
ir
iTAr
ir
iKolejne przybliżenie w metodzie największego spadku opisuje wyrażenie
dla którego zachodzi warunek
Metoda może być jednak wolnozbieżna w przypadku gdy hiperelipsoida ma wydłużony kształt co
odpowiada złemu uwarunkowaniu układu.
Q(x
i+1) < Q(x
i)
13 Metoda sprzężonego gradientu
Założenia:
- xd jest rozwiązaniem dokładnym - ciąg wektorów
stanowi bazę w n-wymiarowej przestrzeni euklidesowej
Różnicę rozwiązania dokładnego i przybliżonego możemy zapisać w postaci kombinacji liniowej elementów bazy
Jeśli elementy bazy są ortogonalne to można łatwo wyznaczyć współczynniki kombinacji liniowej
Ale powyższy wzór wymaga modyfikacji ponieważ nie znamy wektora xd, wiemy jednak, że Axd=b więc
v
1; v
2; v
3; : : :
Żądamy więc, aby wektory bazy spełniały
warunek A-ortogonalności (wektory A-sprzężone)
Dla macierzy dodatniookreślonej zachodzi warunek
Jak skonstruować bazę A-ortogonalną?
Jeśli dysponujemy zwykłą bazą wektorów
to możemy ją poddać procesowi ortogonalizacji Grama-Schmidta
Jak utworzyć ciąg wektorów ui?
v
jTAv
i= 0 $ i 6= j
v
TiAv
i6= 0
u
1; u
2; u
3; : : :
v
1= u
1v
i+1= u
i+1+ X
i k=1¯
i+1;kv
k¯
i+1;k= ¡ v
kTAu
i+1v
TkAv
kx
d¡ x
i=
X
n j=1®
jv
j®
j= v
jT(x
d¡ x
i)
v
jTv
j; j = 1; 2; : : :
®
j= v
jTA(x
d¡ x
i)
v
jTAv
j= v
jTr
iv
jTAv
jW metodzie CG bazę stanowią wektory reszt (kierunki gradientów), które dzięki A-
ortogonalizacji są sprzężone.
Kolejne przybliżenia w podstawowej metodzie CG wyznaczamy zgodnie z poniższym schematem:
Dzięki A-ortogonalności w każdej iteracji
wystarczy wyznaczyć tylko jeden współczynnik (reszta współczynników znika).
W podstawowej metodzie CG w każdej iteracji należy wykonać dwa mnożenia macierz-wektor
i to te dwie operacje determinują nakład obliczeń.
Algorytm metody CG można przedstawić w alternatywnej postaci, gdzie wymagamy tylko jednego mnożenia macierz-wektor:
Maksymalna liczba iteracji w metodzie CG wynosi n+1 – więc jest metodą skończoną. Zazwyczaj do uzyskania akceptowalnego rozwiązania wystarcza wykonanie znacznie mniejszej liczby iteracji.
Av
iAr
i+1v
1= r
1= b ¡ Ax
1¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
®
i= r
iTr
iv
iAv
ix
i+1= x
i+ ®
iv
ir
i+1= r
i¡ ®
iAv
i¯
i= ¡ r
i+1Tr
i+1r
Tir
iv
i+1= r
i+1+ ¯
iv
iv
1= r
1= b ¡ Ax
1¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
®
i= v
iTr
iv
iTAv
ix
i+1= x
i+ ®
iv
ir
i+1= r
i¡ ®
iAv
i¯
i= ¡ v
iTAr
i+1v
iTAv
iv
i+1= r
i+1+ ¯
iv
i15 W metodzie CG bazę stanowią wektory reszt
(kierunki gradientów), które dzięki A- ortogonalizacji są sprzężone.
Kolejne przybliżenia w podstawowej metodzie CG wyznaczamy zgodnie z poniższym schematem:
Dzięki A-ortogonalności w każdej iteracji
wystarczy wyznaczyć tylko jeden współczynnik (reszta współczynników znika).
W podstawowej metodzie CG w każdej iteracji należy wykonać dwa mnożenia macierz-wektor
i to te dwie operacje determinują nakład obliczeń.
Algorytm metody CG można przedstawić w alternatywnej postaci, gdzie wymagamy tylko jednego mnożenia macierz-wektor:
Maksymalna liczba iteracji w metodzie CG wynosi n+1 – więc jest metodą skończoną. Zazwyczaj do uzyskania akceptowalnego rozwiązania wystarcza wykonanie znacznie mniejszej liczby iteracji.
Av
iAr
i+1v
1= r
1= b ¡ Ax
1¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
®
i= r
iTr
iv
iAv
ix
i+1= x
i+ ®
iv
ir
i+1= r
i¡ ®
iAv
i¯
i= ¡ r
i+1Tr
i+1r
Tir
iv
i+1= r
i+1+ ¯
iv
iv
1= r
1= b ¡ Ax
1¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
®
i= v
iTr
iv
iTAv
ix
i+1= x
i+ ®
iv
ir
i+1= r
i¡ ®
iAv
i¯
i= ¡ v
iTAr
i+1v
iTAv
iv
i+1= r
i+1+ ¯
iv
i16 Macierz Anxn