({{Číslo projektu, CZ.1.07/1.1.36/02.0066}, {Autor, Ladislav Kašpárek}, {Předmět, Programovací metody}, {Téma, Interpolace}, {Metodický pokyn, výkladový text s ukázkami}})

Interpolační polynom

Úvod

Tento dokument se zabývá interpolačním polynomem. Technická praxe často požaduje nalezení funkce, která prochází předem zadanými body (typicky se jedná o naměřené hodnoty nebo o body z numerického řešení diferenciální rovnice). Tato metoda není jediná svého druhu, ale je jednoduchá a dává relativně dobré výsledky.

V tomto souboru bude připraven výklad principu hledání interpolačního polynomu. Celým textem nás bude provázet následující čtveřice bodů:

body={{-1,3},{1,-2},{2,2},{5,-1}}

ListPlot[body,PlotStyle->Directive[Red,PointSize[Large]]]

Základní úloha

Najděte polynom, který prochází zadanými body. Tato definice je poměrně široká, např neříká nic o stupni hledaného polynomu. Toto a další v průběhu výkladu upřesníme.
Výsledkem bude polynom, tedy funkce!

Poznámka

Obecně funkcí (ne nutně polynomů), které zadanými body prochází je nekonečně mnoho! Newtonův interpolační polynom je jednou z nich. Je jednoduchý a snadno se hledá (počítá).

Show[Plot[(Interpolation[#,x])&/@Table[Join[body,{{0,yy}}],{yy,-4,4,1}],{x,-1,5}],ListPlot[body,PlotStyle->Directive[Red,PointSize[Large]]]]

Určení stupně polynomu

Zde upřesníme co a za jakých podmínek hledáme:
Hledáme polynom, tedy funkci ve tvaru:

({{({{f(x)=(Subscript[a, n])(x^n)+(Subscript[a, n-1])(x^(n-1))+ ... + (Subscript[a, 1])x+(Subscript[a, 0]),}})}})

kde x∈R, (Subscript[a, n])... (Subscript[a, 0])∈R, n∈N.

Stupeň polynomu se bude odvíjet od počtu zadaných bodů. Čím více bodů tím větší stupeň, aby hledaná křivka měla prostor se do bodů “trefit”. Těžko zadáme deset bodů tak, aby ležely na parabole. Úvaha je následující:

 * dva body nejsnáze proložíme přímkou, tedy polynomem prvního stupně:

f[x_]=.5x-1;Show[Plot[f[x],{x,-2,5}],Graphics[{PointSize[Large],Magenta,Point[{{-1,f[-1]},{4,f[4]}}]}]]

* tři body, které neleží v přímce nelze proložit přímkou, musíme stupeň polynomu zvýšit na druhý, tedy na parabolu:

f[x_]=.5(x^2)+x-1;Show[Plot[f[x],{x,-5,5}],Graphics[{PointSize[Large],Magenta,Point[{{-3,f[-3]},{-1,f[-1]},{4,f[4]}}]}]]

Pro čtyři body budeme hledat polynom 3. stupně, atd.

Úkol: Vyslov obecně závyslost stupně polynomu na počtu vstupních bodů.

Výpočet koeficientů polynomu

Myšlenka Newtonovy interpolace je prostá: když má bod ležet na grafu funkce, musí splňovat i její rovnici. Pro naše čtyři body budeme hledat polynum 3. stupně ve tvaru:

({{({{f(x)=a (x^3)+b (x^2)+c x+d, }})}})

kde a,b,c,d jsou hledané koeficienty a x je první souřadnice bodu a f(x) druhá. Body jsou čtyři, rovnice tedy také.
 * bod 1:		3=a (((-1))^3)+b (((-1))^2)+c(-1)+d
 * bod 2:		-2=a (1^3)+b (1^2)+c (1^1)+d
 * bod 3:		sestav rovnici sám
 * bod 4:		sestav rovnici sám

Sestavili jsme soustavu 4 rovnic o 4 neznámých a,b,c,d.

Řešení soustavy rovnic

Vyřešit soustavu lineárních rovnic není nic obtížného: funkce Solve.

Solve[{3==a (((-1))^3)+b (((-1))^2)+c(-1)+d,-2==a (1^3)+b (1^2)+c (1^1)+d,2==a (2^3)+b (2^2)+c (2^1)+d,-1==a (5^3)+b (5^2)+c (5^1)+d},{a,b,c,d}]

Sestavení polynomu

Dosadíme vypočtené koeficienty do funkce a ověříme, zda zadané body vyhovují:

f[x_]=-(41/72)(x^3)+(119/36)(x^2)-(139/72)x-(101/36)

f[-1]

f[1]

f[2]

f[5]

Všechny body vyhovují a leží na grafu nalezené funkce, jsou tedy interpolovány polynomem. Následuje grafické znázornění:

Plot[f[x],{x,-1,5}]

Show[%,ListPlot[body,PlotStyle->Directive[Red,PointSize[Large]]]]

Shrnutí

Nalezli jsme funkci, přesněji polynom 3. stupně, který prochází zadanými body. Použili jsme předpis pro polinom 3. stupně a postupně dosaldili  za x a y. Vznikla soustava 4 rovnic o 4 neznámých. Kořeny soustavy jsou námi hledané koeficienty polynimu, který je výsledkem našeho snažení.
POZOR!!! jedná se o interpolaci, tedy funkce je relevantní jen mezi nejlevěším a nejpravěším zadyným bodem, mimo tyto body na relevantnost funkce a sledovaného jevu nespoléhejte!! K tomu slouží extrapolační metody, ale to jiná kapitola matematiky.

Úlohy

1/ najdi Newtonův interpolační polynom pro body, sestroj graf

data1={{-3,1},{5,1}}

data2={{-3,1},{5,1},{0,0},{5,5}}

data3=Table[{a,(a^2)},{a,0,1,.2}]

2/ definuj přesně co vstupem a výstupem Newtonovi interpolace.

3/ v příkladě 1 jsou body data1, co ti to připomíná z hodin matematiky?

Zdroje

http://reference.wolfram.com/mathematica/ref/FindRoot.html

http://mathworld.wolfram.com/NewtonsMethod.html