MN02LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
<!--  
<!--  
Konwertowane  z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/&nbsp;pawlik1/latex2mediawiki.php
Konwertowane  z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/&nbsp;pawlik1/latex2mediawiki.php
Linia 15: Linia 14:
<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">   
Powtarzając rachunki z dowodu lokalnej zbieżności, możemy łatwo stwierdzić, że kolejne
Powtarzając rachunki z dowodu lokalnej zbieżności, możemy łatwo stwierdzić, że kolejne
iteracje dają <math>\displaystyle x_k</math> które także spełniają warunek <math>\displaystyle x_k - x^* > 0</math>. Ponadto
iteracje dają <math>\displaystyle x_k</math>, które także spełniają warunek <math>\displaystyle x_k - x^* > 0</math>. Ponadto
nietrudno sprawdzić, że <math>\displaystyle x_{k+1} < x_k</math>, a więc mamy ciąg malejący i
nietrudno sprawdzić, że <math>\displaystyle x_{k+1} < x_k</math>, a więc mamy ciąg malejący i
ograniczony. Jego granicą musi być <math>\displaystyle x^*</math> (dlaczego?).
ograniczony. Jego granicą musi być <math>\displaystyle x^*</math> (dlaczego?).
Linia 27: Linia 26:
Newtona do rozwiązania równania <math>\displaystyle z^n-1=0</math> w dziedzinie zespolonej. Punkt <math>\displaystyle z_0 =
Newtona do rozwiązania równania <math>\displaystyle z^n-1=0</math> w dziedzinie zespolonej. Punkt <math>\displaystyle z_0 =
(x_0,y_0)</math> należy do <strong>basenu zbiezności metody</strong>, jeśli metoda Newtona jest
(x_0,y_0)</math> należy do <strong>basenu zbiezności metody</strong>, jeśli metoda Newtona jest
zeń zbieżna do (jakiegokolwiek) pierwiastka w/w równania. Kolor odpowiadający
z nim zbieżna do (jakiegokolwiek) pierwiastka w/w równania. Kolor odpowiadający
<math>\displaystyle z_0</math> jest określany na podstawie liczby iteracji potrzebnych metodzie do
<math>\displaystyle z_0</math> jest określany na podstawie liczby iteracji potrzebnych metodzie do
zbieżności.
zbieżności.


Zupełnie miłym (i estetycznie wartościowym) doświadczeniem, jest napisanie
Zupełnie miłym (i estetycznie wartościowym) doświadczeniem jest napisanie
programu w Octave, który wyświetla baseny zbieżności metody Newtona jak poniżej.
programu w Octave, który jak poniżej wyświetla baseny zbieżności metody Newtona.


[[Image:MNfraktal.png|thumb|450px|center|Basen zbieżności metody Newtona w okolicy początku układu
[[Image:MNfraktal.png|thumb|450px|center|Basen zbieżności metody Newtona w okolicy początku układu
Linia 63: Linia 62:
równania <math>\displaystyle x^2 = a</math>. Zaprogramuj tę metodę i sprawdź, jak wiele dokładnych cyfr
równania <math>\displaystyle x^2 = a</math>. Zaprogramuj tę metodę i sprawdź, jak wiele dokładnych cyfr
wyniku dostajesz w kolejnych krokach. Czy to możliwe, by liczba dokładnych cyfr
wyniku dostajesz w kolejnych krokach. Czy to możliwe, by liczba dokładnych cyfr
znaczących z grubsza podwajała się na każdej iteracji? Wskaż takie <math>\displaystyle a</math> dla
znaczących z grubsza podwajała się na każdej iteracji? Wskaż takie <math>\displaystyle a</math>, dla
którego to nie będzie prawdą.
którego to nie będzie prawdą.


Linia 69: Linia 68:
<div style="font-size:smaller; background-color:#efe"> Na pewno kusi Cię, by zaprogramować najpierw ogólnie funkcję "metoda
<div style="font-size:smaller; background-color:#efe"> Na pewno kusi Cię, by zaprogramować najpierw ogólnie funkcję "metoda
Newtona", a następnie przekazać jej jako parametr naszą funkcję. To oczywiście
Newtona", a następnie przekazać jej jako parametr naszą funkcję. To oczywiście
będzie działać, i to praktycznie tak samo szybko jak drugi spsoób, w którym po prostu
będzie działać. W dodatku praktycznie tak samo szybko jak drugi sposób, w którym po prostu
wyliczysz na karteczce wzór na iterację dla <strong>tej konkretnej funkcji, <math>\displaystyle F(x) =
wyliczysz na karteczce wzór na iterację dla <strong>tej konkretnej funkcji, <math>\displaystyle F(x) =
x^2-a</math></strong> i potem go zaimplementujesz. Jednak
x^2-a</math></strong> i potem go zaimplementujesz. Jednak
Linia 96: Linia 95:
znaczących wyniku.
znaczących wyniku.


Ale jeśli <math>\displaystyle a=0</math> to metoda zbieżna jest już tylko liniowo (z ilorazem 0.5 --- bo
Ale jeśli <math>\displaystyle a=0</math>, to metoda zbieżna jest już tylko liniowo (z ilorazem 0.5 --- bo
jaki wtedy jest wzór na iterację?), więc co mniej więcej trzy kroki będziemy
jaki wtedy jest wzór na iterację?), co mniej więcej trzy kroki będziemy więc
dostawali kolejne zero dokładnego wyniku <math>\displaystyle x^*=0</math>.
dostawali kolejne zero dokładnego wyniku <math>\displaystyle x^*=0</math>.
   
   
Linia 106: Linia 105:
<div class="exercise">
<div class="exercise">


Aby wyznaczyć <math>\displaystyle 1/a</math> dla <math>\displaystyle a>0</math> bez dzielenia(!), można zastosować metodę Newtona
Aby wyznaczyć <math>\displaystyle 1/a</math> dla <math>\displaystyle a>0</math> bez dzielenia(!) można zastosować metodę Newtona
do funkcji <math>\displaystyle f(x) = 1/x - a</math>. Pokaż, że na <math>\displaystyle k</math>-tym kroku iteracji,
do funkcji <math>\displaystyle f(x) = 1/x - a</math>. Pokaż, że na <math>\displaystyle k</math>-tym kroku iteracji,
<center><math>\displaystyle  
<center><math>\displaystyle  
Linia 143: Linia 142:
wzorem D.]]
wzorem D.]]


Jak wyjaśnić te wyniki? Czy możesz już być pewna, że masz dobrą implementację?
Jak wyjaśnić te wyniki? Czy możesz już być pewien, że masz dobrą implementację?


</div></div>
</div></div>
Linia 152: Linia 151:
<math>\displaystyle \sin</math>, dawać komunikat o błędzie dla <math>\displaystyle \sin^2</math> (bo nie ma przeciwnych znaków).
<math>\displaystyle \sin</math>, dawać komunikat o błędzie dla <math>\displaystyle \sin^2</math> (bo nie ma przeciwnych znaków).


Zapewne zauważyłaś, że wzory A i B są matematycznie równoważne, podobnie zresztą
Zapewne zauważyłeś, że wzory A i B są matematycznie równoważne, podobnie zresztą
jak wzory C i D. Niestety, tylko wzór A i C dają w efekcie dobre przybliżenia
jak wzory C i D. Niestety, tylko wzór A i C dają w efekcie dobre przybliżenia
miejsca zerowego, podczas gdy wzory B i D prowadzą do oszacowania na miejsce
miejsca zerowego, podczas gdy wzory B i D prowadzą do oszacowania na miejsce
Linia 159: Linia 158:
Wyjaśnieniem tego fenomenu jest zjawisko redukcji cyfr przy odejmowaniu.
Wyjaśnieniem tego fenomenu jest zjawisko redukcji cyfr przy odejmowaniu.


Jeśli chodzi o pewność... No cóż, sprawdziłaś, że <strong>działa</strong> w przypadkach,
Jeśli chodzi o pewność... No cóż, sprawdziłeś, że <strong>działa</strong> w przypadkach,
dla których spodziewałaś się, że będzie działać. Że tam, gdzie spodziewałaś się
dla których spodziewałeś się, że będzie działać. Że tam, gdzie spodziewałeś się
kłopotów, lub komunikatu o błędzie --- tak rzeczywiście się stało. Wreszcie,
kłopotów, lub komunikatu o błędzie --- tak rzeczywiście się stało. Wreszcie,
potwierdziłaś, że zachowanie metody jest zgodne z jej znanymi właściwościami.
potwierdziłeś, że zachowanie metody jest zgodne z jej znanymi właściwościami.


Tak więc, można <strong>przypuszczać</strong>, że implementacja jest poprawna....
Tak więc, można <strong>przypuszczać</strong>, że implementacja jest poprawna....

Wersja z 18:17, 19 wrz 2006


Ćwiczenia: równania nieliniowe skalarne

Ćwiczenie: Metoda Newtona może być zbieżna globalnie

Wykaż, że jeśli f jest rosnąca i wypukła na [a,b] oraz dla x*[a,b]f(x*)=0, to metoda Newtona startująca z x0>x* jest zbieżna.

Rozwiązanie

Ćwiczenie: Fraktale

Ciekawy zbiór o charakterze fraktalnym powstaje w wyniku zastosowania metody Newtona do rozwiązania równania zn1=0 w dziedzinie zespolonej. Punkt z0=(x0,y0) należy do basenu zbiezności metody, jeśli metoda Newtona jest z nim zbieżna do (jakiegokolwiek) pierwiastka w/w równania. Kolor odpowiadający z0 jest określany na podstawie liczby iteracji potrzebnych metodzie do zbieżności.

Zupełnie miłym (i estetycznie wartościowym) doświadczeniem jest napisanie programu w Octave, który jak poniżej wyświetla baseny zbieżności metody Newtona.

Basen zbieżności metody Newtona w okolicy początku układu współrzędnych, dla równania z51=0
Wskazówka
Wskazówka

Ćwiczenie: Pierwiastkowanie

Niech a0. Aby wyznaczyć a, można skorzystać z metody Newtona dla równania x2=a. Zaprogramuj tę metodę i sprawdź, jak wiele dokładnych cyfr wyniku dostajesz w kolejnych krokach. Czy to możliwe, by liczba dokładnych cyfr znaczących z grubsza podwajała się na każdej iteracji? Wskaż takie a, dla którego to nie będzie prawdą.

Wskazówka
Rozwiązanie

Ćwiczenie: Odwrotność bez dzielenia

Aby wyznaczyć 1/a dla a>0 bez dzielenia(!) można zastosować metodę Newtona do funkcji f(x)=1/xa. Pokaż, że na k-tym kroku iteracji,

|axk1|=|axk11|2.

Dla jakich x0 metoda będzie zbieżna do 1a, a dla jakich nie? Oceń, ile iteracji potrzeba do spełnienia warunku |xk1a||a|ϵ, gdy |x01a||a|γ<1,

Rozwiązanie

Ćwiczenie

Zaimplementuj metodę bisekcji. Sprawdź, jak będzie działać m.in. dla funkcji

  • f(x)=sin(x),
  • f(x)=sin2(x),
  • f(x)=(x1)5 (wzór A),
  • f(x)=(x1)(x44x3+6x24x+1) (wzór B),
  • f(x)=(x2)13 (wzór C),
  • f(x)=x1326x12+312x112288x10+...8192 (wzór D),

gdy tolerancję błędu zadasz na poziomie 1010.

Metoda bisekcji ma kłopoty, gdy funkcja zadana jest wzorem D.
Residuum też jest duże, gdy f zadana jest wzorem D.

Jak wyjaśnić te wyniki? Czy możesz już być pewien, że masz dobrą implementację?

Rozwiązanie

Ćwiczenie

Wskaż wszystkie wartości x0, dla jakich metoda Newtona będzie zbieżna do rozwiązania x* równania

arctan(x)=0.

Wyznacz wartość X0, z którego startując powinieneś dostać ciąg oscylujący X0,X0,. Sprawdź eksperymentalnie, czy tak jest rzeczywiście.

Wskazówka
Rozwiązanie