Initiation à Maple
I— Découverte des premières fonctionnalités de Maple.
1- Définition rapide
Maple est un outil pour faire des calculs scientifiques.
Ces calculs peuvent être des calculs de vue symbolique, numérique, graphique.
Maple est aussi u langage de programmation.
Ce logiciel a été développé par des chercheurs de l’université de Waterloo au Canada et de
l’université ETH de Zurich.
2- Concurrence :
D’autres produits analogues à Maple existent, notamment Derive, Mathematica , ou MuPad.
Actuellement, Maple est très répandu dans l’enseignement en classes préparatoires.
3- Session :
Définition :
Une session de travail type avec Maple commence évidement par le lancement du logiciel sous
Windows, un double clic sur l’icône correspondante suffit.
Une feuille de travail (Worksheet) vide est alors affichée à l’écran, et Maple à travailler en mode
interactif, une session est constituée de toutes les entrées (input) de l’utilisateur, qui apparaissent en
rouges et de toutes les réactions de Maple appelées (output), et qui apparaissent souvent centrées en
bleu à l’écran.
A tout moment, on peut fermer la feuille de travail, après avoir sauvegardé. La session de Maple
se termine par la fermeture de Maple (File, Exit)(Alt F4), on peut également charger une feuille de
travail déjà sauvegardée.
4 – Interface utilisateur :
a- Syntaxe des entrées :
Chaque entrée de l’utilisateur débute après l’invite > (prompt), se termine par un point-virgule (;)
ou deux point (:) et est validée par la touche ENTREE. La terminaison d’une entrée par le symbole
deux-points (:) est réservée pour les calculs intermédiaires, pour lesquels l’affichage du résultat ne
présente pas d’intérêt.
Pour effectuer un retour chariot dans une entrée, sans valider cette entrée, on tape Shift+Entrée,
et forme un groupe qui sera exécuté lorsqu’on tape entrée.
b- Interruption :
On peut interrompre un calcul par le bouton STOP, qui n’est actif que lorsqu’un calcul est en
cours. La réaction peut être sans effet c’est pourquoi il faut sauvegarder régulièrement le travail.
d- Les commentaires :
On peut insérer dans une feuille de calcul des commentaires qui ne seront pas interprétés par
Maple :
• Soit en faisant précéder le commentaire du symbole #.
• Soit en plaçant le curseur dans une zone de texte pur par le menu (Insert/Text) ou (Ctrl+T).
e- Besoin d’aide :
L’utilisation de Maple demande de se conformer à une syntaxe assez stricte.
Aussi il est difficile de retenir le nom de centaines instructions disponibles, ainsi la manière dont il
faut les employer. C’est pourquoi Maple est livré avec un système d’aide complet.
Pour obtenir une aide sur une instruction dont on connaît le nom, comme par exemple expand,
on peut procéder de plusieurs manières :
• ?expand (suivi de entrée) affiche l’écran d’aide complet.
• ??expand (suivi de entrée) affiche le syntaxe : comment appeler expand et avec quels
paramètres.
• Sélectionner l’instruction et taper la touche de fonction F1.
• Pour chercher toutes les instructions qui commencent par f, taper f et taper F1
• Utiliser le menu Help / Fulle Text Search , faire saisir votre instruction et cliquer sur le
bouton Search.
f- Important :
Il faut bien comprendre que c’est l’ordre chronologique de validation des entrées qui
Pour réduire le risque de confusion, et pouvoir localiser plus facilement les erreurs on commence
les feuilles de calcul par la commande restart, qui a pour effet de réinitialiser la session. Aussi on
peut ré-exécuter chacune des entrées dans l’ordre de la feuille, et faire coïncider la session et la
feuille de calcul.
restart ; #(toutes les variables sont désassignées c-à-d : n’ont plus de contenue)
b- Les fonctions
Principales fonctions mathématiques et logiques dans Maple :
Fonctions Description
sin(x), cos(x) , tan(x), arcsin(x) ,
Fonctions trigonométriques
arcos(x), arctan(x)
sinh(x), cosh(x), tanh(x), arcsinh(x),
Fonctions hyperboliques
arcosh(x), arctanh(x)
In(x) ou log(x) Logarithme népérien
log[10](x) ou log10(x) Logarithme décimal (readlib(log10))
sqrt(x) Racine carré de x
issqr(x) Test si l’entier x est un carré parfait
root[n](x) = root(x,n) Racine n-ième de x
floor(x) Partie entière de x
ceil(x) Entier immédiatement supérieur à x
abs(x) Valeur absolue de x
exp(x) Exponentielle de x
log[b](x) Logarithme en base b
n! ou factorial(n) Factorielle de n
iquo(a,b) Quotient de la division euclidienne de a par b
irem(a,b) Reste de la division euclidienne de a par b
min(E) Minimum d’un ensemble
max(E) Maximum d’un ensemble
binomial(n,k) Coefficient binomiaux
ifactor(x) Factorisation de l’entier x
igcd(x1,..,xn) Pgcd des entiers x1 .. xn
ilcm(x1,..,xn) Ppcm des entiers x1..xn
iroot(a,n) Entier plus proche de la racine n-ième entier de l’entier a
isprime(a) Retourne true si l’entier a est premier
nextprime(x) Donne le plus petit no,mbre premier supérieur à x
sign(x) Donne -1 si x<0 et donne 1 si x>=0
rand() Rend un entier positif aléatoire de 12 chiffres
rand(a,b)( ) Rend un entier aléatoire compris entre a et b
rand(a)( ) Rend un entier compris entre 0 et (a-1)
numer(x) Numérateur entier du rationnel x
denom(x) Dénominateur entier du rationnel x
Donne la valeur approchée de exp avec d chiffres
evalf(exp,d)
significatifs
evalb(a=b) Renvoie true si a =b et false si a <>b
Pour plus de fonctions consulter le help de Maple par l’instruction : > ?index,function
6 - Majuscules et minuscules :
Dans l’analyse d’une ligne de saisie ; Maple distingue les majuscules des minuscules.
Le mot (Sum) est différent du mot (sum).
> Sum(1/(i+1),i=1..10);
10
1
∑ i+1
i =1
> sum(1/(i+1),i=1..10);
55991
27720
Expand n’est pas une instruction de Maple, mais expand oui.
> expand((x+y)^5);
x 5 + 5 x 4 y + 10 x 3 y 2 + 10 x 2 y 3 + 5 x y 4 + y 5
> Expand((x+y)^5); Maple ne sait quoi
5
Expand ( ( x + y ) ) faire avec Expand
!
La variable A est différente de la variable a.
> restart:A:=3;
A := 3
a n’a pas de valeur
> a;
a
7 –Packages:
Toutes les fonctions définies dans Maple ne peuvent être présentes en même temps dans la
mémoire de l’ordinateur. Les plus utilisées sont chargées d’office au démarrage de Maple avec le
noyau (Kernel), la plus grande partie du savoir de Maple réside dans les packages qui sont des
regroupements de nouvelles fonctionnalités dans un domaine donné. Plusieurs packages font partie
intégrante du logiciel. Consulter le help par l’instruction : > ?index,packages
Exemples :
geometry Géométrie euclidienne
linalg Algèbre linéaire
plots Représentations graphiques
Pou pouvoir utiliser tout ou une partie d’un package on utilise l’instruction (with) exemple :
>with(linalg) : #pour charger toutes les fonctions du package linalg sans renseignement.
> with(linalg) ; #pour charger et voir la liste de toutes les fonctions disponibles dans le package.
Exemple :
Exemples :
Solde1, Prix_unitaire, somme, PrixBrut, ….
Exemple :
3 Assignation et désassignation
L’opération qui consiste à associer un résultat à un nom est l’assignation (ou affectation) ,
exemples :
somme :=4 ; produit :=3*4 ;trouve :=true ;
Pour désassigner un nom comme somme, on exécutera l’instruction :
> somme:='somme'; on notera l’utilisation des apostrophes, ce qui aura pour conséquence que le
nom somme retrouve son statut de variable formelle.
> somme:=4; # assigner somme
somme := 4
> somme;
4
4 Lettres grecques
Les lettres grecques sont saisies sous la forme alpha, beta, gamma, lambda, mu, epsilon, pi, etc.
mais Maple les affiches avec le caractère correspondant grec.
Par exemple :
> alpha;
α
Taper :
> alpha, beta, delta, gamma, lambda, epsilon, mu, nu, pi, phi, rho,
sigma, theta,tau,xi;
α, β , δ, γ, λ , ε, µ, ν, π, φ, ρ, σ, θ, τ, ξ
5 Les nombres :
5.1 : Nombres entiers :
Maple effectue des calculs sur des nombres relatifs de manière exacte avec autant de chiffres que
nécessaire.
Rappelons qu’un entier long peut être découpé en tranches par des caractères \ :(AltGr+8).
Exemples :
> 7777777777777777777777777777*8888888888888888888888888;
69135802469135802469135795548641975308641975308641976
> a:=44444444444444444444444444444444\
55555555555555555555555555\
777777777777777777777777777;
44444444444444444444444444444444555555555555555555555555557777777777 \
77777777777777777
> a^2;
19753086419753086419753086419753185185185185185185185185187160493950 \
61728395061728394370370864197530864197530864197534074074074074074 \
0740740740395061728395061728395061729
Les calculs sur les nombres réels peuvent être effectués avec autant de décimales que nécessaire,
cela dépend de la variable Digits (attention à la majuscule D) qui désigne le nombre de décimales à
utiliser. Par défaut Digits=10, mais on peut modifier cette valeur à tout moment.
On peut créer un nombre réel par Float (mantisse,exposant) ce qui produit le nombre réel
matisse*10exposant.
> Float(4,3);
4000.
Il est possible de forcer le passage en format réel d’une expression dont la valeur est entière ou
rationnelle, ou qui contient des constantes comme Pi par exemple. On utilise pour cela l’instruction
evalf (qui veut dire :eval to floot) ou evalf(expression,n) si on veut une évaluation avec n
décimales.
> evalf(Pi);
3.141592654
> evalf(Pi,20);
3.1415926535897932385
> Digits;
10
> Digits:=30;
Digits := 30
> evalf(Pi);
3.14159265358979323846264338328
> evalf(sin(2),50);
0.90929742682568169539601986591174484270225497144789
> evalf((14/3+5/7)*5,4);
26.90
> I^2;
-1
> sqrt(-3);
3I
> a:=3+2*I;b:=sqrt(2)+(2/3)*I;
a := 3 + 2 I
2
b := 2 + I
3
> whattype(a);
complex
> a+b;
8
3+ I+ 2
3
On peut utiliser aussi les fonctions Complex, Im et Re:
> Complex(5,7);
5+7I
> Im(a);# donne la partie imaginaire d'un complexe
2
> Re(a);# donne la partie réelle d'un complexe
3
6 Les fonctions:
Simplement une fonction est un objet f qui agit sur des arguments pour renvoyer un résultat
f (arg1,…,argn) représente l’image par f de la séquence d’arguments arg1,…,argn.
Un nombre peut être considéré comme une fonction constante :
> x:=2; x(4), x(2,6);
x := 2
2, 2
En pratique:
Exercice:
2
( −x )
x +e
2- g := x → x−1 , calculer g(0) ,limit de g en + ∞ en 1- et 1+ .
Si S2 est une séquence, l’expression s1, s2 désigne la séquence obtenue par concaténation des
séquences s1 et s2.
> s1 :=1, 2, f, t^2-3, 2, pi ;
s2 :=5, 4, 7;
s1, s2;
s1 := 1, 2, f , t 2 − 3, 2, π
s2 := 5, 4, 7
1, 2, f , t 2 − 3, 2, π, 5, 4, 7
3.2 : Listes :
Une liste est presque la même chose qu’une séquence, mais ses éléments sont entourés par des
crochets :
> L1 :=[1, 2, f, t^2-3, 2, pi ];
L1 := [ 1, 2, f , t 2 − 3, 2, π ]
> L2:=[jan,Fév,Mar];
L2 := [ jan , Fév , Mar ]
En particulier si s1 est une séquence, l’expression [s1] désigne la liste dont les éléments sont
ceux de la séquence s1.
Avantage : La commande nops permet de savoir combien une liste comporte d’éléments
> nops(L2);
3
> nops(L1);
6
On ne peut directement concaténer des listes, il faut d’abord les transformer en séquences, par la
commande op (qui récupère les opérandes des listes), faire la concaténation des séquences :
Remarquer la différence entre les deux instructions :
> [L1,L2];
[ [ 1, 2, f , t 2 − 3, 2, π ], [ jan, Fév , Mar ] ]
> [op(L1),op(L2)];
[ 1, 2, f , t 2 − 3, 2, π, jan , Fév , Mar ]
3.3 Ensembles :
C’est une collection non ordonnée (contraire ment aux listes et aux séquences) d’objets, séparés
par des virgules et entourés par des accolades :
> E:={1,44,f,tˆ2-3,44,pi};
(Noter la disparition du second « 44 » : les éléments redondants sont supprimés). Même si la
commande.
E [ 3 ] fournit un résultat, elle est à proscrire : du fait que les éléments d’un ensemble ne soient pas
ordonnés ,on ne sait pas a priori quel élément on obtient ainsi. On peut en revanche convertir un
ensemble en liste par la commande >convert(E,list). En donnant un nom à cette liste, on pourra
ensuite récupérer ses éléments, ceux-ci étant écrits dans un ordre immuable. L’autre conversion
(>convert(l,set)) est aussi possible et souvent utile.
On dispose des opérations union (union) et intersection (intersect) sur les ensembles.
> {a,b} union {b,c};
{ a , b, c }
> print(toto);
table([un = one])
Une table T étant donnée.
op(T) Donne la structure
op(op(T)) Donne la liste de couples index=valeurs
indices(T) Donne les index
entries Donne les valeurs
b- Tableaux :
Un tableau est un objet permettant de stocker des données repérées par un (ou plusieurs) indices
entier. Un tableau est de types array.
On crée un tableau à l’aide de l’instruction array(i,j) crée un tableau dont l’indice varie de i à j
(entiers).
> a:=array(1..5);
a := array ( 1 .. 5, [ ] )
On peut définir individuellement chaque élément du tableau:
>
a[1]:=Tanger:a[2]:=Casa:a[3]:=Khouribga:a[4]:=Agadir:a[5]:=Laâyoun
e:
> print(a);
[ Tanger , Casa, Khouribga , Agadir , Laâyoune ]
Si on ne précise pas le domaine de variation de l'indice, la première valeur est 1 par défaut:
> c:=array([2,4,6,8]);c[1];c[4];c[7];
c := [ 2, 4, 6, 8 ]
2
8
Error, 1st index, 7, larger than upper array bound 4
On peut définir des tableau à deux dimensions; toutes les remarques ci-dessus restent valables:
> d:=array(2..4,8..10,[[1,2,3],[4,5,6],[7,8,9]]);
d := array( 2 .. 4, 8 .. 10, [ ( 3, 9 ) = 5 ])
( 2, 8 ) = 1 ( 3, 10 ) = 6
( 2, 9 ) = 2 ( 4, 8 ) = 7
( 2, 10 ) = 3 ( 4, 9 ) = 8
( 3, 8 ) = 4 ( 4, 10 ) = 9
> e:=array([[un,deux],[trois,quatre],[cinq,six],[sept,huit]]);
un deux
trois quatre
e :=
cinq six
sept huit
> e[3,2]; # [ligne,colonne]
six
> print(T2);
1 0 0
0 1 0
0 0 1
> seq(i^2,i=1..7);
1, 4, 9, 16, 25, 36, 49
f(i)$i=m..n retourne la séquence f(m), f(m+1),... , f(n)
> i^2$i=1..8;
1, 4, 9, 16, 25, 36, 49, 64
$m..n est équivalent à $i=m..n
> $10..17;
10, 11, 12, 13, 14, 15, 16, 17
x$n duplique n fois l'objet x.
> `ENSA`$5;
ENSA, ENSA, ENSA, ENSA, ENSA
2. Le nombre d'éléments d'un ensemble ou d'une liste est donné par nops.
> a:=[un,deux,trois];b:={one,two,three,four};nops(a);nops(b);
a := [ un, deux , trois ]
b := { one , four , three , two }
3
4
3. Le n-ième élément d'une liste ou d'un ensemble est donné par op(n,nom).
> op(2,a);op(1,b);
deux
one
5. Convertir une liste en ensemble, ainsi que l'opération réciproque, est aisé.
> convert(a,set);convert(b,list);
{ deux , trois , un }
[ one , four , three , two ]
4.2: Tables:
1. Les éléments d'une table peuvent être des fonctions.
> trigo[un]:=cos:trigo[deux]:=sin:trigo[trois]:=tan:
> trigo[un](Pi);trigo[deux](Pi);trigo[trois](Pi/4);
-1
0
1
2. Lorsque l'on écrit le nom d'une table, son contenu n'apparaît pas à l'écran,
> T[un]:=Toto:T[deux]:=Titi:
T;
T
Mais il existe trois possibilités pour qu'il sera affiché: print, eval et op.
> eval(T);print(T);op(T);
table([deux = Titi , un = Toto])
table([deux = Titi , un = Toto])
table([deux = Titi , un = Toto])