Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre II, section 1.4, exercice 1, page 45.

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


Une boucle fait l'affaire. On notera le point décimal du 1. qui apparaît dans la définition de term à la deuxième ligne. Sans ce point le calcul effectué serait exact et fournirait un rationnel. Il serait beaucoup plus coûteux, ce qui est absurde puisque l'on désire un résultat en flottants.

> s:=1:
term:=1.:
bound:=10.^(-Digits-2):
for n while term>bound do
term:=term/n;
s:=s+term
od:
s;

[Maple Math]

À partir de V.4, on pourrait aussi utiliser add (qui comporte une boucle dans son code) mais cela suppose de déterminer préalablement jusqu'où il faut sommer les termes.

D'ailleurs il faudrait justifier le choix qui a été fait ci-dessus pour contrôler la boucle. Il repose sur l'estimation grossière suivante, qui est suffisante vue la rapide convergence de la série : si le terme d'indice N+1 est plus petit que beta alors le reste d'indice N de la série est majoré par beta*sum(1/2^k,k=0..infinity), c'est-à-dire 2*beta. Ici nous avons pris beta égal à 10.^(-Digits-2). Du coup on peut se demander pourquoi on n'obtient pas la valeur attendue. Il aurait fallu pour cela modifier la valeur de Digits. Ici tous les calculs ont été effectués avec dix chiffres décimaux et ce sont les erreurs d'arrondi qui font que le résultat est incorrect. Il faudrait donc reprendre le calcul en commençant par l'instruction suivante.

> Digits:=12:

Retour en page principale