Polynomy a interpolace text neobsahuje přesné matematické definice, pouze jejich vysvětlení Polynom nad M = zobrazení / : M —> M f (x) = anxn + an_ixn_1 + ... + aix + a0, kde aj G M jsou pevně daná čísla(koeŕicienty), n je stupeň polynomu. Např. • polynom stupně 2 (kvadratický polynom): f (x) = 3x2 + 2x + 1 • polynom stupně 3 (kubický polynom): f (x) = x3 + 3x2 + 2x + 1 Kořen polynomu = řešení rovnice /(*) = o Interpolace = nalezení přibližného tvaru funkce v určitém intervalu na základě několika jejích známých hodnot v tomto intervalu. (= proložení známých hodnot polynomem, který co nejlépe kopíruje hledanou funkci.) Interpolační polynom = polynom jednoznačně určený zadanými body X{ a jejich hodnotami f{x-i). Máme-li 2 body, můžeme je proložit přímkou, tj. polynomem 1.stupně: ax + b Máme-li 3 body, můžeme je proložit parabolou, tj. polynomem 2.stupně: ax2 + bx + c atd... n + 1 hodnot =>■ polynom stupně n Cíl: najít interpolaci ("odhad") funkce f{x) polynomem Máme: zadáno n + 1 bodů x$,x\,... ,xn a jejich hodnoty po dosazení do funkce f(x): f(x0),f(x1),f(xn). Totéž v tabulce: Xq Xi •En f(Xi) f{Xn) Hledáme tedy polynom stupně n, který obecně zapíšeme: anxn + an_ixn_1 + ... + a±x + a0 1 1 Prosté dosazení - Metoda neurčitých koeficientů Interpolaci lze provést postupným dosazením zadaných bodů do polynomu (někdy nazýváno "metoda neurčitých koeficientů"): an(x0)n + an_i(x0) n—1 + ... + ai(x0) + a0 f(x0) an(xn)n + an_i(xn)n + ... + ai{xn) + a0 = f(xn) a dopočítáním koeficientů ao, • • •, an, tzn. vyřešit n+1 rovnic o n+1 neznámých. Příklad 1. Interpolujte funkci f{x) polynomem, jestliže víte, že -1 0 1 2 f(Xi) 2 1 0 5 Máme zadány 4 body, takže hledáme polynom stupně 3, obecně: Q 2 a^x + cl2x + a\x + ao Dosadíme zadané body do polynomu: a3(-l)3 + a2(-l)2 + ai(-l) + «0 a30 + CL2O + aiO + ao 03i3 + a2l2 + ail + ao a323 + a222 + ai2 + a0 2 1 0 5 a řešíme soustavu polynom je dostaneme ao = 1, a± = —2, a2 = 0, 03 = 1, tedy hledaný xá - 2x + 1. Příklad 2. Interpolujte funkci f{x) polynomem, jestliže víte, že 0 1 2 5 2 3 12 147 Máme zadány 4 body, takže hledáme polynom stupně 3, obecně: a3X3 + cl2x2 + a±x + ao Dosadíme zadané body do polynomu: a řešíme soustavu .. polynom je a^O3 + CL2O2 + aiO + ao a3l3 + a2l2 + ail + a0 a323 +a222 + ai2 + a0 + <225 + ai5 + ao . dostaneme ao = 2, a± = —1, 02 = 1> a3 = 1, te^y hledaný x3 + x2 - x + 2. = 2 = 3 = 12 = 147 2 Lagrangeův interpolační polynom Dalším možností je použít Lagrangeův polynom, kterým byste měli získat stejný výsledek jako metodou neurč.koef. Když si zapamatujete jeho předpis, nemusíte počítat soustavu rovnic, ale jen dosadíte hodnoty do vzorce: kde f(x) = f{x0)l0(x) + f(xi)h(x) + ... + f{xn)ln(x), (x - Xq) ... (x - Xi-i){x - xi+1) ...(x-xn) (Xi - X0) ... (Xi - Xi^1){xi - Xi+1) ...(Xi- Xn) Použití si ukážeme na stejných příkladech: Příklad 3. Interpolujte funkci f{x) Lagrangeovým polynomem, je-li dáno: -1 0 1 2 f(Xi) 2 1 0 5 Řešení: máme zadány 4 hodnoty xq,x±,X2,x$, tedy n = 3 a hledáme polynom stupně 3. = 2 + 5 x{x — l)(x — 2) (_!)(_! _!)(_!_ 2) {x + l)x{x — 1) (2 + l)(2-l)(2-0) = _ ^3 (x + l)(x-l)(x-2) (l)(-l)(-2) 2x + 1 Příklad 4. Interpolujte funkci f{x) Lagrangeovým polynomem, je-li dáno: 0 1 2 5 f(Xi) 2 3 12 147 3 Řešení: máme zadány 4 hodnoty xq,x±,X2,X3, tedy n = 3 a hledáme polynom stupně 3. = 2(x-l)(x-2)(x-5) | g(x-0)(x-2)(x-5) | (_1)(_2)(_5) (l-0)(l-2)(l-5) + i2(x-0)(x-l)(x-5) | ii7(x-0)(x-l)(x-2) (2-0)(2-l)(2-5) (5-0)(5-l)(5-2) x3 + x2 - x + 2 3 Známe-li navíc ještě derivaci chceme: najít interpolaci funkce f{x) máme: zadány nejen hodnoty funkce v m + 1 bodech, ale i hodnoty derivací funkce v m + 1 bodech. !! Zde platí: máme-li hodnoty funkce a její derivace v m + 1 bodech, pak polynom je stupně n = 2m + 1 !! Pozn. Derivace polynomu: platí: (xn)' = nxn-\ dále derivace konstanty je 0, takže např. (ax3 + bx2 + cx + d)' = 3ax2 + 26x + c Derivace funkce určuje její sklon! známe-li derivaci, je to informace navíc, která výpočet zpřesní. Stejně jako v předchozích příkladech můžeme prostě dosadit do polynomou a dopočítat koeficienty. Musíme však znát nejen stupeň polynomu, ale i obecný tvar jeho derivace, abychom měli kam dosadit (viz následující příklad). Příklad 5. Najděte interpolační polynom funkce f{x), víte-li, že 1 2 f(Xi) 0 3 f'{Xi) 1 3 Řešení: Máme zadány 2 hodnoty =>m + l= 2=>m = l, takže hledáme polynom stupně 2m + 1 = 3, tj. Q 2 a^x + <22X + a\x + ciq 4 jeho derivace je: 3a^x + 2d2X + ai Postupně dosadíme jednotlivé hodnoty: 03 i +02! + ail + ao = 0 a323 + a222 + ai2 + a0 = 3 303i + 2<22l + ai = 1 3a322 + 2a22 + ai = 3 Vyřešíme soustavu rovnic a dostaneme f(x) = -2x3 + 10x2 - 13x + 5 Hermitův interpolační polynom opět je možno využít předpisu pro předešlý výpočet, ale tento je početně velmi náročný, funguje podobně jako Lagrange, ale složitěji. Př. Známe-li hodnotu v jednom bodě, tj n = 0, pak Hermitův polynom vypadá takto: f(x) = f(x0) + f(x0)(x - x0) 4 Interpolace pomocí splajnů Nevýhoda předchozích metod: malá změna jednoho uzlu změní celý polynom (nestabilita), výpočetní náročnost při vyšším počtu bodů Interpolace pomocí splajnů = interpolace pomocí malých dílčích polynomů, ze kterých se funkce poskládá (splajn z anglického "spline" - označuje zařízení na kreslení křivek) můžeme si křivky mezi jednotlivými body "natvarovat", jak potřebujeme (narozdíl od Lagrange a Hermita). Výpočty probíhají po částech, pro každou dvojici bodů. Lineární splajn = spojení každých dvou bodů lineární čarou (nejjednodušší varianta) Kubický splajn = spojení každých dvou bodů polynomem 3.stupně 5