Interpolacja Hermite’a

Z testwiki
Wersja z dnia 11:13, 17 lut 2023 autorstwa imported>Tarnoob (Bibliografia: kat.)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Interpolacja Hermite’a – interpolacja umożliwiająca znalezienie wielomianu przybliżającego według wartości

y1=f(x1),y2=f(x2),,yn=f(xn)

na n danych węzłach x1,x2,,xn, oraz na wartościach pochodnych na wybranych węzłach

f(x1),f(x1),,f(k1)(x1),,f(xn),,f(kn)(xn).

Węzeł zadany bez pochodnej jest węzłem pojedynczym, a węzeł z danymi pochodnymi 1,2,,k jest węzłem k+1-krotnym.

Funkcja 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], wygenerowany dzięki programowi Mathematica

Algorytm

Algorytm jest podobny jak przy interpolacji Newtona. Kolumnę wypełnia się wszystkimi wartościami węzłów (jeżeli węzeł jest k-krotny, to umieszczamy go w tabeli k razy).

xi f(xi)
x0 f(x0)
x1 f(x1)
x2 f(x2)
xn f(xn)

Następnie dopisuje się do każdej kolumny kolejne różnice dzielone, z tym wyjątkiem, że przy węzłach k-krotnych, 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-krotny węzeł x1).

xi f(xi) f[xi1,xi] f[xi2,xi1,xi]
x0 f(x0)
x1 f(x1) f[x0,x1]
x1 f(x1) f(x1) f[x0,x1,x1]
x1 f(x1) f(x1) f(x1)2!
x2 f(x2) f[x1,x2] f[x1,x1,x2]
xn f(xn) f[xn1,xn] f[xn2,xn1,xn]

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.

xi f(xi) f[xi1,xi] f[xi2,xi1,xi] f[xi3,xi2,xi1,xi] f[xin,,xi]
x0 f(x0)
x1 f(x1) f[x0,x1]
x1 f(x1) f(x1) f[x0,x1,x1]
x1 f(x1) f(x1) f(x1)2! f[x0,x1,x1,x1]
xn f(xn) f[xn1,xn] f[xn2,xn1,xn] f[xn3,xn2,xn1,xn] f[x0,,xn]

Definiując ai jako wartości na przekątnej, i=1,2,3,,m, gdzie m to suma krotności węzłów, otrzymuje się wielomian:

w(x)=i=0maij=0i1(xx¯j),

gdzie x¯i=x1,x1,,x1,x2,x2,,x2,,xn, przy czym każdy k-krotny węzeł występuje k razy.

Przykład

Należy znaleźć wielomian interpolacyjny, przybliżający funkcję o zadanych węzłach dwukrotnych:

x1=1,x2=3f(x1)=3,f(x2)=5f(x1)=2,f(x2)=6

Zapisuje się wartości w tabeli:

xi f(xi)
1 3
1 3
3 5
3 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ą:

xi f(xi) R2(xi)
1 3
1 3 2
3 5 1
3 5 6

Następnie uzupełnia się do końca tabelę:

xi f(xi) R2(xi) R3(xi) R4(xi)
1 3
1 3 2
3 5 1 12
3 5 6 52 32

Zatem otrzymuje się wielomian:

w(x)=3+2(x1)12(x1)2+32(x1)2(x3)=32x38x2+272x4.

Łatwo sprawdzić, że interpoluje on dane punkty:

w(1)=328+2724=3
w(1)=9216+272=2
w(3)=322789+27234=5
w(3)=929163+272=6.

Zobacz też

Bibliografia