MN03LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przykry (dyskusja | edycje)
mNie podano opisu zmian
Przykry (dyskusja | edycje)
mNie podano opisu zmian
Linia 1: Linia 1:
\section*{Ćwiczenia: równania nieliniowe skalarne}
''Uwaga: przekonwertowane latex2mediawiki; prawdopodobnie trzeba wprowadzi? poprawki''


\begin{exe}[Metoda Newtona może być zbieżna globalnie]
{Ćwiczenia: równania nieliniowe skalarne}
Wykaż, że jeśli $f$ jest rosnąca i wypukła na $[a,b]$ oraz dla $x^*\in [a,b]$
$f(x^*) = 0$, to metoda Newtona startująca z $x_0>x^*$ jest zbieżna.
\end{exe}


\begin{sol}
{{cwiczenie|Metoda Newtona może być zbieżna globalnie||
 
Wykaż, że jeśli <math>\displaystyle f</math> jest rosnąca i wypukła na <math>\displaystyle [a,b]</math> oraz dla <math>\displaystyle x^*\in [a,b]\displaystyle f(x^*) = 0</math>, to metoda Newtona startująca z <math>\displaystyle x_0>x^*</math> jest zbieżna.
}}
 
<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"> 
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ą $x_k$ które także spełniają warunek $x_k - x^* > 0$. 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 $x_{k+1} < x_k$, 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ć $x^*$ (dlaczego?).
ograniczony. Jego granicą musi być <math>\displaystyle x^*</math> (dlaczego?).
\end{sol}
</div></div>


\begin{exe}[Fraktale]
{{cwiczenie|Fraktale||


Ciekawy zbiór o charakterze fraktalnym powstaje w wyniku zastosowania metody
Ciekawy zbiór o charakterze fraktalnym powstaje w wyniku zastosowania metody
Newtona do rozwiązania równania $z^n-1=0$ w dziedzinie zespolonej. Punkt $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)$ należy do {\em basenu zbiezności metody}, jeśli metoda Newtona jest
(x_0,y_0)</math> należy do ''basenu zbiezności metody'', jeśli metoda Newtona jest
zeń zbieżna do (jakiegokolwiek) pierwiastka w/w równania. Kolor odpowiadający
zeń zbieżna do (jakiegokolwiek) pierwiastka w/w równania. Kolor odpowiadający
$z_0$ 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.


Linia 25: Linia 27:
programu w Octave, który wyświetla baseny zbieżności metody Newtona jak poniżej.
programu w Octave, który wyświetla baseny zbieżności metody Newtona jak poniżej.


\rysunek{fraktal.png}{Basen zbiezności metody Newtona w okolicy początku układu
[[Image:fraktal.png|thumb|right|400px|Basen zbiezności metody Newtona w okolicy początku układu
współrzędnych, dla równania $z^5-1=0$}
współrzędnych, dla równania <math>\displaystyle z^5-1=0</math>]]


\hint{Bardzo wygodnie napisać taki program w postaci skryptu Octave. Pamiętaj
<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">
Bardzo wygodnie napisać taki program w postaci skryptu Octave. Pamiętaj
jednak, by uniknąć w nim pętli w rodzaju
jednak, by uniknąć w nim pętli w rodzaju


for xpixels = 1:1024\\
for xpixels <nowiki>=</nowiki> 1:1024<br>
for ypixels = 1:768\\
for ypixels <nowiki>=</nowiki> 1:768<br>
... wyznacz kolor pixela ....\\
... wyznacz kolor pixela ....<br>
end\\
end<br>
end\\
end<br>


Taka podwójnie zagnieżdżona pętla może skutecznie zniechęcić Cię do
Taka podwójnie zagnieżdżona pętla może skutecznie zniechęcić Cię do
Octave'a --- obrazek będzie liczyć się wieki --- zupełnie niepotrzebnie!  
Octave'a --- obrazek będzie liczyć się wieki --- zupełnie niepotrzebnie!  
}


\hint{Kluczem do efektywnej implementacji w Octave jest przeprowadzenie
</div></div>
iteracji Newtona na {\em wszystkich pikselach jednocześnie}. W tym celu musisz
skorzystać z prowadzenia działań na całych macierzach.}


\end{exe}
<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">
Kluczem do efektywnej implementacji w Octave jest przeprowadzenie
iteracji Newtona na ''wszystkich pikselach jednocześnie''. W tym celu musisz
skorzystać z prowadzenia działań na całych macierzach.
</div></div>


\begin{exe}[Pierwiastkowanie]
}}
Niech $a\geq 0$. Aby wyznaczyć $\sqrt{a}$, można skorzystać z metody Newtona dla
 
równania $x^2 = a$. Zaprogramuj tę metodę i sprawdź, jak wiele dokładnych cyfr
{{cwiczenie|Pierwiastkowanie||
 
Niech <math>\displaystyle a\geq 0</math>. Aby wyznaczyć <math>\displaystyle \sqrt{a}</math>, można skorzystać z metody Newtona dla
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 $a$ 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ą.


\hint{Na pewno kusi Cię, by zaprogramować najpierw ogólnie funkcję ,,metoda
<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">
Newtona'', a następnie przekazać jej jako parametr naszą funkcję. To oczywiście
Na pewno kusi Cię, by zaprogramować najpierw ogólnie funkcję "metoda
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ć, i to praktycznie tak samo szybko jak drugi spsoób, w którym po prostu
wyliczysz na karteczce wzór na iterację dla {\em tej konkretnej funkcji, $F(x) =
wyliczysz na karteczce wzór na iterację dla ''tej konkretnej funkcji, <math>\displaystyle F(x) =
x^2-a$} i potem go zaimplementujesz. Jednak
x^2-a</math>'' i potem go zaimplementujesz. Jednak
drugie podejście jest tutaj godne polecenia, bo ma na sobie znak charakterystyczny dla numeryki: niech
drugie podejście jest tutaj godne polecenia, bo ma na sobie znak charakterystyczny dla numeryki: niech
wszystko, co programujesz będzie tak proste, jak tylko możliwe (ale nie
wszystko, co programujesz będzie tak proste, jak tylko możliwe (ale nie
prostsze)!}
prostsze)!
\end{exe}
</div></div>


\begin{sol}
}}
 
<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"> 
Nasza iteracja, którą chcemy zaprogramować, to
Nasza iteracja, którą chcemy zaprogramować, to
$$
<center><math>\displaystyle
x_{k+1} = \frac{1}{2}\left( x_k + \frac{a}{x_k}\right).
x_{k+1} = \frac{1}{2}\left( x_k + \frac{a}{x_k}\right).
$$
</math></center>


Dla $a\neq 0$, spełnione są założenia twierdzenia o zbieżności metody Newtona,
Dla <math>\displaystyle a\neq 0</math>, spełnione są założenia twierdzenia o zbieżności metody Newtona,
więc
więc
\[
 
|x_{k+1}-x^*|\leq K |x_{k}-x^*|^2
<center><math>\displaystyle |x_{k+1}-x^*|\leq K |x_{k}-x^*|^2
\]
</math></center>
 
co właśnie tłumaczy się jako podwajanie liczby dokładnych cyfr
co właśnie tłumaczy się jako podwajanie liczby dokładnych cyfr
znaczących wyniku.
znaczących wyniku.


Ale jeśli $a=0$ 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ę?), więc co mniej więcej trzy kroki będziemy
dostawali kolejne zero dokładnego wyniku $x^*=0$.
dostawali kolejne zero dokładnego wyniku <math>\displaystyle x^*=0</math>.
 
\end{sol}
</div></div>
 
{{cwiczenie|Odwrotność bez dzielenia||


\begin{exe}[Odwrotność bez dzielenia]
Aby wyznaczyć <math>\displaystyle 1/a</math> dla <math>\displaystyle a>0</math> bez dzielenia(!), można zastosować metodę Newtona
Aby wyznaczyć $1/a$ dla $a>0$ 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 $f(x) = 1/x - a$. Pokaż, że na $k$-tym kroku iteracji,
<center><math>\displaystyle
$$
|ax_k - 1| = |ax_{k-1} - 1|^2.
|ax_k - 1| = |ax_{k-1} - 1|^2.
$$
</math></center>
Dla jakich $x_0$ metoda będzie zbieżna do $\frac{1}{a}$, a dla jakich nie?
 
Oceń, ile iteracji potrzeba do spełnienia warunku $\frac{|x_k-\frac{1}{a}|}{|a|} \leq
Dla jakich <math>\displaystyle x_0</math> metoda będzie zbieżna do <math>\displaystyle \frac{1}{a}</math>, a dla jakich nie?
\epsilon$, gdy $\frac{|x_0-\frac{1}{a}|}{|a|} \leq \gamma < 1$,
Oceń, ile iteracji potrzeba do spełnienia warunku <math>\displaystyle \frac{|x_k-\frac{1}{a}|}{|a|} \leq
\end{exe}
\epsilon</math>, gdy <math>\displaystyle \frac{|x_0-\frac{1}{a}|}{|a|} \leq \gamma < 1</math>,
}}


\begin{sol}
<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"> 
Proste ćwiczenie z analizy. Warunkiem zbieżności jest oczywiście (ze względu na
Proste ćwiczenie z analizy. Warunkiem zbieżności jest oczywiście (ze względu na
równość w wyrażeniu na błąd iteracji powyżej) $|ax_0 - 1| < 1$, to znaczy  
równość w wyrażeniu na błąd iteracji powyżej) <math>\displaystyle |ax_0 - 1| < 1</math>, to znaczy  
$$0 < x_0 < \frac{2}{a}.$$
<center><math>\displaystyle 0 < x_0 < \frac{2}{a}.</math></center>
\end{sol}


\begin{exe}
</div></div>
 
{{cwiczenie|||
Zaimplementuj metodę bisekcji. Sprawdź, jak będzie działać m.in. dla funkcji
Zaimplementuj metodę bisekcji. Sprawdź, jak będzie działać m.in. dla funkcji
# <math>\displaystyle f(x) = \sin(x)</math>,
# <math>\displaystyle f(x) = \sin^2(x)</math>,
# <math>\displaystyle f(x) = (x-1)^5</math> (wzór A),
# <math>\displaystyle f(x) = (x-1)*(x^4 - 4x^3 + 6x^2 - 4x + 1)</math> (wzór B),
# <math>\displaystyle f(x) = (x-2)^13</math> (wzór C),
# <math>\displaystyle f(x) = x^13 - 26*x^12 + 312*x^11 - 2288*x^10 + ... - 8192</math> (wzór D),


\begin{enumerate}
gdy tolerancję błędu zadasz na poziomie <math>\displaystyle 10^{-10}</math>.
\item $f(x) = \sin(x)$,
\item $f(x) = \sin^2(x)$,
\item $f(x) = (x-1)^5$ (wzór A),
\item $f(x) = (x-1)*(x^4 - 4x^3 + 6x^2 - 4x + 1)$ (wzór B),
\item $f(x) = (x-2)^13$ (wzór C),
\item $f(x) = x^13 - 26*x^12 + 312*x^11 - 2288*x^10 + ... - 8192$ (wzór D),
\end{enumerate}
 
gdy tolerancję błędu zadasz na poziomie $10^{-10}$.


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ć pewna, że masz dobrą implementację?


\end{exe}
}}


\begin{sol}
<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"> 


Jeśli nie pomylisz się, metoda powinna zbiegać bez problemów do zera funkcji
Jeśli nie pomylisz się, metoda powinna zbiegać bez problemów do zera funkcji
$\sin$, dawać komunikat o błędzie dla $\sin^2$ (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łaś, ż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
zerowe, które {\em w ogóle nie zawierają} prawdziwego miejsca zerowego.
zerowe, które ''w ogóle nie zawierają'' prawdziwego miejsca zerowego.


Wyjaśnieniem tego fenomenu jest zjawisko redukcji cyfr przy odejmowaniu.
Wyjaśnieniem tego fenomenu jest zjawisko redukcji cyfr przy odejmowaniu.


\rysunek{bisekcjawblad.png}{Metoda bisekcji ma kłopoty, gdy funkcja zadana jest
[[Image:bisekcjawblad.png|thumb|right|400px|Metoda bisekcji ma kłopoty, gdy funkcja zadana jest
wzorem D.}
wzorem D.]]
\rysunek{bisekcjawresid.png}{Residuum też jest duże, gdy $f$ zadana jest
[[Image:bisekcjawresid.png|thumb|right|400px|Residuum też jest duże, gdy <math>\displaystyle f</math> zadana jest
wzorem D.}
wzorem D.]]


Jeśli chodzi o pewność... No cóż, sprawdziłaś, że działa w przypadkach, gdy
Jeśli chodzi o pewność... No cóż, sprawdziłaś, że działa w przypadkach, gdy
Linia 141: Linia 152:
potwierdziłaś, że zachowanie metody jest zgodne z jej znanymi właściwościami.
potwierdziłaś, że zachowanie metody jest zgodne z jej znanymi właściwościami.


Tak więc, można {\em przypuszczać}, że implementacja jest poprawna.
Tak więc, można ''przypuszczać'', że implementacja jest poprawna.


\end{sol}
</div></div>


\begin{exe}
{{cwiczenie|||
Wskaż {\em wszystkie} wartości $x_0$, dla jakich metoda Newtona będzie zbieżna
Wskaż ''wszystkie'' wartości <math>\displaystyle x_0</math>, dla jakich metoda Newtona będzie zbieżna
do rozwiązania $x^*$ równania
do rozwiązania <math>\displaystyle x^*</math> równania
\[
 
\arctan(x) = 0.
<center><math>\displaystyle \arctan(x) = 0.
\]
</math></center>
Wyznacz wartość $X_0$, z którego startując powinieneś dostać ciąg oscylujący $X_0, -X_0,\ldots$.
 
Wyznacz wartość <math>\displaystyle X_0</math>, z którego startując powinieneś dostać ciąg oscylujący <math>\displaystyle X_0, -X_0,\ldots</math>.
Sprawdź eksperymentalnie, czy tak jest rzeczywiście.
Sprawdź eksperymentalnie, czy tak jest rzeczywiście.


\hint{Aby znaleźć graniczne $X_0$, czyli takie, dla którego dostaniesz
<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">
oscylacje $X_0, -X_0,\ldots$,  musisz rozwiązać równanie nieliniowe:
Aby znaleźć graniczne <math>\displaystyle X_0</math>, czyli takie, dla którego dostaniesz
\[
oscylacje <math>\displaystyle X_0, -X_0,\ldots</math>,  musisz rozwiązać równanie nieliniowe:
-X_0 = X_0 - \frac{\arctan(X_0)}{\frac{1}{1+X_0^2}}.
 
\]
<center><math>\displaystyle -X_0 = X_0 - \frac{\arctan(X_0)}{\frac{1}{1+X_0^2}}.
</math></center>
 
To łatwe.
To łatwe.
}


\end{exe}
</div></div>
 
}}


\begin{sol}
<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"> 
Dla $-X_0 < x_0 < X_0$ mamy zbieżność. Dla $|x_0| = |X_0|$ oscylacje, dla
Dla <math>\displaystyle -X_0 < x_0 < X_0</math> mamy zbieżność. Dla <math>\displaystyle |x_0| = |X_0|</math> oscylacje, dla
większych wartości --- rozbieżność. Jednak w eksperymencie wszystko zależy od
większych wartości --- rozbieżność. Jednak w eksperymencie wszystko zależy od
tego, jak dokładnie wyznaczyliśmy $X_0$. Na przykład, mój solver w Octave
tego, jak dokładnie wyznaczyliśmy <math>\displaystyle X_0</math>. Na przykład, mój solver w Octave
wyznaczył wartość $X_0$, dla której metoda Newtona dała następujący ciąg:
wyznaczył wartość <math>\displaystyle X_0</math>, dla której metoda Newtona dała następujący ciąg:
\begin{outoct}
 
Iteracja:  1,  x = -1.39175
Iteracja:  1,  x <nowiki>=</nowiki> -1.39175
Iteracja:  2,  x = 1.39175
Iteracja:  2,  x <nowiki>=</nowiki> 1.39175
Iteracja:  3,  x = -1.39175
Iteracja:  3,  x <nowiki>=</nowiki> -1.39175
Iteracja:  4,  x = 1.39175
Iteracja:  4,  x <nowiki>=</nowiki> 1.39175
Iteracja:  5,  x = -1.39175
Iteracja:  5,  x <nowiki>=</nowiki> -1.39175


.. itd ..
.. itd ..


Iteracja:  25,  x = -1.39176
Iteracja:  25,  x <nowiki>=</nowiki> -1.39176
Iteracja:  26,  x = 1.39178
Iteracja:  26,  x <nowiki>=</nowiki> 1.39178
Iteracja:  27,  x = -1.39183
Iteracja:  27,  x <nowiki>=</nowiki> -1.39183
Iteracja:  28,  x = 1.39197
Iteracja:  28,  x <nowiki>=</nowiki> 1.39197
Iteracja:  29,  x = -1.39235
Iteracja:  29,  x <nowiki>=</nowiki> -1.39235
Iteracja:  30,  x = 1.39333
Iteracja:  30,  x <nowiki>=</nowiki> 1.39333
Iteracja:  31,  x = -1.39594
Iteracja:  31,  x <nowiki>=</nowiki> -1.39594
Iteracja:  32,  x = 1.40283
Iteracja:  32,  x <nowiki>=</nowiki> 1.40283
Iteracja:  33,  x = -1.42117
Iteracja:  33,  x <nowiki>=</nowiki> -1.42117
Iteracja:  34,  x = 1.47061
Iteracja:  34,  x <nowiki>=</nowiki> 1.47061
Iteracja:  35,  x = -1.60867
Iteracja:  35,  x <nowiki>=</nowiki> -1.60867
Iteracja:  36,  x = 2.03161
Iteracja:  36,  x <nowiki>=</nowiki> 2.03161
Iteracja:  37,  x = -3.67722
Iteracja:  37,  x <nowiki>=</nowiki> -3.67722
Iteracja:  38,  x = 15.2779
Iteracja:  38,  x <nowiki>=</nowiki> 15.2779
Iteracja:  39,  x = -337.619
Iteracja:  39,  x <nowiki>=</nowiki> -337.619
Iteracja:  40,  x = 178376
Iteracja:  40,  x <nowiki>=</nowiki> 178376
Iteracja:  41,  x = -4.99792e+10
Iteracja:  41,  x <nowiki>=</nowiki> -4.99792e+10
Iteracja:  42,  x = 3.92372e+21
Iteracja:  42,  x <nowiki>=</nowiki> 3.92372e+21
Iteracja:  43,  x = -2.41834e+43
Iteracja:  43,  x <nowiki>=</nowiki> -2.41834e+43
Iteracja:  44,  x = 9.18658e+86
Iteracja:  44,  x <nowiki>=</nowiki> 9.18658e+86
Iteracja:  45,  x = -1.32565e+174
Iteracja:  45,  x <nowiki>=</nowiki> -1.32565e+174
Iteracja:  46,  x = inf
Iteracja:  46,  x <nowiki>=</nowiki> inf
Iteracja:  47,  x = nan
Iteracja:  47,  x <nowiki>=</nowiki> nan
\end{outoct}


\end{sol}
</div></div>

Wersja z 15:58, 26 sie 2006

Uwaga: przekonwertowane latex2mediawiki; prawdopodobnie trzeba wprowadzi? poprawki

{Ć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

{{{3}}}

Ćwiczenie Pierwiastkowanie

{{{3}}}
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

  1. f(x)=sin(x),
  2. f(x)=sin2(x),
  3. f(x)=(x1)5 (wzór A),
  4. f(x)=(x1)*(x44x3+6x24x+1) (wzór B),
  5. f(x)=(x2)13 (wzór C),
  6. f(x)=x1326*x12+312*x112288*x10+...8192 (wzór D),

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

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

Rozwiązanie

Ćwiczenie

{{{3}}}
Rozwiązanie