Interpolacja za pomocą wielomianów

by Jerry Sky

2020-11-10



1. DEF

Rozpatrzmy następujący problem. Mamy dane n+1n+1 punktów (xi,yi)(x_i, y_i):

Węzły xi,i=0,,nx_i, \enspace i=0,\dots,n są parami różne. Trzeba znaleźć wielomian pΠnp \in \Pi_{n} taki, że p(xi)=yi(0in). p(x_i) = y_i \quad (0 \le i \le n).

Gdybyśmy chcieli otrzymać wielomian interpolacyjny w postaci p(x)=a0+a1x+a2x2++anxn, p(x) = a_0 + a_1 x + a_2 x^2 + \dotsb + a_n x^n, spełniający p(xi)=yi p(x_i) = y_i dla 0in0 \le i \le n, wówczas musimy wyznaczyć n+1n+1 współczynników a0,a1,,ana_0, a_1, \dots, a_n. Co prowadzi do układu równań z macierzą Vandermonde’a, źle uwarunkowaną:


2. Twierdzenie#1

Dla węzłów xix_i i liczb yiy_i istnieje dokładnie jeden wielomian pΠnp \in \Pi_{n} spełniający warunki interpolacji p(xi)=yi(0in). p(x_i) = y_i \quad (0 \le i \le n).

2.1. D-d

Wprowadźmy wielomian lil_i stopnia nn li(x)=j=0,jinxxjxixj,li(x)={0x=xj1x=xi. l_i(x) = \prod_{j=0, j\neq i}^n \frac{x - x_j}{x_i - x_j}, \quad l_i(x) = \begin{cases} 0 & x = x_j\\ 1 & x = x_i \end{cases}.

Otrzymujemy wielomian LnΠnL_n \in \Pi_n spełniający warunki interpolacji Ln(x)=i=0nyili(x),Ln(xj)=i=0nyili(xj)=yj. L_n(x) = \sum_{i=0}^n y_i l_i(x), \quad L_n(x_j) = \sum_{i=0}^n y_i l_i(x_j) = y_j.

(Jednoznaczność) Załóżmy, że istnieją dwa wielomiany L1,L2ΠnL_1, L_2 \in \Pi_n. Spełniające warunki interpolacji. Zatem (L1L2)(xj)=0(0jn). (L_1 - L_2) (x_j) = 0 \quad (0 \le j \le n).

(L1L2)Πn(L_1 - L_2) \in \Pi_n oraz n+1n+1 miejsc zerowych (sprzeczność). Stąd L1L2L_1 \equiv L_2.


3. Postać Lagrange’a wzoru interpolacyjnego

Ln(x)=i=0nyij=0,jixxjxixj L_n(x) = \sum_{i=0}^n y_i \prod_{j=0, j\neq i} \frac{x - x_j}{x_i - x_j}


4. Twierdzenie o błędzie interpolacji wielomianowej

Niech

Wówczas istnieje ζx(a,b)\zeta_x \in (a,b) (zależna od xx) taka, że f(x)p(x)=1(n+1)!f(n+1)(ζx)i=0n(xxi). f(x) - p(x) = \frac{1}{(n+1)!} f^{(n+1)} (\zeta_x) \prod_{i=0}^n (x - x_i).

4.1. Przykład

Jaki jest błąd interpolacji funkcji f(x)=sinxf(x) = \sin x za pomocą wielomianu stopnia 99 w przedziale [0;1][0;1].

Korzystamy z Twierdzenia#2. Szacujemy f(10)(ζx)1\left\lvert f^{(10)}(\zeta_x) \right\rvert \le 1, i=09(xxi)1\prod_{i=0}^9 \left\lvert (x-x_i) \right\rvert \le 1 dla x[0;1]x \in [0;1].

sinxp(x)=f(10)(ζx)10!i=09(xxi)110!<2.8107. \left\lvert \sin x - p(x) \right\rvert = \frac{\left\lvert f^{(10)}(\zeta_x) \right\rvert}{10!} \prod_{i=0}^9 \left\lvert (x-x_i) \right\rvert \le \frac{1}{10!} < 2.8 \cdot 10^{-7}.

4.2. D-d

Jeżeli xx jest węzłem interpolacyjnym xix_i to obie strony równanie się zerują (w twierdzeniu).
Ustalmy xx taki, że xxix \neq x_i i zdefiniujmy funkcję ϕ\phi w(t)=i=0n(txi),ϕfpλw. w(t) = \prod_{i=0}^n (t - x_i), \quad \phi \equiv f - p - \lambda w. gdzie λ\lambda jest liczbą rzeczywistą dobraną tak, aby ϕ(x)=0\phi(x) = 0. Stąd λ=f(x)p(x)w(x)\lambda = \frac{f(x) - p(x)}{w(x)}.
Funkcja ϕCn+1[a;b]\phi \in C^{n+1} [a;b] oraz ϕ\phi zeruje się w n+2n+2 punktach x,x0,x1,,xnx, x_0, x_1, \dots, x_n. Z twierdzenia Rolle’a pochodna ϕ\phi' ma co najmniej n+1n+1 miejsc zerowych. Podobnie ϕ\phi'' ma co najmniej nn miejsc zerowych. Stosując dalej twierdzenie Rolle’a, dostajemy, że ϕn+1\phi^{n+1} ma co najmniej jedno zero, powiedzmy ζx(a;b)\zeta_x \in (a;b). ϕ(n+1)=f(n+1)p(n+1)λw(n+1)=f(n+1)(n1)!λ. \phi^{(n+1)} = f^{(n+1)} - p^{(n+1)} - \lambda w^{(n+1)} = f^{(n+1)} - (n-1)! \lambda.

Stąd 0=ϕ(n+1)(ζx)=f(n+1)(ζx)(n+1)!λ=f(n+1)(ζx)(n+1)!f(x)p(x)w(x). 0 = \phi^{(n+1)} (\zeta_x) = f^{(n+1)} (\zeta_x) - (n+1)! \lambda = f^{(n+1)} (\zeta_x) - (n+1)! \frac{f(x) - p(x)}{w(x)}. Ostatecznie f(x)p(x)=1(n+1)!f(n+1)(ζx)i=0n(xxi). f(x) - p(x) = \frac{1}{(n+1)!} f^{(n+1)} (\zeta_x) \prod_{i=0}^n (x-x_i). \square