c(cid:13) Benoit Jacob, protégé par la GNU Free Documentation License
source disponible sur http://www.velvia.org
TP de Maple : Programmation
1. Afin de vous remettre en tête la syntaxe du langage de programmation de Maple, voici
des exemples de procédures. Dans la suite du TD, n’hésitez pas à vous y référer comme
modèles. Lisez attentivement ces procédures ligne par ligne et essayez de comprendre
ce qu’elles font. Vous devez être capable de prédire leurs valeurs de retour en fonction
des valeurs de leurs arguments.
prog1:=proc(n::integer)
if n<0 then
ERROR("n doit être >= 0.") ;
elif n<=1 then
RETURN(n) ;
else
Publicité
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 ;
RETURN(somme) ;
end ;
2. Ecrivez une procédure max prenant en argument deux réels (type numeric) x et y, et
renvoyant le plus grand des deux.
Publicité
4. Ecrivez une procédure racinededeux ne prenant pas d’argument et renvoyant la racine
carrée de 2. Pour cela, appliquez la méthode de Newton à 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édure coeffbinome prenant en argument deux entiers n et p, et ren-
n = Cp−1
6. Ecrivez une procédure nbchiffres prenant en argument un réel x et renvoyant le
nombre de chiffres de x à 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édure estpremier prenant en argument un entier positif n et renvoyant
Publicité
true ou false suivant que n est premier ou pas. Bien entendu, vous ne devez pas utiliser
isprime.
8. Ecrivez une procédure sommedesdiviseurs prenant en argument un entier n>1 et ren-
voyant la somme des diviseurs de n (on considère seulement les diviseurs positifs et
< n ; on considère 1 comme un diviseur).
9. Ecrivez un programme utilisant une boucle for pour afficher la liste des nombres parfaits
entre 2 et 1000. Un nombre est dit parfait s’il est égal à la somme de ses diviseurs.
3. Ecivez une procédure 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é 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érieurs à 1000. Deux entiers x et y sont dits amicaux si chacun
d’entre eux est somme des diviseurs de l’autre.