Tajniki interpolacji, część 5

Czas na kolejny odcinek cyklu. Dziś o ilorazach różnicowych wyższych rzędów. Są one niezbędne do wyznaczenia wielomianu interpolacyjnego wzorem Newtona. Zapraszam do lektury osoby, które interesuje zagadnienie interpolacji. Zastrzegam jednak, że tekst jest bardzo techniczny.

Interpolacja wielomianowa

Zwykły iloraz różnicowy funkcji $f$ zależy od dwóch jej argumentów $x_0,x_1$ i obliczany jest według wzoru\[\frac{f(x_1)-f(x_0)}{x_1-x_0}.\]Pomijam (w całym tekście) niezbędne, lecz oczywiste założenia.

Oznaczmy teraz $[x_0;f]=f(x_0)$. Dalej indukcyjnie określamy iloraz różnicowy rzędu $n$:\[[x_0,x_1,\dots,x_{n-1},x_n;f]=\frac{[x_1,\dots,x_{n-1},x_n;f]-[x_0,x_1,\dots,x_{n-1};f]}{x_n-x_0}.\]Dla przykładu\[[x_0,x_1;f]=\frac{[x_1;f]-[x_0;f]}{x_1-x_0}=\frac{f(x_1)-f(x_0)}{x_1-x_0}\]jest zwykłym ilorazem różnicowym (pierwszego rzędu rzędu). Iloraz $[x_0;f]=f(x_0)$ jest natomiast rzędu zerowego. Dalej:\[[x_0,x_1,x_2;f]=\frac{[x_1,x_2;f]-[x_0,x_1;f]}{x_2-x_0}.\]Ilorazy różnicowe dowolnego rzędu można wyznaczyć z użyciem diagramu trójkątnego

\begin{matrix}\scriptstyle{x_0}&\scriptstyle{f(x_0)}&&&\\ & &\scriptstyle{[x_0,x_1;f]=\frac{f(x_1)-f(x_0)}{x_1-x_0}}&&\\\scriptstyle{x_1}&\scriptstyle{f(x_1)}&&\scriptstyle{[x_0,x_1,x_2;f]=\frac{[x_1,x_2;f]-[x_0,x_1;f]}{x_2-x_0}}&\\ & &\scriptstyle{[x_1,x_2;f]=\frac{f(x_2)-f(x_1)}{x_2-x_1}}&&\scriptstyle{[x_0,x_1,x_2,x_3;f]=\dots}\\ \scriptstyle{x_2}&\scriptstyle{f(x_2)}&&\scriptstyle{[x_1,x_2,x_3;f]=\frac{[x_2,x_3;f]-[x_1,x_2;f]}{x_3-x_1}}&\\ & &\scriptstyle{[x_2,x_3;f]=\frac{f(x_3)-f(x_3)}{x_3-x_2}}&&\\ \scriptstyle{x_3}&\scriptstyle{f(x_3)}&&& \end{matrix}

Dla ilorazów kolejnych rzędów odpowiednio rozszerzamy ten diagram. Aby dostrzec, że jest to bardzo prosty i szybki sposób liczenia, proszę dla funkcji $f(x)=2^x$ wyznaczyć iloraz $[1,2,3,4,5;f].$ Dla kontroli rachunków podam odpowiedź: ma on wartość $\frac{1}{12}.$ Jego obliczenie zajęło mi $40$ sekund.

Ważnym w teorii (lecz zupełnie nieprzydatnym w praktyce) jest wzór wyznacznikowy:
\[
[x_0,\dots,x_n;f]= \frac{\begin{vmatrix} 1&\dots&1\\ x_0&\dots&x_n\\ \vdots&&\vdots\\ x_0^{n-1}&\dots&x_n^{n-1}\\ f(x_0)&\dots&f(x_n) \end{vmatrix}}{\begin{vmatrix} 1&\dots&1\\ x_0&\dots&x_n\\ \vdots&&\vdots\\ x_0^n&\dots&x_n^n \end{vmatrix} }\,.
\]Jego natychmiastową konsekwencją jest symetria ilorazów różnicowych wyższych rzędów:
\[[x_0,x_1,\dots,x_n;f]=[x_{\sigma(0)},x_{\sigma(1)},\dots,x_{\sigma(n)};f]\,,\]gdzie $\sigma$ jest dowolną permutacją zbioru $\{0,1,\dots,n\}$. Istotnie, startując od $[x_0,x_1,\dots,x_n;f]$ w liczniku i mianowniku powyższego wzoru wykonujemy te same inwersje (przestawienia) kolumn, otrzymując $[x_{\sigma(0)},x_{\sigma(1)},\dots,x_{\sigma(n)};f].$ Oczywiście wartość ilorazu nie zmieni się na mocy znanych własności wyznaczników.

Wspomnę jeszcze, że w mianowniku powyższego wzoru wzoru występuje dobrze znany wyznacznik Vandermonde’a.

Na zakończenie kilka słów o terminologii. Po angielsku ilorazy różnicowe wyższych rzędów nazywają się divided differences. Próbowałem kiedyś stosować językową kalkę różnice dzielone będąc niemal pewnym, że w literaturze polskojęzycznej ta nazwa jest powszechnie obecna. Jednak nie. Mówi się zwyczajnie o ilorazach różnicowych odpowiednich rzędów.

Dodaj komentarz