Geometrie/Lagrangeova interpolace
Popis
editovatChceme-li aproximovat funkci, která je dána svými hodnotami v bodech (body nazýváme uzly interpolace), a požadujeme-li, aby aproximace procházela zadanými body, použijeme aproximaci interpolačním polynomem. Aproximace nám potom poslouží k získání přibližné hodnoty zadané funkce v libovolném bodě intervalu .
Máme-li zadány hodnoty funkce v různých bodech, tzn. máme zadáno tzv. interpolačních podmínek pro polynom, je zřejmé, že stupeň hledaného polynomu bude . Lze ukázat, že mezi všemi polynomy nejvýše -tého stupně existuje právě jeden, který je interpolačním polynomem pro zadanou funkci. Pro určení interpolačního polynomu existuje několik postupů, ale je třeba si uvědomit, že pro zadanou funkci všechny postupy určí stejný polynom.
Langrangeův interpolační polynom (čteme lagrándžův) je jedním ze známějších a také snadných způsobů interpolace funkce zadané pouze v diskrétních bodech.
Nechť tedy máme dáno n+1 bodů, přes které funkce prochází. Pak můžeme pomocí níže popsané rovnice nalézt interpolační funkci, která se původní rovnici snaží co nejvíce přiblížit.
Vyjádření
editovatLagrangeův interpolační polynom se dá zapsat rovnicí
kde
kde jsou zadané funkční hodnoty.
Vlastnosti
editovatLagrangeův interpolační vzorec má význam především pří teoretickém zkoumání vlastností interpolačních polynomů. Pro praktické počítání ale není příliš výhodný. Například když se rozhodneme přidat další uzlový bod, musíme znovu přepočítat všechny polynomy . V takovém případě je výhodnější použít jiný interpolační algoritmus.
Nevýhodou interpolačních polynomů je, že neplatí čím více bodů máme zadáno, tím přesnější funkci dostáváme. Pro jakoukoliv volbu uzlů interpolace vždy existuje spojitá funkce, pro kterou interpolační proces nekonverguje stejnoměrně. Navíc se při větším počtu bodů interpolační funkce na koncích více „vlní“, což v řadě případů nemusí být pro interpolaci zrovna nejlepší.
Algoritmizace
editovatMetoda Lagrange počítá hodnotu Lagrangova polynomu zadaného stupně pro daný index a nezávislý parametr t. Uveďme si ještě nějaké poznámky k proměnným a použitým metodám.
- Vector
- třída popisující vektor,
- Richpoint
- třída popisující bod,
- ctrlPoly
- body řídícího polygonu.
private double Lagrange(int stupen,int index, double t) { double ret=1; for (int j=0;j<stupen;j++) { if (j!=index) ret*=(t-j)/(index-j); } return ret; }
Počítá bod na křivce pomocí Lagrangova polynomu
public override Vector GetPoint(double t) { Vector ret = new Vector(); for (int i=0;i<ctrlPoly.Count;i++) { ret+=Lagrange(ctrlPoly.Count,i,t)*((RichPoint)ctrlPoly[i]).Locate; } return ret; }
Autoři
editovatTento text vypracovali studenti Univerzity Palackého v Olomouci katedry Matematické informatiky jako zápočtový úkol do předmětu Počítačová geometrie.