Université Paris xii - Val de Marne, 2008–2009 Module Libre

Transcription

Université Paris xii - Val de Marne, 2008–2009 Module Libre
Université Paris xii - Val de Marne,
Module Libre Sciences L2/S3,
2008–2009
Mathématiques expérimentales
TP n◦ 0
Pour commencer : à l’aide de la souris, amener la flèche sur la case “Démarrer”.
1. Premier contact
Le mode d’intéraction de base avec Maple est le suvant : on écrit une instruction, Maple l’évalue et
renvoie le résultat. Pour signifier qu’il attend une instruction, Maple affiche le signe d’appel > .
Chaque commande doit se terminer par ; (résultat affiché) ou par : (résultat non affiché). Le signe %
représente le dernier résultat, %% l’avant-dernier et %%% l’antépénultième.
Exercice 1. Essayer :
> 2+4; 1/sqrt(2);
> % * %%;
Exercice 2. Essayer : > 2/x^2*y^3;
Exercice 3. Essayer : > 5^1/3;
Comment obtient-on
2
x2 y 3
?
Comment obtient-on 51/3 ?
Certaines fonctions mathématiques peuvent être utilisées : exp, sin, cos, sqrt,... (faire ?inifcns
pour en avoir la liste).
Exercice 4. Essayer : > I^2; cos(Pi); exp(I*Pi); sqrt(2);
Exercice 5. A partir de l’aide en ligne comprendre ce que produit la fonction igcd.
Calculer 7500 et 1000! puis leur pgcd.
Exercice 6. Sauvegarder la feuille de travail, fermer la session puis la restaurer.
1153(358 + 540 )
exactement, puis avec 5 chiffres significatifs, et finalement avec 5
295 − 736
chiffres après la virgule. On utilisera la fonction evalf.
Exercice 7. Calculer
La commande restart réinitialise la session : elle efface la mémoire de Maple et permet de se retrouver
comme au début d’une session.
2. Affectation, Évaluation
L’affectation := est une opération qui permet de nommer des expressions. Pour assigner une valeur à
un nom on utilise :
nom := expression ;
ce qui affecte à nom la valeur résultant de l’évaluation totale de expression. L’assignation se visualise
comme la création d’une flèche qui pointe vers la valeur. L’évaluation totale consiste à suivre toutes les
flèches. Par contre, un évaluation partielle de niveau n :
eval(expression, n);
consiste à ne suivre que les n premières flèches. (si l’argument n est omis, l’évaluation est totale).
Exercice 8. Essayer :
> restart;
> r:=s; s:=t; t:=2; q:=r;
> eval(r); eval(r,1); eval(r,2); eval(r,3);
> eval(s); eval(s,1); eval(s,2);
> eval(q); eval(q,1); eval(q,2);
Commenter les résultats.
Toute expression Maple syntaxiquement correcte retourne une valeur. Les nombres et les noms sans
valeur affectée sont auto-évaluables.
Exercice 9. Essayer : > 1; u;
Mécanisme de “l’évaluation totale” : une fois qu’une valeur est assignée à une variable (c’est-àdire à un nom), elle prend cette valeur partout. L’évaluation totale est donc lancée à chaque fois qu’une
variable apparaı̂t. (Il y a des exceptions à cette règle.)
Exercice 10. Essayer :
> sin(Pi); ’sin(Pi)’; %;
Quel est le rôle des apostrophes ?
Les expressions fonctionnelles de la forme
nom (arg1 , arg2 , . . . , argn )
sont évaluées de la manière suivante : tous les arguments sont évalués de gauche à droite, ensuite nom
appliqué aux arguments évalués est évalué.
Exercice 11. Essayer :
> cos(1+1);
> x:=1; cos(x+1);
> f(y,y+x,y+1);
Exercice 12. Trouver où se trouve une exception à cette règle d’évaluation des expressions fonctionnelles
dans l’exercice 8.
3. Types de données
Maple reconnaı̂t 97 types et sous-types de base. La fonction whattype donne le type de données d’une
expression. On en présente ici quelques uns.
3.1. Les constantes. Ce sont des objets dont on ne peut modifier la valeur. Les exemples importants
sont
• Les entiers (type integer), les rationnels (type rationnal), les flottants (type float)
• le nombre π (Pi), les boléens : false, true.
Exercice 13. Essayer :
> 2; 1/3; 0.2; Float(2,-1);
> whattype(2); whattype(1/3); whattype(0.2);
3.2. Les noms. Un nom (type name), qui représentent une variable, est généralement une chaı̂ne de
caractères, éventuellement suivi d’un numéro entre crochet (c’est alors un nom indexé).
Exercice 14. Essayer : > x[1]; x[2]; x[k];
Pour former un nom on ne peut pas utiliser les mots-clés (faire ?keywords pour les connaı̂tre). Maple
fait la différence entre majuscules et minuscules. Si l’on veut utiliser n’importe quel caractère pour former
un nom on utilise des accents graves :
Exercice 15. Essayer : > ‘n’importe quoi‘ := ‘quelque chose‘;
On peut utiliser l’opérateur de concaténation . (le point)
Exercice 16. Essayer : > ‘n’importe quoi‘.Deux;
3.3. Suite d’expressions (sequence ou expression sequence). C’est une famille finie et ordonnée
d’objets séparés par des virgules. La virgule , est l’opérateur de construction de suites.
Exercice 17. Essayer : > S:=a,b; S,c;
On ne peut pas former de suite de suites.
L’opérateur de sélection permet de prendre un élément ou des éléments consécutifs d’une suite :
Exercice 18. Essayer : > S:=a,b,c,c; S[2]; S[2..4];
3.4. Listes. Une liste (type list) est une suite d’expressions entre crochets. La liste vide est [ ]. La
différence avec les suites est que l’on peut former des listes de listes (et des suites de listes).
Exercice 19. Essayer : [S]; %,d; [%];
La fonction seq. Elle permet de construire des suites d’expressions. Trois exemples :
Exercice 20. Essayer :
> seq(f(i), i=1..5);
> seq(i^3, i=1..10);
Exercice 21. Construire une suite de la forme c1, c2, . . . , c15 en utilisant seq. Transformer cette suite en
liste.
Exercice 22. En utilisant la commande sum (cf. l’aide en ligne), calculer
n
X
(−1)k k 2
puis
k=1
n
X
(−1)pk k 2
k=1
où n et p sont des entiers positifs.
3.5. Autres types de données. Opérateurs : +, *,/,ˆ, Procédures,. . .
La fonction Float
3.6. Les fonctions op, nops et subsop.
• La fonction op permet d’extraire les opérandes (les composantes) d’une expression :
op(i,expr) extrait l’opérande numéro i de expr
op(i..j,expr) extrait la suite formée des opérandes de i à j
op(expr) renvoie la suite de toutes les opérandes.
• nops(expr) donne le nombre d’opérandes.
• subsop(i=operande, expr) permet de substituer operande à l’opérande numéro i de expr.
Exercice 23. Essayer : > e:=a+b*c^2+d;
> op(e);
> op(1,e); op(1..2,e);
> nops(e); subsop(2=x,e);
Exercice 24. Essayer : > L:=[a,b,c]; op(L); Comment remplacer le deuxième elément de L par x ?
4. Les itérations
4.1. Boucle do. Deux syntaxes sont possibles :
•
¯
¯
¯
¯
¯
¯
¯ for nom ¯ from expr1 ¯ by expr2 ¯ to expr3 ¯ while cond ¯ do suite d0 instructions od;
où toutes les expressions entre | peuvent être omises. La suite d0 instructions est répétée pour
chaque valeur distincte de nom tant que cette valeur est plus petite que la valeur de expr3 et
que la condition cond est vraie. La variable nom est initialement affectée de la valeur de expr1
et est incrémentée de la valeur de expr2 à chaque boucle.
Exercice 25. Essayer : > Somme:=0 :
od;
•
for i from 1 to 5 while i<5 do Somme:=Somme+i;
¯
¯
¯
¯ for nom in expr ¯ while cond ¯ do suite d0 instructions od;
nom prend successivement pour valeurs la suite des opérandes de expr.
Exercice 26. Essayer : > Somme:=0 :
od; et expliquer les résultats.
for i in [a,b,c,d,e] while i<>d do Somme:=Somme+i;
Exercice 27. Calculer la valeur minimale de n telle que
n
X
1
> 1, 7.
k!
k=1
4.2. La fonction seq. cf. section 3.
4.3. la fonction map. La commande map applique une fonction à chacun des opérandes d’une expression.
L’utilisation la plus fréquente est map(f ,L) où L est une liste, qui renvoit une liste constituée des résultats
de l’application de f à chacun des éléments de L.
Exercice 28. Essayer :
> map(sqrt,[1,2,9,z]);
> map(f,[seq(i,i=1..10)]);
5. Les tests
La syntaxe général d’un test est la suivante :
if condition1 then suite d0 instructions1
elif condition2 then suite d0 instructions2
elif condition3 then suite d0 instructions3
..
.
else conditionn then suite d0 instructionsn
fi;
Toutes les lignes, sauf la première sont optionnelles. La première suite d’instructions telle que la
condition associée soit vérifiée est exécutée, les autres ne le sont pas.
6. les procédures
Maple utilise le nom “procédure” pour dénommer ce qui correspond généralement à des “fonctions”
dans la terminologie d’un langage comme C par exemple. Nous emploierons les deux termes indifféremment.
6.1. Opérateur flèche. Le moyen le plus simple de définir une procédure qui calcule une expression
algébrique est d’utiliser la notation flèche. Par exemple la fonction qui à (x, y) associe x2 + y 2 peut être
définie par l’instruction (x,y)->x^2+y^2. On peut donner un nom à cette expression et l’utiliser de
façon naturelle :
Exercice 29. Essayer :
> ((x,y)->x^2+y^2)(2,3);
> f:=(x,y)->x^2+y^2;
> f(2,3);
6.2. La commande unapply. On regardera dans l’aide en ligne ce que produit la commande unapply.
Exercice 30. Définir une procédure correspondant à l’application
f : x 7→
20
X
(−1)k
k=0
k!
x2k+1 .
Calculer f (0), f (1),. . . ,f (20) puis la somme de ces termes. Tracer le graphe de f restreinte à l’intervalle [0, 2]
(cf. plot).
6.3. Définition d’une procédure. Il est possible de définir en Maple ses propres commandes, c’est-àdire de définir des procédures. La syntaxe générale d’une procédure est la suivante :
nom de la procédure := proc(x1::type1, x2::type2,...)
local y1, y2,...; global z1, z2,...;
options op1, op2,...;
corps de la procédure (suite d’instructions)
end;
6.4. La commande trace. On regardera dans l’aide en ligne ce que produit la commande trace.
Exercice 31. Définir une procédure somme qui prenne en entrées deux valeurs var1 et var2 et qui calcule
la somme des carrés des entiers compris entre ces deux valeurs.
Essayer :
> somme(1,4);
puis
> trace(somme);
> somme(1,4);
Que fait la commande trace.
6.5. Procédure récursive. Ainsi est qualifiée une procédure qui apparaı̂t dans sa propre définition.
Exercice 32. Essayer : > F:=n-> if n<2 then 1; else F(n-1)*n; fi;
Que produit la procédure F ?
Exercice 33. Ecrire une fonction U, définie récursivement, qui renvoie la valeur de un où (un )n∈N est la
suite de Fibonacci définie par
u0 = 0, u1 = 1,
un = un−1 + un−2
∀n ≥ 2.
Exercice 34.
• Ecrire une procédure H qui donne la valeur de la somme partielle de la série harmonique :
n
X
1
.
Hn =
i
i=1
• Pour quelles valeurs de n le rationnel Hn est-il entier ?
• Essayer de comprendre pourquoi en observant la décomposition en facteurs premiers du numérateur
et du dénominateur (cf. fonction ifactor).
• Obtenir ainsi une conjecture. . . à démontrer par récurrence sur n.