Funkcje sklejane

by Jerry Sky

2020-11-24



1. DEF

Zadanie interpolacji za pomocą funkcji sklejanych 3-go stopnia możemy sformułować następująco:

Dla danych n+1n+1 punktów (xi,yi)(x_i, y_i), gdzie a=x0<x1<⋯<xn=ba = x_0 < x_1 < \dots < x_n = b, znaleźć funkcję ss spełniającą warunki:

  1. s∈C2[x0;xn]s \in C^2 [x_0; x_n]
  2. s↾[xk−1;xk]≡pk∈Π3(1≤k≤n)s\upharpoonright_{[x_{k-1}; x_k]} \equiv p_k \in \Pi_3 \enspace (1 \le k \le n)
  3. s(xk)=yk(0≤k≤n)s(x_k) = y_k \enspace (0 \le k \le n)

Jeżeli funkcja ss spełnia s′′(x0)=s′′(xn)=0s''(x_0) = s''(x_n) = 0,
to ss jest naturalną funkcją sklejaną 3-go stopnia.


2. Twierdzenie#4

Dla dowolnych n,x0<x1<⋯<xn,y0,y1,…,ynn, x_0 < x_1 < \dotsb < x_n, y_0, y_1, \dots, y_n istnieje dokładnie jedna funkcja sklejana 3-go stopnia spełniająca dodatkowe warunki s′′(x0)=s′′(xn)=0s''(x_0) = s''(x_n) = 0.

Wartości Mk=s′′(xk)(0≤ke≤n)M_k = s''(x_k) \enspace (0 \le ke \le n), (M0=Mn=0M_0 = M_n = 0) spełniają układ n−1n-1 równań liniowych λkMk−1+2Mk+(1−λk)Mk+1=6f[xk−1,xk,xk+1](1≤k≤n−1), \lambda_k M_{k-1} + 2M_k + (1 - \lambda_k) M_{k+1} = 6 f[x_{k-1}, x_k, x_{k+1}] \quad (1 \le k \le n-1), gdzie λk=hkhk+hk+1,hk=xk−xk−1\lambda_k = \frac{h_k}{h_k + h_{k+1}}, \enspace h_k = x_k - x_{k-1}.

Ponadto s(x)=pk(x)=1hk(16Mk−1(xk−x)3+16Mk(x−xk−1)3+(yk−1−16Mk−1hk2)(xk−x)+(yk−16Mkhk2)(x−xk−1))xk∈[xk−1,xk]. \begin{aligned} s(x) = p_k(x) &= \frac{1}{h_k}\Bigg( \frac{1}{6} M_{k-1} (x_k - x)^3\\ &+ \frac{1}{6} M_k (x - x_{k-1})^3\\ &+ (y_{k-1} - \frac{1}{6} M_{k-1} h^2_k) (x_k - x)\\ &+ (y_k - \frac{1}{6} M_k h_k^2) (x - x_{k-1}) \Bigg)\\ &\quad x_k \in [x_{k-1}, x_k]. \end{aligned}


3. Wyznaczanie funkcji sklejanej 3-go stopnia

  1. Obliczyć ilorazy różnicowe dk=6f[xk−1,xk,xk+1]d_k = 6f[x_{k-1}, x_k, x_{k+1}] dla k=1,…,nk = 1,\dots,n, gdzie f[xk−1,xk,xk+1]=f[xk,xk+1]−f[xk−1,xk]xk+1−xk−1f[x_{k-1}, x_k, x_{k+1}] = \frac{f[x_k, x_{k+1}] - f[x_{k-1}, x_k]}{x_{k+1} - x_{k-1}}.
  2. Obliczyć λk=hkhk+hk+1\lambda_k = \frac{h_k}{h_k + h_{k+1}} dla k=1,…,(n−1)k = 1,\dots,(n-1).
  3. Wyznaczyć MkM_k dla k=1,…,(n−1)k = 1,\dots,(n-1) rozwiązując układ (metodą przegnania — TBA)

[21−λ1λ221−λ2⋱⋱⋱λn−221−λn−2λn−12][M1M2⋮Mn−2Mn−1]=[d1d2⋮dn−2dn−1] \begin{bmatrix} 2 & 1 - \lambda_1\\ \lambda_2 & 2 & 1 - \lambda_2\\ & \ddots & \ddots & \ddots\\ && \lambda_{n-2} & 2 & 1 - \lambda_{n-2}\\ &&& \lambda_{n-1} & 2 \end{bmatrix} \begin{bmatrix} M_1\\ M_2\\ \vdots\\ M_{n-2}\\ M_{n-1} \end{bmatrix} = \begin{bmatrix} d_1\\ d_2\\ \vdots\\ d_{n-2}\\ d_{n-1} \end{bmatrix}

Macierz powyższego układu jest diagonalnie silnie dominująca (2>∣λk∣+∣1−λk∣)(2 > |\lambda_k| + |1 - \lambda_k|). Stąd jest nieosobliwa.


3.1. Przykład

S′′(x)S''(x) jest przedziałami liniowa, ponieważ ss jest przedziałami Π3\Pi_3 (s′′↾[xk−1,xk]≡pk′′∈Π1s''\upharpoonright_{[x_{k-1}, x_k]} \equiv p_k'' \in \Pi_1).

Narazie załóżmy, że Mk−1M_{k-1} i MkM_k mamy dane. Chcemy zobaczyć, jaka jest postać drugiej pochodnej w przedziale [xk−1,xk][x_{k-1}, x_k] — musimy przeprowadzić interpolację. Wiemy, że jest to wielomian co najwyżej pierwszego stopnia.
Stosujemy wzór Lagrange’a na przedziale [xk−1,xk][x_{k-1}, x_k]. s′′(x)=Mk−1(x−xk)−hk+Mk(x−xk−1)hk=Mk−1(xk−x)hk+Mk(x−xk−1)hk s''(x) = M_{k-1} \frac{(x - x_k)}{- h_k} + M_k \frac{(x - x_{k-1})}{h_k} = M_{k-1} \frac{(x_k - x)}{h_k} + M_k \frac{(x - x_{k-1})}{h_k}

Teraz dwukrotnie całkujemy: s′(x)=Mk−1(xk−x)2−2hk+MK(x−xk−1)22hk+A s'(x) = M_{k-1} \frac{(x_k - x)^2}{-2 h_k} + M_K \frac{(x - x_{k-1})^2}{2h_k} + A s(x)=Mk−1(xk−x)36hk+Mk(x−xk−1)36hk+A(x−xk−1)+B s(x) = M_{k-1} \frac{(x_k - x)^3}{6h_k} + M_k \frac{(x - x_{k-1})^3}{6h_k} + A(x - x_{k-1}) + B

Musimy teraz jakoś wyznaczyć AA i BB. s(xk−1)=yk−1,s(xk)=yk s(x_{k-1}) = y_{k-1}, \enspace s(x_k) = y_k s(xk−1)=Mk−1(xk−xk−1)36hk+B=yk−1  ⟹    ⟹  B=yk−1−hk26Mk−1 s(x_{k-1}) = M_{k-1} \frac{(x_k - x_{k-1})^3}{6h_k} + B = y_{k-1} \implies\\ \implies B = y_{k-1} - \frac{h_k^2}{6}M_{k-1}

s(xk)=Mkhk26+A⋅hk+yk−1−Mk−1hk26=yk∣ /hk s(x_k) = M_k \frac{h_k^2}{6} + A\cdot h_k + y_{k-1} - M_{k-1} \frac{h_k^2}{6} = y_k \enspace \Bigg|\, /h_k A=yk−yk−1hk−Mkhk6+Mk−1hk6 A = \frac{y_k - y_{k-1}}{h_k} - M_k \frac{h_k}{6} + M_{k-1} \frac{h_k}{6}

Mamy już AA i BB. Wstawiamy je do wzoru na s(x)s(x): s(x)=1hk(16Mk−1(xk−x)3+16Mk−1(x−xk−1)3+(yk−yk−1−Mkhk26+Mk−1hk26)(x−xk−1)+yk−1hk−hk36Mk−1)… s(x) = \frac{1}{h_k}\Bigg( \frac{1}{6} M_{k-1} (x_k - x)^3 + \frac{1}{6} M_{k-1} (x - x_{k-1})^3 +\\ \left( y_k - y_{k-1} - \frac{M_k h_k^2}{6} + \frac{M_{k-1}h_k^2}{6} \right)(x - x_{k-1}) + y_{k-1} h_k - \frac{h_k^3}{6}M_{k-1} \Bigg) \dots s(x)=1hk(16Mk−1(xk−x)3+16Mk−1(x−xk−1)3+(yk−Mkhk26)(x−xk−1)+(yk−1−hk26Mk−1)(xk−x)) s(x) = \frac{1}{h_k}\Bigg( \frac{1}{6}M_{k-1}(x_k - x)^3 + \frac{1}{6}M_{k-1}(x - x_{k-1})^3 + \left( y_k - \frac{M_k h_k^2}{6} \right)(x - x_{k-1})\\ + \left( y_{k-1} - \frac{h_k^2}{6}M_{k-1} \right)(x_k - x)\Bigg) (tutaj trzeba pamiętać o sytuacjach typu xk=hk+xk−1x_k = h_k + x_{k-1})

Wymagamy ciągłość 1. pochodnej w [xk−1;xk][x_{k-1}; x_k]. s′(x)=Mk−1(xk−x)2−2hk+Mk(x−xk−1)22hk+yk−yk−1hk−Mkhk6+Mk−1hk6 s'(x) = M_{k-1} \frac{(x_k - x)^2}{-2h_k} + M_k\frac{(x - x_{k-1})^2}{2h_k} + \frac{y_k - y_{k-1}}{h_k} - M_k \frac{h_k}{6} + M_{k-1} \frac{h_k}{6}

itd.