PKow: Różnice pomiędzy wersjami
m Zastępowanie tekstu – „,↵</math>” na „</math>,” |
|||
(Nie pokazano 14 wersji utworzonych przez 4 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=== | |||
 | |||
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 | |||
<center><math> | |||
f(x) = 0 | |||
</math></center> | |||
przekształcamy (dobierając odpowiednią funkcję <math>\phi</math>) do równania równoważnego | |||
(tzn. mającego te same rozwiązania) | |||
<center><math> | |||
x\,=\,\phi( x). | |||
</math></center> | |||
Następnie, startując z pewnego przybliżenia | |||
początkowego <math>x_0</math>, konstruujemy ciąg kolejnych | |||
przybliżeń <math>x_k</math> według wzoru | |||
<center><math>x_k\,=\,\phi( x_{k-1}),\qquad k\ge 1</math></center> | |||
{{twierdzenie|Banacha, o zbieżności iteracji prostej|| | |||
Niech <math>D_0</math> będzie domkniętym | |||
podzbiorem dziedziny <math>D</math>, | |||
<center><math>\overline D_0\,=\,D_0\subset D, | |||
</math></center> | |||
w którym <math>\phi</math> jest odwzorowaniem zwężającym. | |||
To znaczy, <math>\phi(D_0)\subset D_0</math>, oraz istnieje stała | |||
<math>0\le L<1</math> taka, że | |||
<center><math>\|\phi( x)-\phi( y)\|\,\le\,L\,\| x- y\|, | |||
\qquad\forall x, y\in D_0. | |||
</math></center> | |||
Wtedy równanie | |||
<center><math> | |||
x\,=\,\phi( x). | |||
</math></center> | |||
ma dokładnie jedno | |||
rozwiązanie <math>x^*</math>, oraz | |||
<center><math>x^*\,=\,\lim_{k\to\infty} x_k, | |||
</math></center> | |||
dla dowolnego przybliżenia początkowego | |||
<math>x_0\in D_0</math>. | |||
}} | |||
{{dowod||| | |||
Wobec | |||
<center><math>\begin{matrix} \| x_k- x_{k-1}\| & = & | |||
\|\phi( x_{k-1})-\phi( x_{k-2})\| | |||
& \le & L\| x_{k-1}- x_{k-2}\| \\ | |||
\ &\le& \cdots\;&\le&\;L^{k-1}\| x_1- x_0\|, | |||
\end{matrix}</math></center> | |||
dla <math>k\ge s</math> mamy | |||
<center><math>\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}</math></center> | |||
Ciąg <math>\{ x_k\}_k</math> jest więc ciągiem Cauchy'ego. | |||
Stąd istnieje granica | |||
<math>\vec\alpha=\lim_{k\to\infty} x_k</math>, która należy do | |||
<math>D_0</math>, wobec domkniętości tego zbioru. Ponieważ | |||
lipschitzowskość <math>\phi</math> implikuje jej ciągłość, | |||
mamy też | |||
<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} x_k\,=\,\vec\alpha</math>,</center> | |||
tzn. <math>\vec\alpha</math> jest punktem stałym odwzorowania <math>\phi</math>. | |||
Dla jednoznaczności zauważmy, że jeśliby istniał | |||
drugi, różny od <math>\vec\alpha</math>, punkt stały <math>\vec\beta</math>, | |||
to mielibyśmy | |||
<center><math>\|\vec\alpha-\vec\beta\|\,=\, | |||
\|\phi(\vec\alpha)-\phi(\vec\beta)\| | |||
\,\le\,L\,\|\vec\alpha-\vec\beta\|. | |||
</math></center> | |||
Stąd <math>1<L</math>, co jest sprzeczne z założeniem, że | |||
<math>\phi</math> jest zwężająca. }} | |||
Z powyższych rozważań otrzymujemy natychmiastowy | |||
wniosek dotyczący zbieżności iteracji prostych. | |||
{{wniosek||| | |||
Przy założeniach [[twit|Uzupe�nij: twierdzenia Banacha]], | |||
metoda iteracji prostych jest zbieżna co | |||
najmniej liniowo z ilorazem <math>L</math>, tzn. | |||
<center><math>\| x_k- x^*\|\,\le\,L^k\,\| x_0- x^*\|</math></center> | |||
}} | |||
{{przyklad||| | |||
Dla ilustracji, rozpatrzmy natępujące proste | |||
równanie skalarne: | |||
<center><math> | |||
x\,=\,\cos(x), \qquad \mbox{dla} \qquad x\in D= R. | |||
</math></center> | |||
W tym przypadku <math>\phi(x)=\cos(x)</math>. Zauważamy, że w | |||
przedziale <math>[0,1]</math> funkcja <math>\phi</math> jest zwężająca ze | |||
stałą | |||
<center><math>L\,=\,\max_{0\le x\le 1}|\cos'(x)|\,=\,\sin(1)\,<\,1</math></center> | |||
Stąd istnieje dokładnie jedno rozwiązanie naszego równania | |||
w przedziale <math>[0,1]</math>. 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 <math>x_0\in [0,1]</math>. | |||
}} | |||
Zaletą iteracji prostych jest fakt, że zbieżność | |||
nie zależy od wymiaru <math>n</math> zadania, ale tylko od stałej | |||
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 | |||
przypadku, gdy funkcja <math>\phi</math> jest zwężająca na całym | |||
zbiorze <math>D</math>, tzn. <math>D_0=D</math>. Jeśli ponadto <math>D</math> ma | |||
skończoną średnicę <math>\mbox{diam} (D)</math>, to dla | |||
osiągnięcia <math>\epsilon</math>-aproksymacji zera funkcji <math>f</math> | |||
wystarczy wykonać | |||
<center><math>k\,=\,k(\epsilon)\,=\,\Big\lceil\frac | |||
{\log(\| x_0- x^*\|/\epsilon)}{\log(1/L)}\Big\rceil | |||
\,=\,\Big\lceil\frac | |||
{\log( \mbox{diam} (D)/\epsilon)}{\log(1/L)}\Big\rceil | |||
</math></center> | |||
iteracji, niezależnie od <math>x_0</math>. 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== | ==Wyznaczanie wektorów i wartości własnych== | ||
Linia 4: | Linia 165: | ||
{{algorytm|Nie robiący nic||Leż}} | {{algorytm|Nie robiący nic||Leż}} | ||
[[Image:MNkosztexpab.png|frame| | [[Image:MNkosztexpab.png|thumb|Wersja A]] | ||
[[Image:MNkosztexpab.png|thumb|50px|Wersja B]] | |||
[[Image:MNkosztexpab.png|frame|Wersja A]] | |||
[[Image:MNkosztexpab.png|frame|200px|Wersja B]] | |||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
Linia 10: | Linia 177: | ||
<div class="exercise"> | <div class="exercise"> | ||
Spróbuj obniżyć koszt wyznaczania <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> | <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 21: | 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> | Bez zmieniejszenia ogólności, załóżmy, że <math>x\geq 0</math>. | ||
Jeśli <math> | 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> | <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> | Tak więc zadanie redukuje się do wyznaczenia <math>\exp(t)</math> dla ''małego'' <math>t</math> oraz | ||
do co najwyżej <math> | do co najwyżej <math>k</math> dodatkowych mnożeń potrzebnych do wyznaczenia całkowitej | ||
potęgi <math> | potęgi <math>e^k</math> (ile mnożeń ''naprawdę'' wystarczy?). Pamiętaj, przyjęliśmy, że | ||
znamy reprezentację numeryczną liczby <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
 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
przekształcamy (dobierając odpowiednią funkcję ) do równania równoważnego (tzn. mającego te same rozwiązania)
Następnie, startując z pewnego przybliżenia początkowego , konstruujemy ciąg kolejnych przybliżeń według wzoru
Twierdzenie Banacha, o zbieżności iteracji prostej
Niech będzie domkniętym podzbiorem dziedziny ,
w którym jest odwzorowaniem zwężającym. To znaczy, , oraz istnieje stała taka, że
Wtedy równanie
ma dokładnie jedno rozwiązanie , oraz
dla dowolnego przybliżenia początkowego .
Dowód
Wobec
dla mamy
Ciąg jest więc ciągiem Cauchy'ego. Stąd istnieje granica , która należy do , wobec domkniętości tego zbioru. Ponieważ lipschitzowskość implikuje jej ciągłość, mamy też
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
Stąd , 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 , tzn.
Przykład
Dla ilustracji, rozpatrzmy natępujące proste równanie skalarne:
W tym przypadku . Zauważamy, że w przedziale funkcja jest zwężająca ze stałą
Stąd istnieje dokładnie jedno rozwiązanie naszego równania w przedziale . 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 .
Zaletą iteracji prostych jest fakt, że zbieżność nie zależy od wymiaru zadania, ale tylko od stałej Lipschitza (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 , tzn. . Jeśli ponadto ma skończoną średnicę , to dla osiągnięcia -aproksymacji zera funkcji wystarczy wykonać
iteracji, niezależnie od . 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
Algorytm Nie robiący nic
Leż




Ćwiczenie: Ciag dalszy
Spróbuj obniżyć koszt wyznaczania dla dużych !