MN09LAB: Różnice pomiędzy wersjami
m MN Ćwiczenia 9 moved to MN09LAB |
Nie podano opisu zmian |
||
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 18: | Linia 17: | ||
<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"> Aby uprościć wagi w drugim wzorze barycentrycznym zauważ, że skalowanie <strong>wszystkich wag</strong> przez tę samą stałą nie wpływa na jego wartość. </div> | <div style="font-size:smaller; background-color:#efe"> Aby uprościć wagi w drugim wzorze barycentrycznym, zauważ, że skalowanie <strong>wszystkich wag</strong> przez tę samą stałą nie wpływa na jego wartość. </div> | ||
</div></div> | </div></div> | ||
Linia 33: | Linia 32: | ||
Zaimplementuj drugi wzór barycentryczny tak, by w efekcie dostać dwie procedury: | Zaimplementuj drugi wzór barycentryczny tak, by w efekcie dostać dwie procedury: | ||
* <code>c = polfitb(x,y)</code> --- wyznaczającą współczynniki<math>\displaystyle c</math> wielomianu interpolującego wartości <math>\displaystyle y</math> w węzłach <strong>równoodległych</strong> <math>\displaystyle x</math>; | * <code>c = polfitb(x,y)</code> --- wyznaczającą współczynniki<math>\displaystyle c</math> wielomianu interpolującego wartości <math>\displaystyle y</math> w węzłach <strong>równoodległych</strong> <math>\displaystyle x</math>; | ||
* <code>Y = polvalb(X,c)</code> --- wyznaczającą | * <code>Y = polvalb(X,c)</code> --- wyznaczającą w zadanych węzłach <math>\displaystyle X</math> wartości <math>\displaystyle Y</math> wielomianu interpolacyjnego o współczynnikach <math>\displaystyle c</math>. | ||
Oszacuj koszt | Oszacuj koszt twojego algorytmu i porównaj z kosztem algorytmu różnic dzielonych (dla współczynników) i algorytmem Hornera (dla wartości) w dwóch przypadkach: | ||
* kiedy jest dużo węzłów interpolacji, a potrzebna jest tylko jedna wartość wielomianu interpolacyjnego; | * kiedy jest dużo węzłów interpolacji, a potrzebna jest tylko jedna wartość wielomianu interpolacyjnego; | ||
* na odwrót, kiedy jest mało węzłów interpolacji, a potrzeba wyznaczyć bardzo dużo wartości wielomianu interpolacyjnego. | * na odwrót, kiedy jest mało węzłów interpolacji, a potrzeba wyznaczyć bardzo dużo wartości wielomianu interpolacyjnego. | ||
Linia 42: | Linia 41: | ||
<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"> | ||
Musimy wyznaczyć współczynniki wagowe <math>\displaystyle w_j</math>. Jeśli z góry wiemy, że np. stopień naszego wielomianu interpolacyjnego nie przekroczy | Musimy wyznaczyć współczynniki wagowe <math>\displaystyle w_j</math>. Jeśli z góry wiemy, że np. stopień naszego wielomianu interpolacyjnego nie przekroczy 20, to możemy przyspieszyć naszą procedurę, wykonując <strong>precomputing</strong>: wszak wagi w drugim wzorze barycentrycznym są wyznaczone niezależnie od węzłów! | ||
Zatem musimy wyliczyć (całkowite!) wartości trójkątnej tabelki | Zatem musimy wyliczyć (całkowite!) wartości trójkątnej tabelki | ||
Linia 70: | Linia 69: | ||
<div class="exercise"> | <div class="exercise"> | ||
Często w aplikacjach takich jak programy CAD zachodzi potrzeba dodania na bieżąco dodatkowego węzła interpolacji. Podaj jak to zrobić | Często w aplikacjach takich jak programy CAD zachodzi potrzeba dodania na bieżąco dodatkowego węzła interpolacji. Podaj, jak to zrobić i jaki to będzie miało koszt, gdy interpolant jest zadany w bazie | ||
* naturalnej | * naturalnej | ||
* Newtona | * Newtona | ||
Linia 90: | Linia 89: | ||
<div class="exercise"> | <div class="exercise"> | ||
Pokaż, że algorytm Hornera obliczania wartości <math>\displaystyle w(\xi)</math> wielomianu danego w postaci potęgowej jest jednocześnie algorytmem dzielenia tego wielomianu przez jednomian <math>\displaystyle (x-\xi)</math>. Dokładniej, jeśli <math>\displaystyle w(x)=\sum_{j=0}^n a_jx^j</math> to | |||
<center><math>\displaystyle w(x)\,=\,\Big(\sum_{j=1}^n v_jx^{j-1}\Big) \cdot (x-\xi)\,+\,v_0, | <center><math>\displaystyle w(x)\,=\,\Big(\sum_{j=1}^n v_jx^{j-1}\Big) \cdot (x-\xi)\,+\,v_0, | ||
Linia 102: | Linia 101: | ||
<div class="exercise"> | <div class="exercise"> | ||
Pokaż numeryczną poprawność algorytmu Hornera obliczania wartości wielomianu ze względu na dane współczynniki <math>\displaystyle a_j</math> tego wielomianu. | |||
</div></div> | </div></div> | ||
Linia 109: | Linia 108: | ||
<div class="exercise"> | <div class="exercise"> | ||
Niech dane będą <math>\displaystyle \epsilon>0</math> i funkcja <math>\displaystyle f:[a,b]\toR</math>, która jest nieskończenie wiele razy różniczkowalna i wszystkie jej pochodne są na <math>\displaystyle [a,b]</math> ograniczone przez <math>\displaystyle M</math>. | Niech dane będą <math>\displaystyle \epsilon>0</math> i funkcja <math>\displaystyle f:[a,b]\toR</math>, która jest nieskończenie wiele razy różniczkowalna i wszystkie jej pochodne są na <math>\displaystyle [a,b]</math> ograniczone przez <math>\displaystyle M</math>. Napisz program znajdujący stopień <math>\displaystyle n</math> oraz współczynniki w bazie Newtona wielomianu <math>\displaystyle w_{f,n}\in\Pi_n</math> interpolacyjnego <math>\displaystyle f</math> z błędem | ||
<center><math>\displaystyle \|f-w_{f,n}\|_{C([a,b])}\,\le\,\epsilon. | <center><math>\displaystyle \|f-w_{f,n}\|_{C([a,b])}\,\le\,\epsilon. | ||
</math></center> | </math></center> | ||
Rozpatrz dwa przypadki: gdy węzły interpolacji są równoodległe, oraz gdy węzły są czebyszewowskie. | |||
</div></div> | </div></div> |
Wersja z 15:49, 25 wrz 2006
Ćwiczenia: interpolacja wielomianowa
Ćwiczenie: Wagi wzoru barycentrycznego
Wyprowadź formułę na pierwszy wzór barycentryczny w przypadku węzłów równoodległych na odcinku ,
Wywnioskuj stąd wzór na wagi w drugim wzorze barycentrycznym.
Ćwiczenie: Implementacja algorytmu barycentrycznego
Zaimplementuj drugi wzór barycentryczny tak, by w efekcie dostać dwie procedury:
c = polfitb(x,y)
--- wyznaczającą współczynniki wielomianu interpolującego wartości w węzłach równoodległych ;Y = polvalb(X,c)
--- wyznaczającą w zadanych węzłach wartości wielomianu interpolacyjnego o współczynnikach .
Oszacuj koszt twojego algorytmu i porównaj z kosztem algorytmu różnic dzielonych (dla współczynników) i algorytmem Hornera (dla wartości) w dwóch przypadkach:
- kiedy jest dużo węzłów interpolacji, a potrzebna jest tylko jedna wartość wielomianu interpolacyjnego;
- na odwrót, kiedy jest mało węzłów interpolacji, a potrzeba wyznaczyć bardzo dużo wartości wielomianu interpolacyjnego.
Ćwiczenie: Dodawanie węzła interpolacji
Często w aplikacjach takich jak programy CAD zachodzi potrzeba dodania na bieżąco dodatkowego węzła interpolacji. Podaj, jak to zrobić i jaki to będzie miało koszt, gdy interpolant jest zadany w bazie
- naturalnej
- Newtona
- Lagrange'a
Ćwiczenie: Algorytm Hornera może więcej
Pokaż, że algorytm Hornera obliczania wartości wielomianu danego w postaci potęgowej jest jednocześnie algorytmem dzielenia tego wielomianu przez jednomian . Dokładniej, jeśli to
gdzie są zdefiniowane tak jak w algorytmie Hornera.
Ćwiczenie: Algorytm Hornera jest numerycznie poprawny
Pokaż numeryczną poprawność algorytmu Hornera obliczania wartości wielomianu ze względu na dane współczynniki tego wielomianu.
Ćwiczenie
Niech dane będą i funkcja Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle f:[a,b]\toR} , która jest nieskończenie wiele razy różniczkowalna i wszystkie jej pochodne są na ograniczone przez . Napisz program znajdujący stopień oraz współczynniki w bazie Newtona wielomianu interpolacyjnego z błędem
Rozpatrz dwa przypadki: gdy węzły interpolacji są równoodległe, oraz gdy węzły są czebyszewowskie.