Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre VIII, section 3.8, exercice 1, page 224.

Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/

Page du Projet Algorithmes | Page de Philippe Dumas | Page Maple de Philippe Dumas

Retour en page principale
Table des matières
Index
Maple V.4 worksheet
Maple V.5 worksheet


Nous savons bien que la base des logarithmes népériens est somme de la série de terme général 1/k!. Quand nous effectuons la multiplication de la somme de cette série par n! les termes d'indice k=0 à k=n donnent un entier. Multiplié par 2*Pi, cet entier disparaît dans le sinus. L'expression utile est donc le sinus de 2*Pi fois la somme des 1/(n+1)/(n+2)../(n+k). Si nous tronquons cette somme au rang k=m, le reste est classiquement majoré par n!/((n+m).(n+m)!). Il fournit donc un O(1/n^(m+1)). Le calcul à effectuer est donc le suivant, pour un m donné.

> m:=15;

[Maple Math]

> da:=asympt(sin(2*Pi*add(1/mul(n+j,j=1..i),i=1..m)+O(1)/n^(m+1)),
n,m+1);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

Tester numériquement cette approximation demande une grande précision de calcul. En effet n! est rapidement très grand et pourtant 2*Pi*e*n! doit être bien déterminé par rapport aux multiples de 2*Pi pour que le sinus soit calculé correctement. En conséquence nous lions la valeur de Digits à la longueur de l'écriture décimale de n!.

> nn:=30;

[Maple Math]

> Digits:=floor(1.5*length(nn!));

[Maple Math]

> truevalue:=evalf(sin(2*Pi*exp(1)*nn!));

[Maple Math]

> approximation:=evalf(eval(subs(O=0,n=nn,da)));

[Maple Math]

> evalf(truevalue-approximation);

[Maple Math]

On peut être déçu de la mauvaise qualité de l'approximation. En effet on attendait une erreur de l'ordre de 1/n^m.

> evalf(1/nn^m,3);

[Maple Math]

Ce n'est pas du tout ce que l'on observe et cela est dû au fait que les coefficients du développement croissent très vite.

> evalf(da,3);

[Maple Math]
[Maple Math]

Retour en page principale