Hermite-féle interpoláció

A Wikipédiából, a szabad enciklopédiából

Az Hermite-féle interpoláció egy olyan módszer, amely szorosan kapcsolódik a Newtoni osztott differenciák interpolációs módszeréhez a numerikus analízisben. Lehetővé teszi adott deriváltak alappontokon történő vizsgálatát, illetve az alappontok vizsgálatát is. Az interpoláció eredménye egy polinom, melynek fokszáma kisebb vagy egyenlő az alappontok és deriváltjaik eggyel csökkentett számával.

Alkalmazás[szerkesztés]

A deriváltakat extra pontokként kezeljük és azokat osztott differencia táblán megismételjük. Hogy elkerüljük nullával való osztást, azokat értékeket, amelyeknél ez megtörténne lecseréljük a deriváltjaikra és megszorozzuk egy konstanssal a helyétől függően. Például (a newtoni polinomokról szóló cikk alapján), ha az pontot -szer ismételjük, , pl.:

m+1 ismétlőpontokig

stb.

A tábla kiszámítása ugyanúgy történik mint az előbb.

Példa[szerkesztés]

Az itt használt példa a polinom lesz. Értékekként a x=-1, x=0 és x=1 pontok első és második deriváltak szolgálnak. Összesen tehát 9 adatot használunk, így a felfedezett polinom fokszáma 8 lesz.

-1 2
-1 2 -8
-1 2 -8 28
0 1 -1 7 -21
0 1 0 1 -6 15
0 1 0 0 -1 5 -10
1 2 1 1 1 1 -2 4
1 2 8 7 6 5 2 2 -1
1 2 8 28 21 15 10 4 1 1

Ebben a példában . Megfigyelhető, hogy eredménye , ami , amint azt az olvasó is láthatja.

Algoritmus[szerkesztés]

A következő Ruby kódot a H(x) Hermite-féle interpolációs polinom együtthatóinak meghatározására használjuk. Az abszcisszákat x-ben, az ordinátákat y-ban tároljuk. Ha x[i] a j-edik ismételt előfordulása ugyanannak az értéknek, akkor y[i] a következő: .

def hermite(x, y)
  q = y.clone
  1.upto(q.length-1) do |i|
    first_used_deriv = i-1
    q0 = q[i-1]
    i.upto(q.length-1) do |j|
      first_used_deriv = j+i-1 if (x[j-i] != x[j])
      q1 = j > first_used_deriv ? y[first_used_deriv] : q[j]
      q[j] = (q1-q0) / (x[j]-x[j-i]) if x[j-i] != x[j]
      q0 = q1
    end
  end
  [x,q]
end

A következő függvény felhasználható az x pont polinomjának kiszámítására. Az Hermite visszatérési értéket továbbvisszük a második problémára.

def poly(x, hermite)
  xi, q = hermite
  y = q[0]
  c = 1
  1.upto(q.length-1) do |i|
    c *= x - xi[i-1]
    y += q[i]*c
  end
  y
end

Hiba[szerkesztés]

A függvény hibája, amikor egy pontnál meghatározzuk a közelítő értéket, mindig valamely pont felé fog tartani a felhasznált legtávolabbi -érték és a becsült -érték között. : ahol az adatok számát jelöli, az értékek számának eggyel csökkentettje és az -nél felhasznált adatok száma. Ez azért van mert a függvény nem tud gyorsabban változni a becsült Hermite-féle interpolációs polinomtól, mint az --ik deriváltja és hányadosa szorozva a számítási pont távolsága az ismert pontoktól.

Forrás[szerkesztés]

Ez a szócikk részben vagy egészben a Hermite interpolation című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.