Čebyševovy aproximace Čebyševova aproximace je tzv hledání nejlepší stejnoměrné aproximace funkce v daném intervalu Hledáme funkci h x, která v intervalu a,b minimalizuje maximální absolutní hodnotu rozdílu od funkce f x, tedy min h x max x a,b f x h x, kde h x jsou funkce z určité třídy funkcí Pokud je touto třídou množina polynomů určitého stupně, pak se funkci h x (tedy nejlepší stejnoměrné aproximaci) říká minimax Minimax existuje za velmi obecných podmínek, avšak jeho konstrukce je poměrně složitá (Remesův algoritmus) Obdobně je zaručena existence nejlepší stejnoměrné aproximace mezi racionálními lomenými funkcemi a ke konstrukci této aproximace se používá opět Remesův algoritmus Čebyševovy polynomy Aproximace pomocí Čebyševových polynomů se konstruuje lehce a je téměř stejně přesná jako nejlepší stejnoměrná aproximace Pro výpočet funkcí se používá často ejprve se interval a, b transformuje na interval 1,1 Každému t a, b tedy přiřadíme hodnotu x 1,1 podle vztahu x= 2t a b b a Čebyševův polynom se zapisuje ve tvaru T n x =cos narccos x Pro polynomy 0 a 1 stupně tedy platí T 0 x =cos 0 arccos x =1 a T 1 x =cos 1 arccos x =x Čebyševovy polynomy vyšších stupňů je možné konstruovat pomocí rekurentního vztahu T n 1 x =2 x T n x T n 1 x Ověřme na T x =cos 2arccos x Protože cos 2 x =cos x sin x =cos x 1 cos x =2cos x 1 T x =2 cos arccos x 2 1=2 x 2 1=2 x T 1 x T 0 x, pak T 0 x =1 T 1 x =x T x =2 x 2 1 T 3 x =4 x 3 3 x T 4 x =8 x 4 8 x 1 Vlastnosti Čebyševových polynomů (kořeny, extrémy a ortogonalita) V intervalu 1,1 má Čebyševův polynom T n x n kořenů v bodech x=cos k 1/2 n, k=1,,n n 1 extrémů v absolutní hodnotě rovných 1 v bodech x=cos k /n, k =0,, n
Čebyševovy polynomy jsou na intervalu 1,1 1 T i x x 1 1 x dx= ortogonální s vahou 0 i j i= j 0 2 i= j=0 1 1 x, tzn 0 i j n Diskrétní ortogonalita T i x k x k = m i= j 0 k=1 2 m i= j=0 jsou kořeny Čebyševova polynomu T m x pro všechna i, j m a x k,k=1,,n Aproximace pomocí Čebyševových polynomů (algoritmus) Funkci f x aproximujeme pomocí Čebyševových polynomů (až do stupně ) následovně: f x T x = 1 1 2 c 0 c j x, c j = 2 k=1 [cos k 1 j f ] cos k 1 Pro ilustraci: =1, f x T x = 1 2 c 0,
c 0 =2 f [cos 1 1 1 ] cos 0 1 1 1 =2 f [ cos ] cos 0 =2 f 0, a tedy f x T x = f 0 =2, f x T x = 1 2 c 0 c 1 T 1 x = 1 2 c 0 c 1 x, c 0 = f [ cos 4 ] cos 0 f [ cos 3 4 ] cos 0 = f [ cos 4 ] f [ cos 4 ], c 1 = f [ cos 4 ] cos 4 f [ cos 3 4 ] cos 3 4 = = f [ cos 4 ] cos 4 f [ cos 4 ] cos 4, a tedy f x T x = 1 2 [ f 2 f 2 ] 2 2 [ f 2 f 2 ] x =3, T x = 1 3 [ f 3 f 0 f 3 ] 3 3 [ f 3 f 3 ] x 1 3 [ f 3 2 f 0 f 3 ] 2 x2 1 K výpočtu koeficientů c j tedy potřebujeme znát hodnoty funkce v přesně definovaných bodech Aproximace pomocí Čebyševových polynomů nelze tedy použít vždy Všimněte si, že hodnoty funkce T x jsou shodné s hodnotami funkce bodech polynomu T x f x ve všech nulových apř: =2, T 2 x =2 x 2 1 má nulové body 2 2 a 2 2, a tedy
f 2 =T 2 = 1 2 [ f 2 f 2 ] 2 2 [ f 2 f 2 ] 2 = = 1 2 [ f 2 f 2 ] 1 2 [ f 2 f 2 ] = f 2 Obdobně platí f 2 =T 2 Při výpočtu aproximace pomocí Čebyševových polynomů nejprve předpočítáme koeficienty c j, obvykle až do nějakého vysokého řádu 30 50 Tyto koeficienty jdou většinou poměrně rychle k 0 Pokud chceme funkci f x aproximovat s přesností (tedy pro x 1,1 platí f x T x ) a z hodnot koeficientů c j pro nějaké m zjistíme, že c j, potom stačí pro výpočet hodnot funkce f x používat pouze prvních m koeficientů c j Pokud máme předpočítané koeficienty c j 1 vztahu T x = 1 2 c 0 1 c j x = j=0 j=m, můžeme počítat funkční hodnoty funkce T x podle c j x 1 2 c 0 s použitím rekurentního vztahu T n 1 x =2 x T n x T n 1 x a vztahů T 0 x =1, T 1 x =x V některých případech je ale jednodušší vyjádřit T x přímo jako kombinaci T 0 x a T 1 x - v obecném případě platí vztah, kterému se říká Clenshawova formule apř: =3, T x =c 0 T 0 x c 1 T 1 x c 2 T 2 x 1 2 c 0 T 0 x, T 2 x =2 x T 1 x T 0 x, T x = 1 2 c 0 T 0 x c 1 T 1 x 2 x c 2 T 1 x c 2 T 0 x = 1 2 c 2 T 0 x c 1 2 x c T 1 x Algoritmus je následující: y 2 =y 1 =0 y k =2 x y k 1 y k 2 c k, k=, 1,,1 T x = T 0 x y 2 T 1 x y 1 T 0 x c 0, tedy f x y 2 y 1 x c 0 Clenshawovy formule nemusí být vždy vhodné a mohou někdy (díky nestabilitě) vést ke katastrofálním ztrátám přesnosti Clenshawovy formule existují v obecnější podobě pro součet funkcí daných určitým rekurentním vztahem, detaily lze nalézt v umerical Recipies Příklady na Čebyševovu aproximaci v PASCALU DEMCHEBPAS, CHEBVYP2PAS, CHEBV3PAS
Pomocí Čebyševových polynomů se dá z funkce f x poměrně jednoduše počítat integrál a derivace Platí totiž f ' x T ' x = 1 1 1 2 c 0 c j x '= c j ' x = 1 2 2 c ' 0 c j ' x f x dx T x dx= 1 1 2 c 0 Pro koeficienty c j ' a C j platí vztahy : c j x dx= C j x c '=c 1 '=0, c i 1 '=c i 1 ' 2 i c i, i= 1, 2,,1 C 0 libovolné (integrační konstanta), C i = c i 1 c i 1 2 i, i 0 apř: f ' x T ' x = 1 2 c 0 c 1 T 1 x c 2 T x c 3 T 3 x '= = 1 2 c 0 c 1 x c 2 x2 1 c 3 4 x 3 3 x '= =c 1 4 x c 2 12 x 2 3 c 3 c 4 '=c 3 '=0, c 2 '=6 c 3, c 1 '=4 c 2, c 0 '=6 c 3 2 c 1 T ' x = 1 2 c 0 ' c 1 'T 1 x c 2 'T x =c 1 3c 3 4 c 2 x 6 c 3 2 x2 1 Metoda nejmenších čtverců Vlastností metody nejmenších čtverců je, že aproximační funkce neprochází zadanými body Této metody se využívá například při aproximaci výledků měření s nezanedbatelnými chybami Diskrétní případ funkce f je zadána v diskrétních bodech x i, pak úloha spočívá v minimalizaci funkcionálu = w i [ f x i M x i ] 2 Spojitý případ funkce f je zadána na celém intervalu a, b, pak úloha spočívá v minimalizaci funkcionálu = a rovnou 1 b w x [ f x M x ] 2 dx, w x často klademe identicky
Označení M znamená, že aproximační funkce je zadána až na M neznámých parametrů c j Aproximace metodou nejmenších čtverců může být: lineární funkce M je lineární vzhledem k parametrům c j, jde tedy o zobecněný polymon M M x = c j g j x nelineární funkce M není lineární vzhledem k parametrům c j Diskrétní aproximace Úlohou (v numerické matematice) je nalézt hladké aproximace dat Jednou z možností (zřejmě používanou) jsou zvonové spliny (tzv B-spliny) Je dána síť bodů s krokem h a konstruujeme zvonový spline se středem v Označme p=h x, q=2 h x 0 q 0 Potom je B-spline dán vztahy B x = q 3 p 0 q 3 4 p 3 p 0 a následujícím obrázku je B-spline s =0 a h=1
B-spline je funkce třídy C 2 nenulová pouze v intervalu a, b Hledání koeficientů u těchto splinů vede na úlohu řešení systému lineárních rovnic s pásovou maticí Lineární aproximace Položíme M f x i = c j g j x i, kde M a získáme tak systém rovnic pro M neznámých koeficientů c j Vede tedy na řešení systému lineárních rovnic metodou SVD (singular value decomposition) Jiný přístup je hledání minima pomocí derivace l=1,, M [ f c l 2] M x i c j g j x i =0 pro Ukázka pro =M =2, l=1,2 c 1 [ 2] f x i c 1 g 1 x i c 2 g x i = = c 1 [ f x i c 2 1 g 2 1 x i c 2 2 g 2 x i 2c 1 f x i g 1 x i 2c 2 f x i g x i 2c 1 c 2 g 1 x i g x i ] = = 2c 1 g 2 1 x i 2 f x i g 1 x i 2c 2 g 1 x i g x i =0 tedy pro l=1 máme a pro l=2 máme g 1 x i c 1 g 1 x i c 2 g x i = g x i c 1 g 1 x i c 2 g x i = g 1 x i f x i g x i f x i
Pokud definujeme skalární součin f, g f x i g x i, můžeme tyto rovnice přepsat jako c j g j, g 1 = f, g 1 pro l=1 a Této soustavě rovnic pro c j říkáme normální rovnice Jako bázové funkce g x se nejčastěji volí: c j g j, g = f, g pro l=2 polynomy často pak polynomy 1, x, x 2,, x M 1, ty jsou vhodné zejména pro malá M, pro velká M soustava špatně podmíněná ortogonalizované polynomy nejsou problémy jako v předchozím případě trigonometrické polynomy základní funkce jsou 1,sin x,cos x,sin 2 x,cos 2 x, Spojitá aproximace Totéž jako v diskrétním případě, jen je zde skalární součin definován jako b f, g = a f x g x dx Jako bázové funkce g x se nejčastěji volí: ortogonální polynomy Čebyševovy polynomy Laguerrovy polynomy Hermiteovy polynomy trigonometrické polynomy Výpočet funkcí ěkolik poznámek o metodách používaných při výpočtu funkcí Výpočet hodnoty polynomu počet operací potřebných k výpočtu hodnoty polynomu P n x =a 0 a 1 x a 2 x a n x n lze snížit převedením polynomu na tvar P n ={ x a 1 }x a 0 Tento postup se nazývá Hornerovo schéma Kořeny kvadratické rovnice pro 4ac b 2 s použitím vztahu x 1,2 = b± b2 4ac 2a Proto vhodnější pro b 0 x 1 = b b2 4 ac a 2a ztráta přesnosti jednoho z kořenů x 2 = c a x 1,
pro b 0 x 1 = b b2 4 ac 2a a x 2 = c a x 1 Výpočet funkcí pomocí mocninných řad f x = a k x x 0 k, často se k výpočtu hodnot funkce nehodí, hodí se jen pro x blízká x 0 k=0 Jinak zpravidla ztráta přesnosti nebo pomalá konvergence ekonečné zlomky a rekurentní vztahy pro výpočet funkcí viz slidy k přednášce umerická derivace Zpravidla se provede aproximace nějakou jednoduchou snadno derivovatelnou funkcí a ta se derivuje Používá se : interpolační spline Čebyševovy polynomy interpolační polynomy Lagrangeův interpolační polynom pro n=1 (na dvou bodech x 0, x 1 ), vzorec pro ekvidistantní uzly s krokem h t= x x 0 t t 1 t t 1, L 1 x =L 1 x 0 th =y 0 y h t 1 t 1 =y 1 t y 0 1t (jedná se vlastně o přímku procházející body x 0, y 0 a x 1, y 1 ) d Derivujeme tedy podle x, dx = 1 d, L h dt 1 ' x = 1 h y y 0 1 a derivace je tedy na intervalu x 0, x 1 nahrazena konstantou rovnou směrnici tečny původní přímky ahrazení derivace pouze z hodnot ve dvou krajních bodech není moc přesné Chyba je řádu h Používají se výpočty derivace z interpolace zpravidla na 5 bodech, kde může být přesnost řádu h 4 Do zderivaného vzorce odvozeného z Lagrangeovy interpolace na uzlech x 0, x 1, x 2, x 3, x 4 (tedy na x 0, x 0 h, x 0 2 h, x 0 3 h, x 0 4 h ) se dosadí prostřední bod x=x 0 2 h a tak dostaneme numerickou aproximaci derivace v tomto bodě ze znalosti okolních 4 bodů Vzorec je f ' x 0 2 h = 1 12 h [ y 8 y 8 y y ] 0 1 3 4 Vzorec pro n=2 je f ' x 0 h = 1 2 h [ y 0 y 1 ] s chybou řádu h2
Řešení nelineárních rovnic umerické řešení nelineárních rovnic je vždy iterační Řešení se nějakým způsobem odhadne a pak se tento odhad zpřesňuje Řeší se jednotlivá rovnice - f x =0, řešení nazýváme kořen Ten nemusí existovat, nebo jich může existovat i více Je to relativně snadná úloha systém rovnic - f x = 0, tedy rovnic o neznámých f je zde vlastně - dimenzionální vektorová funkce, jejímiž složkami jsou jednotlivé rovnice Řešení nemusí existovat, může existovat více bodových řešení a v některých případech může být řešením i celá spojitá množina Ve více dimenzích není k dispozici žádná spolehlivá metoda, pokud není k dispozici dobrý odhad Spočívá ve dvou krocích: Řešení jedné rovnice f x =0 ohraničení kořene, určení intervalu, ve kterém se kořen nachází zpřesňování hodnoty kořene na požadovanou přesnost Pro polynomy existují speciální metody, které budeme probírat později V reálném oboru je hledání řešení v okolí dvojnásobného kořene úloha nekorektní V komplexním oboru je úloha korektní vždy Ohraničení kořene Pokud pro x 1 x 2 platí, že f x 1 f x 2 0, pak je v intervalu x 1, x 2 alespoň jeden kořen Algoritmus ohraničení kořene spočívá v rozšiřování, případně zkracování původně navrženého intervalu Hledání ohraničeného kořene Obvykle se používají metody, které nepotřebují znát derivaci funkce Pokud se používá metoda založená na derivaci funkce f x, pak je třeba moci tuto derivaci rychle numericky spočítat ejjednodušší a nejintuitivnější metoda Metoda půlení intervalu Kořen je ohraničen v intervalu a 0, b 0 tak, že f a 0 f b 0 0 Zvolíme bod x 1 = 1 a 0 b 0 Pokud f x 1 f b 0 0, zvolíme v dalším kroku a 1 =x 1, b 1 =b 0 a kořen máme ohraničený v intervalu a 1, b 1 poloviční délky V opačném případě f x 1 f b 0 0, zvolíme v dalším kroku a 1 =a 0, b 1 =x 1 a kořen máme
opět ohraničený v intervalu a 1, b 1 poloviční délky Takto postupujeme dál, až po n krocích je kořen v intervalu a n,b n a nepřesnost jeho určení je n = b n a n Obecně lze zapsat n 1 =C n m, kde m 1 Zde pak platí m=1 a C= 1 2 Počet kroků pro výpočet kořene s přesností je při chybě počátečního odhadu 0 roven n=log 2 0 Metoda půlení intervalu je spolehlivá, vždy konverguje, ale v blízkosti kořene je poměrně pomalá Vyzkoušejte si napsat v PASCALU metodu půlení intervalu pro řešení rovnice sin x 3 ln x cos x e x x 3 =0 Kořen se nachází v intervalu 0,1 Řešení rovnice je přibližně 024475