Interpolacja Hermite’a – interpolacja umożliwiająca znalezienie wielomianu przybliżającego według wartości
y
1
=
f
(
x
1
)
,
y
2
=
f
(
x
2
)
,
…
,
y
n
=
f
(
x
n
)
{\displaystyle y_{1}=f(x_{1}),y_{2}=f(x_{2}),\dots ,y_{n}=f(x_{n})}
na
n
{\displaystyle n}
danych węzłach
x
1
,
x
2
,
…
,
x
n
,
{\displaystyle x_{1},x_{2},\dots ,x_{n},}
oraz na wartościach pochodnych na wybranych węzłach
f
′
(
x
1
)
,
f
″
(
x
1
)
,
…
,
f
(
k
1
)
(
x
1
)
,
…
,
f
′
(
x
n
)
,
…
,
f
(
k
n
)
(
x
n
)
.
{\displaystyle f'(x_{1}),f''(x_{1}),\dots ,f^{(k_{1})}(x_{1}),\dots ,f'(x_{n}),\dots ,f^{(k_{n})}(x_{n}).}
Węzeł zadany bez pochodnej jest węzłem pojedynczym , a węzeł z danymi pochodnymi
1
,
2
,
…
,
k
{\displaystyle 1,2,\dots ,k}
jest węzłem
k
+
1
{\displaystyle k+1}
-krotnym.
Funkcja
f
(
x
)
=
sin
(
x
)
+
cos
(
x
)
{\displaystyle f(x)=\sin(x)+\cos(x)}
(czarny) i jej wielomian interpolacyjny (czerwony) obliczony na podstawie 5 danych węzłów podwójnych w przedziale
[
1
,
4
]
,
{\displaystyle [1,4],}
wygenerowany dzięki programowi Mathematica
Algorytm jest podobny jak przy interpolacji Newtona . Kolumnę wypełnia się wszystkimi wartościami węzłów (jeżeli węzeł jest
k
{\displaystyle k}
-krotny, to umieszczamy go w tabeli
k
{\displaystyle k}
razy).
x
i
{\displaystyle x_{i}}
f
(
x
i
)
{\displaystyle f(x_{i})}
x
0
{\displaystyle x_{0}}
f
(
x
0
)
{\displaystyle f(x_{0})}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
x
2
{\displaystyle x_{2}}
f
(
x
2
)
{\displaystyle f(x_{2})}
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
x
n
{\displaystyle x_{n}}
f
(
x
n
)
{\displaystyle f(x_{n})}
Następnie dopisuje się do każdej kolumny kolejne różnice dzielone , z tym wyjątkiem, że przy węzłach
k
{\displaystyle k}
-krotnych,
k
>
1
,
{\displaystyle k>1,}
gdzie, de facto, nie można obliczyć różnicy dzielonej, podstawia się wartości kolejnych pochodnych na węzłach podzielone przez silnię ze stopnia pochodnej. (W tabeli przedstawiony jest
3
{\displaystyle 3}
-krotny węzeł
x
1
{\displaystyle x_{1}}
).
x
i
{\displaystyle x_{i}}
f
(
x
i
)
{\displaystyle f(x_{i})}
f
[
x
i
−
1
,
x
i
]
{\displaystyle f[x_{i-1},x_{i}]}
f
[
x
i
−
2
,
x
i
−
1
,
x
i
]
{\displaystyle f[x_{i-2},x_{i-1},x_{i}]}
x
0
{\displaystyle x_{0}}
f
(
x
0
)
{\displaystyle f(x_{0})}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
f
[
x
0
,
x
1
]
{\displaystyle f[x_{0},x_{1}]}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
f
′
(
x
1
)
{\displaystyle f'(x_{1})}
f
[
x
0
,
x
1
,
x
1
]
{\displaystyle f[x_{0},x_{1},x_{1}]}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
f
′
(
x
1
)
{\displaystyle f'(x_{1})}
f
″
(
x
1
)
2
!
{\displaystyle {\frac {f''(x_{1})}{2!}}}
x
2
{\displaystyle x_{2}}
f
(
x
2
)
{\displaystyle f(x_{2})}
f
[
x
1
,
x
2
]
{\displaystyle f[x_{1},x_{2}]}
f
[
x
1
,
x
1
,
x
2
]
{\displaystyle f[x_{1},x_{1},x_{2}]}
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
x
n
{\displaystyle x_{n}}
f
(
x
n
)
{\displaystyle f(x_{n})}
f
[
x
n
−
1
,
x
n
]
{\displaystyle f[x_{n-1},x_{n}]}
f
[
x
n
−
2
,
x
n
−
1
,
x
n
]
{\displaystyle f[x_{n-2},x_{n-1},x_{n}]}
Tabelę uzupełnia się do końca jak przy interpolacji Newtona, uznając ciągłe pochodne na węzłach wielokrotnych jako różnice dzielone rzędu drugiego.
x
i
{\displaystyle x_{i}}
f
(
x
i
)
{\displaystyle f(x_{i})}
f
[
x
i
−
1
,
x
i
]
{\displaystyle f[x_{i-1},x_{i}]}
f
[
x
i
−
2
,
x
i
−
1
,
x
i
]
{\displaystyle f[x_{i-2},x_{i-1},x_{i}]}
f
[
x
i
−
3
,
x
i
−
2
,
x
i
−
1
,
x
i
]
{\displaystyle f[x_{i-3},x_{i-2},x_{i-1},x_{i}]}
⋯
{\displaystyle \cdots }
f
[
x
i
−
n
,
…
,
x
i
]
{\displaystyle f[x_{i-n},\dots ,x_{i}]}
x
0
{\displaystyle x_{0}}
f
(
x
0
)
{\displaystyle f(x_{0})}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
f
[
x
0
,
x
1
]
{\displaystyle f[x_{0},x_{1}]}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
f
′
(
x
1
)
{\displaystyle f'(x_{1})}
f
[
x
0
,
x
1
,
x
1
]
{\displaystyle f[x_{0},x_{1},x_{1}]}
x
1
{\displaystyle x_{1}}
f
(
x
1
)
{\displaystyle f(x_{1})}
f
′
(
x
1
)
{\displaystyle f'(x_{1})}
f
″
(
x
1
)
2
!
{\displaystyle {\frac {f''(x_{1})}{2!}}}
f
[
x
0
,
x
1
,
x
1
,
x
1
]
{\displaystyle f[x_{0},x_{1},x_{1},x_{1}]}
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
⋱
{\displaystyle \ddots }
x
n
{\displaystyle x_{n}}
f
(
x
n
)
{\displaystyle f(x_{n})}
f
[
x
n
−
1
,
x
n
]
{\displaystyle f[x_{n-1},x_{n}]}
f
[
x
n
−
2
,
x
n
−
1
,
x
n
]
{\displaystyle f[x_{n-2},x_{n-1},x_{n}]}
f
[
x
n
−
3
,
x
n
−
2
,
x
n
−
1
,
x
n
]
{\displaystyle f[x_{n-3},x_{n-2},x_{n-1},x_{n}]}
⋯
{\displaystyle \cdots }
f
[
x
0
,
…
,
x
n
]
{\displaystyle f[x_{0},\dots ,x_{n}]}
Definiując
a
i
{\displaystyle a_{i}}
jako wartości na przekątnej,
i
=
1
,
2
,
3
,
…
,
m
,
{\displaystyle i=1,2,3,\dots ,m,}
gdzie
m
{\displaystyle m}
to suma krotności węzłów, otrzymuje się wielomian:
w
(
x
)
=
∑
i
=
0
m
a
i
∏
j
=
0
i
−
1
(
x
−
x
¯
j
)
,
{\displaystyle w(x)=\sum _{i=0}^{m}a_{i}\prod _{j=0}^{i-1}(x-{\bar {x}}_{j}),}
gdzie
x
¯
i
=
x
1
,
x
1
,
…
,
x
1
,
x
2
,
x
2
,
…
,
x
2
,
…
,
x
n
,
{\displaystyle {\bar {x}}_{i}={x_{1},x_{1},\dots ,x_{1},x_{2},x_{2},\dots ,x_{2},\dots ,x_{n}},}
przy czym każdy
k
{\displaystyle k}
-krotny węzeł występuje
k
{\displaystyle k}
razy.
Należy znaleźć wielomian interpolacyjny, przybliżający funkcję o zadanych węzłach dwukrotnych:
x
1
=
1
,
x
2
=
3
f
(
x
1
)
=
3
,
f
(
x
2
)
=
5
f
′
(
x
1
)
=
2
,
f
′
(
x
2
)
=
6
{\displaystyle {\begin{array}{lcl}x_{1}=1&,&x_{2}=3\\f(x_{1})=3&,&f(x_{2})=5\\f'(x_{1})=2&,&f'(x_{2})=6\end{array}}}
Zapisuje się wartości w tabeli:
x
i
{\displaystyle x_{i}}
f
(
x
i
)
{\displaystyle f(x_{i})}
1
{\displaystyle 1}
3
{\displaystyle 3}
1
{\displaystyle 1}
3
{\displaystyle 3}
3
{\displaystyle 3}
5
{\displaystyle 5}
3
{\displaystyle 3}
5
{\displaystyle 5}
Następnie w miejsce powtarzającego się węzła wstawia się wartości pochodnej, a w pozostałe miejsca (w tym przypadku jedno) wstawia się odpowiednią różnicę dzieloną:
x
i
{\displaystyle x_{i}}
f
(
x
i
)
{\displaystyle f(x_{i})}
R
2
(
x
i
)
{\displaystyle R_{2}(x_{i})}
1
{\displaystyle 1}
3
{\displaystyle 3}
–
1
{\displaystyle 1}
3
{\displaystyle 3}
2
{\displaystyle 2}
3
{\displaystyle 3}
5
{\displaystyle 5}
1
{\displaystyle 1}
3
{\displaystyle 3}
5
{\displaystyle 5}
6
{\displaystyle 6}
Następnie uzupełnia się do końca tabelę:
x
i
{\displaystyle x_{i}}
f
(
x
i
)
{\displaystyle f(x_{i})}
R
2
(
x
i
)
{\displaystyle R_{2}(x_{i})}
R
3
(
x
i
)
{\displaystyle R_{3}(x_{i})}
R
4
(
x
i
)
{\displaystyle R_{4}(x_{i})}
1
{\displaystyle 1}
3
{\displaystyle 3}
–
–
–
1
{\displaystyle 1}
3
{\displaystyle 3}
2
{\displaystyle 2}
–
–
3
{\displaystyle 3}
5
{\displaystyle 5}
1
{\displaystyle 1}
−
1
2
{\displaystyle -{\frac {1}{2}}}
–
3
{\displaystyle 3}
5
{\displaystyle 5}
6
{\displaystyle 6}
5
2
{\displaystyle {\frac {5}{2}}}
3
2
{\displaystyle {\frac {3}{2}}}
Zatem otrzymuje się wielomian:
w
(
x
)
=
3
+
2
(
x
−
1
)
−
1
2
(
x
−
1
)
2
+
3
2
(
x
−
1
)
2
(
x
−
3
)
=
3
2
x
3
−
8
x
2
+
27
2
x
−
4.
{\displaystyle w(x)=3+2(x-1)-{\frac {1}{2}}(x-1)^{2}+{\frac {3}{2}}(x-1)^{2}(x-3)={\frac {3}{2}}x^{3}-8x^{2}+{\frac {27}{2}}x-4.}
Łatwo sprawdzić, że interpoluje on dane punkty:
w
(
1
)
=
3
2
−
8
+
27
2
−
4
=
3
{\displaystyle w(1)={\frac {3}{2}}-8+{\frac {27}{2}}-4=3}
w
′
(
1
)
=
9
2
−
16
+
27
2
=
2
{\displaystyle w'(1)={\frac {9}{2}}-16+{\frac {27}{2}}=2}
w
(
3
)
=
3
2
⋅
27
−
8
⋅
9
+
27
2
⋅
3
−
4
=
5
{\displaystyle w(3)={\frac {3}{2}}\cdot 27-8\cdot 9+{\frac {27}{2}}\cdot 3-4=5}
w
′
(
3
)
=
9
2
⋅
9
−
16
⋅
3
+
27
2
=
6.
{\displaystyle w'(3)={\frac {9}{2}}\cdot 9-16\cdot 3+{\frac {27}{2}}=6.}