MN11LAB: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Przykry (dyskusja | edycje)
mNie 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.
Niezb�dne rozszerzenia i modyfikacje oryginalnego latex2mediawiki
wprowadzi� przykry@mimuw.edu.pl
-->
-->
   
   
=Ćwiczenia: splajny=
=Splajny=
 
{{powrot |Metody numeryczne | do strony głównej
przedmiotu <strong>Metody numeryczne</strong>}}
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
Oglądaj wskazówki i rozwiązania __SHOWALL__<br>
Ukryj wskazówki i rozwiązania __HIDEALL__
</div>


<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
Linia 36: Linia 47:
Możesz korzystać z następującego szablonu w Octave:
Możesz korzystać z następującego szablonu w Octave:


<div class="code" style="background-color:#e8e8e8; padding:1em"><pre>
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>a = 0; b = 10; # długość przedziału
a = 0; b = 10; # długość przedziału
N = 7; # liczba węzłów;
N = 7; # liczba węzłów;


Linia 49: Linia 58:
X = linspace(a,b,256); # punkty do wykresu
X = linspace(a,b,256); # punkty do wykresu
plot(X,[sin(X);ppval(s,X);polyval(w,X)]);
plot(X,[sin(X);ppval(s,X);polyval(w,X)]);
</pre></div>
</pre></div>  
   
   
Polecam przeanalizowanie przypadku, gdy <math>\displaystyle N=30</math>.
Polecam przeanalizowanie przypadku, gdy <math>\displaystyle N=30</math>.
Linia 63: Linia 72:


<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">   
Macierz jest trójdiagonalna i diagonalnie dominująca, więc albo zaimplementujesz własną metodę przeganiania, albo skorzystasz z <code>DGBSV</code> z LAPACKa. Decyzję podejmij po przeprowadzeniu testów porównawczych czasów wykonania obu wariantów.
Macierz jest trójdiagonalna i diagonalnie dominująca, więc albo zaimplementujesz własną metodę przeganiania, albo skorzystasz z <code style="color: #903">DGBSV</code> z LAPACKa. Decyzję podejmij po przeprowadzeniu testów porównawczych czasów wykonania obu wariantów.
</div></div></div>
</div></div></div>


Linia 74: Linia 83:
sklejanych, tzn. takich, w których warunki interpolacji uzupełnione są warunkiem  
sklejanych, tzn. takich, w których warunki interpolacji uzupełnione są warunkiem  


<center><math>\displaystyle s'(x_0) = s'(x_N)\\
<center><math>\displaystyle \aligned s'(x_0) &= s'(x_N)\\
s''(x_0) = s''(x_N).
s''(x_0) &= s''(x_N).
</math></center>
\endaligned</math></center>


<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"> Zastosuj technikę dowodową podobną  do tej z przypadku naturalnych
<div style="font-size:smaller; background-color:#f9fff9; padding: 1em"> Zastosuj technikę dowodową podobną  do tej z przypadku naturalnych
funkcji sklejanych. </div>
funkcji sklejanych. </div>
</div></div>
</div></div>
<div style="margin-top:1em; padding-top,padding-bottom:1em;">
<span  style="display: block; background-color:#fefeee; border-bottom: 1px solid #E5E5E5; line-height: 1.1em; padding-bottom: 0.2em; font-variant:small-caps; color:#1A6ABF;">Ćwiczenie</span>
<div class="exercise">
Sprawdź eksperymentalnie, jaka aproksymacja funkcji <math>\displaystyle f(x) = x\sin(\frac{1}{x})</math> (pamiętaj, <math>\displaystyle f(0)=0</math>) jest "wizualnie" lepsza na odcinku <math>\displaystyle [0,5]</math>:
* wielomianem interpolacyjnym, opartym na <math>\displaystyle N</math> węzłach równoodległych
* wielomianem interpolacyjnym, opartym na <math>\displaystyle N</math> węzłach Czebyszewa
* splajnem interpolacyjnym stopnia 1, opartym na <math>\displaystyle N</math> węzłach równoodległych
* naturalnym splajnem kubicznym interpolacyjnym, opartym na <math>\displaystyle N</math> węzłach równoodległych
Eksperymentuj z różnymi wartościami <math>\displaystyle N</math>.
<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:#f9fff9; padding: 1em"> Samo sprawdzenie najprościej wykonać w Octave; jeśli sumiennie rozwiązywałeś dotychczasowe zadania, powinieneś też dysponować zestawem funkcji generującym większość wymaganych w zadaniu interpolantów. </div>
</div></div>
</div></div>


</div></div>
</div></div>

Wersja z 21:36, 29 wrz 2006


Splajny

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

Niech h>0 i Parser nie mógł rozpoznać (nieznana funkcja „\inR”): {\displaystyle \displaystyle c\inR} . Wyznacz współczynniki kubicznej funkcji sklejanej s opartej na pięciu węzłach 2h,h,0,h,2h i spełniającej dodatkowo następujące warunki interpolacyjne:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle s(0)\,=\,c,\qquad\quad s^{(k)}(\pm 2h)\,=\,0,\qquad k=0,1,2, \\ }

Ćwiczenie

Porównaj ze sobą interpolację wielomianową i splajnową opartą na N węzłach.

Rozpatrz funkcję f(x)=sin(x) i następujące przypadki:

  • węzły równoodległe lub nie;
  • odcinek krótki lub długi;
  • węzłów mało lub dużo.
Rozwiązanie

Ćwiczenie

Zaimplementuj w C funkcje analogiczne do Octave'owskich spline i ppval. Pamiętaj, by skorzystać z efektywnego narzędzia do rozwiązywania układów równań!

Rozwiązanie

Ćwiczenie: Kubiczne splajny okresowe są dobrze określone

Pokaż jednoznaczność rozwiązania zadania interpolacyjnego w przypadku kubicznych okresowych funkcji sklejanych, tzn. takich, w których warunki interpolacji uzupełnione są warunkiem

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned s'(x_0) &= s'(x_N)\\ s''(x_0) &= s''(x_N). \endaligned}
Wskazówka

Ćwiczenie

Sprawdź eksperymentalnie, jaka aproksymacja funkcji f(x)=xsin(1x) (pamiętaj, f(0)=0) jest "wizualnie" lepsza na odcinku [0,5]:

  • wielomianem interpolacyjnym, opartym na N węzłach równoodległych
  • wielomianem interpolacyjnym, opartym na N węzłach Czebyszewa
  • splajnem interpolacyjnym stopnia 1, opartym na N węzłach równoodległych
  • naturalnym splajnem kubicznym interpolacyjnym, opartym na N węzłach równoodległych

Eksperymentuj z różnymi wartościami N.

Wskazówka