MN04LAB: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „,↵</math>” na „</math>,” |
|||
(Nie pokazano 5 wersji utworzonych przez 2 użytkowników) | |||
Linia 1: | Linia 1: | ||
<!-- | <!-- | ||
Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php. | Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php. | ||
Linia 20: | Linia 19: | ||
<div class="exercise"> | <div class="exercise"> | ||
Aby obliczyć <math> | Aby obliczyć <math>S(a,b)=a^2-b^2</math> można zastosować | ||
dwa algorytmy: <math> | dwa algorytmy: <math>{\bf ALG}_1(a,b)=a*a-b*b</math> oraz <math>{\bf ALG}_2(a,b)=(a+b)*(a-b)</math>. | ||
Pokazać, że oba algorytmy są numerycznie poprawne, ale drugi | Pokazać, że oba algorytmy są numerycznie poprawne, ale drugi | ||
z nich wywołuje mniejszy błąd względny wyniku w przypadku, gdy | z nich wywołuje mniejszy błąd względny wyniku w przypadku, gdy | ||
<math> | <math>rd_\nu(a)=a</math> i <math>rd_\nu(b)=b</math>. | ||
</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"><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"> | ||
Rzeczywiście, dla pierwszego algorytmu obliczony w <math> | Rzeczywiście, dla pierwszego algorytmu obliczony w <math>fl_\nu</math> wynik <math>\tilde{s}</math> spełnia | ||
<center><math> | <center><math> | ||
\tilde{s} = fl_\nu(fl_\nu(a\cdot a)-fl_\nu(b\cdot b)) = (a^2(1+\epsilon_a) - b^2(1+\epsilon_b))(1+\epsilon_{-}) | \tilde{s} = fl_\nu(fl_\nu(a\cdot a)-fl_\nu(b\cdot b)) = (a^2(1+\epsilon_a) - b^2(1+\epsilon_b))(1+\epsilon_{-})</math>,</center> | ||
</math></center> | |||
gdzie <math> | gdzie <math>|\epsilon_{a}|, |\epsilon_{b}|, |\epsilon_{-}| \leq \nu</math>. A więc jesteśmy w sytuacji, gdy --- jeśli tylko <math>|a|\approx |b|</math> --- może nastąpić redukcja cyfr przy odejmowaniu... | ||
Natomiast drugi algorytm w ogóle nie jest na to czuły, | Natomiast drugi algorytm w ogóle nie jest na to czuły, | ||
<center><math> | <center><math> | ||
\tilde{s} = fl_\nu(fl_\nu(a - b) \times fl_\nu(a + b)) = ((a-b)(1+\epsilon_{-}) \cdot (a+b)(1+\epsilon_{+}))(1+\epsilon_{\times}) | \tilde{s} = fl_\nu(fl_\nu(a - b) \times fl_\nu(a + b)) = ((a-b)(1+\epsilon_{-}) \cdot (a+b)(1+\epsilon_{+}))(1+\epsilon_{\times})</math>,</center> | ||
</math></center> | |||
gdzie znów <math> | gdzie znów <math>|\epsilon_{+}|, |\epsilon_{-}|, |\epsilon_{\times}| \leq \nu</math>. | ||
Ponieważ ostatecznie | Ponieważ ostatecznie | ||
<center><math> | <center><math> | ||
\tilde{s} = (a-b)(a+b)(1+\epsilon_{-})(1+\epsilon_{+})(1+\epsilon_{\times})= | \tilde{s} = (a-b)(a+b)(1+\epsilon_{-})(1+\epsilon_{+})(1+\epsilon_{\times})= | ||
= (a^2 - b^2)(1+E) | = (a^2 - b^2)(1+E)</math>,</center> | ||
</math></center> | |||
gdzie <math> | gdzie <math>|E| \leq 3\nu</math>, algorytm drugi będzie <strong>zawsze</strong> dawał wynik obarczony małym błędem względnym. | ||
Zwróć uwagę na istotną rolę przyjętego założenia, że <math> | Zwróć uwagę na istotną rolę przyjętego założenia, że <math>a</math> i <math>b</math> są liczbami maszynowymi, reprezentowanymi dokładnie w <math>fl_\nu</math>. W praktyce obliczeniowej, najczęściej właśnie z takimi danymi będziemy się spotykać... | ||
</div></div></div> | </div></div></div> | ||
Linia 58: | Linia 54: | ||
Pokazać, że naturalny algorytm obliczania cosinusa | Pokazać, że naturalny algorytm obliczania cosinusa | ||
kąta między dwoma wektorami <math> | kąta między dwoma wektorami <math>a, b\in R^n</math>, | ||
<center><math> | <center><math>\cos(a,b)\,=\,\frac{\sum_{j=1}^n a_jb_j} | ||
{\sqrt{\Big(\sum_{j=1}^n a_j^2\Big) | {\sqrt{\Big(\sum_{j=1}^n a_j^2\Big) | ||
\Big(\sum_{j=1}^n b_j^2\Big)}} | \Big(\sum_{j=1}^n b_j^2\Big)}}</math>,</center> | ||
</math></center> | |||
jest numerycznie poprawny. Oszacować błąd względny wyniku | jest numerycznie poprawny. Oszacować błąd względny wyniku | ||
w <math> | w <math>fl_\nu</math>. | ||
</div></div> | </div></div> | ||
Linia 76: | Linia 71: | ||
Pokazać, że naturalny algorytm obliczania | Pokazać, że naturalny algorytm obliczania | ||
<math> | <math>\|A x\|_2</math> dla danej macierzy <math>A\inR^{n\times n}</math> i wektora | ||
<math> | <math>x\inR^n</math> jest numerycznie poprawny. Dokładniej, | ||
<center><math> | <center><math>fl_\nu (\|A x\|_2)\,=\,(A+E) x</math>,</center> | ||
</math></center> | |||
gdzie <math> | gdzie <math>\|E\|_2\leq 2(n+2)\sqrt n\nu\|A\|_2</math>. Ponadto, jeśli | ||
<math> | <math>A</math> jest nieosobliwa, to | ||
<center><math> | <center><math>|fl_\nu(\|A x\|_2)-\|A x\|_2|\,\leq\,2(n+2)\sqrt{n}\,\nu\, | ||
\left(\|A\|_2\|A^{-1}\|_2\right)\,\|A x\|_2 | \left(\|A\|_2\|A^{-1}\|_2\right)\,\|A x\|_2</math></center> | ||
</math></center> | |||
</div></div> | </div></div> | ||
Linia 95: | Linia 88: | ||
<div class="exercise"> | <div class="exercise"> | ||
Niech <math> | Niech <math>{\bf ALG}</math> będzie algorytmem numerycznie | ||
poprawnym w zbiorze danych <math> | poprawnym w zbiorze danych <math>f\in F_0</math>, przy czym dla małych <math>\nu</math>, | ||
<math> | <math>fl_\nu({\bf ALG}(f))=\varphi(y_\nu)</math>, gdzie <math>\|y_\nu-y\|\le K\nu\|y\|</math> | ||
i <math> | i <math>K</math> nie zależy od <math>\nu</math> i <math>f</math> (<math>y=N(f)</math>). Pokazać, że | ||
w ogólności <math> | w ogólności <math>{\bf ALG}</math> nie musi być "numerycznie poprawny po | ||
współrzędnych", tzn. w ogólności nie istnieje bezwzględna | współrzędnych", tzn. w ogólności nie istnieje bezwzględna | ||
stała <math> | stała <math>K_1</math> taka, że dla małych <math>\nu</math> i dla dowolnej | ||
<math> | <math>f\in F_0</math> | ||
<center><math> | <center><math>|y_{\nu,j}-y_j|\,\le\,K_1\,\nu\,|y_j|, \qquad 1\le j\le n</math>,</center> | ||
</math></center> | |||
gdzie <math> | gdzie <math>y=(y_1,\ldots,y_n)</math>. | ||
</div></div> | </div></div> | ||
Linia 116: | Linia 108: | ||
<div class="exercise"> | <div class="exercise"> | ||
Podaj przykład funkcji <math> | Podaj przykład funkcji <math>f</math>, której miejsce zerowe <math>x^*</math> ma wspólczynnik | ||
uwarunkowania | uwarunkowania | ||
* mały | * mały | ||
Linia 124: | Linia 116: | ||
<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"> | ||
Ponieważ nasze zadanie to wyznaczenie <math> | Ponieważ nasze zadanie to wyznaczenie <math>x^* = f^{-1}(0)</math>, to | ||
<center><math> | <center><math> | ||
\mbox{cond} _{abs} (f^{-1},0) = \frac{1}{f'(x^*)} | \mbox{cond} _{abs} (f^{-1},0) = \frac{1}{f'(x^*)}</math></center> | ||
</math></center> | |||
Znaczy to, że im bardziej płaska jest <math> | Znaczy to, że im bardziej płaska jest <math>f</math> w otoczeniu pierwiastka <math>x^*</math>, tym | ||
bardziej nawet małe zaburzenia <math> | bardziej nawet małe zaburzenia <math>f</math> mogą spowodować duże przemieszczenie jej | ||
miejsca zerowego. | miejsca zerowego. | ||
Zauważ, iż dla wielokrotnych miejsc zerowych, <math> | Zauważ, iż dla wielokrotnych miejsc zerowych, <math>\mbox{cond} _{abs} (f^{-1},0) = \infty</math>. Zgadza się to z intuicją, bo może się zdarzyć, że nawet minimalne zaburzenie <math>f</math> | ||
spowoduje, iż miejsc zerowych po prostu nie będzie... | spowoduje, iż miejsc zerowych po prostu nie będzie... | ||
[[Image:MNnonlinearcond2.png|thumb|550px|center|Gdy trochę zaburzymy wartości funkcji | [[Image:MNnonlinearcond2.png|thumb|550px|center|Gdy trochę zaburzymy wartości funkcji f, dobrze uwarunkowane miejsce zerowe nie przemieści się zbyt daleko od miejsca zerowego f.]] | ||
[[Image:MNnonlinearcond4.png|thumb|550px|center|Gdy trochę zaburzymy wartości funkcji | [[Image:MNnonlinearcond4.png|thumb|550px|center|Gdy trochę zaburzymy wartości funkcji f, źle uwarunkowane miejsce zerowe może przemieścić się bardzo daleko od miejsca zerowego f.]] | ||
</div></div></div> | </div></div></div> |
Aktualna wersja na dzień 21:50, 11 wrz 2023
Uwarunkowanie zadania i algorytmy numerycznie poprawne.
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
Ć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 .
Rozwiązanie
Ćwiczenie
Pokazać, że naturalny algorytm obliczania cosinusa kąta między dwoma wektorami ,
jest numerycznie poprawny. Oszacować błąd względny wyniku w .
Ćwiczenie
Podaj przykład funkcji , której miejsce zerowe ma wspólczynnik uwarunkowania
- mały
- duży
Rozwiązanie