Documente Academic
Documente Profesional
Documente Cultură
Maple est un langage informatique qui sert à faire des mathématiques ; pas seulement
des mathématiques pour elle-mêmes, mais pour la physique, la biologie, la chimie, etc.
Un langage symbolique
On dit de Maple qu’il est un langage symbolique. Cela signifie, en particulier, que
tout ce qu’il peut faire avec des nombres, il peut le faire avec des symboles. Par exemple,
Maple comprend aussi bien l’expression a + b que 8 + 5. Les avantages sont nombreux.
Les longs calculs symboliques qui sont traditionnellement faits à la main, comme la
dérivation, l’intégration, la factorisation de polynômes, la résolution de systèmes d’équa-
tions, et bien d’autres, peuvent être effectués par les langages symboliques actuels.
Une fois libéré de cette charge de calcul, l’utilisateur de Maple peuvent se concentrer
davantage sur la stratégie de résolution de probèmes et le choix d’outils mathématiques
appropriés.
Un autre avantage du symbolisme est la possibilité d’effectuer les calculs symboliques
avant de trouver une réponse numérique. Il en résulte pratiquement autant de précision
qu’on veut dans les calculs.
Mais peut-être l’avantage le plus grand des langages symboliques réside-t-il dans leur
grand souplesse. Par exemple, il est possible d’écrire en Pascal un programme qui affiche
le graphe de la fonction cosinus sur un domaine qui sera spécifié pendant l’exécution du
programme. Mais, ce même programme, à moins de manoeuvres acrobatiques, ne pourra
pas être utilisé pour d’autres fonctions, car Pascal n’est pas un langage symbolique.
Avec Maple, au contraire, pratiquement toutes les opérations qui sont effectuées sur une
fonction peuvent être aussitôt appliquées à toutes les autres, sans même avoir à lever le
petit doigt.
Un Interpréteur
Maple est un langage interprété, comme tous les langages symboliques d’ailleurs, tandis
que Pascal et Fortran sont des langages compilés.
Constantes
1
Brahim Benouahmane
entier : 3 , 5, · · ·
1 11
fraction : 5
, 12
,···
décimal : 2. , 5.75, · · ·
symbolique : Π , I , E , inf inity, · · ·
Exemple
Arithmétique
L’opérateur d’addition : +
L’opérateur de soustraction : −
L’opérateur de multiplication : *
L’opérateur de division : /
∧
L’opérateur d’exponentiation :
2
Brahim Benouahmane
pouvez toujours forcer Maple à opérer dans l’ordre que vous voulez en distribuant judi-
cieusement les parenthèses.
Les variables
Une variable informatique est l’adresse, dans la mémoire de l’ordinateur, d’un dépla-
cement permettant de stocker un objet d’un type donné.
Exemple :
Si l’on affecte à une variable une valeur, la valeur est dite assignée.
Si elle n’est associée à aucune valeur, la variable est dite non assignée.
> var = 3;
a, x(a);
Il sera question ici des principales opérations concernant les définitions : création,
rappel, sauvegarde et lecture.
Pour dire à Maple ce que vous entendez par tel ou tel symbole, il vous faudra
assigner une valeur à ce symbole, comme dans les exemples suivants :
cube := x− > x∧ 3;
cube := x− > x3
3
Brahim Benouahmane
un nom;
une valeur
fraction ;
(5 ∗ x4 + 50)/(8 ∗ x − 22)
cube ;
cube
En effet, cube est une fonction. Dans le cas des fonctions (procedure), des
matrices et des vecteurs, on peut utiliser la commande print
print(cube);
x− > x3
Il serait vraiment très pénible d’avoir à redéfinir les fonctions, matrices, polynômes,
etc. à chaque nouvelle séance de Maple. Pour les sauvegarder et les charger à
nouveau, les commandes save et read font parfaitement l’affaire.
4
Brahim Benouahmane
fdv ;
read test
Fonctions et expressions
Dans le monde Maple, cos(x) est une expression et c’est le symbole cos qui représente
la fonction cosinus.
Ces fonctions peuvent toutes faire quelque chose si on les alimente avec des arguments
qui sont numériques ou symboliques ou un mélange des deux.
Par exemple :
1. dérivation
expression : diff
fonction : D
5
Brahim Benouahmane
2. graphisme
3. manipulations
Il est très commode de savoir définir ses propres fonctions. Les trois principaux méca-
nismes de définitions sont :
. L’opérateur unapply
. Proc · · · end
1. notation fléchée
Exemple
sinuscarre(5);
sin(25)
6
Brahim Benouahmane
sinuscarre(1.5);
0.778073
Supposons que vous voulez obtenir facilement le graphe du cosinus carré sur
un certain domaine situé entre les variables a et b. Vous pouvez alors définir la
fonction de deux variables :
g(1, 5)
?
7
Brahim Benouahmane
3. avec proc..end
Voici la définition d’une petite procédure. A partir d’une liste quelconque d’entiers,
elle produit la sous-liste de tous les nombres premiers contenus dans cette liste.
premiers := proc(liste)
longueur := nops(liste);
if isprime(liste[i]) then
fi
od;
[nouvelle liste]
end;
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25];
premiers(liste);
Les manipulations
8
Brahim Benouahmane
f := (a + b)∧ 6;
expand(f );
a6 + 6 a5 b + 15 a4 b2 + 20 a3 b3 + 15 a2 b3 + 6 a b5 + b6
factor(%);
(a + b)6
%%;
a6 + 6 a5 b + 15 a4 b2 + 20 a3 b3 + 15 a2 b3 + 6 a b5 + b6
9
Brahim Benouahmane
(x − 1)2 (x + 2)
(x − 3)2 (x + 1)
Autres exemples
collect(nouveauexpration, x);
collect(nouveauexpration, y);
y 3 + (9 + 6 x) y 2 + (36 x + 27 + 12 x2 ) y + 27 + 54 x + 8 x3 + 36 x2
3. Commande simplify
simplify applique les fonctions de transformations élémentaires telles que expand , collect , norm
Le choix et l’ordre d’applications de ces fonctions dépendra de l’analyse de l’expres-
sion en vue de la simplifier.
10
Brahim Benouahmane
x − x → 0 , x/x → 1, · · ·
subs(x = 4, 2 x − 3);
subs(x = 0, y = 1, x + 5 y − sqrt(5));
√
5− 5
Représentation graphique
L’une des beautés des systèmes comme Maple, c’est la possibilité d’afficher les graphes
de fonctions en dimension deux ou trois. Cette visualisation peut aider considérablement
à saisir certaines idées et à résoudre certains problèmes.
plot et plot3d
Grâce aux commandes plot et plot3d, vous pourrez produire des graphes de plusieurs
fonctions dans une même fenêtre, des graphes paramétrés, etc.
Le cas bidimensionnel
quantite1 := 50 + 97 x − 35 x∧ 3 − 37 x∧ 4 − 55 x∧ 5 ;
11
Brahim Benouahmane
plot(quantite1, x = 5..15);
?
h := x− > 50 + 97 x − 35 x∧ 3 − 37 x∧ 4 − 55 x∧ 5 ;
plot(h, 5..15);
Remarquez que la seule différence par rapport au cas précédent est dans la définition
du domaine 5..15, lequel ne comporte aucune variable.
3. Courbes paramétrée
4. Plusieurs courbes
plot accepte d’afficher des données 2-D, c’est-à-dire de la forme [[x1 , y1 ], [x2 , y2 ], [x3 , y3 ]...]
12
Brahim Benouahmane
La commande plot est assortie d’un bon nombre d’options qui permettent de contrôler
la couleur, le titre, etc. Vous pouvez prendre connaissance des diverses options disponibles
pour la commande plot en tapant :
? plot[options] ;
Le cas tridimensionnel
quantite2 := x∧ 2 ∗ sin(y) ;
plot3d(quantite2, x = −10..10, y = 0..2 ∗ Pi);
plot3d({x∧ 2 + y∧ 2, x∧ 2 + x ∗ y + y∧ 2 + 20},
x = −3..3, y = −3..3);
2. Courbe 3D paramétrée
Il s’agit d’une courbe dont chacune des composantes x(t), y(t), z(t) dépend d’un
même paramètre.
with(plots) :
une courbe...
13
Brahim Benouahmane
plusieurs courbes...
3. Surfaces paramétrée
Il s’agit de surfaces dont les trois composantes x(u, v), y(u, v),etz(u, v) dépendent
des deux paramètres.
une surface...
r = 0..1);
plusieurs surfaces...
4. Options
Vous pouvez prendre connaissance des diverses options disponibles pour les com-
mandes plot3d et spacecurve en tapant :
? plot3d[options] ;
14
Brahim Benouahmane
Résolution d’équations
L’une des activités mathématiques parmi les plus importantes consiste à résoudre des
équations.
Maple met à notre disposition plusieurs solveurs. Certains sont spécialisés (équations
différentielles, etc).
solve et fsolve
solve
fsolve
La fonction solve est celle qu’il faut utiliser lorsqu’on cherche toutes les solutions
exactes. Elles s’appliquent à des équations seules aussi bien qu’à des systèmes d’équations.
1. Equations
Le cas des équations polynômiales est particulier. En effet, nous savons d’avance
que les méthodes algèbriques ne pourront pas généralement livrer les solutions
pour les polynômes de degré supérieur ou égal à 5. Par contre, solve pourra
résoudre pour nous les polynômes de degré inférieur ou égal à 4.
px4 := 15 x∧ 4 − 46 x∧ 3 + 50 x∧ 2 − 46 x + 35;
15
Brahim Benouahmane
solve donne toutes les racines exactes des polynômes de degré strictement inférieur
à 5.
racexactes := solve(px4 = 0, x);
2. Systèmes d’équations
Le solveur algèbrique solve tente de produire toutes les solutions exactes d’équations
ou de systèmes d’équations. Il ne réussit pas toujours à donner une réponse vérita-
blement utile pour la plupart des utilisateurs. Nous disposons alors d’un solveur de
rechange : fsolve
fsolve est un solveur numérique plutôt qu’algèbrique : il cherche des solutions ap-
proximatives à l’aide d’algorithmes numériques.
1. Equations polynômiales
En effet, fsolve produira toutes les solutions réelles des équations polynômiales,
quel qu’en soit le degré.
Touvons les racines d’un polynôme choisi au hasard et de degré inférieur à 20.
16
Brahim Benouahmane
fsolve(polyaleatoire, x, complex);
−1.103382576, −.8831421139,
−.7198041607 − .6757017340 ∗ I,
−.7198041607 + .6757017340 ∗ I,
−.4919616056 − 1.066232016 ∗ I,
−.4919616056 + 1.066232016 ∗ I,
.2485045977 − 1.014924288 ∗ I,
.2485045977 + 1.014924288 ∗ I,
.6467185136,
17
Brahim Benouahmane
.6967190087 − .9555736649 ∗ I,
.6967190087 + .9555736649 ∗ I,
1.025334137 − .1184350935 ∗ I,
1.025334137 + .1184350935 ∗ I
nombressolutions := nops([%]);
nombressolutions := 16
Dans le cas non-polynômial, fsolve ne produira jamais plus d’une solution à chacun
des appels.
equat := 4 cos(x) = x;
equat := 4 cos(x) = x
solve(equat, x);
18
Brahim Benouahmane
solut1 := 1.252353234
1.252353234 = 1.252353234
fsolve a parfois besoin qu’on lui tienne la main, c’est-à-dire qu’on lui
précise la région où il doit chercher. Le graphe précédent nous signale la
présence d’une solution entre -3.7 et -3.5
Informons-en fsolve :
solut2 := −3.595304867
19
Brahim Benouahmane
solutt3 := −2.133332252
Maple connaît pas mal de choses sur le "calcul différentiel et intégral". Il sait dériver
à peu près n’importe quoi.
Pour ce qui concerne l’intégration, il peut procéder de deux façons différentes, à savoir :
symboliquement et numériquement.
La première façon, symbolique, mène à des résultats exacts, mais elle ne marche pas tout
le temps. La manière numérique donne presque toujours un résultat, mais approximatif
la plupart du temps.
1. Le calcul intégral
int(sin(x) − x, x);
1 2
−cos(x) − x
2
int(sin(x) − x, x = 0..Pi);
1
− Π2 + 2
2
(b) La force de int est l’exactitude. Mais nous constatons que int n’arrive pas
toujours à remplir la commande.
Maple offre une alternative : l’intégration numérique.
Elle s’applique dans le cas d’intégrales définies, c’est-à-dire avec des bornes
d’intégration.
Pour intégrer numériquement, il suffit de faire précéder int de la commande
evalf.
20
Brahim Benouahmane
Exemple
evalf (int(1/(2 ∗ sqrt(x)), x = 1..2));
.414213562
2. Le calcul différentiel
Maple dérive facilement à peu près n’importe quoi. Cependant, il distingue entre
la dérivation de fonctions et celle dexpressions :
cos(x)
−cos(x)
D(sin);
cos
poly := −55 ∗ x∧ 5 − 37 ∗ x∧ 4 − 35 ∗ x∧ 3+
97 ∗ x + 50 :
21
Brahim Benouahmane
Vérifions :
−.2 10−8
−.2 10−8
La dérivée seconde nous apprendra de quelle nature sont ces points cri-
tiques.
22
Brahim Benouahmane
plot(poly, x = −1.5..1.5);
Exemple
Expr := x∧ 3 ∗ sin(y∧ 4) :
Maintenant dérivons Expr deux fois par rapport à x et trois fois par rapport
à y.
Exemple
with (student) :
value(intdouble1);
exp(−2 x) sin(y)
−
2 ln(exp)
Pour une intégrale double définie, Doubleint cherche d’abord une primitive,
puis effectue le calcul pour les bornes données en utilisant deux itérateurs.
x = 0..Pi/4, y = 0..Pi/4) :
23
Brahim Benouahmane
value(intdouble2); √ 1
2 (−1 + exp(− 2 π) )
−
4 ln(exp)
4. Equations différentielles
du second ordre
Exemple
6 ∗ y(x) = 2 ∗ exp(x) :
dsolve(diffeq1, y(x));
Autre exemple
x ∗ y(x) = 0 :
dsolve(diffeq2, y(x));
24
Brahim Benouahmane
range = 0..10);
solu(3);
y(t) = −0.517757975825659078]
5. Développement en séries
expr := 2 x − 2 x2 − 13 x3 + x4 −
19
60
x5 + θ(x6 )
convert(expr, polynom);
2 x − 2 x2 − 13 x3 + x4 − 19
60
x5
25
Brahim Benouahmane
readlib(mtaylor) :
y2 + x2 − 61 y6
taylor(exp(x)/x, x = 0, 8);
devserie := x−1 + 1 + 21 x + 16 x2 + 1
24
x3
1 1 1
+ 120 x4 + 720
x5 + 5040
x6 + θ(x7 )
convert(devserie,polynom) ;
x−1 + 1 + 12 x + 16 x2 + 1
24
x3 + 1
120
x4
1 1
+ 720 x5 + 5040
x6
26
Brahim Benouahmane
Remarque :
6. Limites
sin(x)
– Calculons la limite bien connue : lim x
x→0
limit(sin(x)/x, x = 0);
limit(exp(x), x = −infinity);
– limite à gauche
– limite à droite
−∞
limit(x2 ∗ y2 − 2 ∗ x ∗ y5 + 3 ∗ y, {x = 2, y = 3});
-927
27
Brahim Benouahmane
Vous avez sans doute déjà remarqué qu’en mathématiques, on avait souvent tendance
à regrouper des objets à l’intérieur d’une même structure. Les vecteurs et les matrices en
sont des exemples très courants. Maple nous donne les moyens de construire facilement
de telles structures.
– Les listes
– Les séquences
– Les ensembles
Les listes
Les listes sont des structures extrêmement courante et utile en Maple. Une liste est
une séquence entourée de [ ].
En Maple, il faut bien distinguer entre les ensembles et les listes. En effet :
1. Les listes sont des structures ordonnées. Maple conserve exactement l’ordre dans
lequel les éléments ont été placés dans la liste.
petiteliste := [1, 2, 3]
28
Brahim Benouahmane
Une liste de nombres séquentielle peut être construite par la commande seq
11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
Il n’y a malheureusement pas d’opérateur prédéfini qui met deux listes bout à bout.
Cette opération demande de faire un petit détour par les séquences.
Exemple
Supposons que vous construisez la liste des dix premiers nombres pairs et celle des
dix premiers impairs.
Vous voulez joindre ces deux listes, c’est-à-dire les mettre bout à bout. Il
suffirait de mettre une , (virgule) et le tour serait joué.
L’extraction d’un élément est l’une des opérations les plus couramment utilisées sur
ce type de structures. Qu’il s’agisse de séquences, de listes ou d’ensembles, on extrait
de la même façon :
Exemple
sequence := 1, d, rouge;
sequence := 1, d, rouge
sequence[3];
rouge
29
Brahim Benouahmane
ensemble[2];
66
liste[1];
printemps
liste1 := [a, b, c, d, b, f ];
liste1;
Les séquences
De toutes les structures de données, les séquences sont certainement les plus fonda-
mentales en Maple. Elles servent à construire les arguments des commandes Maple ainsi
30
Brahim Benouahmane
que les autres structures de données élémentaires comme les listes et les ensembles. Il sera
question ici des opérations suivantes
Une séquence est une énumération d’un ou de plusieurs objets. Lorsqu’il y a plus d’un
objet, ils doivent être séparés par des ,.
Exemple
seule
1. construire
Les séquences peuvent être construites en tapant et en virgulant les éléments les
uns après les autres. On peut aussi les produire à l’aide du très utile et très efficace
opérateur :
quinzefrequence := seq(?);
31
Brahim Benouahmane
2. ajouter
sequence1 := 1, 2, 3;
sequence1 := 1, 2, 3
sequence2 := 4, 5, 6;
sequence2 := 4, 5, 6
sequenceajout := 1, 2, 3, 4, 5, 6
3. extraire
Une des opérations les plus couramment effectuées sur ce type de structures, c’est
l’extraction d’un élément. Heureusement, on extrait de la même façon dans le cas
des séquences, ensembles et listes.
√
petitesequence := a, 2, bleu;
√
petitesequence := a, 2, bleu
petitesequence[3];
bleu
miniensemble[2];
carre
32
Brahim Benouahmane
courteliste[1];
grand
Vous avez remarqué que c’est le même [ ] qui sert à construire les listes
4. modifier
sequence[3] := rouge;
Les ensembles
Pour créer un ensemble, il suffit d’entourer une séquence d’une paire d’accolades { }.
ens1 := {1, 2, 3, 4}
33
Brahim Benouahmane
{1, 2, 3, 4, a, b, c}
{1, 2, 3}
{2, 3, 4}
Exercice
En faisant appel aux opérateurs seq,{ } et minus, faites produire l’ensemble des 20
premiers entiers, mais sans les multiples de 3.
vingtprem :=?;
multiple3 :=?
enscherche :=?;
– construire un ensemble :
– modifier un ensemble :
1. construire un ensemble
34
Brahim Benouahmane
moyenensemble := {1, 2, 3, 4, 5, 6, 7, 8, 9,
10, a, b, {c}}
L’extraction d’un élément est l’une des opérations les plus couramment utilisées sur
ce type de structures. Qu’il s’agisse de séquences, de listes ou d’ensembles, on extrait
de la même façon :
petitensemble[2];
4. modifier un ensemble
35
Brahim Benouahmane
ensemble := {a, b, c, b, e, f };
ensemble ;
ensemble :=subs(b=bleur,ensemble) ;
ensemble[1] :=premier ;
Le type équation
Formellement, les objets de type equation sont formés d’un membre de gauche, du
signe d’égalité = et d’un membre de droite. En cela, ils ressemblent beaucoup aux éqau-
tions mathématiques.
x∧ 2 + 10 = 3 ∗ x − 7;
x2 + 10 = 3 x − 7
Comme tout autre objet Maple, les équations peuvent être affectées à des symboles.
Nous allons voir ici les principaux usages du type equation ainsi que les opérations
formelles qu’il supporte.
36
Brahim Benouahmane
d’équations mathématiques
Les équations que l’on donne en arguments aux solveurs (solve et fsolve) sont
aussitôt interprétées "mathématiquement" :
systeme := {3 ∗ x + 2 ∗ y = 7, x + y = 3};
systeme := {3 ∗ x + 2 ∗ y = 7, x + y = 3}
solutionsysteme := {y = 2, x = 1}
assign(solutionsysteme);
x; y;
37
Brahim Benouahmane
subs(x = y, x∧ 2);
y2
z+a+b
Certaines équations Maple sont utilisées pour signifier "Est-ce que c’est vrai ?".
Ces équations sont alors précédées de l’évaluateur logique evalb
evalb(4 = 5);
false
evalb(a = a);
true
Dans les contextes où une équation sert à représenter une fonction logique,
l’usage de evalb est facultatif :
if (1 = 1, instruction1, instruction2);
instruction1
if (2 = 1, instruction1, instruction2);
instruction2
Les commandes Maple offrent souvent plusieurs options. Celles-ci sont expri-
mées à l’aide d’équations. La commande plot permet, entre autres options, le
choix de la couleur et de la forme :
38
Brahim Benouahmane
style=point) ;
axes=boxed) ;
On peut effectuer des opérations formelles sur les équations. La commande lhs
permet d’obtenir le membre de gauche d’une équation :
equat := x∧ 2 + 10 = 3 ∗ x − 7;
equat := x2 + 10 = 3 x − 7
lhs(equat);
x2 + 10
rhs(equat);
3x − 7
L’opérateur op voit une équation comme une fonction logique dont les arguments
sont respectivement les membres de gauche et de droite. Il produira donc ces deux
arguments sous forme d’une séquence :
op(equat);
39
Brahim Benouahmane
x2 + 10, 3 x − 7
40