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.