Řady - aproximace funkcí

Hlavní cílem této části je ukázat možnosti aproximace funkcí pomocí řad. Základním příkazem je funkce series , která ve většině případů povede na Taylorovu nebo Laurentovu řadu.

> ?series

> series(sin(tan(x)),x=0,10);
convert(%,ratpoly);

series(1*x+1/6*x^3-1/40*x^5-55/1008*x^7-143/3456*x^...

(492361/14812560*x^5-24097/35268*x^3+x)/(1-29975/35...

> series(x^x,x=0,5);

> series(x^x,x=1,5);

series(1+ln(x)*x+1/2*ln(x)^2*x^2+1/6*ln(x)^3*x^3+1/...

series(1+1*(x-1)+1*(x-1)^2+1/2*(x-1)^3+1/3*(x-1)^4+...

> Int(ln(1+s*t)^2/(1+t^2),t=0..infinity);
series(%,s=0,5);

Int(ln(1+s*t)^2/(1+t^2),t = 0 .. infinity)

series(1/3*Pi^2*s+(-1/2*Pi)*s^2+(7/6-ln(s)-1/9*Pi^2...

P odobně lze řešit i diferenciální rovnice, jak bylo ukázáno výše.
Pro aproximace funkcí slouží zejména knihovna
numapprox, jejíž některé říkazy si nyní ukážeme na příkladě aproximace funkce exp(x) .

> restart;

> with(numapprox);

[chebdeg, chebmult, chebpade, chebsort, chebyshev, ...

Apoximace racionální funkcí (Padé).

> pp:=pade(exp(x),x,[3,2]); # racionální funkce 3.(čitatel) a 2.(jmenovatel) řádu

pp := (1+3/5*x+3/20*x^2+1/60*x^3)/(1-2/5*x+1/20*x^2...

> plot(exp(x)-pp,x=-2..2); # závislost chyby aproximace na x
maximize(evalf(exp(x)-pp),x,-2..2); # nalezení maximální chyby v uvažovaném oboru hodnot x

[Maple Plot]

Error, (in maximize) unexpected options: -2 .. 2

Tento postup je nyní aplikován na jiné druhy aproximací, proto ho již nebudeme komentovat.
Aproximace Čebyševovým polynomem..

> numapprox[chebyshev](exp(x),x);
pp1:=eval(subs(T=orthopoly[T],%));

1.266065878*T(0,x)+1.130318208*T(1,x)+.2714953396*T...
1.266065878*T(0,x)+1.130318208*T(1,x)+.2714953396*T...
1.266065878*T(0,x)+1.130318208*T(1,x)+.2714953396*T...

pp1 := 1.000000000*x+.5000000002*x^2+.1666666612*x^...
pp1 := 1.000000000*x+.5000000002*x^2+.1666666612*x^...

> plot(exp(x)-pp1,x=-2..2);
maximize(evalf(exp(x)-pp1),x,-2..2);

[Maple Plot]

Error, (in maximize) unexpected options: -2 .. 2

Čebyševova (Padéova) aproximace racionální funkcí.

> Digits:=5:

> chebpade(exp(x),x=-2..2,[3,2]);
pp2:=eval(subs(T=orthopoly[T],%));
pp3:=confracform(pp2,x);

(1.2097*T(0,1/2*x)+1.2266*T(1,1/2*x)+.29072*T(2,1/2...

pp2 := (.91898+.56542*x+.14536*x^2+.15960e-1*x^3)/(...

pp3 := .39303*x+7.0048+66.076/(x-6.6585+8.9342/(x-2...

> plot(exp(x)-pp3,x=-2..2);
maximize(evalf(exp(x)-pp3),x,-2..2);

[Maple Plot]

Error, (in maximize) unexpected options: -2 .. 2

Izoextremální aroximace.

> mn:=minimax(exp(x),x=-2..2,[3,2],1,'err_max');
err_max;

Error, (in numapprox/remez) error curve fails to oscillate sufficiently; try different degrees

err_max

> plot(exp(x)-mn,x=-2..2);
maximize(evalf(exp(x)-mn),x,-2..2);

Plotting error, empty plot

Error, (in maximize) unexpected options: -2 .. 2

V MAPLE je pro tuto problematiku vytvořen ještě další soubor příkazů v knihovně powerseries . Ten již necháme zvídavým čtenářům k samostatnému studiu.

Do této kapitoly by bylo možné zahrnout i prokládání bodů křivkou, což je úkol statistické matematiky. Tento a další úlohy, spadající do této oblasti, budou ukázány v kapitole Grafika .