Sunteți pe pagina 1din 40

Brahim Benouahmane

Qu’est-ce que Maple ?

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

Il est capable de reconnaître des constantes de différents types :

entier : 3 , 5, · · ·
1 11
fraction : 5
, 12
,···
décimal : 2. , 5.75, · · ·
symbolique : Π , I , E , inf inity, · · ·

Pour Maple les nombres 1/4 et 0.25 ne sont pas identiques.


Pourquoi ne pas écrire 22/7 plutôt que le symbole Pi ? Parce que vous pouvez calculer
tranquillement avec Pi · · · sans erreur. Si, une fois vos calculs terminés, vous voulez nu-
mériser (décimaux), vous pouvez le faire avec toute la précision que vous désirez. Pour
effectuer l’évaluation numérique, il suffit d’employer la commande evalf.

Exemple

(sin(Pi)∧ 2 + cos(Pi)∧ 2) ∗ Pi; ] d’abord le calcul numérique


evalf(%) ; ] ensuite l’évaluation numérique

Arithmétique

On entend par opérations arithmétiques celles que tout le monde connaît :

addition, soustraction, multiplication, division, exponentiation

A chacune de ces opérations, est attaché un signe particulier.

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 :

Priorité des opérateurs

Faites exécuter par Maple le calcul suivant −5∧ 2.



Quelle a été la première opération effectuée (le ou le −) ?
Utiliser des parenthèses pour obtenir "le carré de −5".
Le problème précédent illustre l’importance de l’ordre de priorité des opérateurs. Vous

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 :

XY , xY , X1 sont des noms de variables Maple.

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 est une variable assignée, dont la valeur est 3

> var = 3;

La variable a et la variable indicée x(a) sont non assignées :

a, x(a);

Nommer ou définir des objets

Il sera question ici des principales opérations concernant les définitions : création,
rappel, sauvegarde et lecture.

1. Créer une définition

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 :

un nom := une valeur;

un nom := une valeur

cube := x− > x∧ 3;

cube := x− > x3

3
Brahim Benouahmane

fraction := (5 ∗ x∧ 4 + 50)/(8 ∗ x − 22);

fraction := (5 ∗ x4 + 50)/(8 ∗ x − 22)

fdv := (x, y)− > x∧ 2 ∗ cos(x) − y∧ 2 ∗ sin(y);

fdv := (x, y)− > x2 ∗ cos(x) − y2 ∗ sin(y)

2. Se rappeler une définition

Si vous créez beaucoup de définitions, le moment viendra où vous ne serez plus


certain des énoncés de ces définitions.
Pour connaître un énoncé, il suffira généralement d’évaluer :

un nom;

une valeur

fraction ;

(5 ∗ x4 + 50)/(8 ∗ x − 22)

Malheureusement, ca ne marchera pas tout le temps :

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

3. Sauvegarder/lire une définition : read/save

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.

Choisissez un nom de fichier et sauvegardez-y la définition de fdv.

save fdv, "test" ;

4
Brahim Benouahmane

Faites disparaître la définition de fdv

fdv := " " ;

fdv ;

Redéfinissez fdv en chargeant la définition sauvegardée.

read test

fdv ; ] réapparition de la définition.

Fonctions et expressions

La distinction entre fonctions et expressions est fondamentale en Maple.

Prenons, par exemple, le cas de la fonction cosinus. En Mathématique, on dira souvent


"la fonction cos(x).

Dans le monde Maple, cos(x) est une expression et c’est le symbole cos qui représente
la fonction cosinus.

Voici des exemples d’expressions :

1 , log(z) , 3 x , 3.15 + 2 y∧ 2 + 1/z

Voici des exemples de fonctions :

sin , log , exp , sqrt , abs , x− > x∧ 3

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.

Maple oblige à faire la distinction fonctions/expressions dans plusieurs domaines de cal-


cul.

Par exemple :

1. dérivation

expression : diff
fonction : D

5
Brahim Benouahmane

2. graphisme

expressions : le domaine est spécifié en référant aux variables (x=1..3)

fonctions : les variables sont absentes du domaine (1..3)

3. manipulations

les expressions se manipulent, se transforment, se simplifient, etc.

les fonctions refusent obstinément de se laisser modifier.

Définir des fonctions

Il est très commode de savoir définir ses propres fonctions. Les trois principaux méca-
nismes de définitions sont :

. La notation fléchée : − >

. L’opérateur unapply

. Proc · · · end
1. notation fléchée

C’est certainement la façon la plus simple et elle rappelle la notation mathématique


traditionnelle.
(a) une variable

Exemple

Voici une définition de la fonction "sinus du carré

sinuscarre := x− > Sin(x∧ 2);

sinuscarre := x− > sin(x2 )

Un fois définie, elle acceptera divers types d’arguments

sinuscarre(5);

sin(25)

6
Brahim Benouahmane

sinuscarre(1.5);

0.778073

(b) plusieurs variables

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 := (a, b)− > plot(cos(x)∧ 2, x = a..b);

g := (a, b)− > plot(cos(x)2 , x = a..b)

g(1, 5)
?

2. avec unapply, à partir d’une expression

La transformation expression− > f onction sera effectuée automatiquement par


l’opérateur unapply

(a) une variable

Reprenons l’exemple ci-haut, mais en utilisant plutôt ce mécanisme.

sinuscarre := unapply(sin(x∧ 2), x);

sinuscarre := x− > sin(x2 )

(b) plusieurs variables

unapply ne refuse pas de convertir en fonction les expressions de plusieurs


variables :

logpv := unapply(log(x + y), x, y);

7
Brahim Benouahmane

logpv := (x, y)− > ln(x + y)

3. avec proc..end

Les définitions de fonctions avec proc..end permettent d’écrire des "procédures",


c’est-à-dire des séquences de commandes (à exécuter successivement). De plus, la
programmation procédurale fait un usage fréquent de variables intermédiaires ainsi
que d’instructions de contrôle (if, for, while).

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)

local nouvelle liste, longueur, i;

nouvelle liste := NULL;

longueur := nops(liste);

for i from 1 to longueur do

if isprime(liste[i]) then

nouvelle liste := nouvelle liste, liste[i];

fi

od;

[nouvelle liste]

end;

liste := [seq(i, i = 1..25)];

liste := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,

15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25];

premiers(liste);

[2, 3, 5, 7, 11, 17, 19, 23]

Les manipulations

8
Brahim Benouahmane

1. Qu’est-ce que manipuler ?

Manipuler une expression consiste à la transformer en une expression équivalente.

Développer, factoriser ou simplifier une expression

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

% permet de rappeler la dernière expression calculée.

%% permet de rappeler l’avant dernière expression calculée.

%%% permet de rappeler l’avant-avant dernière expression calculée.


2. Quelques manipulations

Le choix d’une manipulations dépend avant tout de la forme souhaitée du résultat.

Voici quelques exemples à partir d’une expression rationnelle :

expration := (4 ∗ x + 7)/(4 ∗ (x − 3))+


(x∧ 2 + 14 ∗ x + 29)/(4 ∗ (x − 3)∧ 2 ∗ (x + 1));

expration := (4 x + 7)/(4 (x − 3))+

(x2 + 14 x + 29)/(4 (x − 3)2 (x + 1))

– obtenir une fraction réduite de la forme A/B


fract norm := normal(expration);
(x3 − 3 x + 2)
f ract norm :=
(x − 3)2 (x + 1)

9
Brahim Benouahmane

– obtenir une décomposition en fractions partielles

convert(expration, parfrac, x);


19 5 1
1+ + 2
+
4 (x − 3) (x − 3) 4 (x + 1)

– extraire le numérateur et le dénominateur de expration

poly1 := numer(fract norm);

(x − 1)2 (x + 2)

poly2 := denom(fract norm);

(x − 3)2 (x + 1)

Autres exemples

nouveauexpration := expand(3 + 2 x + y)∧ 3);

La commande collect ramasse les termes "semblables"

collect(nouveauexpration, x);

8 x3 + (36 + 12 y) x2 + (36 y + 6 y 2 + 54) x + 27 + 9 y 2 + 27 y + y 3

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

La commande simplify demande à Maple de simplifier une expression de façon


automatique.

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

Maple effectue automatiquement certaines simplifications très élémentaires comme

x − x → 0 , x/x → 1, · · ·

Cependant,il arrive que simplify ne simplifie pas beaucoup et même complique


l’expression

Evaluation des expressions

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

Graphe d’une expression/fonction

1. sous forme d’expression

quantite1 := 50 + 97 x − 35 x∧ 3 − 37 x∧ 4 − 55 x∧ 5 ;

11
Brahim Benouahmane

plot(quantite1, x = 5..15);
?

2. sous forme d’une fonction

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

Maple permet aussi de représenter des courbes définies paramétriquement, c’est-à-


dire dont les composantes x et y dépendent toutes deux d’un même paramètre.

Voici une représentation paramétrique d’un cercle.

plot([cos(t), sin(t), t = 0..2 ∗ Pi]);

4. Plusieurs courbes

Les comparaisons entre courbes sont souvent intéressantes

plot({sin, log}, 1..5);

plot([x, x∧ 2, x∧ 3, x∧ 4, x∧ 5, x∧ 6], x = 0..1);

plot({[sin(t), t∧ 2, t = 1..5], [sin(t), t∧ 3, t = 1..5]});

5. Afficher des données 2-D

plot accepte d’afficher des données 2-D, c’est-à-dire de la forme [[x1 , y1 ], [x2 , y2 ], [x3 , y3 ]...]

listepoints := [[1, 1], [2, 8], [3, 27], [4, 64]...];

listepoints := [[1, 1], [2, 8], [3, 27], [4, 64]...]

plot(listepoints, style = point);

12
Brahim Benouahmane

L’option style=point spécifie à Maple de ne pas relier les points.

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

1. Graphe de fonctions/expressions de deux variables

Pour le graphe d’une expression/fonction de deux variables, on choisira la commande


plot3d.

(a) sous forme d’expression

quantite2 := x∧ 2 ∗ sin(y) ;
plot3d(quantite2, x = −10..10, y = 0..2 ∗ Pi);

(b) sous forme d’une fonction


gxy := (x, y)− > x∧ 3 ∗ sin(y∧ 2) ;
plot3d(gxy, 0..1, −1..1);

(c) Plusieurs courbes

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.

La fonction spacecurve effectue ce calcul graphique. On peut l’activer en écrivant


plots[spacecurve] ou simplement spacecurve si le package plots a été chargé
préalablement :

with(plots) :

une courbe...

13
Brahim Benouahmane

spacecurve([cos(t), sin(t), t], t = 0..5 ∗ Pi);

plusieurs courbes...

spacecurve([cos(t), sin(t), t], [cos(t), sin(t), t∧ 2],

[cos(t), sin(t), t∧ 3], t = 0..5);

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...

plot3d([r ∗ cos(t), r ∗ sin(t), t], t = 0..2 ∗ Pi,

r = 0..1);

plusieurs surfaces...

plot3d({[1/2 ∗ cos(t), 1/2 ∗ sin(t), z],

[z ∗ cos(t), z ∗ sin(t), z]}, t = 0..2 ∗ Pi, z = 0..1);

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).

Nous considérons les deux cas plus généraux solve et fsolve.

Ces deux solveurs comportent des différences importantes.

solve et fsolve

solve

utilise des méthodes algèbriques

cherche à produire des solutions exactes

fsolve

utilise des méthodes numériques

produit des solutions généralement approximatives

Solutions algèbriques : solve

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.

Exemple : racine d’un polynôme par solve

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);

Souvent, cette fonction ne produira pas la réponse attendue.


Il faudra alors faire appel au solveur numériques fsolve.

2. Systèmes d’équations

On demande à solve de résoudre par rapport à certaines variables rassemblées dans


une structure d’ensemble.

solve({equa1, equa2, · · · , equan},

{var1, var2, · · · , varn});

Exemple : Résolvons le petit système suivant :


systeme := {3 x + 2 y == 7, x + y == 3};
solexacte := solve(systeme, {x, y});
solnum := fsolve(systeme, {x, y});

Solveur numérique : fsolve

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

Le cas des équations polynômiales est particulier.

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

polyaleatoire := randpoly(x, degree = 20);


polyaleatoire := 45 x16 − 8 x15 − 93 x10 + 92 x5
+43 x4 − 62 x3
fsolve(polyaleatoire, x);
−1.103382576, −0.8831421139,
0., 0., 0., 0.6467185136
Mieux encore, si vous utilisez l’option complex, fsolve calculera toutes les
solutions réelles et complexes.

fsolve(polyaleatoire, x, complex);

−1.103382576, −.8831421139,

−.7198041607 − .6757017340 ∗ I,

−.7198041607 + .6757017340 ∗ I,

−.4919616056 − 1.066232016 ∗ I,

−.4919616056 + 1.066232016 ∗ I,

0., 0., 0.,

.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

2. Equations non polynômiales

Dans le cas non-polynômial, fsolve ne produira jamais plus d’une solution à chacun
des appels.

(a) Sans spécification d’une région de recherche

Prenons par exemple l’équation non-polynômiale suivante :

equat := 4 cos(x) = x;

equat := 4 cos(x) = x

Essayons, car on ne sait jamais, de résoudre avec solve :

solve(equat, x);

RootOf (_Z − 4cos(_Z))

Ce n’est probablement pas ce que vous désirez obtenir. C’est là où fsolve


peut s’avérer très utile :

18
Brahim Benouahmane

solut1 = fsolve(equat, x);

solut1 := 1.252353234

Contrôlons la qualité de cette solution approximative :

evalf (subs(x = solut1, equat));

1.252353234 = 1.252353234

Voilà donc une solution de bonne qualité. Est-ce la seule ?

Un examen des graphes des fonctions y = 4 cos(x) et y = x nous aidera à


répondre :

plot({4 ∗ cos(x), x}, x = −5..5);

Nous voyons bien qu’il y a exactement trois solutions à notre équation.


La commande fsolve peut calculer ces solutions.

(b) Avec spécification d’une région de recherche

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 = fsolve(equat, x = −3.7.. − 3.5);

solut2 := −3.595304867

En utilisant cette même méthode on trouve une troisième solution.

solut3 := fsolve(equat, x = −2.5.. − 1.8);

19
Brahim Benouahmane

solutt3 := −2.133332252

Intégration, différentiation, séries et limites

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

(a) Intégration symbolique : int

Intégrer une fonction à une variable en utilisant la fonction int

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 :

(a) diff dérive les expressions

diff (sin(x), x);

cos(x)

diff (sin(x), x$3);

−cos(x)

Le résultat de l’application de diff est aussi une expression

(b) D dérive les fonctions

D(sin);

cos

Application : recherche de min et de max locaux

Calculons les min et max de poly

poly := −55 ∗ x∧ 5 − 37 ∗ x∧ 4 − 35 ∗ x∧ 3+

97 ∗ x + 50 :

Cherchons les points critiques de poly

deriveepoly := diff (poly, x);

21
Brahim Benouahmane

deriveepoly := −275 x4 − 148 x3 − 105 x2 + 97

ptscrits := fsolve(deriveepoly = 0, x);

ptscri := −.7837280268, .5834381102

Vérifions :

subs(x = ptscrits[1], deriveepoly);

subs(x = ptscrits[2], deriveepoly);

−.2 10−8

−.2 10−8

La dérivée seconde nous apprendra de quelle nature sont ces points cri-
tiques.

deriveesecpoly := diff (poly, x, x);

deriveesecpoly := −1100 x3 − 444 x2 − 210 x

subs(x = ptscrits[1], deriveesecpoly);

421.3927992 # un minimum local

subs(x = ptscrits[2], deriveesecpoly);

−492.1221999 # un maximum local

Vérifions ces résultats avec un graphe

22
Brahim Benouahmane

plot(poly, x = −1.5..1.5);

3. Calculs pour plusieurs variables

Dériver une expression à plusieurs variables en utilisant la commande diff.

Exemple

Expr := x∧ 3 ∗ sin(y∧ 4) :

diff (Expr, x, y);


12 x2 cos(y4 ) y3

Maintenant dérivons Expr deux fois par rapport à x et trois fois par rapport
à y.

diff (Expr, x$2, y$3);

−384 x cos(y 4 ) y 9 − 864 x sin(y 4 ) y 5 + 144 x cos(y 4 ) y

Intégrer une expression à deux variables en utilisant la fonction Doubleint.

Exemple

with (student) :

intdouble1 := Doubleint(e∧ (−2 ∗ x) ∗ cos(y), x, y) :

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.

intdouble2 := Doubleint(exp∧ (−2 ∗ x) ∗ cos(y),

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

La commande pour résoudre les équations différentielles est dsolve.

Equations différentielles non-homogènes

du second ordre

Exemple

diffeq1 := diff (y(x), x$2) − 5 ∗ diff (y(x), x)+

6 ∗ y(x) = 2 ∗ exp(x) :

dsolve(diffeq1, y(x));

y(x) = e(3 x) _C2 + e(2 x) _C1 + ex

Les constantes d’intégration sont C1 et C2.

Autre exemple

diffeq2 := x ∗ diff (y(x), x$2) + diff (y(x), x)+

x ∗ y(x) = 0 :

dsolve(diffeq2, y(x));

y(x) = _C1 BesselJ(0, x) + _C2 BesselY(0, x)

BesselJ(0, x) et BesselY(0, x) sont des fonctions Bessel d’ordre 0.

Affichons les graphes de ces deux fonctions.

plot({BesselJ(0, x), BesselY(0, x)}, x = 0..10});

diffeqsysteme := [diff (x(t), t) = −y(t) − x(t)2 ,

24
Brahim Benouahmane

diff (y(t), t) = 2 ∗ x(t) − y(t), x(0) = 1, y(0) = 1] :

solu := dsolve(diffeqsysteme, numeric,

range = 0..10);

solu := proc(x_rkf45)...end proc;

La réponse est exprimée en terme de


proc(x_rkf45)...end proc;. Cette procedure peut être utilisée pour trouver
des valeurs individuelles de la solution en un certain point, par exemple t = 3

solu(3);

[t = 3., x(t) = −0.139742607019279486,

y(t) = −0.517757975825659078]

5. Développement en séries

(a) Développement de Taylor

i. expressions d’une seule variable : taylor

Demandons à taylor de développer


Exp(−x) Sin(2 x) autour de 0 jusqu’au terme d’ordre 6.

expr := taylor(exp(−x) ∗ sin(2 ∗ x), x = 0, 6);

expr := 2 x − 2 x2 − 13 x3 + x4 −
19
60
x5 + θ(x6 )

Si le développement est réussi, le résultat est du type taylor, et il


comporte un terme d’"ordre". Soulignons qu’il ne s’agit pas d’un
polynôme (au sens de Maple.)

Pour tirer un polynôme d’une série :

convert(expr, polynom);

2 x − 2 x2 − 13 x3 + x4 − 19
60
x5

25
Brahim Benouahmane

ii. expressions de plusieurs variables : mtaylor

Pour les expressions de plusieurs variables, il faut faire appel à la fonction


mtaylor, laquelle doit d’abord être chargée via readlib :

readlib(mtaylor) :

Pour développer Sin(x2 + y 2 ), par rapport au couple de variables [x, y],


jusqu’à l’ordre 8, et autour du point [1,2], on écrit :

mtaylor(sin(x∧ 2 + y∧ 2), [x, y], 8, [2, 1]);

y2 + x2 − 61 y6

Contrairement à taylor, la fonction mtaylor produit des polynômes :

(b) Développements généralisés : series

Les exposants des développements en série de Taylor sont entiers et positifs.

Cependant, on peut autoriser taylor à effectuer des développements en sé-


ries qui, si nécessaire, comporteront des exposants fractionnaires ou négatifs.
Considérons le cas suivant :

taylor(exp(x)/x, x = 0, 8);

Error, does not have

a taylor expansion, try series()

La commande taylor a échoué et Maple recommande series, plus générale.

devserie := series(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 :

Dans le cas où un développement en série de Taylor est possible, le résultat


de l’exécution de series est exactement le même que celui obtenu par
taylor. On consate que les objets de type taylor sont aussi de type
series.

6. Limites

sin(x)
– Calculons la limite bien connue : lim x
x→0

limit(sin(x)/x, x = 0);

– Voici un autre exemple avec "x tend vers moins l’infini" :

limit(exp(x), x = −infinity);

– limite à gauche

limit(tan(x), x = Pi/2, left);

– limite à droite

limit(tan(x), x = Pi/2, right);

−∞

– Limite d’une expression à deux variables

limit(x2 ∗ y2 − 2 ∗ x ∗ y5 + 3 ∗ y, {x = 2, y = 3});

-927

27
Brahim Benouahmane

Les structures de données élémentaires

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 structures de données les plus couramment utilisées en Maple sont :

– 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.

2. Maple n’élimine pas les éłéments qui se répètent.

Tour à tour, nous allons voir comment :

– constriure une liste

– ajouter une liste à une autre

– extraire un élément d’une liste

– modifier une liste

1. construire une liste

Pour bâtir une liste : prendre une séquence et l’entourer de [ ]

petiteliste := [1, 2, 3];

petiteliste := [1, 2, 3]

28
Brahim Benouahmane

Une liste de nombres séquentielle peut être construite par la commande seq

moyenneliste := [seq(i, i = 1..20)];

moyenneliste := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

2. ajouter une liste à une autre

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.

liste10pairs := [seq(2 ∗ i, i = 1..10)] :

liste10impairs := [seq(2 ∗ i − 1, i = 1..10)] :

Vous voulez joindre ces deux listes, c’est-à-dire les mettre bout à bout. Il
suffirait de mettre une , (virgule) et le tour serait joué.

3. extraire un élément d’une liste

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

ensemble := {H, 66, vert};

29
Brahim Benouahmane

ensemble := {H, 66, vert}

ensemble[2];

66

liste := [printemps, mars, 2007];

[liste := printemps, mars, 2007]

liste[1];

printemps

4. modifier une liste

On peut vouloir changer une liste en changeant systématiquement un élément pour


un autre. On peut aussi décider de changer le nième élément d’une liste.

Exercice : Changer une liste

Construisons d’abord une petite liste :

liste1 := [a, b, c, d, b, f ];

Pour changer tous les b en bouton, on procède par substitution :

subs(b = bouton, liste1);

La liste est-elle vraiment changée ?

liste1;

Il aurait fallu faire

liste1 := subs(b = bouton, 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

– constriure des séquences

– ajouter une séquence à une autre

– extraire un élément d’une séquence

– modifier une séquence

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

a, 2, face, rouge, tan(x)

seule

sont toutes deux des séquences.

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 :

seq10premiers := seq(i, i = 1..10);

11premiers := seq(i, i = 1..10), 11;

A l’aide de seq, construisez les quinze premiers termes de la séquences qui


commence comme suit :

sin(x), sin(2 ∗ x), sin(3 ∗ x), · · ·

quinzefrequence := seq(?);

31
Brahim Benouahmane

2. ajouter

sequence1 := 1, 2, 3;

sequence1 := 1, 2, 3

sequence2 := 4, 5, 6;

sequence2 := 4, 5, 6

sequenceajout := sequence1, sequence2;

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 := {triangle, carre, cercle};

miniensemble := {triangle, carre, cercle}

miniensemble[2];

carre

courteliste := [grand, moyen, petit];

32
Brahim Benouahmane

courteliste := [grand, moyen, petit]

courteliste[1];

grand

Vous avez remarqué que c’est le même [ ] qui sert à construire les listes

4. modifier

Voici une courte séquence :



sequence := a, 2, bleu, carre;

Pour changer le bleu en un rouge,essayer :

sequence[3] := rouge;

Utilisez successivement les opérateurs [ ],subs et op pour obtenir la séquence



a, 2,rouge,carre.
Expliquez pourquoi il n’est pas recommandable d’utiliser les { } à la place des
[ ] pour modifier une séquence.

Les ensembles

Les ensembles à la Maple sont très apparentés à ceux de la mathématique tradition-


nelle.

Pour créer un ensemble, il suffit d’entourer une séquence d’une paire d’accolades { }.

ens1 := {1, 2, 3, 4};

ens1 := {1, 2, 3, 4}

Voici l’essentiel du comportement de Maple avec les ensembles :

– Il effectue les opérations ensemblistes habituelles :

33
Brahim Benouahmane

ens1 union {a, b, c};

{1, 2, 3, 4, a, b, c}

ens1 intersect {1, 2, 3, a, b, c};

{1, 2, 3}

ens1 minus {1, b};

{2, 3, 4}

– Il élimine automatiquement les répétitions entre les { }.

– Il n’ordonne pas automatiquement les ensembles.

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 :=?;

{1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20}

Il est utile de bien maîtriser les quatre opérations structurelles suivantes :

– construire un ensemble :

– ajouter un ensemble à un autre :

– extraire un élément d’un ensemble :

– modifier un ensemble :

1. construire un ensemble

Pour bâtir un ensemble : prendre une séquence et l’entourer de { }.

petitensemble := {a, b, {c}};

34
Brahim Benouahmane

moyenensemble := {seq(i, i = 1..10)};

petitensemble := {a, b, {c}}

moyenensemble := {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

2. ajouter un ensemble à un autre : union


Cette opération revient à effectuer la réunion ensembliste de deux ensembles :

petitensemble union moyenensemble;

moyenensemble := {1, 2, 3, 4, 5, 6, 7, 8, 9,

10, a, b, {c}}

3. extraire un élément d’un ensemble

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

Pour modifier un ensemble, on utilise généralement la commande subs comme dans


l’exercice suivant :

Exercice : Modifier un ensemble

Prenons un petit ensemble :

35
Brahim Benouahmane

ensemble := {a, b, c, b, e, f };

Notez la disparition de l’un des deux b et le désordre du résultat.

Pour que le b devienne bleu, substituons :

subs(b = bleu, ensemble);

Notre ensemble a-t-il changé ?

ensemble ;

Nommer, nommer, encore et toujours · · ·

ensemble :=subs(b=bleur,ensemble) ;

Essayez maintenant ceci :

ensemble[1] :=premier ;

En Maple, il n’est pas bon de confondre les listes et les ensembles.

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.

equat := sin(x∧ 2) + 10 ∗ tan(x) = 3 ∗ x − 7;

equat := sin(x2 ) + 10 ∗ tan(x) = 3 ∗ x − 7

Nous allons voir ici les principaux usages du type equation ainsi que les opérations
formelles qu’il supporte.

1. Utilisation des équation

En Maple, la structure d’équations a plus d’un usage :

36
Brahim Benouahmane

– construire des équations et systèmes d’équations mathématiques

– servir d’arguments à la commande subs

– construire des expressions logiques

– exprimer les options dans les commandes

– spécifier le domaine de définition d’un graphe.

(a) Equations et systèmes

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" :

solve(x∧ 2 + 10 = 3 ∗ x + 37, x);

3/2 + 3/2 131/2 , 3/2 − 3/2 131/2

Les systèmes d’équations sont représentés comme des ensembles d’équations :

systeme := {3 ∗ x + 2 ∗ y = 7, x + y = 3};

systeme := {3 ∗ x + 2 ∗ y = 7, x + y = 3}

solutionsysteme := solve(systeme, {x, y});

solutionsysteme := {y = 2, x = 1}

Dans ce cas, les solutions sont données sous forme d’équations.

Pour transformer des équations en assignations, il faut user de l’opérateur


assign :

assign(solutionsysteme);

x; y;

37
Brahim Benouahmane

(b) Argument de la fonction subs

On représente les substitutions à effectuer par subs à l’aide d’équations

subs(x = y, x∧ 2);

y2

subs({x = z, z = a + b}, x + z);

z+a+b

(c) construire des expressions logiques

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

(d) exprimer les options dans les commandes

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

plot(sin(x), x = 0..2 ∗ Pi, color = red,

style=point) ;

(e) spécifier le domaine de définition d’un graphe

Dans un contexte informatique, produire le graphe d’une fonction sous-entend


toujours un domaine particulier. Les équations servent aussi à spécifier les
domaines à l’intérieur des commandes plot et plot3d.

plot(tan(x), x = −0.5..1.5, color = green,

axes=boxed) ;

2. Opérations formelles sur les équations :lhs,rhs,op

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 donne son membre de droite :

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

S-ar putea să vă placă și