PKow: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pi (dyskusja | edycje)
Nie podano opisu zmian
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 8 wersji utworzonych przez 3 użytkowników)
Linia 1: Linia 1:
== Flash ==
<flash>file=Test19.swf|width=750|height=530</flash>
http://osilek.mimuw.edu.pl/images/2/29/Test19.swf
===Metoda iteracji prostej Banacha===
===Metoda iteracji prostej Banacha===
 
&#0025;
Zupełnie inne, i jak się okaże --- przy odrobinie sprytu bardzo skuteczne ---
Zupełnie inne, i jak się okaże --- przy odrobinie sprytu bardzo skuteczne ---
podejście do wyznaczania miejsca zerowego jest oparte na metodzie Banacha.
podejście do wyznaczania miejsca zerowego jest oparte na metodzie Banacha.
Linia 6: Linia 10:
Najpierw nasze równanie nieliniowe  
Najpierw nasze równanie nieliniowe  


<center><math>\displaystyle
<center><math>
f(x) = 0
f(x) = 0
</math></center>
</math></center>


przekształcamy (dobierając odpowiednią funkcję <math>\displaystyle \phi</math>) do równania równoważnego  
przekształcamy (dobierając odpowiednią funkcję <math>\phi</math>) do równania równoważnego  
(tzn. mającego te same rozwiązania)
(tzn. mającego te same rozwiązania)


<center><math>\displaystyle
<center><math>
   x\,=\,\phi( x).  
   x\,=\,\phi( x).  
</math></center>
</math></center>


Następnie, startując z pewnego przybliżenia  
Następnie, startując z pewnego przybliżenia  
początkowego <math>\displaystyle  x_0</math>, konstruujemy ciąg kolejnych  
początkowego <math>x_0</math>, konstruujemy ciąg kolejnych  
przybliżeń <math>\displaystyle  x_k</math> według wzoru  
przybliżeń <math>x_k</math> według wzoru  


<center><math>\displaystyle x_k\,=\,\phi( x_{k-1}),\qquad k\ge 1.
<center><math>x_k\,=\,\phi( x_{k-1}),\qquad k\ge 1</math></center>
</math></center>


{{twierdzenie|Banacha, o zbieżności iteracji prostej||
{{twierdzenie|Banacha, o zbieżności iteracji prostej||


Niech <math>\displaystyle D_0</math> będzie domkniętym  
Niech <math>D_0</math> będzie domkniętym  
podzbiorem dziedziny <math>\displaystyle D</math>,  
podzbiorem dziedziny <math>D</math>,  


<center><math>\displaystyle \overline D_0\,=\,D_0\subset D,  
<center><math>\overline D_0\,=\,D_0\subset D,  
</math></center>
</math></center>


w którym <math>\displaystyle \phi</math> jest odwzorowaniem zwężającym.  
w którym <math>\phi</math> jest odwzorowaniem zwężającym.  
To znaczy, <math>\displaystyle \phi(D_0)\subset D_0</math>, oraz istnieje stała  
To znaczy, <math>\phi(D_0)\subset D_0</math>, oraz istnieje stała  
<math>\displaystyle 0\le L<1</math> taka, że  
<math>0\le L<1</math> taka, że  


<center><math>\displaystyle \|\phi( x)-\phi( y)\|\,\le\,L\,\| x- y\|,
<center><math>\|\phi( x)-\phi( y)\|\,\le\,L\,\| x- y\|,
     \qquad\forall x, y\in D_0.   
     \qquad\forall x, y\in D_0.   
</math></center>
</math></center>
Linia 42: Linia 45:
Wtedy równanie
Wtedy równanie


<center><math>\displaystyle
<center><math>
   x\,=\,\phi( x).  
   x\,=\,\phi( x).  
</math></center>
</math></center>


ma dokładnie jedno  
ma dokładnie jedno  
rozwiązanie <math>\displaystyle  x^*</math>, oraz  
rozwiązanie <math>x^*</math>, oraz  


<center><math>\displaystyle x^*\,=\,\lim_{k\to\infty} x_k,  
<center><math>x^*\,=\,\lim_{k\to\infty} x_k,  
</math></center>
</math></center>


dla dowolnego przybliżenia początkowego  
dla dowolnego przybliżenia początkowego  
<math>\displaystyle  x_0\in D_0</math>.  
<math>x_0\in D_0</math>.  
}}
}}


Linia 65: Linia 68:
\end{matrix}</math></center>
\end{matrix}</math></center>


dla <math>\displaystyle k\ge s</math> mamy  
dla <math>k\ge s</math> mamy  


<center><math>\begin{matrix}  \| x_k- x_s\|  
<center><math>\begin{matrix}  \| x_k- x_s\|  
Linia 74: Linia 77:
\end{matrix}</math></center>
\end{matrix}</math></center>


Ciąg <math>\displaystyle \{ x_k\}_k</math> jest więc ciągiem Cauchy'ego.  
Ciąg <math>\{ x_k\}_k</math> jest więc ciągiem Cauchy'ego.  
Stąd istnieje granica  
Stąd istnieje granica  
<math>\displaystyle \vec\alpha=\lim_{k\to\infty} x_k</math>, która należy do  
<math>\vec\alpha=\lim_{k\to\infty} x_k</math>, która należy do  
<math>\displaystyle D_0</math>, wobec domkniętości tego zbioru. Ponieważ  
<math>D_0</math>, wobec domkniętości tego zbioru. Ponieważ  
lipschitzowskość <math>\displaystyle \phi</math> implikuje jej ciągłość,  
lipschitzowskość <math>\phi</math> implikuje jej ciągłość,  
mamy też   
mamy też   


<center><math>\displaystyle \phi(\vec\alpha)\,=\,\phi\Big(\lim_{k\to\infty} x_k\Big)  
<center><math>\phi(\vec\alpha)\,=\,\phi\Big(\lim_{k\to\infty} x_k\Big)  
   \,=\,\lim_{k\to\infty}\phi( x_k)
   \,=\,\lim_{k\to\infty}\phi( x_k)
   \,=\,\lim_{k\to\infty} x_k\,=\,\vec\alpha,
   \,=\,\lim_{k\to\infty} x_k\,=\,\vec\alpha</math>,</center>
</math></center>


tzn. <math>\displaystyle \vec\alpha</math> jest punktem stałym odwzorowania <math>\displaystyle \phi</math>.  
tzn. <math>\vec\alpha</math> jest punktem stałym odwzorowania <math>\phi</math>.  
Dla jednoznaczności zauważmy, że jeśliby istniał  
Dla jednoznaczności zauważmy, że jeśliby istniał  
drugi, różny od <math>\displaystyle \vec\alpha</math>, punkt stały <math>\displaystyle \vec\beta</math>,  
drugi, różny od <math>\vec\alpha</math>, punkt stały <math>\vec\beta</math>,  
to mielibyśmy  
to mielibyśmy  


<center><math>\displaystyle \|\vec\alpha-\vec\beta\|\,=\,
<center><math>\|\vec\alpha-\vec\beta\|\,=\,
   \|\phi(\vec\alpha)-\phi(\vec\beta)\|
   \|\phi(\vec\alpha)-\phi(\vec\beta)\|
   \,\le\,L\,\|\vec\alpha-\vec\beta\|.  
   \,\le\,L\,\|\vec\alpha-\vec\beta\|.  
</math></center>
</math></center>


Stąd <math>\displaystyle 1<L</math>, co jest sprzeczne z założeniem, że  
Stąd <math>1<L</math>, co jest sprzeczne z założeniem, że  
<math>\displaystyle \phi</math> jest zwężająca. }}
<math>\phi</math> jest zwężająca. }}


Z powyższych rozważań otrzymujemy natychmiastowy  
Z powyższych rozważań otrzymujemy natychmiastowy  
Linia 105: Linia 107:
Przy założeniach [[twit|Uzupe�nij: twierdzenia Banacha]],  
Przy założeniach [[twit|Uzupe�nij: twierdzenia Banacha]],  
metoda iteracji prostych jest zbieżna co  
metoda iteracji prostych jest zbieżna co  
najmniej liniowo z ilorazem <math>\displaystyle L</math>, tzn.
najmniej liniowo z ilorazem <math>L</math>, tzn.


<center><math>\displaystyle \| x_k- x^*\|\,\le\,L^k\,\| x_0- x^*\|.
<center><math>\| x_k- x^*\|\,\le\,L^k\,\| x_0- x^*\|</math></center>
</math></center>


}}
}}
Linia 116: Linia 117:
równanie skalarne:  
równanie skalarne:  


<center><math>\displaystyle
<center><math>
   x\,=\,\cos(x), \qquad \mbox{dla} \qquad x\in D= R.  
   x\,=\,\cos(x), \qquad \mbox{dla} \qquad x\in D= R.  
</math></center>
</math></center>


W tym przypadku <math>\displaystyle \phi(x)=\cos(x)</math>. Zauważamy, że w  
W tym przypadku <math>\phi(x)=\cos(x)</math>. Zauważamy, że w  
przedziale <math>\displaystyle [0,1]</math> funkcja <math>\displaystyle \phi</math> jest zwężająca ze  
przedziale <math>[0,1]</math> funkcja <math>\phi</math> jest zwężająca ze  
stałą  
stałą  


<center><math>\displaystyle L\,=\,\max_{0\le x\le 1}|\cos'(x)|\,=\,\sin(1)\,<\,1.
<center><math>L\,=\,\max_{0\le x\le 1}|\cos'(x)|\,=\,\sin(1)\,<\,1</math></center>
</math></center>


Stąd istnieje dokładnie jedno rozwiązanie naszego równania  
Stąd istnieje dokładnie jedno rozwiązanie naszego równania  
w przedziale <math>\displaystyle [0,1]</math>. Rozwiązanie to może  
w przedziale <math>[0,1]</math>. Rozwiązanie to może  
być aproksymowane z dowolnie małym błędem przy pomocy  
być aproksymowane z dowolnie małym błędem przy pomocy  
iteracji prostych, startując z dowolnego przybliżenia  
iteracji prostych, startując z dowolnego przybliżenia  
początkowego <math>\displaystyle  x_0\in [0,1]</math>.  
początkowego <math>x_0\in [0,1]</math>.  
}}
}}


Zaletą iteracji prostych jest fakt, że zbieżność  
Zaletą iteracji prostych jest fakt, że zbieżność  
nie zależy od wymiaru <math>\displaystyle n</math> zadania, ale tylko od stałej  
nie zależy od wymiaru <math>n</math> zadania, ale tylko od stałej  
Lipschitza <math>\displaystyle L</math> (jednak w praktyce czasem sama stała Lipschitza może zależeć od
Lipschitza <math>L</math> (jednak w praktyce czasem sama stała Lipschitza może zależeć od
wymiaru zadania...). Metoda Banacha ma szczególne zastosowanie w  
wymiaru zadania...). Metoda Banacha ma szczególne zastosowanie w  
przypadku, gdy funkcja <math>\displaystyle \phi</math> jest zwężająca na całym  
przypadku, gdy funkcja <math>\phi</math> jest zwężająca na całym  
zbiorze <math>\displaystyle D</math>, tzn. <math>\displaystyle D_0=D</math>. Jeśli ponadto <math>\displaystyle D</math> ma  
zbiorze <math>D</math>, tzn. <math>D_0=D</math>. Jeśli ponadto <math>D</math> ma  
skończoną średnicę <math>\displaystyle  \mbox{diam} (D)</math>, to dla  
skończoną średnicę <math>\mbox{diam} (D)</math>, to dla  
osiągnięcia <math>\displaystyle \epsilon</math>-aproksymacji zera funkcji <math>\displaystyle f</math>  
osiągnięcia <math>\epsilon</math>-aproksymacji zera funkcji <math>f</math>  
wystarczy wykonać  
wystarczy wykonać  


<center><math>\displaystyle k\,=\,k(\epsilon)\,=\,\Big\lceil\frac
<center><math>k\,=\,k(\epsilon)\,=\,\Big\lceil\frac
   {\log(\| x_0- x^*\|/\epsilon)}{\log(1/L)}\Big\rceil  
   {\log(\| x_0- x^*\|/\epsilon)}{\log(1/L)}\Big\rceil  
   \,=\,\Big\lceil\frac
   \,=\,\Big\lceil\frac
Linia 150: Linia 150:
</math></center>
</math></center>


iteracji, niezależnie od <math>\displaystyle x_0</math>. Metody zbieżne dla  
iteracji, niezależnie od <math>x_0</math>. Metody zbieżne dla  
dowolnego przybliżenia początkowego, nazywamy  
dowolnego przybliżenia początkowego, nazywamy  
''zbieżnymi globalnie''. Obie przedstawione dotychczas metody: bisekcji i
''zbieżnymi globalnie''. Obie przedstawione dotychczas metody: bisekcji i
Linia 177: Linia 177:
<div class="exercise">
<div class="exercise">


Spróbuj obniżyć koszt wyznaczania <math>\displaystyle \exp(x)</math> dla dużych <math>\displaystyle x</math>!
Spróbuj obniżyć koszt wyznaczania <math>\exp(x)</math> dla dużych <math>x</math>!


<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none">
<div style="font-size:smaller; background-color:#efe"> Rzecz w tym, że dla dużych <math>\displaystyle x</math>, trzeba wziąć bardzo dużo wyrazów w szeregu
<div style="font-size:smaller; background-color:#efe"> Rzecz w tym, że dla dużych <math>x</math>, trzeba wziąć bardzo dużo wyrazów w szeregu
Taylora. Czy można tak wykombinować, by w rezultacie wziąć ich mniej? </div>
Taylora. Czy można tak wykombinować, by w rezultacie wziąć ich mniej? </div>
</div></div>
</div></div>
Linia 188: Linia 188:
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em">   
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><div style="margin-left:1em">   


Bez zmieniejszenia ogólności, załóżmy, że <math>\displaystyle x\geq 0</math>.
Bez zmieniejszenia ogólności, załóżmy, że <math>x\geq 0</math>.


Jeśli <math>\displaystyle x = k + t</math>, gdzie <math>\displaystyle t \in [0,1)</math>, a <math>\displaystyle k</math> jest całkowite, to oczywiście  
Jeśli <math>x = k + t</math>, gdzie <math>t \in [0,1)</math>, a <math>k</math> jest całkowite, to oczywiście  
<center><math>\displaystyle
<center><math>
e^x = e^{k+t} = e^k e^t = e^k \exp(t).
e^x = e^{k+t} = e^k e^t = e^k \exp(t)</math></center>
</math></center>


Tak więc zadanie redukuje się do wyznaczenia <math>\displaystyle \exp(t)</math> dla ''małego'' <math>\displaystyle t</math> oraz
Tak więc zadanie redukuje się do wyznaczenia <math>\exp(t)</math> dla ''małego'' <math>t</math> oraz
do co najwyżej <math>\displaystyle k</math> dodatkowych mnożeń potrzebnych do wyznaczenia całkowitej
do co najwyżej <math>k</math> dodatkowych mnożeń potrzebnych do wyznaczenia całkowitej
potęgi <math>\displaystyle e^k</math> (ile mnożeń ''naprawdę'' wystarczy?). Pamiętaj, przyjęliśmy, że
potęgi <math>e^k</math> (ile mnożeń ''naprawdę'' wystarczy?). Pamiętaj, przyjęliśmy, że
znamy reprezentację numeryczną liczby <math>\displaystyle e</math>.
znamy reprezentację numeryczną liczby <math>e</math>.


<div class="code" style="background-color:#e8e8e8; padding:1em"><pre>
<div class="code" style="background-color:#e8e8e8; padding:1em"><pre>

Aktualna wersja na dzień 21:48, 11 wrz 2023

Flash

<flash>file=Test19.swf|width=750|height=530</flash> http://osilek.mimuw.edu.pl/images/2/29/Test19.swf

Metoda iteracji prostej Banacha

&#0025; Zupełnie inne, i jak się okaże --- przy odrobinie sprytu bardzo skuteczne --- podejście do wyznaczania miejsca zerowego jest oparte na metodzie Banacha.

Najpierw nasze równanie nieliniowe

f(x)=0

przekształcamy (dobierając odpowiednią funkcję ϕ) do równania równoważnego (tzn. mającego te same rozwiązania)

x=ϕ(x).

Następnie, startując z pewnego przybliżenia początkowego x0, konstruujemy ciąg kolejnych przybliżeń xk według wzoru

xk=ϕ(xk1),k1

Twierdzenie Banacha, o zbieżności iteracji prostej

Niech D0 będzie domkniętym podzbiorem dziedziny D,

D0=D0D,

w którym ϕ jest odwzorowaniem zwężającym. To znaczy, ϕ(D0)D0, oraz istnieje stała 0L<1 taka, że

ϕ(x)ϕ(y)Lxy,x,yD0.

Wtedy równanie

x=ϕ(x).

ma dokładnie jedno rozwiązanie x*, oraz

x*=limkxk,

dla dowolnego przybliżenia początkowego x0D0.

Dowód

Wobec

xkxk1=ϕ(xk1)ϕ(xk2)Lxk1xk2 Lk1x1x0,

dla ks mamy

Parser nie mógł rozpoznać (nieznana funkcja „\begin{matrix}”): {\displaystyle \begin{matrix} \| x_k- x_s\| & \le & \sum_{j=s+1}^k\| x_j- x_{j-1}\| & \le & \sum_{j=s+1}^k L^{j-1}\| x_1- x_0\| & = & L^s(1+L+\cdots+L^{k-s-1})\| x_1- x_0\| \\ \ & \le & \frac{L^s}{1-L}\| x_1- x_0\|. \end{matrix}}

Ciąg {xk}k jest więc ciągiem Cauchy'ego. Stąd istnieje granica α=limkxk, która należy do D0, wobec domkniętości tego zbioru. Ponieważ lipschitzowskość ϕ implikuje jej ciągłość, mamy też

ϕ(α)=ϕ(limkxk)=limkϕ(xk)=limkxk=α,

tzn. α jest punktem stałym odwzorowania ϕ. Dla jednoznaczności zauważmy, że jeśliby istniał drugi, różny od α, punkt stały β, to mielibyśmy

αβ=ϕ(α)ϕ(β)Lαβ.

Stąd 1<L, co jest sprzeczne z założeniem, że

ϕ jest zwężająca.

Z powyższych rozważań otrzymujemy natychmiastowy wniosek dotyczący zbieżności iteracji prostych.

Wniosek

Przy założeniach Uzupe�nij: twierdzenia Banacha, metoda iteracji prostych jest zbieżna co najmniej liniowo z ilorazem L, tzn.

xkx*Lkx0x*

Przykład

Dla ilustracji, rozpatrzmy natępujące proste równanie skalarne:

x=cos(x),dlaxD=R.

W tym przypadku ϕ(x)=cos(x). Zauważamy, że w przedziale [0,1] funkcja ϕ jest zwężająca ze stałą

L=max0x1|cos(x)|=sin(1)<1

Stąd istnieje dokładnie jedno rozwiązanie naszego równania w przedziale [0,1]. Rozwiązanie to może być aproksymowane z dowolnie małym błędem przy pomocy iteracji prostych, startując z dowolnego przybliżenia początkowego x0[0,1].

Zaletą iteracji prostych jest fakt, że zbieżność nie zależy od wymiaru n zadania, ale tylko od stałej Lipschitza L (jednak w praktyce czasem sama stała Lipschitza może zależeć od wymiaru zadania...). Metoda Banacha ma szczególne zastosowanie w przypadku, gdy funkcja ϕ jest zwężająca na całym zbiorze D, tzn. D0=D. Jeśli ponadto D ma skończoną średnicę diam(D), to dla osiągnięcia ϵ-aproksymacji zera funkcji f wystarczy wykonać

k=k(ϵ)=log(x0x*/ϵ)log(1/L)=log(diam(D)/ϵ)log(1/L)

iteracji, niezależnie od x0. Metody zbieżne dla dowolnego przybliżenia początkowego, nazywamy zbieżnymi globalnie. Obie przedstawione dotychczas metody: bisekcji i Banacha, przy rozsądnych założeniach, są zbieżne globalnie.

Okazuje się, że metoda iteracji prostej może być --- w bardzo szczególnych przypadkach --- zbieżna szybciej niż liniowo. Z taką sytuacją będziemy mieli, gdy korzystać będziemy z metody Newtona.

Wyznaczanie wektorów i wartości własnych

Przykład Moj przykład

Tekst

Algorytm Nie robiący nic


 Leż
Wersja A
Wersja B
Wersja A
Wersja B

Ćwiczenie: Ciag dalszy

Spróbuj obniżyć koszt wyznaczania exp(x) dla dużych x!

Wskazówka
Rozwiązanie