c(cid:13) Benoit Jacob, prot´eg´e par la GNU Free Documentation License
source disponible sur http://www.velvia.org
TP de Maple : Programmation
1. Afin de vous remettre en tˆete la syntaxe du langage de programmation de Maple, voici
des exemples de proc´edures. Dans la suite du TD, n’h´esitez pas `a vous y r´ef´erer comme
mod`eles. Lisez attentivement ces proc´edures ligne par ligne et essayez de comprendre
ce qu’elles font. Vous devez ˆetre capable de pr´edire leurs valeurs de retour en fonction
des valeurs de leurs arguments.
prog1:=proc(n::integer)
if n<0 then
ERROR("n doit ^etre >= 0.") ;
elif n<=1 then
Publicité
RETURN(n) ;
else
RETURN(prog1(n-1)+prog1(n-2)) ;
fi ;
end ;
prog2:=proc(x::complex)
local n, y, somme ;
n:=0 ; somme:=0 ; y:=infinity ;
while y>10^(-Digits) do
y:=x^n/n ! ;
n:=n+1 ; somme:=somme+y ;
od ;
Publicité
RETURN(somme) ;
end ;
2. Ecrivez une proc´edure max prenant en argument deux r´eels (type numeric) x et y, et
renvoyant le plus grand des deux.
4. Ecrivez une proc´edure racinededeux ne prenant pas d’argument et renvoyant la racine
carr´ee de 2. Pour cela, appliquez la m´ethode de Newton `a la fonction x 7→ x2 − 2.
Modifiez ce programme pour obtenir la racine cubique de 10.
voyant Cp
n, en utilisant la formule Cp
5. Ecrivez une proc´edure coeffbinome prenant en argument deux entiers n et p, et ren-
n = Cp−1
6. Ecrivez une proc´edure nbchiffres prenant en argument un r´eel x et renvoyant le
Publicité
nombre de chiffres de x `a gauche de la virgule (en base 10), sans calculer de loga-
rithme. Utilisez une boucle while pour tester, pour n de plus en plus grand, la condition
x > 10n.
n−1 + Cp
n−1.
7. Ecrivez une proc´edure estpremier prenant en argument un entier positif n et renvoyant
true ou false suivant que n est premier ou pas. Bien entendu, vous ne devez pas utiliser
isprime.
8. Ecrivez une proc´edure sommedesdiviseurs prenant en argument un entier n>1 et ren-
voyant la somme des diviseurs de n (on consid`ere seulement les diviseurs positifs et
< n ; on consid`ere 1 comme un diviseur).
9. Ecrivez un programme utilisant une boucle for pour afficher la liste des nombres parfaits
Publicité
entre 2 et 1000. Un nombre est dit parfait s’il est ´egal `a la somme de ses diviseurs.
3. Ecivez une proc´edure listprem prenant en argument deux entiers x et y, avec x<y, et
affichant la liste des nombres premiers entre x et y. Il est recommand´e d’utiliser une
boucle for et la fonction Maple isprime.
10. Ecrivez un programme utilisant une boucle for pour afficher la liste des couples de
nombres amicaux inf´erieurs `a 1000. Deux entiers x et y sont dits amicaux si chacun
d’entre eux est somme des diviseurs de l’autre.