MN07: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
m MN Wykład 7 moved to MN07
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Linia 2: Linia 2:


Zajmiemy się wrażliwością układu równań na zaburzenia danych: prawej strony i
Zajmiemy się wrażliwością układu równań na zaburzenia danych: prawej strony i
współczynników macierzy układu. Jak zobaczymu na poniższym przykładzie, bywają
współczynników macierzy układu. Jak zobaczymy na poniższym przykładzie, bywają
równania, które są mało podatne na zaburzenia danych (a więc: dobrze
równania, które są mało podatne na zaburzenia danych (a więc: dobrze
uwarunkowane) oraz równania, które są szalenie wrażliwe na zaburzenia, a więc
uwarunkowane) oraz równania, które są szalenie wrażliwe na zaburzenia, a więc
źle uwarunkowane. Jak wkrótce się przekonamy, czułość danego układu równań na
źle uwarunkowane. Jak wkrótce się przekonamy, czułość danego układu równań na
zaburzenia da się precyzyjnie scharakteryzować, a cecha ta nie tylko będzie
zaburzenia da się precyzyjnie scharakteryzować, a cecha ta nie tylko będzie
miała wpływ na jakość rozwiązań możliwych do uzyskania w arytmetyce skończonej
miała wpływ na jakość rozwiązań możliwych do uzyskania w arytmetyce skończonej
Linia 17: Linia 17:
Rozwiązanie układu dwóch równań liniowych można przedstawić w formie graficznej:
Rozwiązanie układu dwóch równań liniowych można przedstawić w formie graficznej:
jest to punkt przecięcia się dwóch prostych wyznaczonych przez dane
jest to punkt przecięcia się dwóch prostych wyznaczonych przez dane
wspólczynniki i wyrazy prawej strony.
wspóółczynniki i wyrazy prawej strony.


[[Image:MNlinearcond.png|thumb|450px|center|Rozważmy pewien nieosobliwy układ dwóch równań
[[Image:MNlinearcond.png|thumb|450px|center|Rozważmy pewien nieosobliwy układ dwóch równań
liniowych. Ma on dokładnie jedno rozwiązanie, oznaczone kolorem czerwonym. Co
liniowych. Ma on dokładnie jedno rozwiązanie oznaczone kolorem czerwonym. Co
się stanie, gdy trochę zaburzymy prawą stronę takiego układu?]]
się stanie, gdy trochę zaburzymy prawą stronę takiego układu?]]


Linia 34: Linia 34:
[[Image:MNlinearcond3.png|thumb|450px|center|Jednak bywają
[[Image:MNlinearcond3.png|thumb|450px|center|Jednak bywają
równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie
równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie
równanie własnie widzimy na rysunku: jego cechą szczególną jest to, że tym razem
właśnie równanie widzimy na rysunku: jego cechą szczególną jest to, że tym razem
proste, choć wciąż przecinają się dokładnie w jednym punkcie, są <strong>prawie</strong>
proste, choć wciąż przecinają się dokładnie w jednym punkcie, są <strong>prawie</strong>
równoległe.]]
równoległe.]]


[[Image:MNlinearcond4.png|thumb|450px|center|Bierzemy zaburzenia takie same jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z
[[Image:MNlinearcond4.png|thumb|450px|center|Bierzemy zaburzenia takie same, jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z
zaznaczonych łososiowym kolorem pozycji.]]
zaznaczonych łososiowym kolorem pozycji.]]


[[Image:MNlinearcond5.png|thumb|450px|center|Tym razem, obszar niepewności, gdzie mogą być
[[Image:MNlinearcond5.png|thumb|450px|center|Tym razem obszar niepewności, gdzie mogą być
rozwiązania naszego zaburzonego układu, jest <strong>gigantyczny</strong>!]]
rozwiązania naszego zaburzonego układu, jest <strong>gigantyczny</strong>!]]


Linia 56: Linia 56:
==Normy wektorowe i macierzowe==
==Normy wektorowe i macierzowe==


Aby badać odległość między rozwiązaniem dokładnym układu równań, a jego
Aby badać odległość między rozwiązaniem dokładnym układu równań a jego
wartością przybliżoną uzyskaną np. algorytmem eliminacji Gaussa, będziemy
wartością przybliżoną uzyskaną np. algorytmem eliminacji Gaussa, będziemy
posługiwać się normami wektorów  
posługiwać się normami wektorów  
Linia 156: Linia 156:


<center><math>\displaystyle \epsilon\cdot \mbox{cond} (A)\,<\,1
<center><math>\displaystyle \epsilon\cdot \mbox{cond} (A)\,<\,1
</math></center>
</math></center>,


to układ zaburzony <math>\displaystyle (A+E) x=( b+ e)</math> ma jednoznaczne  
to układ zaburzony <math>\displaystyle (A+E) x=( b+ e)</math> ma jednoznaczne  
Linia 163: Linia 163:
<center><math>\displaystyle \frac{\| z^*- x^*\|}{\| x^*\|}\;\le\;
<center><math>\displaystyle \frac{\| z^*- x^*\|}{\| x^*\|}\;\le\;
   2\,\frac{ \mbox{cond} (A)}{1-\epsilon \mbox{cond} (A)}\epsilon,
   2\,\frac{ \mbox{cond} (A)}{1-\epsilon \mbox{cond} (A)}\epsilon,
</math></center>
</math></center>,


gdzie definiujemy <strong>współczynnik uwarunkowania układu</strong>
gdzie definiujemy <strong>współczynnik uwarunkowania układu</strong>
Linia 179: Linia 179:


Jeśli <math>\displaystyle F</math> jest macierzą  
Jeśli <math>\displaystyle F</math> jest macierzą  
taką, że <math>\displaystyle \|F\|<1</math> to macierz <math>\displaystyle (I-F)</math> jest nieosobliwa oraz  
taką, że <math>\displaystyle \|F\|<1</math>, to macierz <math>\displaystyle (I-F)</math> jest nieosobliwa oraz  


<center><math>\displaystyle \| (I-F)^{-1} \|\,\le\,\frac{1}{1-\|F\|}.
<center><math>\displaystyle \| (I-F)^{-1} \|\,\le\,\frac{1}{1-\|F\|}.
Linia 187: Linia 187:


{{dowod|||
{{dowod|||
Rzeczywiście, gdyby <math>\displaystyle (I-F)</math> była osobliwa to istniałby niezerowy  
Rzeczywiście, gdyby <math>\displaystyle (I-F)</math> była osobliwa, to istniałby niezerowy  
wektor <math>\displaystyle  x</math> taki, że <math>\displaystyle (I-F) x=0</math>, co implikuje  
wektor <math>\displaystyle  x</math> taki, że <math>\displaystyle (I-F) x=0</math>, co implikuje  
<math>\displaystyle \|F x\|/\| x\|=1</math> i w konsekwencji <math>\displaystyle \|F\|\ge 1</math>. Aby  
<math>\displaystyle \|F x\|/\| x\|=1</math> i w konsekwencji <math>\displaystyle \|F\|\ge 1</math>. Aby  
Linia 205: Linia 205:


<center><math>\displaystyle \|F\|\,\le\,\|A^{-1}\|\,\|E\|\,\le\,\epsilon\|A\|\,\|A^{-1}\|\,<\,1,
<center><math>\displaystyle \|F\|\,\le\,\|A^{-1}\|\,\|E\|\,\le\,\epsilon\|A\|\,\|A^{-1}\|\,<\,1,
</math></center>
</math></center>,


co wobec równości <math>\displaystyle A+E=A(I+A^{-1}E)</math> daje, że macierz <math>\displaystyle (A+E)</math>  
co wobec równości <math>\displaystyle A+E=A(I+A^{-1}E)</math> daje, że macierz <math>\displaystyle (A+E)</math>  
Linia 225: Linia 225:
   &\le & \frac{\|A\|\,\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}
   &\le & \frac{\|A\|\,\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|}
       2\epsilon\cdot\| x^*\|,  
       2\epsilon\cdot\| x^*\|,  
\endaligned</math></center>
\endaligned</math></center>,


co kończy dowód.  
co kończy dowód.  
Linia 256: Linia 256:
   
   
W LAPACKu służy do tego funkcja <code>DGECON</code>. Zadanie wyznaczania uwarunkowania macierzy jest zadaniem bardzo intensywnym
W LAPACKu służy do tego funkcja <code>DGECON</code>. Zadanie wyznaczania uwarunkowania macierzy jest zadaniem bardzo intensywnym
numerycznie, a problem, czy da się je wyznaczyć z dobrą dokładnością kosztem
numerycznie a problem, czy da się je wyznaczyć z dobrą dokładnością kosztem
niższym niż wyznaczenie macierzy odwrotnej i jej normy, jest wciąż otwarty.
niższym niż wyznaczenie macierzy odwrotnej i jej normy, jest wciąż otwarty.


Linia 306: Linia 306:


<center><math>\displaystyle \widetilde{A}\widetilde{x} = b,
<center><math>\displaystyle \widetilde{A}\widetilde{x} = b,
</math></center>
</math></center>,


gdzie  
gdzie  
Linia 340: Linia 340:


Algorytm eliminacji Gaussa z pełnym wyborem elementu głównego jest już w pełni
Algorytm eliminacji Gaussa z pełnym wyborem elementu głównego jest już w pełni
numerycznie poprawny, ze wskaźnikiem wzrostu <math>\displaystyle \rho_N \leq \sqrt{n\cdot 2 \cdot
numerycznie poprawny ze wskaźnikiem wzrostu <math>\displaystyle \rho_N \leq \sqrt{n\cdot 2 \cdot
3^{1/2}\cdot 4^{1/3}\cdots N^{1/(N-1)}}</math>, a w praktyce grubo poniżej <math>\displaystyle \sqrt{N}</math>.
3^{1/2}\cdot 4^{1/3}\cdots N^{1/(N-1)}}</math>, a w praktyce grubo poniżej <math>\displaystyle \sqrt{N}</math>.

Wersja z 17:45, 24 wrz 2006

Uwarunkowanie układu równań liniowych

Zajmiemy się wrażliwością układu równań na zaburzenia danych: prawej strony i współczynników macierzy układu. Jak zobaczymy na poniższym przykładzie, bywają równania, które są mało podatne na zaburzenia danych (a więc: dobrze uwarunkowane) oraz równania, które są szalenie wrażliwe na zaburzenia, a więc źle uwarunkowane. Jak wkrótce się przekonamy, czułość danego układu równań na zaburzenia da się precyzyjnie scharakteryzować, a cecha ta nie tylko będzie miała wpływ na jakość rozwiązań możliwych do uzyskania w arytmetyce skończonej precyzji, ale także na efektywność metod iteracyjnych rozwiązywania układów równań liniowych, w których są tysięce (lub więcej) niewiadomych.

Przykład: Uwarunkowanie układu dwóch równań liniowych

Rozwiązanie układu dwóch równań liniowych można przedstawić w formie graficznej: jest to punkt przecięcia się dwóch prostych wyznaczonych przez dane wspóółczynniki i wyrazy prawej strony.

Rozważmy pewien nieosobliwy układ dwóch równań liniowych. Ma on dokładnie jedno rozwiązanie oznaczone kolorem czerwonym. Co się stanie, gdy trochę zaburzymy prawą stronę takiego układu?
Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.
Obszar, gdzie mogą znaleźć się rozwiązania zaburzonego układu, zaznaczyliśmy na czerwono. Jest on, kolokwialnie rzecz ujmując, z grubsza tak wielki jak wielkie były zaburzenia, co zgodne jest z typową intuicją "człowieka z zewnątrz".
Jednak bywają równania, wrażliwe jak mimoza na nawet delikatne zaburzenia danych. Takie właśnie równanie widzimy na rysunku: jego cechą szczególną jest to, że tym razem proste, choć wciąż przecinają się dokładnie w jednym punkcie, są prawie równoległe.
Bierzemy zaburzenia takie same, jak poprzednio. Wykresy zaburzonych prostych mogą zająć jedną z zaznaczonych łososiowym kolorem pozycji.
Tym razem obszar niepewności, gdzie mogą być rozwiązania naszego zaburzonego układu, jest gigantyczny!

A więc równania liniowe mogą, choć nie muszą, być bardzo podatne na zaburzenia danych. Gdy zamiast prawej strony, zaburzymy wyrazy macierzy układu, może nawet okazać się, że dostaniemy układ równań sprzecznych (czy możesz podać przykład?)

Aby przedstawić ogólną teorię zaburzeń dla układów równań liniowych, musimy mieć narzędzia do pomiaru błędu rozwiązań, a także zaburzeń danych zadania: czyli macierzy i wektora prawej strony. Temu będą służyć normy.

Normy wektorowe i macierzowe

Aby badać odległość między rozwiązaniem dokładnym układu równań a jego wartością przybliżoną uzyskaną np. algorytmem eliminacji Gaussa, będziemy posługiwać się normami wektorów Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle x = (x_j)_{j=1}^n\inR^n} i macierzy A=(ai,j)i,j=1nRn×n. Najczęściej używanymi normami wektorowymi będą normy p-te,

x=xp=(j=1n|xj|p)1/p,1p<+,

oraz

x=limp+xp=max1jn|xj|.
Kula jednostkowa w normie ||||1 w R2
Kula jednostkowa w normie ||||2 w R2
Kula jednostkowa w normie |||| w R2

Normą macierzową jest norma euklidesowa (zwana też normą Frobeniusa)

AE=i,j=1n|ai,j|2,

a także normy indukowane przez normy wektorowe (np. przez normy p-te)

A=supx0Axx=supx=1Ax.

Jeśli norma macierzowa jest indukowana przez normę wektorową, to dla dowolnego wektora mamy

AxAx.

Przypomnijmy, że w przestrzeniach liniowych skończenie wymiarowych (a więc także w Rn i w przestrzeni macierzy wymiaru n×n) każde dwie normy są równoważne. To znaczy, że jeśli mamy dwie normy i w przestrzeni skończenie wymiarowej X, to istnieją stałe 0<K1K2< takie, że

K1xxK2x,xX.

W szczególności dla Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle x\inR^n} mamy

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \| x\|_\infty &\le & \| x\|_1\,\le\, n\,\| x\|_\infty, \\ \| x\|_\infty &\le & \| x\|_2\,\le\, \sqrt{n}\,\| x\|_\infty,\\ \frac 1{\sqrt n}\,\| x\|_1 &\le & \| x\|_2\,\le\, \| x\|_1, \endaligned}

a dla A=(ai,j)i,j=1n mamy

A2|A|2AEnA2,

gdzie |A|=(|ai,j|)i,j=1n.

Dla macierzy Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A=(a_{i,j})_{i.j=1}^n\inR^{n\times n}} mamy

A=max1inj=1n|ai,j|

oraz

A1=AT=max1jni=1n|ai,j|.

Dowód tego faktu zostawiamy jako ćwiczenie.

Uwarunkowanie

Wyprowadzimy teraz wynik świadczący o tym, jak zaburzenie względne danych przenosi się na błąd względny wyniku rozwiązania x* układu równań liniowych Ax=b.

Twierdzenie O uwarunkowaniu układu równań

Niech E i e będą zaburzeniami odpowiednio macierzy A i wektora b takimi, że

EϵAieϵb,

Jeśli

ϵcond(A)<1
,

to układ zaburzony (A+E)x=(b+e) ma jednoznaczne rozwiązanie z* spełniające

z*x*x*2cond(A)1ϵcond(A)ϵ,
,

gdzie definiujemy współczynnik uwarunkowania układu

cond(A)=||A||||A1||.

Zauważmy najpierw, że zachodzi

John von Neumann
Zobacz biografię

Lemat von Neumanna o otwartości zbioru macierzy odwracalnych

Jeśli F jest macierzą taką, że F<1, to macierz (IF) jest nieosobliwa oraz

(IF)111F.

Dowód

Rzeczywiście, gdyby (IF) była osobliwa, to istniałby niezerowy wektor x taki, że (IF)x=0, co implikuje Fx/x=1 i w konsekwencji F1. Aby pokazać oszacowanie normy macierzy (IF)1 zauważmy, że

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned 1 &= \|I\|\,=\,\|(I-F)(I-F)^{-1}\| \\ &\ge & \|(I-F)^{-1}\|\,-\,\|F\|\,\|(I-F)^{-1}\| \\ &= (1-\|F\|)\,\|(I-F)^{-1}\|, \endaligned}

skąd już wynika dowodzona nierówność.

Dowód twierdzenia o uwarunkowaniu

Po podstawieniu F=A1E mamy teraz

FA1EϵAA1<1,
,

co wobec równości A+E=A(I+A1E) daje, że macierz (A+E) jest nieosobliwa i układ zaburzony ma jednoznaczne rozwiązanie z*. Przedstawmy to rozwiązanie w postaci z*=x*+(z*x*). Rozpisując układ zaburzony i wykorzystując równość Ax*=b otrzymujemy, że (A+E)(z*x*)=eEx*, czyli

z*x*=(I+A1E)1A1(eEx*),

a stąd

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \| z^*- x^*\| &\le & \|(I+A^{-1}E)^{-1}\|\,\|A^{-1}\| \, (\| e\|+\|E\|\,\| x^*\| \\ &\le & \frac{\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|} \epsilon\left(\| b\|+\|A\|\,\| x^*\|\right) \\ &\le & \frac{\|A\|\,\|A^{-1}\|}{1-\epsilon\|A\|\,\|A^{-1}\|} 2\epsilon\cdot\| x^*\|, \endaligned}
,

co kończy dowód.

Gdy więc np. ϵcond(A)12, powyższe oszacowanie możemy zastąpić czytelniejszym (choć mniej precyzyjnym)

z*x*x*4cond(A)ϵ.

Octave i MATLAB mają wbudowane funkcje wyznaczające normy wektorów i macierzy

 
N = 3;
x = [1:N]'
A = pascal(N)
norm(A,1)
norm(x,2)
norm(A,Inf)

a także funkcje wyznaczające uwarunkowanie macierzy, przy czym Octave liczy tylko uwarunkowanie w normie ||||2:

 
cond(A)

W LAPACKu służy do tego funkcja DGECON. Zadanie wyznaczania uwarunkowania macierzy jest zadaniem bardzo intensywnym numerycznie a problem, czy da się je wyznaczyć z dobrą dokładnością kosztem niższym niż wyznaczenie macierzy odwrotnej i jej normy, jest wciąż otwarty.

W praktyce obliczeniowej trafiają się zarówno układy dobrze uwarunkowane, jak i macierze, których uwarunkowanie może być patologicznie duże (np. takie macierze są chlebem powszednim osób rozwiązujących równania różniczkowe). Przykładem takiej macierzy o uwarunkowaniu bardzo szybko rosnącym z wymiarem jest m.in.

David Hilbert
Zobacz biografię

Przykład: Macierz Hilberta

Niech HN=(hij)i,j=1N, gdzie

hij=1i+j1,
Macierz Hilberta wymiaru 25. Kolor odpowiada rzędowi wielkości elementu macierzy, dokładniej, log(hij)

Taką macierz możemy wygenerować w Octave komendą hilb(N). Okazuje się, że uwarunkowanie macierzy Hilberta rośnie bardzo szybko z N, cond(HN)O(e3.5N) , np.

 
octave:2> cond(hilb(5))
ans =  4.7661e+05
octave:3> cond(hilb(10))
ans =  1.6025e+13
octave:4> cond(hilb(15))
ans =  3.7689e+17
octave:5> cond(hilb(20))
ans =  7.1209e+19

Jest to więc bardzo wdzięczna macierz do prowadzenia testów...

Numeryczna poprawność eliminacji Gaussa

Przedstawimy bez dowodu klasyczne twierdzenie o "praktycznej numerycznej poprawności" eliminacji Gaussa z wyborem w kolumnie.

Plik:Wilkinson.jpg
Wilkinson
Zobacz biografię

Twierdzenie Wilkinsona

Algorytm eliminacji Gaussa z wyborem elementu głównego w kolumnie, zrealizowany

w arytmetyce flν, wyznacza x~ taki, że x~ jest dokładnym rozwiązaniem zadania zaburzonego

A~x~=b,
,

gdzie

||AA~||||A||ConstN3ρNν,

dla pewnej niedużej stałej Const=O(1), a L~ i U~ są numerycznie wyznaczonymi czynnikami rozkładu PA=LU, natomiast ρN=maxi,j|u~ij|maxi,j|aij|.

Jak widzimy, kluczowe dla numerycznej poprawności jest oszacowanie wskaźnika wzrostu ρN. Okazuje się, co wiedział już Wilkinson, że

  • w najgorszym przypadku, ρN2N1 i jest osiągane dla macierzy
W=(111111)
  • dla macierzy trójdiagonalnych lub diagonalnie dominujących, lub dla

macierzy symetrycznych dodatnio określonych, ρN2

  • w średnim przypadku, obserwuje się ρNN2/3, to znaczy macierze

spotykane w praktyce obliczeniowej mają mały wskaźnik wzrostu.

Konkluzja jest więc taka, że algorytm eliminacji Gaussa z wyborem w kolumnie jest praktycznie numerycznie poprawny. Z drugiej strony, dla bardzo dużych N i niezbyt dobrze uwarunkowanych macierzy, może okazać się, że arytmetyka pojedynczej precyzji może okazać się niewystarczająca dla uzyskania godnego wyniku.

Algorytm eliminacji Gaussa z pełnym wyborem elementu głównego jest już w pełni numerycznie poprawny ze wskaźnikiem wzrostu ρNn231/241/3N1/(N1), a w praktyce grubo poniżej N.