MN09: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
<!-- | |||
Konwertowane z pliku LaTeX przez latex2mediawiki, zob. http://www.ii.uj.edu.pl/ pawlik1/latex2mediawiki.php. | |||
Niezb�dne rozszerzenia i modyfikacje oryginalnego latex2mediawiki | |||
wprowadzi� przykry@mimuw.edu.pl | |||
--> | |||
=Interpolacja wielomianowa= | =Interpolacja wielomianowa= | ||
{{powrot |Metody numeryczne | do strony głównej | |||
przedmiotu <strong>Metody numeryczne</strong>}} | |||
Zadanie interpolacji, czyli poprowadzenia krzywej zadanego rodzaju przez zestaw | Zadanie interpolacji, czyli poprowadzenia krzywej zadanego rodzaju przez zestaw | ||
danych punktów, jest jednym z podstawowych zadań obliczeniowych. Stosuje się je | danych punktów, jest jednym z podstawowych zadań obliczeniowych. Stosuje się je | ||
nagminnie w najróżniejszych dziedzinach życia, np. | nagminnie w najróżniejszych dziedzinach życia, np. wtedy, gdy trzeba | ||
* | * na podstawie próbki sygnału dźwiękowego (to znaczy: ciągu wartości amplitud sygnału zmierzonych w kolejnych odstępach czasu), odtworzyć jego przebieg; | ||
amplitud sygnału zmierzonych w kolejnych odstępach czasu) | * przybliżyć wykres skomplikowanej (lub wręcz nieznanej) funkcji na podstawie jej wartości uprzednio stablicowanych w wybranych punktach; | ||
* | |||
podstawie jej wartości uprzednio stablicowanych w wybranych punktach | |||
Interpolację stosuje się szczególnie chętnie w samej numeryce. Na przykład idea metody siecznych polega na tym, by funkcję, której miejsca zerowego szukamy, przybliżyć prostą interpolującą tę funkcję w dwóch punktach. Metody numerycznego całkowania oraz rozwiązywania równań różniczkowych także korzystają z interpolacji. | |||
[[Image:MNinterpolacja.png|thumb|550px|center|Wielomian <math>\displaystyle w</math> (czerwony) stopnia 6, interpolujący 7 zadanych wartości (zaznaczone na zielono) danej funkcji <math>\displaystyle f</math>]] | |||
Niech <math>\displaystyle D\subsetR</math> i niech <math>\displaystyle F</math> będzie pewnym zbiorem funkcji | Niech <math>\displaystyle D\subsetR</math> i niech <math>\displaystyle F</math> będzie pewnym zbiorem funkcji | ||
<math>\displaystyle f:D\toR</math>. Niech <math>\displaystyle x_0,x_1,\ldots,x_n</math> będzie ustalonym zbiorem | <math>\displaystyle f:D\toR</math>. Niech <math>\displaystyle x_0,x_1,\ldots,x_n</math> będzie ustalonym zbiorem | ||
parami różnych punktów z <math>\displaystyle D</math> zwanych później <strong>węzłami</strong>. | parami różnych punktów z <math>\displaystyle D</math>, zwanych później <strong>węzłami</strong>. | ||
Powiemy, że wielomian <math>\displaystyle w</math> <strong>interpoluje</strong> funkcję <math>\displaystyle f\in F</math> | Powiemy, że wielomian <math>\displaystyle w</math> <strong>interpoluje</strong> funkcję <math>\displaystyle f\in F</math> | ||
Linia 32: | Linia 39: | ||
Zadanie znalezienia wielomianu interpolującego zadane wartości nazywamy | Zadanie znalezienia wielomianu interpolującego zadane wartości nazywamy | ||
zadaniem interpolacji Lagrange'a. | zadaniem <strong>interpolacji Lagrange'a</strong>. | ||
{{twierdzenie|o istnieniu i jednoznaczności zadania interpolacji Lagrange'a|o istnieniu i jednoznaczności zadania interpolacji Lagrange'a| | |||
Dla dowolnej funkcji <math>\displaystyle f:D\toR</math> istnieje | Dla dowolnej funkcji <math>\displaystyle f:D\toR</math> istnieje | ||
dokładnie jeden wielomian <math>\displaystyle w_f\in\Pi_n</math> interpolujący <math>\displaystyle f</math> | dokładnie jeden wielomian <math>\displaystyle w_f\in\Pi_n</math> interpolujący <math>\displaystyle f</math> | ||
Linia 74: | Linia 79: | ||
</math></center> | </math></center> | ||
Aby wykazać, że układ ten ma jednoznaczne rozwiązanie wystarczy, | Aby wykazać, że układ ten ma jednoznaczne rozwiązanie [[Algebra liniowa | ||
aby wektor zerowy był jedynym rozwiązaniem układu jednorodnego. | z geometrią analityczną/Wykład 8: Zastosowania wyznacznika. Układy równań liniowych|wystarczy, aby wektor zerowy był jedynym rozwiązaniem układu jednorodnego]]. | ||
Rzeczywiście, układ jednorodny odpowiada interpolacji danych zerowych, | Rzeczywiście, układ jednorodny odpowiada interpolacji danych zerowych, | ||
<math>\displaystyle f(x_i)=0</math>, <math>\displaystyle \forall i</math>. Istnienie niezerowego rozwiązania byłoby | <math>\displaystyle f(x_i)=0</math>, <math>\displaystyle \forall i</math>. Istnienie niezerowego rozwiązania byłoby | ||
Linia 93: | Linia 98: | ||
<math>\displaystyle \Pi_n</math> wielomianów stopnia co najwyżej <math>\displaystyle n</math>. Zadanie | <math>\displaystyle \Pi_n</math> wielomianów stopnia co najwyżej <math>\displaystyle n</math>. Zadanie | ||
interpolacji wielomianowej polega na obliczeniu dla danej funkcji <math>\displaystyle f</math> | interpolacji wielomianowej polega na obliczeniu dla danej funkcji <math>\displaystyle f</math> | ||
współczynników <math>\displaystyle c_j</math> takich, że wielomian | |||
<center><math>\displaystyle | <center><math>\displaystyle | ||
Linia 101: | Linia 106: | ||
interpoluje <math>\displaystyle f</math> w punktach <math>\displaystyle x_j</math>, <math>\displaystyle 0\le j\le n</math>. | interpoluje <math>\displaystyle f</math> w punktach <math>\displaystyle x_j</math>, <math>\displaystyle 0\le j\le n</math>. | ||
}} | }} | ||
==Wybór bazy wielomianowej== | ==Wybór bazy wielomianowej== | ||
Linia 127: | Linia 116: | ||
mniejsze trudności (w zależności np. od uwarunkowania macierzy układu, który | mniejsze trudności (w zależności np. od uwarunkowania macierzy układu, który | ||
musimy rozwiązać). | musimy rozwiązać). | ||
<blockquote style="background-color: #fefeee; padding:1em; margin-left,margin-right:2em; margin-top,margin-bottom: 1em;"> | |||
W matematyce, jeden byt może być opisany na wiele równoważnych sposobów. W numeryce, każdy z nich może mieć diametralnie różne własności numeryczne: od odporności na błędy zaokrągleń, po koszt rozwiązania. | |||
Dlatego, optymalizacja algorytmów numerycznych zaczyna się często od wyrażenia tego samego --- inaczej. | |||
</blockquote> | |||
W naturalny sposób powstaje więc problem wyboru "wygodnej" bazy w <math>\displaystyle \Pi_n</math>. | W naturalny sposób powstaje więc problem wyboru "wygodnej" bazy w <math>\displaystyle \Pi_n</math>. | ||
Rozpatrzymy trzy bazy: Lagrange'a, potęgową i Newtona. | Rozpatrzymy trzy bazy: Lagrange'a, potęgową i Newtona. | ||
===Baza Lagrange'a (kanoniczna)=== | |||
Zdefiniujmy dla <math>\displaystyle 0\le j\le n</math> wielomiany | Zdefiniujmy dla <math>\displaystyle 0\le j\le n</math> wielomiany | ||
Linia 148: | Linia 143: | ||
Teraz widać, że wielomiany te stanowią bazę w <math>\displaystyle \Pi_n</math>, | Teraz widać, że wielomiany te stanowią bazę w <math>\displaystyle \Pi_n</math>, | ||
którą nazywamy bazą Lagrange'a. Macierz układu zadania interpolacji | którą nazywamy <strong>bazą Lagrange'a</strong>. Macierz układu zadania interpolacji | ||
jest w takim wypadku identycznością i w konsekwencji <math>\displaystyle c_j=f(x_j)</math>, <math>\displaystyle \forall j</math>. | jest w takim wypadku identycznością i w konsekwencji <math>\displaystyle c_j=f(x_j)</math>, <math>\displaystyle \forall j</math>. | ||
Wielomian interpolacyjny dla funkcji <math>\displaystyle f</math> można więc | Wielomian interpolacyjny dla funkcji <math>\displaystyle f</math> można więc | ||
zapisać jako | zapisać jako | ||
<center><math>\displaystyle w_f( | <center><math>\displaystyle w_f(x)\,=\,\sum_{j=0}^n f(x_j)l_j(x). | ||
</math></center> | </math></center> | ||
Koszt kombinatoryczny rozwiązania zadania interpolacji jest przy tym | Koszt kombinatoryczny rozwiązania zadania interpolacji jest przy tym | ||
zerowy. | zerowy. | ||
====Wzory barycentryczne==== | |||
Przypuśćmy, że chcielibyśmy obliczyć wartość wielomianu | Przypuśćmy, że chcielibyśmy obliczyć wartość wielomianu | ||
Linia 179: | Linia 176: | ||
gdzie <math>\displaystyle q_j(x)=w_j/(x-x_j)</math>. W ostatniej równości wykorzystaliśmy fakt, | gdzie <math>\displaystyle q_j(x)=w_j/(x-x_j)</math>. W ostatniej równości wykorzystaliśmy fakt, | ||
że <math>\displaystyle p_n(x)\equiv (\sum_{j=0}^n q_j(x))^{-1}</math>, co | że <math>\displaystyle p_n(x)\equiv (\sum_{j=0}^n q_j(x))^{-1}</math>, co łatwo widzieć, rozpatrując | ||
zadanie interpolacji funkcji <math>\displaystyle f\equiv 1</math>. Drugi wzór barycentryczny jest korzystniejszy w implementacji. | zadanie interpolacji funkcji <math>\displaystyle f\equiv 1</math>. Drugi wzór barycentryczny jest korzystniejszy w implementacji. | ||
Dla wielu układów węzłów wagi <math>\displaystyle w_j</math> są zadane jawnymi wzorami, np. dla węzłów | Dla wielu układów węzłów, wagi <math>\displaystyle w_j</math> są zadane jawnymi wzorami, np. dla węzłów | ||
równoodległych (niezależnie od tego, na jakim odcinku!) wagi w <strong>drugim</strong> wzorze | równoodległych (niezależnie od tego, na jakim odcinku!) wagi w <strong>drugim</strong> wzorze barycentrycznym wynoszą po prostu | ||
barycentrycznym wynoszą po prostu | |||
<center><math>\displaystyle w_j = (-1)^j \begin{pmatrix} n \\ j \end{pmatrix} . | <center><math>\displaystyle w_j = (-1)^j \begin{pmatrix} n \\ j \end{pmatrix} . | ||
</math></center> | </math></center> | ||
Również dla | Również dla \link{wCzeb}{węzłów Czebyszewa}istnieją eleganckie wzory na takie współczynnki. | ||
Można pokazać, że wartość <math>\displaystyle \widetilde{w_f(x)}</math> wielomianu iterpolacyjnego obliczona | Można pokazać, że wartość <math>\displaystyle \widetilde{w_f(x)}</math> wielomianu iterpolacyjnego obliczona w arytmetyce <math>\displaystyle fl_\nu</math> według pierwszego wzoru barycentrycznego spełnia | ||
w arytmetyce <math>\displaystyle fl_\nu</math> według pierwszego | |||
<center><math>\displaystyle | <center><math>\displaystyle | ||
Linia 200: | Linia 195: | ||
gdzie <math>\displaystyle |\epsilon_j| \leq 5(n+1)</math>, a więc jest to algorytm numerycznie poprawny. | gdzie <math>\displaystyle |\epsilon_j| \leq 5(n+1)</math>, a więc jest to algorytm numerycznie poprawny. | ||
Zachowanie drugiej postaci wzoru barycentrycznego w arytmetyce <math>\displaystyle fl_\nu</math> jest nieco | Zachowanie drugiej postaci wzoru barycentrycznego w arytmetyce <math>\displaystyle fl_\nu</math> jest nieco | ||
bardziej skomplikowane | bardziej skomplikowane. | ||
===Baza potęgowa (naturalna)=== | |||
Znacznie prościej można obliczyć wartość wielomianu interpolacyjnego, | Znacznie prościej można obliczyć wartość wielomianu interpolacyjnego, | ||
(a także jego pochodnych), gdy jest on dany w najczęściej używanej | (a także jego pochodnych), gdy jest on dany w najczęściej używanej | ||
bazie potęgowej, <math>\displaystyle \varphi_j(x)=x^j</math>, <math>\displaystyle \forall j</math>. Jeśli bowiem | <strong>bazie potęgowej</strong>, <math>\displaystyle \varphi_j(x)=x^j</math>, <math>\displaystyle \forall j</math>. Jeśli bowiem | ||
<center><math>\displaystyle w_f(x)\,=\,a_0+a_1x+\cdots+ a_nx^n, | <center><math>\displaystyle w_f(x)\,=\,a_0+a_1x+\cdots+ a_nx^n, | ||
Linia 219: | Linia 214: | ||
do obliczenia <math>\displaystyle w_f(x)</math>: | do obliczenia <math>\displaystyle w_f(x)</math>: | ||
{{algorytm|Algorytm Hornera|| | {{algorytm|Algorytm Hornera|Algorytm Hornera| | ||
<pre> | <pre><math>\displaystyle v_n = a_n;</math> | ||
<math>\displaystyle v_n = a_n;</math> | |||
for (j=n-1; j >= 0 ; j--) | for (j=n-1; j >= 0 ; j--) | ||
<math>\displaystyle v_j\, = \,v_{j+1}\cdot x\,+\,a_j</math>; | <math>\displaystyle v_j\, = \,v_{j+1}\cdot x\,+\,a_j</math>; | ||
Linia 229: | Linia 222: | ||
Po wykonaniu tego algorytmu <math>\displaystyle w_f(x)=v_0</math>. Schemat Hornera wymaga wykonania | Po wykonaniu tego algorytmu <math>\displaystyle w_f(x)=v_0</math>. Schemat Hornera wymaga wykonania | ||
tylko <math>\displaystyle n</math> mnożeń i <math>\displaystyle n</math> dodawań. Ma on również głębszy sens, | tylko <math>\displaystyle n</math> mnożeń i <math>\displaystyle n</math> dodawań. Ma on również głębszy sens, | ||
bo jego produktem ubocznym mogą być także wartości pochodnych naszego wielomianu w <math>\displaystyle x</math>. | bo jego produktem ubocznym mogą być także wartości pochodnych naszego wielomianu w <math>\displaystyle x</math>. Algorytm Hornera okazuje się ''optymalny''. Każdy inny algorytm obliczający dokładną wartość wielomianu, gdy danymi są współczynniki wielomianu, wymaga wykonania co najmniej <math>\displaystyle n</math> mnożeń i <math>\displaystyle n</math> dodawań. Algorytm Hornera jest też numerycznie poprawny. | ||
Algorytm Hornera okazuje się optymalny. Każdy | |||
inny algorytm | |||
dodawań. Algorytm Hornera jest też numerycznie poprawny. | |||
Zauważmy jednak, że w przypadku bazy potęgowej macierz | Zauważmy jednak, że w przypadku bazy potęgowej macierz | ||
<math>\displaystyle (x_i^j)_{i,j=0}^n</math> układu zadania interpolacji jest pełna. Jest to tzw. | <math>\displaystyle (x_i^j)_{i,j=0}^n</math> układu zadania interpolacji jest pełna. Jest to tzw. | ||
<strong>macierz Vandermonde'a</strong>. Obliczenie współczynników wielomianu | <strong>macierz Vandermonde'a</strong>. Obliczenie współczynników wielomianu | ||
interpolacyjnego w bazie potęgowej bezpośrednio z tego układu stosując | interpolacyjnego w bazie potęgowej bezpośrednio z tego układu, stosując | ||
jedną ze znanych nam już metod kosztowałoby rzędu <math>\displaystyle n^3</math> operacji | jedną ze znanych nam już metod, kosztowałoby rzędu <math>\displaystyle n^3</math> operacji | ||
arytmetycznych. Co gorsza, w często spotykanym przypadku, gdy węzły interpolacji | arytmetycznych. Co gorsza, w często spotykanym przypadku, gdy węzły interpolacji | ||
są równoodległe, ta macierz jest bardzo źle uwarunkowana! | są równoodległe, ta macierz jest bardzo źle uwarunkowana! | ||
===Baza Newtona=== | |||
Rozwiązaniem pośrednim, które łączy prostotę obliczenia | Rozwiązaniem pośrednim, które łączy prostotę obliczenia | ||
współczynników z prostotą obliczenia wartości <math>\displaystyle w_f(x)</math> i ewentualnie jego | współczynników z prostotą obliczenia wartości <math>\displaystyle w_f(x)</math> i ewentualnie jego | ||
pochodnych, | pochodnych, jest wybór <strong>bazy Newtona</strong>, | ||
jest wybór bazy Newtona, | |||
<center><math>\displaystyle \aligned p_0(x) &= 1, \\ | <center><math>\displaystyle \aligned p_0(x) &= 1, \\ | ||
Linia 270: | Linia 259: | ||
algorytmu Hornera: | algorytmu Hornera: | ||
{{algorytm|Algorytm Hornera dla bazy Newtona|| | {{algorytm|Algorytm Hornera dla bazy Newtona|Algorytm Hornera dla bazy Newtona| | ||
<pre> | <pre><math>\displaystyle v_n = b_n;</math> | ||
<math>\displaystyle v_n = b_n;</math> | |||
for (j=n-1; j >= 0 ; j--) | for (j=n-1; j >= 0 ; j--) | ||
<math>\displaystyle v_j\, = \,v_{j+1}\cdot (x-x_j)\,+\,b_j</math>; | <math>\displaystyle v_j\, = \,v_{j+1}\cdot (x-x_j)\,+\,b_j</math>; | ||
Linia 294: | Linia 281: | ||
Zachodzi następujące ważne twierdzenie. | Zachodzi następujące ważne twierdzenie. | ||
{{twierdzenie|O różnicach dzielonych|| | {{twierdzenie|O różnicach dzielonych|O różnicach dzielonych| | ||
Współczynniki <math>\displaystyle b_j</math> wielomianu | Współczynniki <math>\displaystyle b_j</math> wielomianu | ||
Linia 315: | Linia 302: | ||
</math></center> | </math></center> | ||
Aby ją pokazać, | Aby ją pokazać wystarczy, że prawa strona tej równości, którą | ||
oznaczymy przez <math>\displaystyle v(x)</math>, przyjmuje wartości <math>\displaystyle f(x_s)</math> dla <math>\displaystyle x=x_s</math>, | oznaczymy przez <math>\displaystyle v(x)</math>, przyjmuje wartości <math>\displaystyle f(x_s)</math> dla <math>\displaystyle x=x_s</math>, | ||
<math>\displaystyle i\le s\le j</math>. Rzeczywiście, jeśli <math>\displaystyle i+1\le s\le j-1</math> to | <math>\displaystyle i\le s\le j</math>. Rzeczywiście, jeśli <math>\displaystyle i+1\le s\le j-1</math> to | ||
Linia 359: | Linia 346: | ||
}} | }} | ||
Różnicę dzieloną <math>\displaystyle f(x_0,x_1,\ldots,x_n)</math> | Różnicę dzieloną <math>\displaystyle f(x_0,x_1,\ldots,x_n)</math> można łatwo | ||
obliczyć na podstawie wartości <math>\displaystyle f(x_j)</math>, <math>\displaystyle 0\le j\le n</math>, | obliczyć na podstawie wartości <math>\displaystyle f(x_j)</math>, <math>\displaystyle 0\le j\le n</math>, | ||
budując następującą tabelkę: | budując następującą tabelkę: | ||
Linia 372: | Linia 359: | ||
</math></center> | </math></center> | ||
<div class="thumb | <div class="center"><div class="thumb tnone"><div style="width:552px;"><flash>file=Interpolacja.swf|width=550|height=300</flash> <div class="thumbcaption">Wyznaczenie wielomianu <math>\displaystyle w</math> interpolującego zestaw punktów <math>\displaystyle (0,2)\displaystyle (1,5)\displaystyle (-1,7)</math> algorytmem różnic dzielonych</div></div></div></div> | ||
Zauważmy przy tym, że "po drodze" obliczamy | Zauważmy przy tym, że "po drodze" obliczamy | ||
<math>\displaystyle f(x_i,x_{i+1},\ldots,x_j)</math> dla wszystkich <math>\displaystyle 0\le i < j\le n</math>, a więc | <math>\displaystyle f(x_i,x_{i+1},\ldots,x_j)</math> dla wszystkich <math>\displaystyle 0\le i < j\le n</math>, a więc | ||
w szczególności również interesujące nas różnice dzielone | w szczególności również interesujące nas różnice dzielone | ||
<math>\displaystyle f(x_0,x_1,\ldots,x_j)</math>. Stąd i z twierdzenia o różnicach dzielonych | <math>\displaystyle f(x_0,x_1,\ldots,x_j)</math>. Stąd i z twierdzenia o różnicach dzielonych | ||
wynika algorytm obliczania współczynników | wynika algorytm obliczania współczynników | ||
<math>\displaystyle b_j</math> wielomianu interpolacyjnego w bazie Newtona. | <math>\displaystyle b_j</math> wielomianu interpolacyjnego w bazie Newtona. | ||
Po wykonaniu następującego algorytmu, | Po wykonaniu następującego algorytmu, | ||
{{algorytm|Metoda różnic dzielonych|| | {{algorytm|Metoda różnic dzielonych|Metoda różnic dzielonych| | ||
<pre> | <pre>for (j = 0; j <= n; j++) | ||
for (j = 0; j <= n; j++) | |||
<math>\displaystyle b_j</math> = <math>\displaystyle f(x_j)</math>; | <math>\displaystyle b_j</math> = <math>\displaystyle f(x_j)</math>; | ||
for (j = 0; j <= n; j++) | for (j = 0; j <= n; j++) | ||
Linia 396: | Linia 381: | ||
początku tego wykładu, zgadłbyś, do czego może służyć?! | początku tego wykładu, zgadłbyś, do czego może służyć?! | ||
<div class="thumb | <div class="center"><div class="thumb tnone"><div style="width:552px;"><flash>file=Interpolacjainsitu.swf|width=550|height=300</flash> <div class="thumbcaption">Wyznaczenie tego samego wielomianu <math>\displaystyle w</math>, interpolującego zestaw punktów <math>\displaystyle (0,2)\displaystyle (1,5)\displaystyle (-1,7)</math> algorytmem różnic dzielonych --- wykonanym tym razem ''in situ''.</div></div></div></div> | ||
Okazuje się, że przy realizacji w <math>\displaystyle fl_\nu</math> | Okazuje się, że przy realizacji w <math>\displaystyle fl_\nu</math> | ||
algorytmu różnic dzielonych istotną rolę odgrywa porządek | algorytmu różnic dzielonych istotną rolę odgrywa porządek | ||
węzłów. Można pokazać, że algorytm liczenia <math>\displaystyle f(t_0,\ldots,t_n)</math> | węzłów. Można pokazać, że --- o ile węzły są uporządkowane nierosnąco lub | ||
niemalejąco --- algorytm liczenia <math>\displaystyle f(t_0,\ldots,t_n)</math> | |||
jest numerycznie poprawny ze względu na dane interpolacyjne | jest numerycznie poprawny ze względu na dane interpolacyjne | ||
<math>\displaystyle f^{(i)}( | <math>\displaystyle f(t_j)</math>, a cały algorytm różnic dzielonych daje w arytmetyce <math>\displaystyle fl_\nu</math> współczynniki wielomianu interpolacyjnego, będące niewiekim zaburzeniem wartości dokładnych. | ||
==Uwarunkowanie== | |||
Danymi w zadaniu interpolacji są zarówno wartości interpolowanej funkcji, jak i | |||
węzły interpolacji. Traktując węzły jako sztywno zadane parametry zadania i dopuszczając jedynie zaburzenia wartości funkcji, można pokazać, że jeśli zamiast <math>\displaystyle f</math> rozpatrzyć jej zaburzenie <math>\displaystyle f+\Delta f</math>, gdzie <math>\displaystyle |\Delta f| \leq \epsilon</math>, to | |||
<center><math>\displaystyle |w_f(x) - w_{f+\Delta f}(x)| \leq \mbox{cond} (x,f)|w_f(x)|\epsilon, | |||
</math></center> | |||
gdzie | |||
<center><math>\displaystyle \mbox{cond} (x,f) = \frac{\sum_{j=0}^n |l_j(x) f(x_j)|}{|p_n(x)|} \geq 1. | |||
</math></center> | |||
Znacznie rzadziej rozważa się uwarunkowanie zadania interpolacji ze względu na zaburzenie węzłów. Warto zaznaczyć, że zaburzenie danych interpolacji tylko w jednym punkcie może mieć wpływ na przebieg całego wielomianu interpolacyjnego, co ukazuje poniższy przykład: | |||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | |||
<span style="font-variant:small-caps;">Przykład</span> | |||
<div class="solution" style="margin-left,margin-right:3em;"> | |||
Pokażemy zmianę kilku bazowych wielomianów Lagrange'a stopnia 10 (dla węzłów równoodległych w <math>\displaystyle [0,1]</math>) w sytuacji, gdy trzeci węzeł interpolacji zostanie zaburzony o 0.01. | |||
[[Image:MNlagrangebasis.png|thumb|550px|center|Wybrane wielomiany bazowe Lagrange'a oparte na węzłach równoodległych (zielone) kontra te same wielomiany, oparte na tych samych węzłach, z jednym wyjątkiem: węzeł <math>\displaystyle x_3 = 0.2</math> został zmieniony na <math>\displaystyle x_3 = 0.21</math> (czerwone).]] | |||
Jak widać, to ''lokalne'' zaburzenie danych może powodować wyraźne ''globalne'' zaburzenie całego wielomianu interpolacyjnego (zwróć uwagę na prawy koniec przedziału!). | |||
</div></div> | |||
==Biblioteki== | |||
MATLAB i Octave mają wbudowaną funkcję wyznaczającą wielomian, interpolujący zadane wartości: jeśli <code style="color: #006">x</code> jest wektorem zawierającym <math>\displaystyle N</math> węzłów, a <code style="color: #006">y</code> --- wektorem zawierającym wartości w węzłach, to | |||
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>c = polyfit(x,y,N-1); | |||
</pre></div> | |||
daje współczynniki wielomianu interpolacyjnego (Ostatni argument jest równy <math>\displaystyle N-1</math>, bo taki powinien być stopień wielomianu interpolacyjnego Lagrange'a!). | |||
Co ciekawe (i budzące trochę zgrozy!) --- wielomian (zarówno w MATLABie, jak w Octave) jest wyznaczany w bazie naturalnej, przez rozwiązanie układu równań z macierzą Vandermonde'a, a więc w sposób najgorszy z możliwych. Nie sądzisz, że czas najwyższy, aby to zmienić? Napisz odpowiedni kod i wyślij do [http://octave.sf.net Octave-forge]! | |||
Aby teraz wyznaczyć wartości takiego wielomianu w zadanych punktach <math>\displaystyle X</math>, także musimy użyć specjalnej funkcji, | |||
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>Y = polyval(c,X); | |||
</pre></div> | |||
Domyślamy się, że implementuje ona algorytm Hornera. | |||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | |||
<span style="font-variant:small-caps;">Przykład</span> | |||
<div class="solution" style="margin-left,margin-right:3em;"> | |||
Interpolujemy tabelkę | |||
{| border=1 | |||
|+ <span style="font-variant:small-caps"> </span> | |||
|- | |||
| <math>\displaystyle x</math> || 2 || 1 || 0 | |||
|- | |||
| <math>\displaystyle y</math> || 5 || 2 || 1 | |||
|} | |||
wielomianem stopnia co najwyżej 2. | |||
<div style="font-family: monospace; white-space: pre; border-style: dashed; border-width: thin; border-color: black; margin: 1em; padding:1em; color: #444; background-color:#fdfdfd;"><nowiki>octave:1> x = [2, 1, 0] | |||
x = | |||
2 1 0 | |||
octave:2> y = [5, 2, 1] | |||
y = | |||
5 2 1 | |||
octave:3> c = polyfit(x,y,2) | |||
c = | |||
1 0 1 | |||
octave:4> polyval(c,3) | |||
ans = 10 | |||
</nowiki></div> | |||
Zgodnie z przewidywaniami, otrzymaliśmy wielomian <math>\displaystyle 1\cdot x^2 + 0\cdot x + 1</math>. | |||
Wartość tego wielomianu dla <math>\displaystyle x=3</math> rzeczywiście jest równa 10. | |||
A co się stanie, gdy będziemy szukać wielomianu stopnia niższego? | |||
<div style="font-family: monospace; white-space: pre; border-style: dashed; border-width: thin; border-color: black; margin: 1em; padding:1em; color: #444; background-color:#fdfdfd;"><nowiki>octave:6> c1 = polyfit(x,y,1) | |||
c1 = | |||
2.00000 0.66667 | |||
</nowiki></div> | |||
Też "coś" zostało obliczone --- wielomian (jak domyślamy się) <math>\displaystyle 2\cdot x + \frac{2}{3}</math>. Nie dziwi, że ten wielomian nie jest wielomianem interpolacyjnym (dlaczego?) --- więc czym może być? Okazuje się, że to coś to wielomian nalepiej pasujący do danych w sensie \link{sec:lznk}{aproksymacji średniokwadratowej}, o czym będzie mowa w innym wykładzie. | |||
Warto jeszcze może wiedzieć, że <code style="color: #006">polyfit</code> można także wywołać dla jeszcze wyższego stopnia wielomianu, jednak, co niespodziewane, wynikiem ''nie będzie'' wielomian stopnia 2, uzyskany poprzednio: | |||
<div style="font-family: monospace; white-space: pre; border-style: dashed; border-width: thin; border-color: black; margin: 1em; padding:1em; color: #444; background-color:#fdfdfd;"><nowiki>octave:7> c3 = polyfit(x,y,3) | |||
c3 = | |||
0.21429 0.35714 0.42857 1.00000 | |||
</nowiki></div> | |||
Wynika to stąd, że gdy dopuszczalny stopień wielomianu jest wyższy niż wymagany w zadaniu interpolacji Lagrange'a, zadanie interpolacji ma nieskończenie wiele rozwiązań. Funkcja <code style="color: #006">polyfit</code> wybiera z nich to, które spełnia warunek, że ''norma euklidesowa wektora współczynników wielomianu jest najmniejsza z możliwych''. | |||
</div></div> | |||
Pragnąc wykorzystać interpolację we własnym programie w C, najlepiej samemu zaprogramować bądź drugi wzór barycentryczny, bądź algorytm różnic dzielonych --- w zależności od potrzeb. | |||
==Przypadek węzłów wielokrotnych== | ==Przypadek węzłów wielokrotnych== | ||
Linia 424: | Linia 511: | ||
rozwiązanie. | rozwiązanie. | ||
}} | }} | ||
{{dowod||| | {{dowod||| | ||
Linia 470: | Linia 555: | ||
stosując schemat podobny do tego z przypadku węzłów jednokrotnych. | stosując schemat podobny do tego z przypadku węzłów jednokrotnych. | ||
{{twierdzenie||| | {{twierdzenie|O różnicach dzielonych dla interpolacji Hermite'a|O różnicach dzielonych dla interpolacji Hermite'a| | ||
Współczynniki <math>\displaystyle b_j</math> wielomianu interpolacyjnego | Współczynniki <math>\displaystyle b_j</math> wielomianu interpolacyjnego | ||
Hermite'a w bazie Newtona, | Hermite'a w bazie Newtona, | ||
Linia 533: | Linia 619: | ||
</math></center> | </math></center> | ||
a stąd <math>\displaystyle b_n=f^{(n)}(x_0) | a stąd <math>\displaystyle b_n=f^{(n)}(x_0)/(n!)=f(\underbrace{x_0,\ldots,x_0}_{n+1})</math>. | ||
Jeśli zaś <math>\displaystyle \bar x_0\ne\bar x_j</math>, to równość | Jeśli zaś <math>\displaystyle \bar x_0\ne\bar x_j</math>, to równość | ||
<math>\displaystyle b_n\,=\,f(\bar x_0,\bar x_1,\ldots,\bar x_n)</math> wynika z wcześniej | <math>\displaystyle b_n\,=\,f(\bar x_0,\bar x_1,\ldots,\bar x_n)</math> wynika z wcześniej | ||
Linia 539: | Linia 625: | ||
}} | }} | ||
<div style="margin-top:1em; padding-top,padding-bottom:1em;"> | |||
<span style="font-variant:small-caps;">Uwaga</span> | |||
<div class="solution" style="margin-left,margin-right:3em;"> | |||
Zauważmy, ze pojęcie różnicy dzielonej | Zauważmy, ze pojęcie różnicy dzielonej | ||
formalnie zdefiniowaliśmy jedynie dla ciągu węzłów postaci | formalnie zdefiniowaliśmy jedynie dla ciągu węzłów postaci | ||
Linia 552: | Linia 641: | ||
</math></center> | </math></center> | ||
</div></div> | |||
==Błąd interpolacji== | ==Błąd interpolacji== | ||
Linia 558: | Linia 647: | ||
Gdy mamy do czynienia z funkcją, która jest | Gdy mamy do czynienia z funkcją, która jest | ||
"skomplikowana", często dobrze jest zastąpić ją | "skomplikowana", często dobrze jest zastąpić ją | ||
funkcją "prostszą". Mówimy wtedy o <strong>aproksymacji | funkcją "prostszą". Mówimy wtedy o <strong>aproksymacji</strong> | ||
funkcji. Funkcję musimy również | |||
aproksymać wtedy, gdy nie jesteśmy w stanie uzyskać | aproksymać wtedy, gdy nie jesteśmy w stanie uzyskać | ||
pełnej o niej informacji. Na przykład, gdy funkcja | pełnej o niej informacji. Na przykład, gdy funkcja | ||
Linia 566: | Linia 655: | ||
tej funkcji w pewnych punktach. Jasne jest, że chcielibyśmy | tej funkcji w pewnych punktach. Jasne jest, że chcielibyśmy | ||
przy tym, aby błąd aproksymacji był możliwie mały. | przy tym, aby błąd aproksymacji był możliwie mały. | ||
Podobnie ma się sprawa w przypadku implementacji funkcji elementarnych (<math>\displaystyle \sin, \exp, ...</math>) w bibliotece funkcji matematycznych, czy wręcz w procesorze. Tam również najchętniej poszukiwalibyśmy sposobu taniego przybliżenia wartości dokładnej funkcji. I rzeczywiście, często w tym celu stosuje się m.in. specjalnie konstruowaną aproksymację wielomianową. | |||
Z tego punktu widzenia, intepolacja wielomianowa może być | Z tego punktu widzenia, intepolacja wielomianowa może być | ||
Linia 581: | Linia 672: | ||
mamy do czynienia z interpolacją Lagrange'a. | mamy do czynienia z interpolacją Lagrange'a. | ||
{{lemat|Postać błędu interpolacji|| | {{lemat|Postać błędu interpolacji|Postać błędu interpolacji| | ||
Dla dowolnego punktu | Dla dowolnego punktu | ||
Linia 673: | Linia 764: | ||
gdzie <math>\displaystyle 0<M<\infty</math>. Mamy następujące twiedzenie. | gdzie <math>\displaystyle 0<M<\infty</math>. Mamy następujące twiedzenie. | ||
{{twierdzenie||| | {{twierdzenie|O najgorszym możliwym błędzie interpolacji w klasie|O najgorszym możliwym błędzie interpolacji w klasie| | ||
Załóżmy, że każdą funkcję | Załóżmy, że każdą funkcję | ||
<math>\displaystyle f\in F^r_M([a,b])</math> aproksymujemy jej wielomianem | <math>\displaystyle f\in F^r_M([a,b])</math> aproksymujemy jej wielomianem | ||
Linia 699: | Linia 791: | ||
Z drugiej strony zauważmy, że dla wielomianu | Z drugiej strony zauważmy, że dla wielomianu | ||
<math>\displaystyle v(x)= | <math>\displaystyle v(x)=M\frac{x^{r+1}}{(r+1)!}</math> mamy <math>\displaystyle v\in F^r_M([a,b])</math> oraz | ||
<center><math>\displaystyle \|v-w_v\|_{ C([a,b])}\,=\,\frac M{(r+1)!}\cdot | <center><math>\displaystyle \|v-w_v\|_{ C([a,b])}\,=\,\frac M{(r+1)!}\cdot | ||
Linia 707: | Linia 799: | ||
co kończy dowód.}} | co kończy dowód.}} | ||
===Zjawisko Rungego=== | |||
Rozważmy zadanie interpolacji funkcji | Rozważmy zadanie interpolacji funkcji | ||
Linia 718: | Linia 808: | ||
w <math>\displaystyle N</math> równoodległych węzłach na przedziale <math>\displaystyle [-5,5]</math>. Okazuje się, że dla dużych wartości <math>\displaystyle N</math>, wielomian interpolacyjny ma poważne kłopoty z aproksymacją tej funkcji przy krańcach przedziału: | w <math>\displaystyle N</math> równoodległych węzłach na przedziale <math>\displaystyle [-5,5]</math>. Okazuje się, że dla dużych wartości <math>\displaystyle N</math>, wielomian interpolacyjny ma poważne kłopoty z aproksymacją tej funkcji przy krańcach przedziału: | ||
[[Image:MNrunge17rowno.png|thumb| | [[Image:MNrunge17rowno.png|thumb|550px|center|Zjawisko Rungego: interpolacja w <math>\displaystyle N=17</math> węzłach równoodległych dla <math>\displaystyle f(x) = \frac{1}{1+x^2}</math>]] | ||
Z kolei wielomian oparty na węzłach Czebyszewa znacznie lepiej przybliża tę funkcję. | Z kolei wielomian oparty na [[#O optymalnym doborze węzłów|węzłach Czebyszewa]] znacznie lepiej przybliża tę funkcję. | ||
[[Image:MNrunge17rownoczeby.png|thumb| | [[Image:MNrunge17rownoczeby.png|thumb|550px|center|Zjawisko Rungego: interpolacja w węzłach równoodległych, kontra interpolacja w węzłach Czebyszewa]] | ||
Rzeczywiście, węzły Czebyszewa zagęszczają się w pobliżu krańców odcinka. | Rzeczywiście, węzły Czebyszewa zagęszczają się w pobliżu krańców odcinka. | ||
[[Image:MNrunge17czeby.png|thumb| | [[Image:MNrunge17czeby.png|thumb|550px|center|Zjawisko Rungego: interpolacja w węzłach Czebyszewa]] | ||
Wiąże się to z zachowaniem się samych wielomianów bazowych: wielomiany oparte na węzłach równoodległych właśnie silnie oscylują w pobliżu krańców przedziału (jasne: nasz wielomian jest wysokiego stopnia, musi mieć dużo zer, a z drugiej strony, jako wielomian wysokiego stopnia, chce szybko uciec do nieskończoności, dlatego "wije się" jak może). Natomiast wielomiany bazowe oparte na węzłach Czebyszewa są \link{thm:minimax}{najspokojniejsze}: wiją się, ale z umiarem, bo zagęszczone przy krańcach węzły skutecznie je "duszą". | |||
</div></div> | </div></div> | ||
Linia 740: | Linia 831: | ||
względem węzłów <math>\displaystyle x_j</math>. | względem węzłów <math>\displaystyle x_j</math>. | ||
{{twierdzenie|O | {{twierdzenie|O optymalnym doborze węzłów|O optymalnym doborze węzłów| | ||
Błąd aproksymacji w klasie funkcji <math>\displaystyle F^r_M([a,b])(x_0,\ | Błąd aproksymacji w klasie funkcji <math>\displaystyle F^r_M([a,b])(x_0,\ldots,x_r)</math> | ||
jest minimalny gdy węzły interpolacji są zadane jako <strong>węzły Czebyszewa</strong> na <math>\displaystyle (a,b)</math>, tzn. | jest minimalny gdy węzły interpolacji są zadane jako <strong>węzły Czebyszewa</strong> na <math>\displaystyle (a,b)</math>, tzn. | ||
Linia 773: | Linia 864: | ||
\endaligned</math></center> | \endaligned</math></center> | ||
[[grafika:Czebyszew.jpg|thumb|right|| Czebyszew<br> [[Biografia Czebyszew|Zobacz biografię]]]] | [[grafika:Czebyszew.jpg|thumb|right||Pafnutij Lwowicz Czebyszew<br> [[Biografia Czebyszew|Zobacz biografię]]]] | ||
Zauważmy, że <math>\displaystyle T_k</math> jest wielomianem stopnia dokładnie | Zauważmy, że <math>\displaystyle T_k</math> jest wielomianem stopnia dokładnie | ||
Linia 793: | Linia 884: | ||
co jest równoważne formule rekurencyjnej dla <math>\displaystyle T_{k+1}</math>. | co jest równoważne formule rekurencyjnej dla <math>\displaystyle T_{k+1}</math>. | ||
[[Image:MNczebyszew.png|thumb| | [[Image:MNczebyszew.png|thumb|550px|center|Kilka pierwszych wielomianów Czebyszewa na odcinku <math>\displaystyle [-1,1]</math>]] | ||
Ze wzoru <math>\displaystyle T_k(x) = \cos(k\arccos x)</math> wynikają również inne ważne | Ze wzoru <math>\displaystyle T_k(x) = \cos(k\arccos x)</math> wynikają również inne ważne | ||
Linia 818: | Linia 909: | ||
</math></center> | </math></center> | ||
Miejsca zerowe wielomianu Czebyszewa będziemy nazywać <strong>węzłami Czebyszewa</strong>. | |||
Konsekwencją wymienionych własności jest następująca własność ekstremalna | Konsekwencją wymienionych własności jest następująca własność ekstremalna | ||
wielomianów Czebyszewa. | wielomianów Czebyszewa. | ||
Linia 828: | Linia 920: | ||
</math></center> | </math></center> | ||
{{twierdzenie| | {{twierdzenie|O minimaksie|O minimaksie| | ||
Niech <math>\displaystyle k\ge 1</math>. W klasie | Niech <math>\displaystyle k\ge 1</math>. W klasie | ||
<math>\displaystyle \overline{\Pi}_k</math> minimalną normę jednostajną na | <math>\displaystyle \overline{\Pi}_k</math> minimalną normę jednostajną na | ||
Linia 840: | Linia 932: | ||
}} | }} | ||
[[Image:MNczebyszewkontrarownoodlegle.png|thumb| | [[Image:MNczebyszewkontrarownoodlegle.png|thumb|550px|center|Wielomian stopnia 9 oparty na węzłach | ||
Czebyszewa kontra oparty na węzłach równoodległych. Zwróć uwagę na wielkie | Czebyszewa kontra oparty na węzłach równoodległych. Zwróć uwagę na wielkie | ||
oscylacje tego drugiego pry końcach odcinka.]] | oscylacje tego drugiego pry końcach odcinka.]] | ||
Linia 881: | Linia 973: | ||
--> | --> | ||
Możemy teraz przeprowadzić dowód twierdzenia [[#O optymalnym doborze węzłów|o optymalnym doborze węzłów]]: | |||
{{dowod| | {{dowod||| | ||
Dowód wynika teraz bezpośrednio z twierdzenia o minimaksie. Zauważmy bowiem, że | |||
Dowód wynika teraz | |||
bezpośrednio z twierdzenia o minimaksie. Zauważmy bowiem, że | |||
wielomian <math>\displaystyle (x-x_0)(x-x_1)\cdots(x-x_r)</math> jest w klasie | wielomian <math>\displaystyle (x-x_0)(x-x_1)\cdots(x-x_r)</math> jest w klasie | ||
<math>\displaystyle \overline\Pi_{r+1}</math>. Stąd dla <math>\displaystyle [a,b]=[-1,1]</math> optymalnymi | <math>\displaystyle \overline\Pi_{r+1}</math>. Stąd dla <math>\displaystyle [a,b]=[-1,1]</math> optymalnymi | ||
Linia 912: | Linia 1002: | ||
i węzły <math>\displaystyle x^*_j</math> są optymalne.}} | i węzły <math>\displaystyle x^*_j</math> są optymalne.}} | ||
Wielomiany Czebyszewa znajdują bardzo wiele czasem zaskakujących zastosowań w różnych działach numeryki, m.in. w konstrukcji metod iteracyjnych rozwiązywania równań liniowych. | Wielomiany Czebyszewa znajdują bardzo wiele, czasem zaskakujących, zastosowań w różnych działach numeryki, m.in. w konstrukcji metod iteracyjnych rozwiązywania równań liniowych. | ||
Równie interesujący jest fakt, że wielomian interpolacyjny oparty na węzłach Czebyszewa jest prawie optymalnym przybliżeniem wielomianowym zadanej funkcji: | Równie interesujący jest fakt, że <strong>wielomian interpolacyjny oparty na węzłach Czebyszewa jest prawie optymalnym przybliżeniem</strong> wielomianowym zadanej funkcji: | ||
{{twierdzenie|Jacksona|| | {{twierdzenie|Jacksona, o prawie optymalnej interpolacji w węzłach Czebyszewa|Jacksona, o prawie optymalnej interpolacji w węzłach Czebyszewa| | ||
Dla <math>\displaystyle f\in C[-1,1]</math> | Dla <math>\displaystyle f\in C[-1,1]</math>, wielomian interpolacyjny <math>\displaystyle w_f</math> stopnia co najwyżej <math>\displaystyle n</math>, oparty na węzłach Czebyszewa, spełnia | ||
<center><math>\displaystyle ||f-w_f||_{C[-1,1]} \leq \left(2+\frac{2}{\pi}\log(n+1)\right) ||f-w_f^*||_{C[-1,1]} | <center><math>\displaystyle ||f-w_f||_{C[-1,1]} \leq \left(2+\frac{2}{\pi}\log(n+1)\right) ||f-w_f^*||_{C[-1,1]} | ||
</math></center> | </math></center> | ||
gdzie <math>\displaystyle w_f^*</math> jest wielomianem stopnia co najwyżej <math>\displaystyle n</math> najlepiej aproksymującym <math>\displaystyle f</math> w sensie normy jednostajnej. | gdzie <math>\displaystyle w_f^*</math> jest wielomianem stopnia co najwyżej <math>\displaystyle n</math>, najlepiej aproksymującym <math>\displaystyle f</math> w sensie normy jednostajnej. | ||
}} | }} | ||
Linia 958: | Linia 1048: | ||
--> | --> | ||
Jeśli więc <math>\displaystyle n \leq 5</math>, to wielomian oparty na węzłach Czebyszewa jest co najwyżej 3.02 razy, a gdy <math>\displaystyle n \leq 20</math> | Jeśli więc <math>\displaystyle n \leq 5</math>, to wielomian oparty na węzłach Czebyszewa jest co najwyżej 3.02 razy, a gdy <math>\displaystyle n \leq 20</math> --- maksymalnie 4 razy gorszy od optymalnego. Można więc powiedzieć, że jest ''prawie optymalny''. | ||
==Literatura== | |||
W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj <b>rozdział 6.1--6.3</b> w | |||
* D. Kincaid, W. Cheney <cite>Analiza numeryczna</cite>, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X. |
Wersja z 19:37, 29 wrz 2006
Interpolacja wielomianowa
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Zadanie interpolacji, czyli poprowadzenia krzywej zadanego rodzaju przez zestaw danych punktów, jest jednym z podstawowych zadań obliczeniowych. Stosuje się je nagminnie w najróżniejszych dziedzinach życia, np. wtedy, gdy trzeba
- na podstawie próbki sygnału dźwiękowego (to znaczy: ciągu wartości amplitud sygnału zmierzonych w kolejnych odstępach czasu), odtworzyć jego przebieg;
- przybliżyć wykres skomplikowanej (lub wręcz nieznanej) funkcji na podstawie jej wartości uprzednio stablicowanych w wybranych punktach;
Interpolację stosuje się szczególnie chętnie w samej numeryce. Na przykład idea metody siecznych polega na tym, by funkcję, której miejsca zerowego szukamy, przybliżyć prostą interpolującą tę funkcję w dwóch punktach. Metody numerycznego całkowania oraz rozwiązywania równań różniczkowych także korzystają z interpolacji.

Niech Parser nie mógł rozpoznać (nieznana funkcja „\subsetR”): {\displaystyle \displaystyle D\subsetR} i niech będzie pewnym zbiorem funkcji Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle f:D\toR} . Niech będzie ustalonym zbiorem parami różnych punktów z , zwanych później węzłami.
Powiemy, że wielomian interpoluje funkcję w węzłach , gdy
Oznaczmy przez przestrzeń liniową wielomianów stopnia co najwyżej o współczynnikach rzeczywistych,
Zadanie znalezienia wielomianu interpolującego zadane wartości nazywamy zadaniem interpolacji Lagrange'a.
Twierdzenie o istnieniu i jednoznaczności zadania interpolacji Lagrange'a
Dla dowolnej funkcji Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle f:D\toR} istnieje dokładnie jeden wielomian interpolujący w węzłach , .
Dowód
Wybierzmy w dowolną bazę wielomianów , ,
Wtedy każdy wielomian z można jednoznacznie przedstawić w postaci rozwinięcia względem wybranej bazy. Warunkiem koniecznym i dostatecznym na to, aby wielomian interpolował jest spełnienie układu równań liniowych
z niewiadomymi , który w postaci macierzowej wygląda następująco:
Aby wykazać, że układ ten ma jednoznaczne rozwiązanie [[Algebra liniowa z geometrią analityczną/Wykład 8: Zastosowania wyznacznika. Układy równań liniowych|wystarczy, aby wektor zerowy był jedynym rozwiązaniem układu jednorodnego]]. Rzeczywiście, układ jednorodny odpowiada interpolacji danych zerowych, , . Istnienie niezerowego rozwiązania byłoby więc równoważne istnieniu niezerowego wielomianu stopnia nie większego od , który miałby różnych zer , co jest niemożliwe.

Zadanie znalezienia dla danej funkcji jej wielomianu interpolacyjnego stopnia co najwyżej jest więc dobrze zdefiniowane, tzn. rozwiązanie istnieje i jest wyznaczone jednoznacznie. Zauważmy, że wielomian interpolacyjny jako taki nie może być wynikiem obliczeń w naszym modelu obliczeniowym. Możemy natomiast wyznaczyć jego współczynniki w wybranej bazie.
Definicja
Niech będzie bazą w przestrzeni wielomianów stopnia co najwyżej . Zadanie interpolacji wielomianowej polega na obliczeniu dla danej funkcji współczynników takich, że wielomian
interpoluje w punktach , .
Wybór bazy wielomianowej
Jak już wiemy, zadanie interpolacji Lagrange'a sprowadza się do rozwiązania układu równań liniowych. Okazuje się, że w zależności od wyboru sposobu reprezentacji naszego wielomianu (czyli od wyboru bazy wielomianowej ), układ ten może być albo bardzo łatwy do rozwiązania, albo bardzo trudny. Co więcej, jego rozwiązanie w arytmetyce może napotykać na większe bądź mniejsze trudności (w zależności np. od uwarunkowania macierzy układu, który musimy rozwiązać).
W matematyce, jeden byt może być opisany na wiele równoważnych sposobów. W numeryce, każdy z nich może mieć diametralnie różne własności numeryczne: od odporności na błędy zaokrągleń, po koszt rozwiązania.
Dlatego, optymalizacja algorytmów numerycznych zaczyna się często od wyrażenia tego samego --- inaczej.
W naturalny sposób powstaje więc problem wyboru "wygodnej" bazy w . Rozpatrzymy trzy bazy: Lagrange'a, potęgową i Newtona.
Baza Lagrange'a (kanoniczna)
Zdefiniujmy dla wielomiany
Zauważmy, że każdy z jest stopnia dokładnie oraz
Teraz widać, że wielomiany te stanowią bazę w , którą nazywamy bazą Lagrange'a. Macierz układu zadania interpolacji jest w takim wypadku identycznością i w konsekwencji , . Wielomian interpolacyjny dla funkcji można więc zapisać jako
Koszt kombinatoryczny rozwiązania zadania interpolacji jest przy tym zerowy.
Wzory barycentryczne
Przypuśćmy, że chcielibyśmy obliczyć wartość wielomianu interpolacyjnego w punkcie różnym od , . Podstawiając
oraz mamy pierwszy wzór barycentryczny
i ostatecznie dostajemy tzw. drugi wzór barycentryczny na wielomian interpolacyjny,
gdzie . W ostatniej równości wykorzystaliśmy fakt, że , co łatwo widzieć, rozpatrując zadanie interpolacji funkcji . Drugi wzór barycentryczny jest korzystniejszy w implementacji.
Dla wielu układów węzłów, wagi są zadane jawnymi wzorami, np. dla węzłów równoodległych (niezależnie od tego, na jakim odcinku!) wagi w drugim wzorze barycentrycznym wynoszą po prostu
Również dla \link{wCzeb}{węzłów Czebyszewa}istnieją eleganckie wzory na takie współczynnki.
Można pokazać, że wartość wielomianu iterpolacyjnego obliczona w arytmetyce według pierwszego wzoru barycentrycznego spełnia
gdzie , a więc jest to algorytm numerycznie poprawny. Zachowanie drugiej postaci wzoru barycentrycznego w arytmetyce jest nieco bardziej skomplikowane.
Baza potęgowa (naturalna)
Znacznie prościej można obliczyć wartość wielomianu interpolacyjnego, (a także jego pochodnych), gdy jest on dany w najczęściej używanej bazie potęgowej, , . Jeśli bowiem
to również
co sugeruje zastosowanie następującego schematu Hornera do obliczenia :
Algorytm Algorytm Hornera
<math>\displaystyle v_n = a_n;</math> for (j=n-1; j >= 0 ; j--) <math>\displaystyle v_j\, = \,v_{j+1}\cdot x\,+\,a_j</math>;
Po wykonaniu tego algorytmu . Schemat Hornera wymaga wykonania tylko mnożeń i dodawań. Ma on również głębszy sens, bo jego produktem ubocznym mogą być także wartości pochodnych naszego wielomianu w . Algorytm Hornera okazuje się optymalny. Każdy inny algorytm obliczający dokładną wartość wielomianu, gdy danymi są współczynniki wielomianu, wymaga wykonania co najmniej mnożeń i dodawań. Algorytm Hornera jest też numerycznie poprawny.
Zauważmy jednak, że w przypadku bazy potęgowej macierz układu zadania interpolacji jest pełna. Jest to tzw. macierz Vandermonde'a. Obliczenie współczynników wielomianu interpolacyjnego w bazie potęgowej bezpośrednio z tego układu, stosując jedną ze znanych nam już metod, kosztowałoby rzędu operacji arytmetycznych. Co gorsza, w często spotykanym przypadku, gdy węzły interpolacji są równoodległe, ta macierz jest bardzo źle uwarunkowana!
Baza Newtona
Rozwiązaniem pośrednim, które łączy prostotę obliczenia współczynników z prostotą obliczenia wartości i ewentualnie jego pochodnych, jest wybór bazy Newtona,
W tym przypadku współczynniki rozwinięcia wielomianu interpolacyjnego będziemy oznaczać przez ,
Zwróćmy od razu uwagę na ważną własność bazy Newtona. Jeśli jest wielomianem interpolacyjnym dla funkcji opartym na węzłach , , to oraz
Wartość możemy obliczyć, stosując prostą modyfikację algorytmu Hornera:
Algorytm Algorytm Hornera dla bazy Newtona
<math>\displaystyle v_n = b_n;</math> for (j=n-1; j >= 0 ; j--) <math>\displaystyle v_j\, = \,v_{j+1}\cdot (x-x_j)\,+\,b_j</math>;
Ponadto układ równań zadania interpolacji jest trójkątny dolny, o specyficznej strukturze, dzięki czemu można stworzyć elegancki algorytm, który teraz przedstawimy.
Algorytm różnic dzielonych
Różnicę dzieloną funkcji opartą na różnych węzłach , gdzie , definiuje się indukcyjnie jako
Zachodzi następujące ważne twierdzenie.
Twierdzenie O różnicach dzielonych
Współczynniki wielomianu interpolacyjnego Newtona dla danej funkcji dane są przez różnice dzielone w węzłach , tzn.
Dowód
Dla , oznaczmy przez wielomian z interpolujący w węzłach . Wtedy ma miejsce następująca równość ():
Aby ją pokazać wystarczy, że prawa strona tej równości, którą oznaczymy przez , przyjmuje wartości dla , . Rzeczywiście, jeśli to
Ponadto
oraz podobnie . Stąd jest wielominem z interpolującym w węzłach , , czyli .
Dalej postępujemy indukcyjnie ze względu na stopień wielomianu interpolacyjnego. Dla mamy oczywiście . Niech . Ponieważ, jak łatwo zauważyć,
z założenia indukcyjnego mamy dla . Aby pokazać podobną równość dla , zauważmy, że
Zauważmy teraz, że jest współczynnikiem przy w wielomianie . Z założenia indukcyjnego wynika, że współczynniki przy w wielomianach i są ilorazami różnicowymi opartymi odpowiednio na węzłach i . Stąd
co kończy dowód.

Różnicę dzieloną można łatwo obliczyć na podstawie wartości , , budując następującą tabelkę:
Zauważmy przy tym, że "po drodze" obliczamy dla wszystkich , a więc w szczególności również interesujące nas różnice dzielone . Stąd i z twierdzenia o różnicach dzielonych wynika algorytm obliczania współczynników wielomianu interpolacyjnego w bazie Newtona. Po wykonaniu następującego algorytmu,
Algorytm Metoda różnic dzielonych
for (j = 0; j <= n; j++) <math>\displaystyle b_j</math> = <math>\displaystyle f(x_j)</math>; for (j = 0; j <= n; j++) for (k = n; k >= j; k--) <math>\displaystyle b_j</math> = <math>\displaystyle (b_k-b_{k-1})/(x_k - x_{k-j})</math>;
współczynniki na końcu algorytmu zawierają wspólczynniki wielomianu interpolacyjnego w bazie Newtona. Czy gdybyś zobaczył ten algorytm na samym początku tego wykładu, zgadłbyś, do czego może służyć?!
Okazuje się, że przy realizacji w algorytmu różnic dzielonych istotną rolę odgrywa porządek węzłów. Można pokazać, że --- o ile węzły są uporządkowane nierosnąco lub niemalejąco --- algorytm liczenia jest numerycznie poprawny ze względu na dane interpolacyjne , a cały algorytm różnic dzielonych daje w arytmetyce współczynniki wielomianu interpolacyjnego, będące niewiekim zaburzeniem wartości dokładnych.
Uwarunkowanie
Danymi w zadaniu interpolacji są zarówno wartości interpolowanej funkcji, jak i węzły interpolacji. Traktując węzły jako sztywno zadane parametry zadania i dopuszczając jedynie zaburzenia wartości funkcji, można pokazać, że jeśli zamiast rozpatrzyć jej zaburzenie , gdzie , to
gdzie
Znacznie rzadziej rozważa się uwarunkowanie zadania interpolacji ze względu na zaburzenie węzłów. Warto zaznaczyć, że zaburzenie danych interpolacji tylko w jednym punkcie może mieć wpływ na przebieg całego wielomianu interpolacyjnego, co ukazuje poniższy przykład:
Przykład
Pokażemy zmianę kilku bazowych wielomianów Lagrange'a stopnia 10 (dla węzłów równoodległych w ) w sytuacji, gdy trzeci węzeł interpolacji zostanie zaburzony o 0.01.

Jak widać, to lokalne zaburzenie danych może powodować wyraźne globalne zaburzenie całego wielomianu interpolacyjnego (zwróć uwagę na prawy koniec przedziału!).
Biblioteki
MATLAB i Octave mają wbudowaną funkcję wyznaczającą wielomian, interpolujący zadane wartości: jeśli x
jest wektorem zawierającym węzłów, a y
--- wektorem zawierającym wartości w węzłach, to
c = polyfit(x,y,N-1);
daje współczynniki wielomianu interpolacyjnego (Ostatni argument jest równy , bo taki powinien być stopień wielomianu interpolacyjnego Lagrange'a!).
Co ciekawe (i budzące trochę zgrozy!) --- wielomian (zarówno w MATLABie, jak w Octave) jest wyznaczany w bazie naturalnej, przez rozwiązanie układu równań z macierzą Vandermonde'a, a więc w sposób najgorszy z możliwych. Nie sądzisz, że czas najwyższy, aby to zmienić? Napisz odpowiedni kod i wyślij do Octave-forge!
Aby teraz wyznaczyć wartości takiego wielomianu w zadanych punktach , także musimy użyć specjalnej funkcji,
Y = polyval(c,X);
Domyślamy się, że implementuje ona algorytm Hornera.
Przykład
Interpolujemy tabelkę
2 | 1 | 0 | |
5 | 2 | 1 |
wielomianem stopnia co najwyżej 2.
Zgodnie z przewidywaniami, otrzymaliśmy wielomian . Wartość tego wielomianu dla rzeczywiście jest równa 10.
A co się stanie, gdy będziemy szukać wielomianu stopnia niższego?
Też "coś" zostało obliczone --- wielomian (jak domyślamy się) . Nie dziwi, że ten wielomian nie jest wielomianem interpolacyjnym (dlaczego?) --- więc czym może być? Okazuje się, że to coś to wielomian nalepiej pasujący do danych w sensie \link{sec:lznk}{aproksymacji średniokwadratowej}, o czym będzie mowa w innym wykładzie.
Warto jeszcze może wiedzieć, że polyfit
można także wywołać dla jeszcze wyższego stopnia wielomianu, jednak, co niespodziewane, wynikiem nie będzie wielomian stopnia 2, uzyskany poprzednio:
Wynika to stąd, że gdy dopuszczalny stopień wielomianu jest wyższy niż wymagany w zadaniu interpolacji Lagrange'a, zadanie interpolacji ma nieskończenie wiele rozwiązań. Funkcja polyfit
wybiera z nich to, które spełnia warunek, że norma euklidesowa wektora współczynników wielomianu jest najmniejsza z możliwych.
Pragnąc wykorzystać interpolację we własnym programie w C, najlepiej samemu zaprogramować bądź drugi wzór barycentryczny, bądź algorytm różnic dzielonych --- w zależności od potrzeb.
Przypadek węzłów wielokrotnych
Uogólnieniem rozpatrzonego zadania interpolacji jest zadanie interpolacji Hermite'a. Zakładamy, że oprócz (różnych) węzłów dane są również ich krotności , , przy czym . Należy skonstruować wielomian taki, że
Oczywiście zakładamy przy tym, że odpowiednie pochodne funkcji istnieją.
Lemat
Zadanie interpolacji Hermite'a ma jednoznaczne rozwiązanie.
Dowód
Istnienie i jednoznaczność rozwiązania można uzasadnić tak samo jak w przypadku węzłów jednokrotnych. Przedstawiając wielomian w dowolnej bazie otrzymujemy układ równań z niewiadomymi, który dla zerowej prawej strony ma jedynie rozwiązanie zerowe. Inaczej bowiem istniałby wielomian niezerowy stopnia nie większego niż , który miałby zera o łącznej krotności większej niż .

Nas oczywiście interesuje konstrukcja wielomianu . W tym celu ustawimy węzły w ciąg
i zdefiniujemy uogólnioną bazę Newtona w jako
Uogólnimy również pojęcie różnicy dzielonej na węzły powtarzające się, kładąc
dla , oraz
dla . Zauważmy, że przy tej definicji różnice możemy łatwo obliczyć stosując schemat podobny do tego z przypadku węzłów jednokrotnych.
Twierdzenie O różnicach dzielonych dla interpolacji Hermite'a
Współczynniki wielomianu interpolacyjnego Hermite'a w bazie Newtona,
dane są przez odpowiednie różnice dzielone, tzn.
Dowód
Dowód przeprowadzimy podobnie jak dla węzłów jednokrotnych. Niech oznacza wielomian interpolacyjny Hermite'a oparty na (być może powtarzających się) węzłach . To znaczy, interpoluje w węzłach takich, że występuje w ciągu , a jego krotność jest liczbą powtórzeń w tym ciągu.
Zauważmy najpierw, że dla zachodzi znany nam już wzór,
Rzeczywiście, oznaczmy przez prawą stronę powyższej równości. Dla mniejszego od krotności danego węzła w ciągu , mamy , a ponieważ
to
Korzystając z tego wzoru sprawdzamy, że spełnia odpowiednie warunki interpolacyjne, a stąd .
Dalej postępujemy indukcyjnie ze względu na . Dla mamy . Dla wystarczy pokazać, że . W tym celu rozpatrzymy dwa przypadki.
Jeśli , to mamy jeden węzeł o krotności . Wielomian interpolacyjny jest wtedy postaci
a stąd . Jeśli zaś , to równość wynika z wcześniej wyprowadzonych wzorów oraz z założenia indukcyjnego.

Uwaga
Zauważmy, ze pojęcie różnicy dzielonej formalnie zdefiniowaliśmy jedynie dla ciągu węzłów postaci , gdzie są parami różne. Tą definicję można rozszerzyć do dowolnego ciągu węzłów. Można bowiem powiedzieć, że jest współczynnikiem przy wielomianu interpolującego w węzłach (uwzględniając krotności). Równoważnie,
Błąd interpolacji
Gdy mamy do czynienia z funkcją, która jest "skomplikowana", często dobrze jest zastąpić ją funkcją "prostszą". Mówimy wtedy o aproksymacji funkcji. Funkcję musimy również aproksymać wtedy, gdy nie jesteśmy w stanie uzyskać pełnej o niej informacji. Na przykład, gdy funkcja reprezentuje pewien proces fizyczny, często zdarza się, że dysponujemy jedynie ciągiem próbek, czyli wartościami tej funkcji w pewnych punktach. Jasne jest, że chcielibyśmy przy tym, aby błąd aproksymacji był możliwie mały.
Podobnie ma się sprawa w przypadku implementacji funkcji elementarnych () w bibliotece funkcji matematycznych, czy wręcz w procesorze. Tam również najchętniej poszukiwalibyśmy sposobu taniego przybliżenia wartości dokładnej funkcji. I rzeczywiście, często w tym celu stosuje się m.in. specjalnie konstruowaną aproksymację wielomianową.
Z tego punktu widzenia, intepolacja wielomianowa może być traktowana jako jeden ze sposobów aproksymacji funkcji, opartym na próbkowaniu. Naturalnym staje się więc pytanie o błąd takiej aproksymacji.
Niech będą (niekoniecznie różnymi) węzłami należącymi do pewnego (być może nieskończonego) przedziału Parser nie mógł rozpoznać (nieznana funkcja „\subsetR”): {\displaystyle \displaystyle D\subsetR} . Dla danej funkcji Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle f:D\toR} , przez rozważamy, tak jak w całym wykładzie, wielomian interpolacyjny stopnia co najwyżej interpolujący w zadanych węzłach. W przypadku węzłów wielokrotnych jest to oczywiście wielomian interpolacyjny Hermite'a; gdy węzły są jednokrotne, mamy do czynienia z interpolacją Lagrange'a.
Lemat Postać błędu interpolacji
Dla dowolnego punktu błąd interpolacji w wyraża się wzorem
Jeśli ponadto , czyli pochodna w istnieje i jest ciągła, to
gdzie jest pewnym punktem należącym do najmniejszego przedziału zawierającego punkty .
Dowód
Możemy założyć, że nie jest żadnym z węzłów , . Niech będzie wielomianem interpolacyjnym funkcji opartym na węzłach i dodatkowo na węźle . Mamy wtedy
a ponieważ z warunku interpolacyjnego , to mamy też pierwszą równość w lemacie.
Aby pokazać drugą część lematu, rozpatrzmy funkcję Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle \psi:D\toR} ,
Z warunków interpolacyjnych na wynika, że funkcja ma punkty zerowe o łącznej krotności co najmniej . Wykorzystując twierdzenie Rolle'a wnioskujemy stąd, że ma zera o łącznej krotności co najmniej , ma zera o łącznej krotności co najmniej , itd. W końcu funkcja zeruje się w co najmniej jednym punkcie należącym do najmniejszego przedziału zawierającego . Wobec tego, że , a -sza pochodna wielomianu wynosi , mamy
Stąd

Zwykle interesuje nas nie tyle błąd w ustalonym punkcie , ale na całym przedziale . Zakładając teraz, że przedział jest domknięty, czyli
dla pewnych , błąd ten będziemy mierzyć w normie jednostajnej (Czebyszewa). Dla funkcji ciągłej Parser nie mógł rozpoznać (nieznana funkcja „\toR”): {\displaystyle \displaystyle g:[a,b]\toR} , norma ta jest zdefiniowana jako
Niech , gdzie , będzie klasą funkcji
gdzie . Mamy następujące twiedzenie.
Twierdzenie O najgorszym możliwym błędzie interpolacji w klasie
Załóżmy, że każdą funkcję aproksymujemy jej wielomianem interpolacyjnym opartym na węzłach . Wtedy maksymalny błąd takiej aproksymacji wynosi
Dowód
Oszacowanie górne wynika bezpośrednio z lematu o postaci błędu interpolacji, bowiem dla mamy
Z drugiej strony zauważmy, że dla wielomianu mamy oraz

Zjawisko Rungego
Rozważmy zadanie interpolacji funkcji
w równoodległych węzłach na przedziale . Okazuje się, że dla dużych wartości , wielomian interpolacyjny ma poważne kłopoty z aproksymacją tej funkcji przy krańcach przedziału:

Z kolei wielomian oparty na węzłach Czebyszewa znacznie lepiej przybliża tę funkcję.

Rzeczywiście, węzły Czebyszewa zagęszczają się w pobliżu krańców odcinka.

Wiąże się to z zachowaniem się samych wielomianów bazowych: wielomiany oparte na węzłach równoodległych właśnie silnie oscylują w pobliżu krańców przedziału (jasne: nasz wielomian jest wysokiego stopnia, musi mieć dużo zer, a z drugiej strony, jako wielomian wysokiego stopnia, chce szybko uciec do nieskończoności, dlatego "wije się" jak może). Natomiast wielomiany bazowe oparte na węzłach Czebyszewa są \link{thm:minimax}{najspokojniejsze}: wiją się, ale z umiarem, bo zagęszczone przy krańcach węzły skutecznie je "duszą".
Zauważmy, że błąd aproksymacji w istotny sposób zależy od wyboru węzłów . Naturalne jest więc teraz następujące pytanie: w których punktach przedziału należy obliczać wartości funkcji, aby błąd był minimalny? Problem ten sprowadza się oczywiście do minimalizacji wielkości względem węzłów .
Twierdzenie O optymalnym doborze węzłów
Błąd aproksymacji w klasie funkcji jest minimalny gdy węzły interpolacji są zadane jako węzły Czebyszewa na , tzn.
Ponadto, dla optymalnych węzłów mamy
Dowód tego twierdzenia opiera się na własnościach pewnego ważnego ciągu wielomianów, który teraz przedstawimy.
Wielomiany Czebyszewa
Ciąg wielomianów Czebyszewa (pierwszego rodzaju) zdefiniowany jest indukcyjnie jako

Zobacz biografię
Zauważmy, że jest wielomianem stopnia dokładnie o współczynniku przy równym (). Ponadto wielomian można dla przedstawić w postaci
Rzeczywiście, łatwo sprawdzić, że jest to prawdą dla . Stosując podstawienie , , oraz wzór na sumę cosinusów otrzymujemy dla
co jest równoważne formule rekurencyjnej dla .

Ze wzoru wynikają również inne ważne własności wielomianów Czebyszewa. Norma wielomianu Czebyszewa na wynosi
i jest osiągana w punktach tego przedziału równych
przy czym .
W końcu, -ty wielomian Czebyszewa ma dokładnie pojedynczych zer w równych
Miejsca zerowe wielomianu Czebyszewa będziemy nazywać węzłami Czebyszewa. Konsekwencją wymienionych własności jest następująca własność ekstremalna wielomianów Czebyszewa.
Przez oznaczymy klasę wielomianów stopnia o współczynniku wiodącym równym , tzn.
Twierdzenie O minimaksie
Niech . W klasie minimalną normę jednostajną na przedziale ma wielomian , tzn.

Możemy teraz przeprowadzić dowód twierdzenia o optymalnym doborze węzłów:
Dowód
Dowód wynika teraz bezpośrednio z twierdzenia o minimaksie. Zauważmy bowiem, że wielomian jest w klasie . Stąd dla optymalnymi węzłami są zera wielomianu Czebyszewa, przy których
Jeśli przedział jest inny niż , należy dokonać liniowej zamiany zmiennych tak, aby przeszedł on na . Bezpośrednie sprawdzenie pokazuje, że w klasie minimalną normę Czebyszewa na przedziale ma wielomian
Stąd

Wielomiany Czebyszewa znajdują bardzo wiele, czasem zaskakujących, zastosowań w różnych działach numeryki, m.in. w konstrukcji metod iteracyjnych rozwiązywania równań liniowych.
Równie interesujący jest fakt, że wielomian interpolacyjny oparty na węzłach Czebyszewa jest prawie optymalnym przybliżeniem wielomianowym zadanej funkcji:
Twierdzenie Jacksona, o prawie optymalnej interpolacji w węzłach Czebyszewa
Dla , wielomian interpolacyjny stopnia co najwyżej , oparty na węzłach Czebyszewa, spełnia
gdzie jest wielomianem stopnia co najwyżej , najlepiej aproksymującym w sensie normy jednostajnej.
Jeśli więc , to wielomian oparty na węzłach Czebyszewa jest co najwyżej 3.02 razy, a gdy --- maksymalnie 4 razy gorszy od optymalnego. Można więc powiedzieć, że jest prawie optymalny.
Literatura
W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj rozdział 6.1--6.3 w
- D. Kincaid, W. Cheney Analiza numeryczna, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X.