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. sC2[x0;xn]s \in C^2 [x_0; x_n]
  2. s[xk1;xk]pkΠ3(1kn)s\upharpoonright_{[x_{k-1}; x_k]} \equiv p_k \in \Pi_3 \enspace (1 \le k \le n)
  3. s(xk)=yk(0kn)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)(0ken)M_k = s''(x_k) \enspace (0 \le ke \le n), (M0=Mn=0M_0 = M_n = 0) spełniają układ n1n-1 równań liniowych λkMk1+2Mk+(1λk)Mk+1=6f[xk1,xk,xk+1](1kn1), \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=xkxk1\lambda_k = \frac{h_k}{h_k + h_{k+1}}, \enspace h_k = x_k - x_{k-1}.

Ponadto s(x)=pk(x)=1hk(16Mk1(xkx)3+16Mk(xxk1)3+(yk116Mk1hk2)(xkx)+(yk16Mkhk2)(xxk1))xk[xk1,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[xk1,xk,xk+1]d_k = 6f[x_{k-1}, x_k, x_{k+1}] dla k=1,,nk = 1,\dots,n, gdzie f[xk1,xk,xk+1]=f[xk,xk+1]f[xk1,xk]xk+1xk1f[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,,(n1)k = 1,\dots,(n-1).
  3. Wyznaczyć MkM_k dla k=1,,(n1)k = 1,\dots,(n-1) rozwiązując układ (metodą przegnania — TBA)

[21λ1λ221λ2λn221λn2λn12][M1M2Mn2Mn1]=[d1d2dn2dn1] \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[xk1,xk]pkΠ1s''\upharpoonright_{[x_{k-1}, x_k]} \equiv p_k'' \in \Pi_1).

Narazie załóżmy, że Mk1M_{k-1} i MkM_k mamy dane. Chcemy zobaczyć, jaka jest postać drugiej pochodnej w przedziale [xk1,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 [xk1,xk][x_{k-1}, x_k]. s(x)=Mk1(xxk)hk+Mk(xxk1)hk=Mk1(xkx)hk+Mk(xxk1)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)=Mk1(xkx)22hk+MK(xxk1)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)=Mk1(xkx)36hk+Mk(xxk1)36hk+A(xxk1)+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(xk1)=yk1,s(xk)=yk s(x_{k-1}) = y_{k-1}, \enspace s(x_k) = y_k s(xk1)=Mk1(xkxk1)36hk+B=yk1        B=yk1hk26Mk1 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+Ahk+yk1Mk1hk26=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=ykyk1hkMkhk6+Mk1hk6 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(16Mk1(xkx)3+16Mk1(xxk1)3+(ykyk1Mkhk26+Mk1hk26)(xxk1)+yk1hkhk36Mk1) 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(16Mk1(xkx)3+16Mk1(xxk1)3+(ykMkhk26)(xxk1)+(yk1hk26Mk1)(xkx)) 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+xk1x_k = h_k + x_{k-1})

Wymagamy ciągłość 1. pochodnej w [xk1;xk][x_{k-1}; x_k]. s(x)=Mk1(xkx)22hk+Mk(xxk1)22hk+ykyk1hkMkhk6+Mk1hk6 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.