V matematické podoblasti numerické analýzy je interpolace metoda konstrukce nových datových bodů z diskrétní množiny známých datových bodů.
V psychologii má člověk často několik datových bodů, získaných vzorkováním nebo experimentem, a snaží se sestrojit funkci, která se těmto datovým bodům velmi podobá. Tomu se říká tvarování křivek. Interpolace je specifický případ tvarování křivek, při kterém musí funkce procházet přesně datovými body.
Jiný problém, který úzce souvisí s interpolací, je aproximace komplikované funkce jednoduchou funkcí. Předpokládejme, že funkci známe, ale je příliš složitá na to, abychom ji mohli efektivně vyhodnotit.
Pak bychom mohli vybrat několik známých datových bodů z komplikované funkce, vytvořit vyhledávací tabulku a pokusit se tyto datové body interpolovat, abychom vytvořili jednodušší funkci. Samozřejmě při použití jednoduché funkce pro výpočet nových datových bodů obvykle nedostáváme stejný výsledek jako při použití původní funkce, ale v závislosti na problémové doméně a použité metodě interpolace by mohl zisk v jednoduchosti vyvážit chybu.
Vzhledem k tomu, sekvence n různých čísel xk tzv. uzly a pro každý xk druhé číslo yk, hledáme funkci f tak, aby
Dvojice xk,yk se nazývá datový bod a f se nazývá interpolant pro datové body.
Když jsou čísla yk dána známou funkcí, někdy píšeme fk.
Například předpokládejme, že máme tabulku jako je tato, která dává některé hodnoty neznámé funkce f.
Vykreslit datové body tak, jak je uvedeno v tabulce.
Jakou hodnotu má funkce, řekněme, x = 2,5? Na podobné otázky odpovídá interpolace.
Existuje mnoho různých metod interpolace, z nichž některé jsou popsány níže. Některé z problémů, které je třeba vzít v úvahu při výběru vhodného algoritmu, jsou: Jak přesná je metoda? Jak drahá je? Jak hladká je interpolace? Kolik datových bodů je potřeba?
vynesení dat s lineární interpolací
Jednou z nejjednodušších metod je lineární interpolace (někdy známá jako lerp). Vezměme si výše uvedený příklad stanovení f(2,5). Protože 2,5 je uprostřed mezi 2 a 3, je rozumné brát f(2,5) uprostřed mezi f(2) = 0,9093 a f(3) = 0,1411, což dává 0,5252.
Obecně platí, že lineární interpolace bere dva datové body, řekněme (xa,ya) a (xb,yb), a interpolant je dán:
Lineární interpolace je rychlá a snadná, ale není příliš přesná. Další nevýhodou je, že interpolant není diferencovatelný v bodě xk.
Následující odhad chyby ukazuje, že lineární interpolace není příliš přesná. Označte funkci, kterou chceme interpolovat pomocí g a předpokládejme, že x leží mezi xa a xb a že g je dvakrát spojitě diferencovatelné. Pak chyba lineární interpolace je
Jinými slovy, chyba je úměrná druhé mocnině vzdálenosti mezi datovými body. Chyba některých jiných metod, včetně polynomiální interpolace a splinové interpolace (popsané níže), je úměrná vyšším mocninám vzdálenosti mezi datovými body. Tyto metody také vytvářejí hladší interpolanty.
Graf dat s použitou polynomiální interpolací
Polynomiální interpolace je zobecnění lineární interpolace. Všimněte si, že lineární interpolant je lineární funkce. Nyní tuto interpolaci nahradíme polynomem vyššího stupně.
Vezměme si ještě jednou výše uvedený problém. Následující polynom šestého stupně prochází všemi sedmi body:
Nahrazením x = 2,5 zjistíme, že f(2,5) = 0,5965.
Obecně platí, že pokud máme n datových bodů, prochází všemi datovými body právě jeden polynom stupně n−1. Chyba interpolace je úměrná vzdálenosti mezi datovými body na mocninu n. Navíc je interpolant polynom, a tedy nekonečně diferencovatelný. Vidíme tedy, že polynomiální interpolace řeší všechny problémy lineární interpolace.
Polynomiální interpolace má však i některé nevýhody. Výpočet interpolačního polynomu je poměrně velmi výpočetně nákladný (viz výpočetní složitost). Navíc polynomiální interpolace nemusí být nakonec tak přesná, zejména v koncových bodech (viz Rungeův jev). Těmto nevýhodám se lze vyhnout použitím splinové interpolace.
Graf dat s aplikovanou interpolací Spline
Pamatujte, že lineární interpolace používá lineární funkci pro každý z intervalů [xk,xk+1]. Splinová interpolace používá v každém z intervalů nízkostupňové polynomy a vybírá polynomiální části tak, aby do sebe plynule zapadaly. Výsledná funkce se nazývá spline.
Například přirozená kubická drážka je po částech kubická a dvakrát spojitě diferencovatelná. Kromě toho je její druhá derivace v koncových bodech nulová. Přirozená kubická drážka interpolující body ve výše uvedené tabulce je dána
Stejně jako polynomiální interpolace, splinová interpolace způsobuje menší chybu než lineární interpolace a interpolace je hladší. Nicméně interpolant je snadněji vyhodnotitelný než polynomy vysokého stupně používané v polynomiální interpolaci. Také netrpí Rungeovým fenoménem.
Jiné formy interpolace
Jiné formy interpolace lze zkonstruovat výběrem jiné třídy interpolantů. Například racionální interpolace je interpolace racionálními funkcemi a trigonometrická interpolace je interpolace trigonometrickými polynomy. Diskrétní Fourierova transformace je zvláštní případ trigonometrické interpolace. Další možností je použití vlnek.
Whittakerův–Shannonův interpolační vzorec lze použít, pokud je počet datových bodů nekonečný.
Multivariační interpolace je interpolace funkcí více než jedné proměnné. Metody zahrnují bilineární interpolaci a bikubickou interpolaci ve dvou rozměrech a trilineární interpolaci ve třech rozměrech.
Někdy známe nejen hodnotu funkce, kterou chceme v některých bodech interpolovat, ale také její derivaci. To vede k problémům s Hermitovou interpolací.
Termín extrapolace se používá, pokud chceme najít hodnotu f v bodě x, který je mimo bodů xk, v němž f je uveden.
V úlohách s tvarováním křivek je uvolněno omezení, že interpolant musí projít přesně datovými body. Je pouze nutné se co nejvíce přiblížit k datovým bodům. To vyžaduje parametrizaci potenciálních interpolantů a mít nějaký způsob měření chyby. V nejjednodušším případě to vede k aproximaci nejmenších čtverců.
Teorie aproximace studuje, jak najít nejlepší aproximaci k dané funkci jinou funkcí z nějaké předem určené třídy, a jak dobrá tato aproximace je. To jasně dává vazbu na to, jak dobře může interpolant aproximovat neznámou funkci.