MN03LAB: Różnice pomiędzy wersjami
mNie podano opisu zmian |
mNie podano opisu zmian |
||
Linia 2: | Linia 2: | ||
==Ćwiczenia. Własności arytmetyki zmiennopozycyjnej.== | ==Ćwiczenia. Własności arytmetyki zmiennopozycyjnej.== | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Szeregi zbieżne(?)</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Szeregi zbieżne(?)</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Linia 24: | Linia 24: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Rozpatrz na przykład takie szeregi zbieżne: | Rozpatrz na przykład takie szeregi zbieżne: | ||
* Szereg zerowy (numerycznie dostajesz oczywiście też 0) | * Szereg zerowy (numerycznie dostajesz oczywiście też 0) | ||
Linia 38: | Linia 37: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Dla kolejnych <math>\displaystyle N</math>, wyznacz <math>\displaystyle N</math>-tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy <math>\displaystyle x=-90</math>: | Dla kolejnych <math>\displaystyle N</math>, wyznacz <math>\displaystyle N</math>-tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy <math>\displaystyle x=-90</math>: | ||
Linia 54: | Linia 53: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Zastosowanie naszego algorytmu dla <math>\displaystyle x=-90</math> daje w wyniku (dla arytmetyki | Zastosowanie naszego algorytmu dla <math>\displaystyle x=-90</math> daje w wyniku (dla arytmetyki | ||
podwójnej precyzji) sumę równą około <math>\displaystyle 10^{30}</math>, | podwójnej precyzji) sumę równą około <math>\displaystyle 10^{30}</math>, | ||
Linia 70: | Linia 67: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Już wcześniej stwierdziliśmy, że wyznaczanie <math>\displaystyle e \approx (1 + 1/n)^n</math> dla dużego | Już wcześniej stwierdziliśmy, że wyznaczanie <math>\displaystyle e \approx (1 + 1/n)^n</math> dla dużego | ||
Linia 78: | Linia 75: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Jak wiadomo, szereg harmoniczny <math>\displaystyle \sum_{n=1}^\infty 1/n</math> jest rozbieżny. | Jak wiadomo, szereg harmoniczny <math>\displaystyle \sum_{n=1}^\infty 1/n</math> jest rozbieżny. | ||
Linia 106: | Linia 103: | ||
</pre></div> | </pre></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps"> | <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"> Policz, ile mniej więcej obrotów pętli potrzeba, by suma przestała rosnąć. </div> | <div style="font-size:smaller; background-color:#efe"> Policz, ile mniej więcej obrotów pętli potrzeba, by suma przestała rosnąć. </div> | ||
</div></div> | </div></div> | ||
Linia 112: | Linia 109: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Nasza suma przekroczy wartość 20, więc aby <code>20 + dskladnik <nowiki>=</nowiki><nowiki>=</nowiki> 20</code>, musi | Nasza suma przekroczy wartość 20, więc aby <code>20 + dskladnik <nowiki>=</nowiki><nowiki>=</nowiki> 20</code>, musi | ||
być dskładnik <math>\displaystyle \approx 10^{-15}</math> (lub więcej). Tymczasem zakres liczb typu integer wynosi | być dskładnik <math>\displaystyle \approx 10^{-15}</math> (lub więcej). Tymczasem zakres liczb typu integer wynosi | ||
Linia 128: | Linia 123: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Jak szybko i na jakiej wysokości musiałby lecieć samolot npla, aby | Jak szybko i na jakiej wysokości musiałby lecieć samolot npla, aby | ||
Linia 136: | Linia 131: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu pierwiastka kwadratowego metodą Newtona</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu pierwiastka kwadratowego metodą Newtona</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Linia 145: | Linia 140: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Jak pamiętamy, <math>\displaystyle a = (1+f)2^p = \widetilde{f} 2^{p+1}</math>, | Jak pamiętamy, <math>\displaystyle a = (1+f)2^p = \widetilde{f} 2^{p+1}</math>, | ||
gdzie <math>\displaystyle \frac{1}{2}\leq \widetilde{f} < 1</math> oraz <math>\displaystyle p\in N</math>. Stąd | gdzie <math>\displaystyle \frac{1}{2}\leq \widetilde{f} < 1</math> oraz <math>\displaystyle p\in N</math>. Stąd | ||
Linia 165: | Linia 159: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Linia 175: | Linia 169: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Jak pamiętamy, <math>\displaystyle a = (1+f)2^p</math>, skąd <math>\displaystyle \frac{1}{a} = \frac{1}{1+f}2^{-p}</math>. | Jak pamiętamy, <math>\displaystyle a = (1+f)2^p</math>, skąd <math>\displaystyle \frac{1}{a} = \frac{1}{1+f}2^{-p}</math>. | ||
Wystarczy więc przybliżyć <math>\displaystyle \frac{1}{1+f}</math>. Ponieważ dla <math>\displaystyle 0 \leq f < 1</math>, | Wystarczy więc przybliżyć <math>\displaystyle \frac{1}{1+f}</math>. Ponieważ dla <math>\displaystyle 0 \leq f < 1</math>, | ||
Linia 216: | Linia 208: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Niech <math>\displaystyle 0<a_1<a_2<\cdots < a_n</math>. Czy z punktu widzenia | Niech <math>\displaystyle 0<a_1<a_2<\cdots < a_n</math>. Czy z punktu widzenia | ||
Linia 224: | Linia 216: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Od najmniejszej do największej. | Od najmniejszej do największej. | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Aby obliczyć <math>\displaystyle S(a,b)=a^2-b^2</math> można zastosować | Aby obliczyć <math>\displaystyle S(a,b)=a^2-b^2</math> można zastosować | ||
Linia 240: | Linia 230: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Pokazać, że naturalny algorytm obliczania cosinusa | Pokazać, że naturalny algorytm obliczania cosinusa | ||
Linia 255: | Linia 245: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Pokazać, że naturalny algorytm obliczania | Pokazać, że naturalny algorytm obliczania | ||
Linia 274: | Linia 264: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Niech <math>\displaystyle {\bf ALG}</math> będzie algorytmem numerycznie | Niech <math>\displaystyle {\bf ALG}</math> będzie algorytmem numerycznie | ||
Linia 292: | Linia 282: | ||
</div></div> | </div></div> | ||
<div style=" | <div style="margin-top:1em; padding-top,padding-bottom:1em;"> | ||
<span style="font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | <span style="display: block; background-color:#fefeee; font-variant:small-caps; color: exeA6ABF;">Ćwiczenie</span> | ||
<div class="exercise"> | <div class="exercise"> | ||
Podaj przykład funkcji <math>\displaystyle f</math>, której miejsce zerowe <math>\displaystyle x^*</math> ma wspólczynnik | Podaj przykład funkcji <math>\displaystyle f</math>, której miejsce zerowe <math>\displaystyle x^*</math> ma wspólczynnik | ||
Linia 302: | Linia 292: | ||
</div></div> | </div></div> | ||
<div | <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"> | ||
<span | |||
<div class=" | |||
Ponieważ nasze zadanie to wyznaczenie <math>\displaystyle x^* = f^{-1}(0)</math>, to | Ponieważ nasze zadanie to wyznaczenie <math>\displaystyle x^* = f^{-1}(0)</math>, to | ||
<center><math>\displaystyle | <center><math>\displaystyle |
Wersja z 12:37, 29 sie 2006
Ćwiczenia. Własności arytmetyki zmiennopozycyjnej.
Ćwiczenie: Szeregi zbieżne(?)
Podaj przykłady zbieżnych szeregów postaci , którego -te sumy częściowe obliczone w arytmetyce pojedynczej precyzji algorytmem
suma = 0.0; for n = 1..N suma += <math>\displaystyle a_n</math>;
będą
- ograniczone niezależnie od , albo
- numerycznie rozbieżne, to znaczy takie, że dla bardzo dużych zachodzi
suma == Inf
.
Wykonaj to samo zadanie, ale podając przykłady szeregów rozbieżnych (w arytmetyce dokładnej).
Ćwiczenie
Dla kolejnych , wyznacz -tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy :
korzystając z algorytmu podanego w poprzednim zadaniu. Porównaj błąd: względny
i bezwzględny w porównaniu
do wartości wyznaczonej z wykorzystaniem funkcji bibliotecznej exp()
. Powtórz następnie dla .
Czy --- zgodnie z teorią matematyczną --- sumy te dążą do wartości . Objaśnij dokładnie, co się stało.
Ćwiczenie
Już wcześniej stwierdziliśmy, że wyznaczanie dla dużego nie jest dobrym pomysłem. Przeprowadź eksperyment numeryczny potwierdzający to stwierdzenie i objaśnij jego wyniki.
Ćwiczenie
Jak wiadomo, szereg harmoniczny jest rozbieżny. Spróbuj przewidzieć, jaki będzie efekt numerycznego wyznaczenia tej sumy w arytmetyce podwójnej precyzji przy użyciu poniższego kodu.
int dlicznik; double dsuma, dstarasuma; double dskladnik; dstarasuma = 0.0; dsuma = 1.0; dlicznik = 1; while(dstarasuma != dsuma) { dskladnik = 1.0/dlicznik; dstarasuma = dsuma; dsuma += dskladnik; dlicznik++; } printf("Suma = dsuma, dlicznik-1, dskladnik); return(0); }
Ćwiczenie
Jak szybko i na jakiej wysokości musiałby lecieć samolot npla, aby pocisk wystrzeliwany z działka z prędkością 7500 km/h nie trafił w cel, gdy potrzebne pierwiastki liczone są wzorem szkolnym?
Ćwiczenie: Zadanie o wyznaczaniu pierwiastka kwadratowego metodą Newtona
Dla zadanej liczby , należy wyznaczyć przybliżenie stosując metodę Herona. Zaproponuj
dobre przybliżenie początkowe wiedząc, że jest liczbą maszynową typu
double
. Ile iteracji wystarczy, by osiągnąć -zadowalające przybliżenie?
Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona
Należy wyznaczyć przybliżenie stosując metodę Newtona do równania
. Zaproponuj
dobre przybliżenie początkowe wiedząc, że jest liczbą maszynową typu
double
. Ile iteracji wystarczy, by osiągnąć -zadowalające przybliżenie?
Ćwiczenie
Niech . Czy z punktu widzenia błędów w lepiej jest policzyć sumę tych liczb w kolejności od najmniejszej do największej czy odwrotnie?
Ćwiczenie
Aby obliczyć można zastosować dwa algorytmy: oraz . Pokazać, że oba algorytmy są numerycznie poprawne, ale drugi z nich wywołuje mniejszy błąd względny wyniku w przypadku, gdy i .
Ćwiczenie
Pokazać, że naturalny algorytm obliczania cosinusa kąta między dwoma wektorami Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle a, b\inR^n} ,
jest numerycznie poprawny. Oszacować błąd względny wyniku w .
Ćwiczenie
Pokazać, że naturalny algorytm obliczania dla danej macierzy Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle A\inR^{n\times n}} i wektora Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle x\inR^n} jest numerycznie poprawny. Dokładniej,
gdzie . Ponadto, jeśli jest nieosobliwa to
Ćwiczenie
Niech będzie algorytmem numerycznie poprawnym w zbiorze danych , przy czym dla małych , , gdzie i nie zależy od i (). Pokazać, że w ogólności nie musi być "numerycznie poprawny po współrzędnych", tzn. w ogólności nie istnieje bezwzględna stała taka, że dla małych i dla dowolnej
gdzie .
Ćwiczenie
Podaj przykład funkcji , której miejsce zerowe ma wspólczynnik uwarunkowania
- mały
- duży