Interpolace Uvažujme třídu funkcí jedné proměnné ψ(x; a 0,..., a n ), kde a 0,..., a n jsou parametry, které popisují jednotlivé funkce této třídy. Mějme dány body x 0, x 1,..., x n, x i x k, i, k = 0, 1,... n. Úlohu interpolace můžeme vnímat ve dvou situacích: a) máme funkci f(x) danou složitým explicitním vyjádřením a chceme ji nahradit jednodušší funkcí ψ(x; a 0,..., a n ), tj. hledáme hodnoty parametrů a 0,..., a n tak, aby ψ(x i ; a 0,..., a n ) = f(x i ) i = 0,..., n b) máme pro každý bod x i dánu hodnotu f i, i = 0,..., n a hledáme funkci ψ(x i ; a 0,..., a n ), tj. hledáme parametry a 0,..., a n tak, aby ψ(x i ; a 0,..., a n ) = f i i = 0,..., n Tedy u interpolační aproximace hledáme funkci ψ(x; a 0,..., a n ) tak, aby byly splněny tzv. podmínky interpolace (interpolační podmínky): ψ(x; a 0,..., a n ) = f(x i ) i = 0,..., n Typy interpolace: ˆ lineární interpolace - funkci ψ(x; a 0,..., a n ) hledáme ve tvaru ψ(x; a 0,..., a n ) = a 0 ψ 0 (x) + + a n ψ n (x) ˆ trigonometrická interpolace - funkci ψ(x; a 0,..., a n ) hledáme ve tvaru ψ(x; a 0,..., a n ) = a 0 + a 1 e ix + + a n e inx ˆ racionální interpolace - funkci ψ hledáme ve tvaru ψ(x; a 0,..., a n, b 0,..., b n ) = a 0x n + a 1 x n 1 + + a n 1 x + a n b 0 x n + b 1 x n 1 + + b n 1 x + b n Mezi nejjednodušší typy patří lineární interpolace, do níž spadá i tzv. polynomiální interpolace, kdy funkci ψ hledáme ve tvaru polynomu ψ(x; a 0,..., a n ) = a 0 x n + a 1 x n 1 + + a n 1 x + a n. 19
Polynomiální interpolace Mezi nejjednodušší úlohy lineární interpolace patří interpolace polynomy. Jedná se o tuto úlohu: Nechť jsou dány body {x i } n i=0, x i x k pro i k, i, k = 0, 1,..., n, a dále nechť jsou dány hodnoty funkce f(x) v bodech x i, i = 0, 1,..., n. Hledáme polynom P n (x) stupně nejvýše n takový, že splňuje podmínky interpolace (interpolační podmínky): P n (x i ) = f(x i ) i = 0, 1,..., n. Poznámka 1: 1) Je třeba mít na paměti, že je-li skutečně znám předpis funkce f(x), umíme vypočítat f(x i ) i. Není-li předpis funkce zadán a jsou-li pouze známy hodnoty f i i, jedná se o tutéž úlohu, kdy požadujeme P n (x i ) = f i i = 0, 1,..., n. Proto sjednotíme pro další výklad značení a označme f i = f(x i ) i. 2) Symbolem Π n budeme značit třídu všech polynomů stupně nejvýše n. 3) Body x i nazýváme uzly interpolace a polynom P n (x) Π n : P n (x i ) = f i i = 0, 1,, n nazýváme interpolační polynom. Aniž bychom cokoliv věděli z oblasti interpolace, lze interpolační polynom najít užitím soustavy lineárních rovnic. Máme-li dány body {x i } n i=0, x i x k pro i k, i, k = 0, 1,..., n a hodnoty f i, i = 0, 1,..., n a hledámeli P n (x) Π n, tj. P n (x) = a 0 x n + a 1 x n 1 + + a n 1 x + a n takový, že P n (x i ) = f i i = 0, 1,..., n, lze tyto podmínky interpolace psát ve tvaru: P n (x 0 ) = a 0 x n 0 + a 1 x n 1 0 + + a n 1 x 0 + a n = f 0 P n (x n ) = a 0 x n n + a 1 x n 1 n + + a n 1 x n + a n = f n Dostali jsme tedy soustavu (n + 1) lineárních rovnic o (n + 1) neznámých. Vzhledem k tomu, že funkce 1, x, x 2,..., x n jsou lineárně nezávislé existuje právě jedno řešení tohoto systému. Toto je metoda neurčitých koeficientů. Věta 1: Pro n + 1 dvojic (x i, f i ) i = 0, 1,..., n : x i x k pro i k existuje právě jeden polynom P n (x) Π n takový, že P n (x i ) = f i i = 0, 1,..., n. Polynom P n (x) = l 0 (x)f 0 +l 1 (x)f 1 + +l n (x)f n = n i=0 l i(x)f i nazýváme Lagrangeův interpolační polynom. 20
Poznámka 2: Polynomy l i (x) tvaru l i (x) = (x x 0)(x x 1 )... (x x i 1 )(x x i+1 )... (x x n ) (x i x 0 )(x i x 1 )... (x i x i 1 )(x i x i+1 )... (x i x n ) nazýváme fundamentální polynomy. Označíme-li ω n+1 (x) = n i=0 (x x i), potom ω n+1(x) = (x x 1 )(x x 2 )... (x x n ) + (x x 0 )(x x 2 )... (x x n ) + + (x x 0 )(x x 1 )... (x x n 2 )(x x n ) + (x x 0 )(x x 1 )... (x x n 1 ) a ω n+1(x i ) = (x i x 0 )(x i x 1 )... (x i x i 1 )(x i x i+1 )... (x i x n ). Pak lze psát fundamentální polynomy l i (x) ve tvaru ω n+1 (x) l i (x) = i = 0,..., n. (x x i )ω n+1(x i ) Poznámka 3: Fundamentální polynomy mají tu vlastnost, že n i=0 l i(x) = 1 x R. Vezmeme-li za funkci f(x) polynom n-tého stupně, je jejím interpolačním polynomem P n (x) Π n pro dané body (x i, f(x i )) právě funkce f(x). Jestliže f(x) = 1, pak také P n (x) = 1. Tedy 1 = P n (x) = n i=0 l i(x)f i = n i=0 l i(x). Lagrangeův interpolační polynom se využívá zejména pro odvození metod numerického derivování a integrování. Pro praktické použití není příliš ideální, neboť při změně počtu uzlů je třeba všechny fundamentální polynomy vypočítat znovu. Výhodnější pro praktické počítání je použít tzv. Newtonův interpolační polynom. Věta 2: Nechť P n (x) Π n je interpolační polynom pro data (x i, f i ) i = 0, 1... n, x i x k pro i k. Pak tento polynom lze psát ve tvaru: P n (x) = f 0 + (x x 0 )f[x 0, x 1 ]+(x x 0 )(x x 1 )f[x 0, x 1, x 2 ]+ +(x x 0 )... (x x n 1 )f[x 0, x 1,..., x n ], kde f[x 0, x 1,..., x n ] je poměrná diference n-tého řádu funkce f(x). Tento vzorec nazýváme Newtonův interpolační polynom. Chyba interpolace Otázkou je, s jakou přesností aproximujeme interpolační polynom funkce f(x) v bodech různých od uzlů, tj. zajímá nás rozdíl f(x) P n (x) x 21
x i, i = 0, 1,..., n. Budeme uvažovat pouze případ, kdy je funkce f(x) dána analyticky. Věta 3: Nechť funkce f(x) C n+1 a, b, x i a, b, x i x j pro i j, i, j = 0, 1,..., n,. Nechť P n (x) Π n je interpolační polynom takový, že P n (x i ) = f i i = 0, 1,..., n. Pak pro x a, b, x x i, i = 0,..., n ξ (a, b) takové, že E(x) = f( x) P n ( x) = ω n+1( x) (n + 1)! f (n+1) (ξ), kde ξ = ξ(x). Poznámka 4: 1) bod ξ závisí na x 2) rozdíl f(x) P n (x) nazýváme chybou interpolace Jestliže existuje konstanta M n+1 taková, že f (n+1) (x) Mn+1 x a, b, pak lze chybu odhadnout E(x) ω n+1(x)m n+1. (n+1)! Tento odhad závisí jak na vlastnostech funkce f(x) (což je schováno v M n+1 ), tak také na bodech interpolace samotných. Nabízí se tedy otázka, jak zvolit uzly tak, aby maximální hodnota chyby byla co nejmenší. Maximální hodnota chyby interpolace je minimální v případě, že za uzly interpolace volíme kořeny jistých polynomů. Úmluva: Symbolem Π n budeme značit třídu všech normovaných polynomů stupně n, tj. polynomy tvaru: P n (x) = x n + a 1 x n 1 + + a n 1 x + a n. Definice 1: Řekneme, že polynom Q n (x) Π n má na intervalu 1, 1 nejmenší odchylku od nuly mezi všemi polynomy z Π n, jestliže max x 1,1 Q n (x) < max x 1,1 S n (x) S n (x) Π n a S n (x) je identicky různé od Q n (x). Věta 4: Funkce T m (x) = cos(m arccos x), x 1, 1 je polynom m-tého stupně. Pro m N je koeficient polynomu T m (x) u x m roven 2 m 1. 22
Vlastnosti polynomů T m (x) 1) z rekurentního vztahu T 0 (x) = 1, T 1 (x) = x, T m+1 (x) = 2xT m (x) T m 1 (x) m N plyne: T 2 (x) = 2xT 1 (x) T 0 (x) = 2x 2 1 T 3 (x) = 2xT 2 (x) T 1 (x) = 2x(2x 2 1) x = 4x 3 3x T 4 (x) = 8x 4 8x 2 + 1 2) polynom T m (x) má m reálných různých kořenů x k, které leží v intervalu ( 1, 1), neboť pro ně platí T m (x k ) = 0, k = 0, 1,..., m 1 právě tehdy, když x k = cos ( ) 2k+1 π m 2 ; cos(m arccos xk ) = 0 3) dále víme, že max 1 x 1 T m (x) = 1. Věta 5: Této maximální hodnoty nabývá polynom T m (x) se střídavými znaménky v m bodech intervalu 1, 1 neboť x k = cos k m π; cos(m arccos x k) = 1. Polynom T m (x) = 2 1 m T m (x) nabývá na intervalu 1, 1 nejmenší odchylku od nuly mezi všemi polynomy z Π m. Definice 2: Polynomy T m (x) se nazývají Čebyševovy polynomy. Jestliže při interpolaci na 1, 1 zvolíme za uzly interpolace kořeny Čebyševova polynomu T n+1 (x), pak ω n+1 (x) = 2 n T n+1 (x) a pro odhad chyby platí E(x) M n+1 1 (n + 1)! 2, n protože ω n+1 (x) = 2 n T n+1 (x) = 2 n T n+1 (x) = 2 n. Při interpolaci na obecném intervalu a, b lze použít lineární transformaci, kde x = 1((b a)z + a + b), z 1, 1 a pro uzly interpolace platí x 2 k = 1 ((b a)z 2 k +a+b), kde z k jsou kořeny Čebyševových polynomů na intervalu 1, 1. ) Pro chybu interpolace pak platí E(x) = f(x) P n (x) M n+1 1 n+1, po úpravě E(x) M n+1 (b a) n+1. (n+1)! 2 2n+1 ( b a (x+1)! 2 n 2 23
Interpolace na ekvidistantních uzlech Předpokládejme, že uzly interpolace jsou ekvidistantní, tj. x i = x 0 + ih, i = 0, 1,..., n, h R, h > 0. Nejprve zavedeme proměnnou q vztahem q = x x 0, h kde q je relativní vzdálenost bodu x od bodu x 0. Je-li x = x i pro nějaké i (tj. x je uzel interpolace), pak q = x 0+ih x 0 = i. Libovolný bod x x h i lze psát x = x 0 + qh. Lagrangeův interpolační polynom: Langrangeův interpolační polynom je ve tvaru P n (x) = n i=0 l i(x)f i. Přitom l i (x) = n j=0,j i n j=0,j i x x j x i x j l i (x 0 + qh) = x 0 + qh x 0 jh x 0 + ih x 0 jh = n j=0,j i n j=0,j i x 0 + qh x j x i x j = q j i j = L(i) n (q). Pak Lagrangeův interpolační polynom P n (x 0 + qh) = n i=0 L(i) n (q)f i. Pro chybu interpolace pak platí E(x 0 + qh) = f (n+1) (ξ) (x+1)! ω n+1 (x 0 + qh) = f (n+1) (ξ) (x+1)! (x 0 + qh x 0 )(x 0 + qh x 0 h)(x 0 + qh x 0 2h)... (x 0 + qh x 0 nh) = f (n+1) (ξ) h n+1 q(q 1)(q (n+1)! 2)... (q n) = f (n+1) (ξ) h n+1 n (n+1)! j=0 (q j) Příklad 1: Nalezněte Lagrangeův interpolační polynom pro data: i x i f i 0-1 1 1 0 4 2 1 9 24
l i (x) = (x x 0 )(x x 1 )... (x x i 1 )(x x i+1 )... (x x n ) (x i x 0 )(x i x 1 )... (x i x i 1 )(x i x i+1 )... (x i x n ) x(x 1) x(x 1) = = (1)(2) 2 (x + 1)(x 1) = = x2 1 l 0 (x) = (x x 1)(x x 2 ) (x 0 x 1 )(x 0 x 2 ) l 1 (x) = (x x 0)(x x 2 ) (x 1 x 0 )(x 1 x 2 ) l 2 (x) = (x x 0)(x x 1 ) (x 2 x 0 )(x 2 x 1 ) n P n (x) = l i (x)f(x i ) i=0 (1)( 1) = (x + 1)x (2)(1) P 2 (x) = f(x 0 )l 0 (x) + f(x 1 )l 1 (x) + f(x 2 )l 2 (x) P 2 (x) = x(x 1) 1 + 4( x 2 x(x + 1) + 1) + 9 2 2 = x(x + 1) 2 1 = x 2 + 1 = 1 2 (x2 x) + 4 4x 2 + + 9 2 (x2 + x) = 1 2 x2 1 2 x + 4 4x2 + 9 2 x2 + 9 2 x = 1 2 x2 4x 2 + + 9 2 x2 1 2 x + 9 ( 1 2 x + 4 = x2 2 4 + 9 ) ( + x 1 2 2 + 9 ) + 4 = 2 ( ) ( ) 1 8 + 9 8 = x 2 + x + 4 = x 2 + 4x + 4 2 2 Newtonův interpolační polynom: P n (x) = f 0 + (x x 0 )f[x 0, x 1 ] + (x x 0 )(x x 1 )f[x 0, x 1, x 2 ] + + (x x 0 )... (x x n 1 )f[x 0, x 1,..., x n ]. Nechť uzly x i, i = 0, 1,..., n jsou ekvidistantní, tj. x i = x 0 + ih, h R, h > 0. Pak Newtonův interpolační polynom lze psát ve tvaru P n (x 0 + qh) = f 0 + n j=0 j f 0 q(q 1)... (q j + 1) j! a nazýváme jej Newtonův interpolační polynom pro interpolaci vpřed. Zavedeme-li novou proměnnou s: x = x n + sh, s R : s = x xn, kde s je h relativní vzdálenost bodu x od bodu x n. Pak Newtonův interpolační polynom lze psát ve tvaru: n j f n P n (x n + sh) = f n + s(s + 1)... (s + j 1) j! j=1 a nazýváme jej Newtonův interpolační polynom pro interpolaci vzad. 25
Příklad 2: Nalezněte Newtonův interpolační polynom pro data i x i f(x i ) f[x i, x i+1 ] f[x i, x i+1, x i+2 ] 0 1 1 f[x 0, x 1 ] = 4 1 0+1 1 0 4 f[x 0, x 1, x 2 ] = 2 = 1 2 f[x 1, x 2 ] = 5 = 5 1 2 2 9 f[x i, x j ] = f(x i) f(x j ) x i x j i j f[x 0,..., x k ] = f[x 1,..., x k ] f[x 0,..., x k 1 ] k = 1, 2,..., n x k x 0 P n (x) = f(x 0 ) + (x x 0 )f[x 0, x 1 ] + (x x 0 )(x x 1 )f[x 0, x 1, x 2 ] + + + (x x 0 )... (x x n 1 )f[x 0, x 1,..., x n ] P 2 (x) = 1 + (x + 1)3 + (x + 1)x = 1 + 3x + 3 + x 2 + x = x 2 + 4x + 4 Iterovaná interpolace Úlohu najít interpolační polynom n-tého stupně neřešíme jako celek, ale postupujeme tzv. iterovaně, tj. postupně přidáváme uzly, čímž zvyšujeme stupeň interpolačního polynomu. Také můžeme iterované interpolace využít, když nás zajímá hodnota interpolačního polynomu v některém bodě různém od uzlů interpolace samotných, aniž bychom samotný polynom hledali. Lemma 1: Platí P ij (x) = f ij. P i0...i k (x) = 1 x ik x i0 P i 1...i k (x) P i0...i k 1 (x) x x ik x x i0 k = 0, 1,..., n 26
Tomuto postupu říkáme iterovaná interpolace, přičemž platí: P i0,i 1,...,i k (x ij ) = f ij a P i0 i 1,...,i k (x) Π k. Celý algoritmus zapisujeme do tabulky: x i f i P i (x) P i,i+1 (x) P i,i+1,i+2 (x) x 0 f 0 P 0 (x) P 01 (x) x 1 f 1 P 1 (x) P 012 (x) P 12 (x) x 2 f 2 P 2 (x) P 123 (x) P 23 (x) x 3 f 3 P 3 (x). Pro takto uspořádaný výpočet používáme termín Nevillův algoritmus (Nevillovo schéma). Příklad 3: Najděte interpolační polynom pro data i x i P i (x) 0 0-3 1 2-39 2 3-105 3 5-243 4 7 11 P i0...i k (x) = P 01 (x) = P 12 (x) = 1 x ik x i0 P i 1...i k (x) x x ik P i0...i k 1 (x) x x i0 1 x 1 x 0 P 1(x) x x 1 P 0 (x) x x 0 = 1 2 0 39 x 2 3 x = 39x 2 ( 3x + 6) = 18x 3 2 1 x 2 x 1 P 2(x) x x 2 P 1 (x) x x 1 = 1 3 2 105 x 3 39 x 2 = 105(x 2) + +39(x 3) = 66x + 93 27
P 23 (x) = P 34 (x) = P 012 (x) = P 123 (x) = P 234 (x) = P 0123 (x) = P 1234 (x) = P 01234 (x) = 1 x 3 x 2 P 3(x) x x 3 P 2 (x) x x 2 = 1 5 3 243 x 5 243(x 3) 105 x 3 = + 2 105(x 5) + = 69x + 102 2 1 x 4 x 3 P 4(x) x x 4 P 3 (x) x x 3 = 1 7 5 11 x 7 11(x 5) 243 x 5 = + 2 243(x 7) + = 127x 878 2 1 x 2 x 0 P 12(x) x x 2 P 01 (x) x x 0 = 1 66x + 93 x 3 3 18x 3 x = 66x2 + 93x + 3 (18x + 3)(x 3) + = 16x 2 + 14x 3 3 1 x 3 x 1 P 23(x) x x 3 P 12 (x) x x 1 = 1 69x + 102 x 5 ( 69x + 102)(x 2) 3 66x + 93 x 2 = + 3 (66x + 93)(x 5) + = x 2 61x + 87 3 1 x 4 x 2 P 34(x) x x 4 P 23 (x) x x 2 = 1 127x 878 x 7 (127x 878)(x 3) 4 69x + 102 x 3 = + 4 (69x 102)(x 7) + = 49x 2 461x + 837 4 1 x 3 x 0 P 123(x) x x 3 P 012 (x) x x 0 = 1 5 x2 61x + 87 x 5 16x 2 + 14x 3 x = ( x 3 61x 2 + 87x + (16x 2 14x + 3)(x 5) = 3x 3 31x 2 + 32x 3 5 1 x 4 x 1 P 234(x) x x 4 P 123 (x) x x 1 = 1 5 49x2 461x + 837 x 7 x 2 61x + 87 x 2 = (49x 2 461x + 837)(x 2) + (x 2 + 61x 87)(x 7) = 5 10x 3 101x 2 + 249x 213 1 x 4 x 0 P 1234(x) x x 4 P 0123 (x) x x 0 = 1 7 10x3 101x 2 + 249x 213 x 7 3x 3 31x 2 + 32x 3 x = 10x 4 101x 3 + 249x 2 213x (3x 3 31x 2 + 32x 3)(x 7) = 7 x 4 7x 3 + 2x 3 28
Příklad 4: Vypočítejte přibližnou hodnotu f(1) užitím Nevillova algoritmu, je-li dáno: i 0 1 2 3 4 x i -3-2 -1 0 2 f i -21-23 -9-3 9 i x i f i = P i (1) P i,i+1 (1) P i,i+1,i+2 (1) P i,i+1,i+2,i+3 (1) P 0,1,2,3,4 (1) 0 3 21 29 1 2 23 67 19 29 2 1 9 5 5 3 1 3 0 3 3 3 4 2 9 P 01 (1) = P 12 (1) = P 23 (1) = P 34 (1) = P 012 (1) = P 123 (1) = P 234 (1) = P 0123 (1) = P 1234 (1) = P 01234 (1) = 1 x 1 x 0 P 1(1) 1 x 1 P 0 (1) 1 x 0 = 1 2 ( 3) 23 1 ( 2) 21 1 ( 3) = 29 1 x 2 x 1 P 2(1) 1 x 2 P 1 (1) 1 x 1 = 1 1 ( 2) 9 1 ( 1) 23 1 ( 2) = 19 1 x 3 x 2 P 3(1) 1 x 3 P 2 (1) 1 x 2 = 1 0 ( 1) 3 1 0 9 1 ( 1) = 3 1 x 4 x 3 P 4(1) 1 x 4 P 3 (1) 1 x 3 = 1 2 0 9 1 2 3 1 0 = 3 1 x 2 x 0 P 12(1) 1 x 2 P 01 (1) 1 x 0 = 1 1 ( 3) 19 1 ( 1) 29 1 ( 3) = 67 1 x 3 x 1 P 23(1) 1 x 3 P 12 (1) 1 x 1 = 1 0 ( 2) 3 1 0 19 1 ( 2) = 5 1 x 4 x 2 P 34(1) 1 x 4 P 23 (1) 1 x 2 = 1 2 ( 1) 3 1 2 3 1 ( 1) = 3 1 x 3 x 1 P 123(1) 1 x 3 P 012 (1) 1 x 0 = 1 0 ( 3) 5 1 0 67 1 ( 3) = 29 1 x 4 x 1 P 234(1) 1 x 4 P 123 (1) 1 x 1 = 1 2 ( 2) 3 1 2 5 1 ( 2) = 1 1 x 4 x 0 P 1234(1) 1 x 4 P 0123 (1) 1 x 0 = 1 2 ( 3) 1 1 2 29 1 ( 3) = 5 29
Z lemmatu 1 lze odvodit tzv. Aitkenův algoritmus, který při výpočtu používá jiných permutací indexů. Tabulka je následující: x i f i P i (x) P 0i (x) P 01i (x) P 012i (x) x 0 f 0 P 0 (x) P 01 (x) x 1 f 1 P 1 (x) P 012 (x) P 02 (x) P 0123 (x) x 2 f 2 P 2 (x) P 013 (x) P 03 (x) x 3 f 3 P 3 (x) Při výpočtu třetího sloupce tabulky P i (x) volíme za index i hodnoty 0, 1,... n. V dalším sloupci P 0i (x) již je za první číslo indexu pevně zvolena 0 a poté následuje proměnná i, za kterou volíme hodnoty 1, 2,..., n. U následujícího sloupce P 01i (x) se proměnná posouvá na třetí pozici a volíme za ni hodnoty 2, 3,..., n, přičemž první dvě čísla indexu tvoří stále 01. Takto postupně i posouváme o pozici dál a volíme za něj hodnoty 0, 1,... n, které ale nejsou na pevných místech indexu, dokud nedojdeme k pevnému indexu 0, 1,..., n. Při počítání hodnot P (x) můžeme místa indexů zaměňovat tak, abychom v průběhu výpočtu mohli využít již známých hodnot. Tedy např. P 013 (x) = P 103 (x) = 1 P 03 (x) x x 3 x 3 x 1 P 10 (x) x x 1 P 10 (x) = P 01 (x) Příklad 5: Pomocí Aitkenova algoritmu najdi interpolační polynom pro data i x i f i P i (x) P 0i (x) P 01i (x) 0 1 1 P 0 (x) = 1 P 01 (x) = 3x + 4 1 0 4 P 1 (x) = 14 P 012 (x) = x 2 + 4x + 4 P 02 (x) = 5x + 6 2 2 16 P 2 (x) = 16 30
P i0...i k (x) = P 01 (x) = P 02 (x) = 1 x ik x i0 P i 1...i k (x) x x ik P i0...i k 1 (x) x x i0 1 x 1 x 0 P 1(x) x x 1 P 0 (x) x x 0 = 1 0 + (+1) 4 x 0 1 x + (+1) = 1 1 4 x 1 x + 1 = 4(x + 1) x = 4x + 4 x = 3x + 4 = P 10 (x) 1 x 2 x 0 P 2(x) x x 2 P 0 (x) x x 0 = 1 2 + (+1) 16 x 2 1 x + 1 = 1 [16(x + 1) 3 (x 2)] = 1 3 [16x + 16 x + 2] = 1 [15x + 18] = 5x + 6 3 P 012 (x) = 1 P 102 (x) = x 2 x 1 P 02(x) x x 2 P 10 (x) x x 1 = 1 2 0 5x + 6 x 2 3x + 4 x 0 1 2 [x(5x + 6) (3x + 4)(x 2)] = 1 2 [5x2 + 6x (3x 2 2x 8)] = 1 2 [5x2 + 6x 3x 2 + 2x + 8] = 1 2 [2x2 + 8x + 8] = x 2 + 4x + 4 Příklad 6: Vypočítejte přibližnou hodnotu f(1) užitím Aitkenova algoritmu, je-li dáno: i 0 1 2 3 4 x i -3-2 -1 0 2 f i -21-23 -9-3 9 i x i f i = P i (1) P 0,i (1) P 0,1,i (1) P 0,1,2,i (1) P 0,1,2,3,4 (1) 0 3 21 29 1 2 23 67 3 29 2 1 9 19 5 3 19 3 0 3 5 3 4 2 9 31
1 P 10 (1) = P 01 (1) = x 1 x 0 P 1(1) 1 x 1 P 0 (1) 1 x 0 = 1 2 ( 3) 23 1 ( 2) 21 1 ( 3) = 29 1 P 02 (1) = x 2 x 0 P 2(1) 1 x 2 P 0 (1) 1 x 0 = 1 1 ( 3) 9 1 ( 1) 21 1 ( 3) = 3 1 P 03 (1) = x 3 x 0 P 3(1) 1 x 3 P 0 (1) 1 x 0 = 1 0 ( 3) 3 1 0 21 1 ( 3) = 3 1 P 04 (1) = x 4 x 0 P 4(1) 1 x 4 P 0 (1) 1 x 0 = 1 1 ( 4) 9 1 2 21 1 ( 3) = 3 1 P 210 (1) = P 012 (1) = P 012 (1) = x 2 x 1 P 02(1) 1 x 2 P 10 (1) 1 x 1 = 1 1 ( 2) 3 1 ( 1) 29 1 ( 2) = 67 1 P 013 (1) = P 103 (1) = x 3 x 1 P 03(1) 1 x 3 P 10 (1) 1 x 1 = 1 0 ( 2) 3 1 2 29 1 ( 2) = 19 1 P 014 (1) = P 104 (1) = x 4 x 1 P 04(1) 1 x 4 P 10 (1) 1 x 1 = 1 2 ( 2) 3 1 2 29 1 ( 2) = 5 1 P 0123 (1) = P 3120 (1) = P 2103 (1) = x 3 x 2 P 103(1) 1 x 3 P 210 (1) 1 x 2 = 1 0 ( 1) 19 1 0 67 1 ( 1) = 29 1 P 0124 (1) = P 1204 (1) = P 2104 (1) = x 4 x 2 P 104(1) 1 x 4 P 210 (1) 1 x 2 = 1 2 ( 1) 5 1 2 67 1 ( 1) = 19 1 P 01234 (1) = P 31204 (1) = x 4 x 3 P 1204(1) 1 x 4 P 3120 (1) 1 x 3 = 1 2 0 19 1 2 29 1 0 = 5 Hermitovská interpolace Interpolovat lze také hodnoty derivací, viz. tzv. Hermitův interpolační problém: Jsou dány body x 0,..., x m : x i x k pro i k a hodnoty f (k) i i = 0, 1,..., m, k = 0, 1,..., n i 1. Nechť n + 1 = m i=0 n i. Hledáme polynom stupně n ve tvaru: P n (x) Π n : P n (k) (x i ) = f (k) i i = 0,..., m, k = 0,..., n i 1. 32
Toto je obecná úloha Hermitovské interpolace. I v tomto případě lze k nalezení interpolačního polynomu použít metodu neurčitých koeficientů. Jde jen o to, správně určit stupeň hledaného polynomu. Věta 6: Pro dané body x 0,..., x m : x i x k pro i k a pro dané hodnoty f (k) i i = 0,..., m k = 0,..., n i 1 existuje právě jeden polynom P n (x) Π n takový, že P n (k) (x i ) = f (k) i pro i = 0,..., m, k = 0,..., n i 1 přičemž n = m i=0 n i 1. Hovoříme o tzv. Hermitově interpolačním polynomu. Věta 7: Nechť jsou dány body x 1,..., x m a, b, x i x k pro i k, nechť f(x) C n+1 a, b. Dále nechť P n (x) je Hermitův interpolační polynom, tj. P n (x) Π n : P n (k) (x i ) = f (k) (x i ) i = 0,..., m, k = 0,..., n i 1, n = m i=0 n i 1. Pak x a, b ξ (a, b) : E( x) = f( x) P n ( x) = f (n+1) (ξ)ω n+1 ( x) (n + 1)!, kde ω n+1 (x) = (x x 0 ) n 0 (x x 1 ) n 1...(x x m ) nm. Zajímavý je případ, kdy i je n i = 2. Pak se dá odvodit vzorec k nalezení Hermitova interpolačního polynomu. Věta 8: Nechť jsou dány uzly x 0,..., x m, x i x k pro i k a funkční hodnoty f i a hodnoty 1. derivace f i i = 0,..., m. Dále nechť P 2m+1 (x) Π 2m+1 je Hermitův interpolační polynom, pro který platí P 2m+1 (x i ) = f i i = 0,..., m, P 2m+1(x i ) = f i i = 0,..., m. Pak tento polynom lze vyjádřit ve tvaru P 2m+1 (x) = m h i (x)f i + i=0 m h i (x)f i, i=0 kde h i (x) = [1 2(x x i )l i(x i )]l 2 i (x), h i (x) = (x x i )l 2 i (x) a l i (x) jsou fundamentální polynomy z Lagrangeova interpolačního polynomu. Poznámka 5: V obecném Hermitově interpolačním problému lze také výhodně použít Lagrangeova interpolačního polynomu: Hermitův interpolační polynom lze psát ve 33
tvaru P n (x) = P m (x)+ω m+1 (x)h n m 1 (x) pro data x i, i = 0, 1,..., m f (k) i, k = 0, 1,..., n i 1 i = 0,..., m, kde P m (x) je Lagrangeův interpolační polynom pro data (x i, f (0) i (n m) podmínek. P (k) n Příklad 7: ) i = 0, 1,..., m. Polynom H n m 1 (x) určíme ze zbývajících (x i ) = f (k) i, i = 0,..., m, k = 1,..., n i 1. Najděte Hermitův interpolační polynom, jsou-li dána data: i x i f(x i ) f (x i ) 0-1 1 0 1 1 9 12 P n (x) = m h i (x)f(x i ) + i=0 m h i (x)f (x i ) n = 2m + 1 i=0 h i (x) = [1 2(x x i )l i(x i )]l 2 i (x) h i (x) = (x x i )li 2 (x) 1 P 3 (x) = h i (x)f(x i ) + i=0 1 h i (x)f (x i ) i=0 l 0 (x) = (x x 1) (x 0 x 1 ) = x 1 2 = 1 2 (x 1) l 0(x) = 1 2 l 1 (x) = (x x 0) (x 1 x 0 ) = x + 1 = 1 2 2 (x + 1) l 1(x) = 1 2 [ ( )] 1 1 h 0 (x) = 1 + 2(x + 1) h 1 (x) = [ 1 2(x 1) 2 ( 1 2 h 0 (x) = (x + 1) 1 (x 1)2 4 h 1 (x) = (x 1) 1 (x + 1)2 4 4 (x 1)2 = (1 + x + 1) 1 4 (x 1)2 = (x + 2) 1 (x 1)2 4 )] 1 4 (x + 1)2 = (1 x + 1) 1 4 (x + 1)2 = (2 x) 1 (x + 1)2 4 h 0 (x)f(x 0 ) = (x + 2) 1 4 (x 1)2 1 = 1 4 (x + 1)(x2 2x + 1) = 1 4 (x3 3x + 2) h 1 (x)f(x 1 ) = (2 x) 1 4 (x + 1)2 9 = 9 4 (2 x)(x2 + 2x + 1) = 9 4 ( x3 + 3x + 2) h 0 (x)f (x 0 ) = (x + 1) 1 4 (x 1)2 0 = 0 34
h 1 (x)f (x 1 ) = (x 1) 1 4 (x + 1)2 12 = 3(x 1)(x 2 + 2x + 1) = 3(x 3 + x 2 x 1) P 3 (x) = 1 4 x3 3 4 x + 1 2 9 4 x3 + 27 4 x + 9 2 + 0 + 3x3 + 3x 2 3x 3 = ( 1 x 3 4 9 ) ( 4 + 3 + 3x 2 + x 3 4 + 27 ) ( 1 4 3 + 2 + 9 ) 2 3 = Příklad 8: x 3 + 3x 2 + 12 4 x + 4 2 = x3 + 3x 2 + 3x + 2 Najděte Hermitův interpolační polynom, jsou-li dána data: i x i f i (x) f i(x) f i (x) 0 0 1-3 4 1 1 0 2 2 3 172 m = 2, n = m n i 1 = 3 + 2 + 1 1 = 5, i=0 P 5 (x) = P 2 (x) + ω 3 (x)h 2 (x) P m (x) = m l i (x)f i i=0 P 2 (x) = (x x 1)(x x 2 ) (x 0 x 1 )(x 0 x 2 ) f 0 + (x x 0)(x x 2 ) (x 1 x 0 )(x 1 x 2 ) f 1 + (x x 0)(x x 1 ) (x 2 x 0 )(x 2 x 1 ) f 2 (x 1)(x 3) P 2 (x) = + x(x 1) 172 = 6 3 1 3 (x2 4x + 3 + 86x 2 86x) = 29x 2 30x + 1 P 2(x) = 58x 30, P 2 (x) = 58 m ω m+1 = (x x i ) i=0 ω 3 (x) = x(x 1)(x 3) = x 3 4x 2 + 3x, ω 3(x) = 3x 2 8x + 3, ω 3(x) = 6x 8 H 2 (x) = ax 2 + bx + c, H 2(x) = 2ax + b, H 2 (x) = 2a P n(x) = P m(x) + ω m+1(x)h n m 1 (x) + ω m+1 (x)h n m 1(x) P 5(x) = 58x 30 + (3x 2 8x + 3)(ax 2 + bx + c) + (x 3 4x 2 + 3x)(2ax + b) P n (x) = P m(x) + ω m+1(x)h n m 1 (x) + 2ω m+1(x)h n m 1(x) + ω m+1 (x)h P n m 1(x) 5 (x) = 58 + (6x 8)(ax 2 + bx + c) + 2(3x 2 8x + 3)(2ax + b) + (x 3 4x 2 + 3x)2a 35
P 5(0) = 30 + 3c = 3 c = 9 P 5(1) = 28 + ( 2)(a + b + c) = 2 a + b + 9 = 13 a = 4 b P 5 (0) = 58 + ( 8)c + 6b = 4 b = 3 a = 1 P 5 (x) = 29x 2 30x + 1 + (x 3 4x 2 + 3x)(x 2 + 3x + 9) = x 5 x 4 + 2x 2 3x + 1 Interpolace v R 2 Interpolovat lze funkce na pravoúhlé oblasti, ale i na obecnějších oblastech. Interpolace polynomy na pravoúhlé síti Uvažujme oblast D R 2, tj. D = {[x, y] R 2 a x b, c y d}. V intervalu a, b sestrojíme uzly x i tj. a = x 0 < x 1 <... < x n = b a v intervalu c, d sestrojíme uzly y j tj. c = y 0 < y 1 <... < y m = d. Tedy máme uzly [x i, y j ] i = 0,..., n, j = 0,..., m a nechť jsou dány hodnoty nějaké funkce f(x, y) v těchto bodech. Tj. f(x i, y j ) = f ij i, j. Hledáme polynom P (x, y) : P (x i, y j ) = f ij i = 0, 1,..., n j = 0, 1,..., m, který je stupně m v proměnné x a stupně n v proměnné y. Postup je takový, že nejprve interpolujeme na přímkách y j hodnoty f ij v uzlech x i, tj. sestrojíme P (x, y j ) = n i=0 l i(x)f ij j = 0, 1,..., m. Potom interpolujeme na přímkách x i hodnoty P (x, y j ), tj. sestrojíme P (x, y) = m j=0 l j(y)p (x, y j ). Tedy celkem lze hledaný polynom P (x, y) psát ve tvaru: P (x, y) = m n l j (y) l i (x)f ij = j=0 i=0 n m l ij (x, y)f ij, i=0 j=0 kde l ij (x, y) = l i (x)l j (y). 36