Geometrie/Lagrangeova interpolace

Z Wikiknih
Skočit na navigaci Skočit na vyhledávání

Popis[editovat]

Chceme-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í[editovat]

Lagrangeův interpolační polynom se dá zapsat rovnicí

kde

kde jsou zadané funkční hodnoty.

Vlastnosti[editovat]

Lagrangeů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[editovat]

Metoda 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[editovat]

Tento text vypracovali studenti Univerzity Palackého v Olomouci katedry Matematické informatiky jako zápočtový úkol do předmětu Počítačová geometrie.

Podívejte se také na[editovat]