next up previous
Next: Interpolace ve 2 (více) Up: Interpolace a extrapolace Previous: Hermiteova interpolace

Interpolační spline

Interpolační spline je lokální interpolace taková, že kromě průchodu všemi uzlovými body $f(x_i) = y_i$ má spojitou alespoň první derivaci ve $\forall\ x_i$, tedy

\begin{displaymath}
\lim \limits_{x \to x_{i-}} f'(x) = \lim \limits_{x \to x_{i+}}
f'(x) \ \ .
\end{displaymath}

V každém subintervalu $\left<x_i, x_{i+1}\right>$ na interpolační spline klademe čtyři podmínky ($y_i$, $y_{i+1}$, $y'_{i+} = y'_{i-}$, $y'_{i+1-} = y'_{i+1+}$), proto užívané funkce musí mít alespoň 4 volitelné parametry.

Kubický spline používá kubické polynomy pro konstrukci interpolačního splinu.

Okraje - zde nemá smysl mluvit o spojitosti derivací, proto je třeba 2 podmínky dodefinovat.
Možnosti jsou

  1. Pokud známe hodnoty derivací na okraji, pak zadáme $y'(x_0) = y'_0$ a/nebo $y'(x_n) = y'_n$, tedy spline má zadanou hodnotu derivace na okraji.
  2. Pokud derivaci neznáme, zadáme $y''_0 = 0$ a/nebo $y''_N = 0$. Přirozený spline - $y'' = 0$ na obou okrajích.

Pozn. Zadání obou dodatečných podmínek na jednom okraji by sice zjednodušilo výpočet aproximace, ale takový algoritmus je nepoužitelný vzhledem k numerické nestabilitě (oscilace interpolačního splinu exponenciálně rostoucí od daného okraje).

Konstrukce kubického splinu

Druhá derivace kubický polynomu je lineární funkcí a tedy v intervalu $\left< x_j, x_{j+1} \right>$

$\displaystyle y''$ $\textstyle =$ $\displaystyle A\; y''_j + B\; y''_{j+1}$  
$\displaystyle A$ $\textstyle =$ $\displaystyle \frac{x_{j+1} - x}{x_{j+1} - x_j} \ \ \ \ \ \ \ \ \ \ \
B = 1-A = \frac{x - x_j}{x_{j+1} - x_j}$  

Po dvojím zintegrování této rovnice při uvážení podmínek
$y(x_j) = y_j \ \wedge \ y(x_{j+1}) = y_{j+1}$ dostaneme

$\displaystyle y$ $\textstyle =$ $\displaystyle A~y_j + B y_{j+1} + C y''_j + D y''_{j+1}$  
$\displaystyle C$ $\textstyle =$ $\displaystyle \frac{1}{6} (A^3 - A) (x_{j+1} - x_j)^2 \ \ \ \ \ \ \ \ \
D = \frac{1}{6} (B^3 - B) (x_{j+1} - x_j)^2$  

Derivace $y'(x)$ má tvar

\begin{displaymath}
y'(x) = \frac{y_{j+1} - y_j}{x_{j+1} - x_j} - \frac{3A^2 -1}...
... x_j)\; y''_j + \frac{3B^2 - 1}{6} (x_{j+1} - x_j)\;
y''_{j+1}
\end{displaymath}

Hodnoty $y''_j$ určíme z podmínky spojitosti první derivace splinu
$(y'(x_j))_{-} = (y'(x_j))_{+}$ ve tvaru

\begin{displaymath}\!\!\!\!\!\!\!\!\!\!\!\!
\frac{x_j - x_{j-1}}{6}\; y''_{j-1} ...
...} - y_j}
{x_{j+1} - x_j} - \frac{y_j - y_{j-1}}{x_j - x_{j-1}}
\end{displaymath}

Jde tedy o soustavu lineárních rovnic pro koeficienty $y''_j$, kde $j=0,1,\dots,n$ tridiagonální, diagonálně dominantní maticí. Za znalosti $\forall\ y''_j$ pak snadno určíme hodnotu splinu pro libovolné $x \in \left<x_0, x_{n}\right>$.

Konvergence kubického splinu
Nechť $f(x)$ je řádu $C^q$ na intervalu $\langle a, b \rangle$ (tedy spojité derivace až do $q$-té včetně), kde $q = 0, 1, 2, 3,
4$. Dále nechť interval $\langle a, b \rangle$ je rozdělen na podintervaly délky $h_i$, kde $i=1, \dots, n$, a $\max \limits_i
h_i = h$. Mějme dále konstantu $K$, pro kterou platí $K \geq
\max \limits_i h_i / \min \limits_i h_i$. Je-li $S(x)$ kubický interpolační spline, pak pro $p = 0,1,2,3$ platí

\begin{displaymath}
\vert f^{(p)}(x) - S^{(p)}(x)\vert \leq C\; K\; h^{q-p}\ \ ,
\end{displaymath}

kde konstanta $C$ nezávisí na $x$ ani na způsobu dělení intervalu $\langle a, b \rangle$.


next up previous
Next: Interpolace ve 2 (více) Up: Interpolace a extrapolace Previous: Hermiteova interpolace
Jiri Limpouch
2000-03-24