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(0≤i≤n). 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 0≤i≤n0 \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(0≤i≤n). 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,j≠inx−xjxi−xj,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 (L1−L2)(xj)=0(0≤j≤n). (L_1 - L_2) (x_j) = 0 \quad (0 \le j \le n).

(L1−L2)∈Πn(L_1 - L_2) \in \Pi_n oraz n+1n+1 miejsc zerowych (sprzeczność). Stąd L1≡L2L_1 \equiv L_2.


3. Postać Lagrange’a wzoru interpolacyjnego

Ln(x)=∑i=0nyi∏j=0,j≠ix−xjxi−xj 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(x−xi). 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)=sin⁡xf(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∣(x−xi)∣≤1\prod_{i=0}^9 \left\lvert (x-x_i) \right\rvert \le 1 dla x∈[0;1]x \in [0;1].

∣sin⁡x−p(x)∣=∣f(10)(ζx)∣10!∏i=09∣(x−xi)∣≤110!<2.8⋅10−7. \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 x≠xix \neq x_i i zdefiniujmy funkcję ϕ\phi w(t)=∏i=0n(t−xi),ϕ≡f−p−λ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)−(n−1)!λ. \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(x−xi). f(x) - p(x) = \frac{1}{(n+1)!} f^{(n+1)} (\zeta_x) \prod_{i=0}^n (x-x_i). □\square