Příklad 8.6 - přibližný výpočet π pomocí prvních 6 nenulových členů rozvoje arctg(1) a arcsin(1/2) 

> pi_approx:=4*sum((-1)^n/(2*n+1),n=0..5);
 

`assign`(pi_approx, `/`(10312, 3465)) (1)
 

> evalf(pi_approx);
evalf(Pi-pi_approx);
 

 

2.9760461760461760462
.1655464775436171923 (2)
 

Odhad chyby pomocí následujícího členu alternující řady 

> evalf(4/(2*5+1));
 

.36363636363636363636 (3)
 

> pi_approx2:=6*sum(doublefactorial(2*n-1)/(doublefactorial(2*n)*(2*n+1))*(1/2)^(2*n+1),n=0..5);
 

`assign`(pi_approx2, `/`(951195037, 302776320)) (4)
 

> evalf(pi_approx2);
evalf(Pi-pi_approx2);
 

 

3.1415767157748664096
0.159378149268289e-4 (5)
 

Odhad chyby pomocí součtu zbytku řady (odhadnutého shora součtem geometrické řady) 

> evalf(6/13*sum((1/2)^(2*n+1),n=6..infinity));
 

0.75120192307692307692e-4 (6)
 

Příklad 8.7 - přibližný výpočet integrálu 

> int(ln(1+x^2),x=0..1);
 

`+`(ln(2), `-`(2), `*`(`/`(1, 2), `*`(Pi))) (7)
 

> sum((-1)^(n+1)/(n*(2*n+1)),n=1..infinity);
 

`+`(ln(2), `-`(2), `*`(`/`(1, 2), `*`(Pi))) (8)
 

Příklad 9.1 - přibližný výpočet a odhad chyby 

> X:=int(x^2*exp(-x^2),x=0..1/3);
 

`assign`(X, `+`(`-`(`*`(`/`(1, 6), `*`(exp(-`/`(1, 9))))), `*`(`/`(1, 4), `*`(sqrt(Pi), `*`(erf(`/`(1, 3))))))) (9)
 

> Y:=sum((-1)^n/n!*(1/3)^(2*n+3)/(2*n+3),n=0..infinity);
 

`assign`(Y, `+`(`/`(`*`(`/`(1, 12), `*`(`+`(`-`(2), `-`(`*`(sqrt(9), `*`(exp(`/`(1, 9)), `*`(`+`(`-`(1), erfc(`/`(1, 3))), `*`(sqrt(Pi))))))))), `*`(exp(`/`(1, 9)))))) (10)
 

> X-Y;
 

`+`(`-`(`*`(`/`(1, 6), `*`(exp(-`/`(1, 9))))), `*`(`/`(1, 4), `*`(sqrt(Pi), `*`(erf(`/`(1, 3))))), `-`(`/`(`*`(`/`(1, 12), `*`(`+`(`-`(2), `-`(`*`(sqrt(9), `*`(exp(`/`(1, 9)), `*`(`+`(`-`(1), erfc(`/`... (11)
 

> simplify(X-Y);
 

0 (12)
 

Aproximace pomocí prvních n0+1 členů sumy 

> n0:=3;
Y_approx:=sum((-1)^n/n!*(1/3)^(2*n+3)/(2*n+3),n=0..n0);
 

 

`assign`(n0, 3)
`assign`(Y_approx, `/`(214916, 18600435)) (13)
 

Při počítání s malou přesností bychom mohli dostat nesprávné výsledky, zdánlivě větší než je odhad... 

> Digits:=8;
evalf(Y-Y_approx);
 

 

`assign`(Digits, 8)
`+`(`*`(3.5, `*`(`^`(10, -8)))) (14)
 

Zvětšíme přesnost a výsledek se podstatně změní 

> Digits:=20;
evalf(Y-Y_approx);
 

 

`assign`(Digits, 20)
`+`(`*`(2.0986982685412, `*`(`^`(10, -8)))) (15)
 

Na kolik míst umíme vlastně maximálně počítat? 

> kernelopts(maxdigits);
 

268435448 (16)
 

To snad bude stačit... Odhadneme chybu pomocí dalšího členu alternující řady: 

> 1/(n0+1)!*(1/3)^(2*(n0+1)+3)/(2*(n0+1)+3);
 

`/`(1, 46766808) (17)
 

> evalf(%);
 

`+`(`*`(2.1382686626805917564, `*`(`^`(10, -8)))) (18)
 

To je o trochu víc než je skutečná chyba.