Vous êtes sur la page 1sur 55

Chapitre 1 : Survol panoramique

J. EL KHAMKHAMI
Calcul Scientifique : Maple
Parcours "Rayonnement"
Dpartement de Physique
Facult des Sciences de Ttouan
10-02-2016
______________________jamalelkhamkhami@gmail.com______________________

Introduction
Ag de 35 ans.
com). Il fonctionne sur les stations de travail UNIX, sur Macintosh et sous Windows. Il y a plusieurs
versions ; actuellement la version 2015 existe.

Qu'est-ce que Maple?


Maple est un logiciel conu pour faire des mathmatiques ; pas seulement des mathmatiques pour
elles-mmes ; mais pour la physique, l'ingnierie, la biologie, la chimie, les finances etc...
Un langage symbolique
Maple est un logiciel de calcul symbolique ou formel. 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 2+3. Les
avantages sont bien sr nombreux.
Un interprteur
Maple est un langage interprt (interactif), comme tous les langages symboliques d'ailleurs,
tandis que Pascal, Fortran, et C sont des langages compils. a veut tout simplement dire que
Maple est un interlocuteur toujours attentif et prt ragir vos "paroles'', sans passer par des
tapes intermdiaires comme la compilation et l'dition des liens.

Pourquoi Maple?
Nous avons choisi un logiciel de calcul interprt car l'utilisation de tout autre langage non interprt
ncessite un effort important pour une majorit d'tudiants et ne leur permet pas d'approfondir les
notions de calcul scientifique.
De plus, dans les langages fortement typs, de nombreuses contraintes gnent les tudiants. A
l'oppos, les logiciels modernes de calcul possdent une interface facile assimiler : les lignes
d'instruction s'crivent comme des lignes de math. et des rsultats peuvent tre rapidement obtenus.
De mme, on peut utiliser la possibilit de mener la fois un calcul symbolique et un calcul
numrique, tout en profitant de ses capacits dans le domaine de la visualisation (graphique et
animation 2D et 3D).

Un autre avantage de Maple est de pouvoir insrer du texte entre les lignes de commandes et de
calculs sans passer par un diteur. Cela offre ainsi la possibilit de commenter les programmes et les
rsultats qu'il observe (avec ventuellement des formules mathmatiques).
Le plus utilis dans le monde en tant que calcul formel (sans oublier Mathematica). On le trouve
parmis les enseignements de base (DEUG, Classes prpa (dernirement au Maroc), Concours aux
grandes coles).
Enfin, il est noter que dans notre Facult il y'a une diversit de connaissances en matire de calcul
scientifique chez les tudiants.

Pour commencer
MAPLE propose deux formes de prsentation des feuilles de calcul : le mode Document (Document
mode) et le mode feuille de travail (Worksheet mode).
D'une simplifie, le mode "Document" est orient vers un "document scientifique" avec une prsentation
plus habituelle des commandes de calculs. Il combine du texte et des maths dans une mme ligne. Le
mode "Worksheet" est plutt orient vers un "document de travail" ; il prsente aussi des avantages de
simplicit et de clart d'utilisation pour un travail courant ainsi que des ressources mmoire moins
importantes.
=
> int(sin(x), x);#
(1)

2-D Math and 1-D Math Input


2-D Math

Default setting. Executable standard math notation.


>
(2)
You do not require a semicolon or colon to terminate the command or
expression.
Access from the Insert>2-D Math menu.
To switch between 1-D and 2-D math, press the F5 key or click the Math
mode icon.
When using 2-D math, the Math mode icon is
highlighted in the toolbar.
In Worksheet and Document modes with 2-D math, the cursor appears with
a gray underbar and the input font is black. To change the appearance of 2-D
math, modify the character styles 2D Input (for Worksheet mode) and 2D
Math (for Document mode).

1-D Math

Executable Maple notation. Usually an expression that Maple can evaluate.


> factor(x^2 + 2*x + 1);
(3)
Important: All 1-D commands must terminate with a semicolon or colon.
Access from the Insert>Maple Input menu.
To switch between 1-D and 2-D math , press the F5 key or click the Text
mode icon.
When entering Maple input and text, the Text mode
icon is highlighted in the toolbar.
In Worksheet and Document modes with 1-D math, the input font is red.

Lorsque les deux points : sont utiliss, le rsutat ne s'affiche pas, mais l'ordre est transmis.
> b = sqrt(3):
Les deux points : avant le signe = permettent d'affecter (assigner) l'expression du membre droite la
variable x :
=
x := sqrt(3): y := x+2; y;

(4)
La fonction restart permet de rinitialiser toutes les variables de la feuille de calcul (les mmoires).
> restart;
> x, y;
(5)
Tout ce qui vient aprs le caractre # est ignor par le logiciel. Il est considr comme un commentaire
(le ! du Fortran 90) :
>
(6)
> m;# m ne prend pas la valeur 2, parce que il ne s'agit pas
d'une assignation.
>
Si on crit deux instructions spares par une virgule puis la fin on tape un point virgule, alors leurs
rponses respectives s'crivent sur une mme ligne :
>
(7)
Des messages d'erreur peuvent apparatre en cas de mauvaise saisie ou d'oprations illicites:
>
Error, unable to match delimiters
>
(8)
Le caractre % (pourcent) permet de rappeler la dernire expression calcule (% est le Ditto Operator)
>
4
(9)

(9)
%% permet de rappeler l'avant-dernire expression calcule.
>
7.
8.
%%% permet de rappeler l'avant-avant-dernire expression calcule.
>

(10)

? ou
help
> ?solve; # On cherche de l'aide sur la fonction solve
> help(int); # on cherche de l'aide sur la fonction int
On peut galement obtenir des aides sur des sujets entiers. Le mieux est alors de passer par le menu Help

Calcul Symbolique
Commande

Exemple

simplify : pour simplifier une expression

>
1

(11)

>
assuming : simplifier en faisant d'hypothse (a rel ngatif)
=
expand : pour dvelopper une expression

>
(12)
>

factor : pour factoriser une expression

collect : grouper les termes d'une expression suivant une


variable donne

iscont : pour tester la continuit d'une expression sur un


intervalle rel donn considr ouvert par dfaut

= false,
= FAIL

limit : pour calculer la limite d'une expression pour une


valeur donne de la variable

diff : pour driver une expression

diff(x*cos(x), x$3); =

int : pour intgrer une expression

=
dsolve : pour rsoudre une diffrentielle

series : pour dvelopper en srie d'une expression


=

= 55

sum : pour calculer des sommes d'un nombre fini, indfini


ou infini de termes donns par une expression dpendant
(ou non) d'un indice de sommation

=
= 3628800
=

product : pour calculer des produits d'un nombre fini,


indfini ou infini de termes donns par une expression
dpendant (ou non) d'un indice de sommation

minimize, maximize : pour calculer le minimum


(maximum) d'une fonction
=

=
Gradient : pour calculer le gradient d'une fonction scalaire
=

, la fonction

Gradient se trouve dans la


bibliothque VectorCalculus.
VectorField : pour dfinir un champ vectoriel
: pour valuer un champ vectoriel en un point

: pour la divergence d'un champ vectoriel


=

: pour calculer le rotationnel d'un champ vectoriel

: pour dfinir une matrice


=

=
Add : pour additionner deux matrices
=
=

ranspose : pour transposer une matrice

Determinant: pour calculer le dterminant d'une matrice


Inverse : pour calculer l'inverse d'une matrice

solve : pour rsoudre une quation, un systme d'quations


ou d'inquations

=
=

rsolve : pour rsoudre une quation rcurente


=
=
=

Re, Im : pour calculer respectivement les parties relle et


imaginaire d'un nonmbre complexe

,
=

evalc : pour crire un nonmbre complexe sous forme


algbrique
=

conjugate : pour avoir le conjugu d'un nonmbre complexe


argument : pour avoir l'argument d'un nonmbre complexe

abs : pour calculer le module d'un nonmbre complexe

=
= true ,

isprime : pour tester la primalit d'un entier

false
= 2,

mod, irem : pour calculer le reste de la division de 2 entiers

=7

iquo : pour calculer le quotient entier (division entire)


max, min : pour calculer le maximum et le minimum d'une
suite de nombres

=2

= 31,
=6
= "XXII",
= 11

convert : pour convertir une expression une forme


diffrente
=

=0

5463
,
20

=
= 1100,
= 27

= speed,
= pressure

Calcul Numrique
Le nombre de chiffres significatifs rendus par MAPLE est fix par dfaut 10 par le symbole prdfini
Digits.
= 10
= 3.141592654,
= 101.0643359. on utilise la commande evalf(...), pour
avoir la valeur numrique (par dfaut 10 chiffres significatifs) de Pi, sqrt(10214). Cependant, ce nombre
peut tre dfini par l'oprateur.
= 3.14159265358979,
Les syntaxes suivantes est aussi valides :
3.14159265358979323846264338328

Commande
identify : pour crire une valeur numrique (float)
sous forme symbolique

= 101.064335944981,
= 3.1416,
=

Exemple
=

,
=

fsolve : pour chercher une solution approche


d'une quation ou d'un systme d'quations. aide

=
=
, on ajoute
l'option complex, pour avoir les solutions
complexes

= 0.7559774120
= 9.349304214, pour chercher
une solution autour de 10.
= 12.60817398, pour
chercher une solution comprise entre 11 et 14.
=
=
: pour intgrer une expression. Pour dclencher
un calcul approximatif, on crit l'une des
oprandes en virgule flottante (valuation
dcimale implicite).
ApproximateInt : pour calculer un intgrale
moyennant un mthode numrique donne.

= 0.3466144871

on utilise with pour


accder la librairie Student

= 0.339961130015929
ApproximateIntTutor : pour lancer un tuteur
avec interface qui calcule, trace ou anime
l'approximation d'une intgrale dfinie. aide

ArcLengthTutor : pour lancer un tuteur avec


interface qui calcule et trace la longueur d'arc de f
dans l'intervalle a..b. aide
dsolve avec l'option numeric : pour rsoudre
numriquement une quation diffrentielle.

(13)

odplot : pour tracer la solution numrique d'une

quation diffrentielle gnrer par la fonction


dsolve.

Programmation
Quelques exemples
>
Structure if

Structure if

Boucle for

=
1
0
0

=
Procdure proc

Procdure rcursive

(14)

>

>

>

Visualisation
Cliquer ici

Maplet
lments de barres d'outils:

Une barre d'outils peut tre insre dans une fentre. Cette barre d'outils peut contenir diffrents
boutons ou sparateurs.
ToolBar : Dfinit une barre d'outils dans une
fentre de maplet

ToolBarButton : Dfinit un bouton dans une


barre d'outils

ToolBarSeparator : Dfinit un sparateur dans


une barre d'outils

ListBox : Dfinit une liste simple dans une


fentre de maplet

MathMLEditor : Dfinit un diteur


d'quations MathML dans une fentre de
maplet

MathMLViewer : Dfinit un visualiseur


d'expressions MathML dans une fentre de
maplet

Plotter : Dfinit une zone de dessin dans une


fentre de maplet

Slider : Dfinit une barre de dfilement de type


"jauge" dans une fentre de maplet

Table : Dfinit une table dans une fentre de


maplet

TextBox : Dfinit une zone de saisie de texte


dans une fentre de maplet

TextField (Dfinit une zone de saisie de texte


d'une ligne dans une fentre de maplet

ToggleButton : Dfinit un bouton de type


"Enfonc/Relch" dans une fentre de maplet

Maple en Physique
Cliquer ici
Pour accder la bibliothque
=

Cela gaspille plus de ressourses mmoire, si on veut uniquement l'une des fonctions de la bibliothque,
par exemple, GetConstant on crit la syntaxe : ScientificConstants[GetConstant]
=
, c'est
l'acclration de la pesenteur.
Pour la charge lmentaire de l'lectron :

Pour s'informer sur les constantes

h,

et c :

=
=
=
=

Pour avoir la valeur numrique d'une constante on utilise la fonction evalf :


ou pour plus de prcision sur l'unit, on crit :
=

>

=
=

Chapitre 2 : Les nombres


J. EL KHAMKHAMI
Calcul Scientifique : Maple
Parcours "Rayonnement"
Dpartement de Physique
Facult des Sciences de Ttouan
24-02-2016
______________________jamalelkhamkhami@gmail.com______________________

Les entiers
3

Ce sont des objets de type integer : 3, 1 C 5, 3$4, 4$ K2 , 2 C 1, 1 K 5 $ 2 C 10 =


3, 6, 12, K8, 9, K48
Un entier peut avoir des sous-types positive (>0), negative (<0), posint (entier>0), negint (entier<0),
nonnegint (entier>=0), even (pair), odd (impair). Ce que l'on peut tester avec les commandes : type ou
is.
type 3, posint = true, type K3, posint = false, is 13, odd = true, is K3, nonnegint = false
/ whattype K3 = wha ttype K3 , cette fonction renvoie le type de l'argument.

Quelques fonctions utilisant les entiers


MAPLE connat beaucoup de fonctions qui manipulent des entiers, voici quelques unes :
Le caractre ! : pour calculer le factoriel
d'un entier.

4! = 24, 12! = 479001600

isprime, nextprime, ithprime


: relatives la primalit d'un entier.

isprime 18 = false,
nextprime 18 = 19,
ithprime 18 = 61

ifactor : dcomposition un entier en


facteurs premiers.

ifactor 464 = 2

isolve : chercher des solutions dans .

isolve 3 x K 4 y = 7, n =
x = 5 C 4 n, y = 2 C 3 n

irem : reste d'une division entire.

irem 15,K2 = 1

rand : rand(n), renvoie une fonction


(appele ici chance)gnrant un entier
alatoire entre 0 et n-1.

chance d rand 6 C 1 :
chance = 5

29

Les rationnels
Les nombres rationnels sont des objets de type fraction (ou rational). Ils sont considrs par MAPLE
comme tels s'ils ne sont pas simplifiables, c'est--dire comme des rapports de deux entiers et non comme
leurs approximations dcimales. L'valuation d'un rsultat non entier reste sous sa forme rationnelle

rduite au plus petit dnominateur.


1
1 3
3
3 3 63
= ,
= , 1K 1K
=
,
2
2 5
5
4
64

14 K 3
1
1C
3
4
1K
5

31
23513
C 5!K78 =
4!
456

Quelques fonctions utilisant les rationnels


reastart : type 1 / 3, fraction , type 7 / 3, integer = true, false : pour s'informer sur le type de
l'argument.
type 5, rational = true, type 5, integer = true ) donner un commentaire.
5
whattype 5 = integer, whattype
= fraction
2
numer 13 / 5 = 13, cette fontion renvoie le numrateur de la fraction.
denom 13 / 5 = 5, cette fontion renvoie le dnominateur de la fraction.
sign 2 / 5 = 1, sign K2 / 5 = , cette fontion renvoie 1 ou -1 selon le signe positif ou ngatif
de la fraction.

Les irrationnels (rels)


Comme pour les nombres rationnels, les nombres irrationnels sont conservs en tant que tels (sous une
forme symbolique) s'ils ne sont pas simplifiables. Par exemple, pour une racine carre, on dispose de
deux notations quivalentes : ^(1/2) ou sqrt (square root) : 3

1
2

3 , sqrt 3 =

3,

2 = 21 / 3

a d 5 : L'objet a est alors associ, non une approximation numrique, mais un nombre
symbolique positif dont le carr vaut exactement 5. a2 = 5
whattype 2 = `^`, ils sont de type : ^
MAPLE effectue parfois automatiquement des transformations pour prsenter un nombre.
q d 1 / 2K2 ^ 1 / 4 : =
3
q4 = K
2
Il n'effectue pas ncessairement des calculs qui peuvent paratre vidents l'utilisateur :
1
2

10

10
2

2 . Ici on doit le forcer effectuer le travail l'aide de la fonction simplify : simplify % =

Les nombres dcimaux


Ils sont nots de faon standard (avec un point).
K1.2 C 0.035 = K1.165
Ils sont de type float, ils ont une mantisse et un exposant. whattype 0.2 = float
Float 21458, K5 * 10^ 5 = 21458.00000, 0.21458 105 = , La Mantisse est 0.21458 , et l'Exposant 5
. Float(M, E) = M * 10^E.

Il existe alors trois faons de dfinir des nombres avec des puissances de 10, la plus simple utilisant
la notation scientifique (indiffremment e ou E).
e = 0.1602176462E-18 , c = 2.99792458 * 10^ 8 , h = Float .662606876,K33 , 45e543 =
e = 1.602176462 10-19 , c = 2.997924580 108 , h = 6.62606876 10-34 , 4.5 10544
Attention ! 2.e2
Error, incorrect syntax in parse: missing operator or `;` (near 4th
character of parsed string)

2.e2

= a marche pas !

2e2 = 200. maintenant a marche !


Evaluation dcimale implicite : Le mlange, dans une expression, de nombres exprims en
notation dcimale avec des nombres entiers ou rationnels entrane l'valuation en valeur dcimale.
1
2
3
1.C
= 1.333333333, 1 C $10K1. = 1.066666667, exp 1. C
= 12.18249396
3
3
2
Remarquez la diffrence :
1
4
2
151
1C
= , 1 C $10K2 =
,
3
3
3
150
5

3
exp 1 CC
=e2
2
Priorit aux calculs symboliques : Par contre, la priorit est toujours donne aux calculs
symboliques et MAPLE ne prendra pas l'initiative de remplacer 2 ou Pi par leurs valeurs dcimales
approches : 1. C 2 = 1. C 2 , Pi C 5 = p C 5, Pour les avoir on peut utiliser la fonction evalf
(contraction de "floating-point evaluation") :
evalf % = 8.141592654, evalf %%% = 2.414213562
MAPLE est avant tout un calculateur symbolique mais, on peut toujours lui demander une
approximation dcimale d'une expression numrique avec la fonction evalf :
4
evalf
= 1.333333333, evalf 21! = 5.109094217 1019 , 21! = 51090942171709440000
3
K1
exp
5

1
= evalf exp K
5

=e

1
5

= 0.8187307531

7
= 0.777777777777778 c'est l'approximation de 7/5 avec 15 chiffres significatifs.
9
La reprsentation des nombres dcimaux est limite en magnitude :
evalf15

10

30

eK2.0 10 = 8.609212885 10-8685889639 , e1. 10 = Float N , exp K1.0e29 $exp 1.0e30 =


Float undefined
1.0e30K1.0e29 = 9.0 1029 , exp 1.0e30K1.0e29 = Float N
Le plus petit et le plus grand nombre dcimal positif que peut reprsenter MAPLE sur l'ordinateur
utilis sont donns par :
Maple_floats MIN_FLOAT = 1. 10-9223372036854775806
9223372036854775806
Maple_floats MAX_FLOAT = 1. 10
Il est possible de convertir un nombre dcimal en nombre fractionnaire. MAPLE renvoie alors une
fraction rduite au plus petit dnominateur : f

104348
33215
104348
rPi d convert evalf Pi , rational =
33215
fPi d convert evalf Pi , fraction =

Quelques fonctions utilisant les dcimaux


identify : pour convertir un dcimal en une
7
identify
2.3333333
=
,
expression symbolique (si il est possible )
3
identify 0.7692389013 =
0.7692389013,
identify 0.7692389013, all
= true
= cos ln 2
trunc : pour obtenir la partie entire

trunc K2.5478 ,
trunc 2.5478
= K2, 2

round : pour avoir l'entier le plus proche

round K2.5478 ,
round 2.5478
= K3, 3

floor : pour avoir la partie entire comme


dfinie mathmatiquement

floor K2.5478 ,
floor 2.5478
= K3, 2

Chapitre 3 : Les concepts de base


J. EL KHAMKHAMI
Calcul Scientifique : Maple
Parcours "Rayonnement"
Dpartement de Physique
Facult des Sciences de Ttouan
24-03-2016
______________________jamalelkhamkhami@gmail.com______________________

Variable, assignation
Une variable est l'adresse, dans la mmoire de l'ordinateur, d'un emplacement permettant de stocker
un objet d'un type donn.
A une variable on peut assigner (affecter) un objet (une valeur ou une expression,...). Si l'on affecte
une variable une valeur, la variable est dite assigne. var d 1.2 : , x d a C b :
Le nom var est un identificateur qui pointe sur la constante 1.2. Pour savoir ce qui est assign aux
variables var et x il suffit d'crire :
var = 1.2, x = a C b
Une nouvelle assignation (rassignation) d'une variable annulle la precdnte : x d Pi : x = p
La variable x ne pointe plus vers l'expression a+b.
Remarque : Les noms protgs, on ne peut pas les rassigner :
Pi d 2 : Error, attempting to assign to `Pi` which is protected. Try
declaring `local Pi`; see ?protect for details. = Si il est ncessaire, il faut
enlever la protection.
unprotect Pi :
Pi d 2 : Pi = 2
On dsassigne Pi :
Pi d'Pi': evalf Pi = 3.141592654
Pour dsassigner (dsaffecter) une variable assigne, on lui affecte son nom crit entre deux
apostrophes. On peut aussi utiliser les fonctions evaln ou unassign (valuer en un nom). z = z,
z d'z ': z = z
Il est possible de faire des assignations mutiples : x, y, z d 1, 3 , k
1, 3 , k
(1.1)
La fonction assigned permet de tester (utile en programmation) si un nom est assign. Le rsultat est
une valeur logique : true (vrai) ou false (faux). assigned z = true , assigned y = true

Evaluation
Evaluation explicite
On peut demander l'valuation d'une expression pour une valeur particulire d'un paramtre avec la
fonction eval. Les arguments doivent tre successivement l'expression valuer puis une galit fixant
la valeur du paramtre.
B d a x2 C b x K 1 : , eval B, x = 1 = a C b K 1, valuer B pour x=1.

Pour valuer B pour x = m et b = -2, on crit : eval B, x = m, b =K1 = a m K 2 m (Remarquez


les deux crochets, on peut aussi utiliser des accolades au lieu des crochets :eval B, x = m, b =K1
= a mK2 m
L'valuation ne change en rien l'expression de B et aucune assignation x (ni b) n'a t effectue. B
= a C b K 1, x = 1, b = b
Remarque : On peut effectuer une valuation explicite en cliquant sur la droite de la souris et choisir
: valuer un point B d a x2 C b x K 1 = a C b K 1

Fonction inerte Eval et fonction d'activation value


restart :
La fonction Eval enregistre une opration d'valuation sans l'excuter, affichant seulement une
criture symbolique.
Eval sin t C b t, t = 1 = sin t C b t
t=1
La fonction (value) permet de rendre l'valuation prcdente (due la fonction inerte Eval)
effective. % = value %
sin t C b t
= sin 1 C b
(2.2.1)
t=1

Modification d'une expression l'aide de la fonction eval


La fonction eval peut servir pour modifier une expression.
E d 2 x3 K 4 x C 1.2 : eval E, 3 = n, 1.2 = m, 4 = p = 2 xn K 4 x C m
Remarque : pourquoi " 4 = p " n'a pas pris lieu ? eval E, 3 = n, 1.2 = m,K4 = p
2 xn C x p C m
x
1
1
zd
: eval z, 2 = b =
x ,eval z,
= b = x b mme remarque.
2
2
2

Expression
restart :
Une expression est une suite d'oprandes spars par des oprateurs( arithmtiques, relationnels,
boolens, ...).
a C b C ln t : , x C y s 1 : , p and q or v :
Une expression peut tre affecte un nom (variable). v d a$ sin t C x C eb :
Pour lister les oprandes d'une expression, on utilise la fonction op. Pour avoir leur nombre, on utilise
la fonction nops.op v = a sin t C x , eb . nops v = 2. op 1, v = a sin t C x .
op 2, v = eb , op 1, 1 , v = a, op 1, 2 , v = sin t C x , ces deux derniers sont la 1re et la
2me oprande de la 1re oprande de l'expression v.

Cas d'une expression boolenne


restart :
B dnot v and r O q or a and b :
Pour lister les oprandes de l'expression B :
op B = not v and q ! r, a and b
Pour avoir leur nombre :
nops B = 2

Pour avoir le type de B :


whattype B = or
Pour avoir la 2me oprande de la de la 2me oprande de 1re oprande de B :
op 1, 2, 2 , B = r

Fonctions subs, subsop et algsubs


restart :
La fonction subs, assez similaire eval, mais qui n'effectue que les substitutions d'oprandes sans
ncessairement faire les valuations.
A d a K b sin x p :
subs x = 1, A = a K b sin p : substitution sans valuation. Pour l'valuer, on crit : eval % =
a ou value %% = a
'eval A, x = 3 '= eval A, x = 3 = A

= a l'aide de eval, on obtient une valuation directe.

x=3
Lorsqu'il s'agit de plusieurs substitutions la fois, on crit : subs a = b, x = 1 , A =
b K b sin p ,value % = b
Fonctions subsop et algsubs
p d x3 C 6 x2 K 4 : op 2, p = 6 x2 ; subsop 2 = a, p = x3 C a K 4, c'est dire, substituer la
2me oprande par a.
Lorsque l'on veut substituer une expression algbrique par une autre, on utilise la fonction algsubs :
Pi
algsubs 4 C e =
, sin w$t C 4 C e = cos w t
2
E d sin x 3 K cos x sin x 2 C cos x 2 sin x C cos x 3 :
algsubs sin x 2 = 1 K cos x 2 , E = 2 cos x 3 C sin x K cos x

Type
Maple reconnat 254 types et sous types de base !
Exemple : integer, fraction, float, string, name, + , *, ^, equation, list, table, type, ...
Ce sont des types de base (types systme). Ecrire ?type pour les avoir tous.
A partir de ces types de base, on peut construire des types structurs : un type structur est une expression
Maple qui peut tre interprte comme un type. Pour le construire, on peut utiliser la plupart des
oprateurs : = <> .. ^ . [ ] etc.
La commande whattype(...) permet de connatre le type d'une expression Maple. Appliqu une
expression simple, cette commande donnera le type de l'expression considre. Mais appliqu une
expression compose de plusieurs types diffrents, la commande whattype(...) retournera le type de la
dernire tape ralise de l'expression.

Type numrique
Il se divisent en trois grands types distincts : les entiers ('integer'), les fractions ('fraction') et les rels
('float').
whattype 4 = integer, whattype 2 / 3 = fraction, whattype 1. = float

Type algbrique
Maple diffrencie trois types de relations algbriques : l'additions (+), la multiplications (*) et la

puissances (^) ; ce sont des oprations arithmtiques.


whattype a C b = `C`, whattype a$b = `*`, whattype ab = `^`
a
whattype aKb = `C`, whattype
= `*`, whattype a$b C xy = `C`,
b

Type relationnel
Maple considre qu'il y a quatres types de relations : l'galit, la diffrence, la supriorit stricte et la
supriorit large.
whattype a = b = , whattype a s b = , whattype a O b = , ,whattype a ! b = ,
whattype a R b = , whattype a % b =
> is(2 >= 2);# 1-D Math, la supriorit large se note >=
true
(4.3.1)
> is(2 <> 2);# en 1-D Math, la diffrence se note <>
false
(4.3.2)

Type logique
Les expressions logiques se regroupent en cinq types, et (and) ; ou (or), ou exclusif (xor, de deux
choses : lune ou lautre mais pas les deux la fois, la valeur vrai seulement si les deux oprandes ont
des valeurs distinctes), la ngation (not) et l'implication (implies).
whattype a and b = and, whattype a or b = or, whattype a xor b = xor, whattype not b =
not, whattype a implies b = implies
true xor false = true, false xor true = true,true xor true = false, false xor false = false

Autres types
Suite d'expressions (ou squence)

whattype a, b C c, true, 1.2, x/x C 2 =


exprseq

Liste (list)

whattype a, b C c, 1.2, x/x C 2

= list

Ensemble (set)

whattype

= set

Intervalle (range)

whattype 1 ..8 = ..

Chane de caractres (string)

whattype "bonjour" = string

Symbole

whattype x = symbol

Procdure

whattype proc x 2 x K 1 end = procedure

Dclaration

whattype a T integer = ::

Indice

whattype x i

a, b C c, 1.2, x/x C 2

= indexed

Chapitre 4 : Types de donnes composes


Intervalles, Suites, Listes, Ensembles
J. EL KHAMKHAMI
Calcul Scientifique : Maple
Parcours "Rayonnement"
Dpartement de Physique
Facult des Sciences de Ttouan
30-03-2016
______________________jamalelkhamkhami@gmail.com______________________

Intervalles
MAPLE permet de dfinir des intervalles sous la forme de deux termes spars par au moins deux
points.
a ..b = a ..b, 1 ..5 = 1 ..5, xlow ..xup = xlow ..xup
On peut affecter un intervalle a une variable : var d 1 ..7 : , inter d 0 ..infinity = 0 ..N
Attention ! Il ne faut pas choisir comme nom les objets : int, Int ou I qui sont des noms protgs de
MAPLE qui renverrait un message d'erreur.int d 3 ..9 Error, attempting to assign to
`int` which is protected. Try declaring `local int`; see ?protect
for details.
Remarque : Les noms protgs, on ne peut pas les rassigner, sinon on devera enlever la protection.
L'intervalle 1..4 n'est pas considr comme tant : 1, 2, 3, 4. Pour qu'il soit ainsi, il faut utiliser
l'oprateur $. : $1 ..4 = 1, 2, 3, 4
L'interprtation d'un intervalle dpend, comme nous le verrons, du contexte de son utilisation. Par
exemple l'intervalle 0 .. reprsente-t-il l'ensemble des entiers ou des rels positifs ou nuls? La
rponse dpend du calcul que l'on effectue, par exemple une intgration ou une sommation discrte.
Soit l'intervalle : In d 0 ..5 :
5
25
Int x, x = In = int x, x = In = x dx =
, ici, In est considr comme l'ensemble des rels compris
2
0
entre 0 et 5.
5

Sum x, x = In = sum x, x = In =

> x = 15, maintenant, In est considr comme l'ensemble des

x=0

entiers compris entre 0 et 5.

Suites
Une suite (exprseq = expression sequence) est un ensemble d'expressions, crites dans un certain ordre
et spares par une virgule. Un lment de cette suite peut tre identifi par son ordre dans la suite et


les lments identiques sont considrs comme distincts.
exempledesuite d 1, 2, a C cos b , 2, 3 ..5 = 1, 2, a C cos b , 2, 3 ..5
Le type d'une suite est : exprseq. whattype exempledesuite = exprseq
NULL dsigne la squence vide. S d NULL :
whattype S = exprseq
nops S = 0

Quelques oprations sur les suites


Extraction du nime lment de la suite :
Soit la suite : s d a C sin b , 1, x C y, alow ..aup ,

3 :

s2 = 1ou on crit aussi : s 2 = 1, s4 = alow ..aup


Pour extraire une sous-suite, on utilise un intervalle : s 1 ..3 = a C sin b , 1, x C y
Un autre exemple : st d "un mot" : st 1 ..3 , st 2 ..5
"un ", "n mo"

(2.1.1)

Affectation interdite :
s2 d 0
Error, invalid assignment (a+sin(b), 1, x+y, a__low .. a__up,
3^(1/2))[2] := 0; cannot assign to an expression sequence
Multiplication par un scalaire :
2$s
Error, invalid terms in product: a__low .. a__up
s d s 1 ..3 :
2$s;
2 a C 2 sin b , 2, 2 x C 2 y
(2.1.2)
Inclusion dans une suite :
S d b, s, a$x C b$y = b, a C sin b , 1, x C y, a x C b y

Gnration automatique d'une suite : fonction seq et oprateur $


restart :
Utiliser la fonction seq ou l'oprateur $ pour gnrer une suite.
2
seq i, i = 2 ..8 = 2, 3, 4, 5, 6, 7, 8, seq i , i = 2 ..8 = 4, 9, 16, 25, 36, 49, 64
t
E d 2 C a C sin b K b$e :
seq t C i, i = E # l'indice i dcrit les oprandes de l'expression E
t

t C 2, t C a, t C sin b , t K b e
seq x/x sin x

x , x = 1 ..5
sin 1 , 2 sin 2 , 3 sin 3 , 4 sin 4 , 5 sin 5

suite2 d seq i, i = "Salamu alaikum"


"S", "a", "l", "a", "m", "u", " ", "a", "l", "a", "i", "k", "u", "m"

(2.2.2)
(2.2.3)

suite3 d seq i, i = "a" .."f"


"a", "b", "c", "d", "e", "f"
La fonction seq ouvre de nombreuses possibilits de gnrations automatiques d'objets.
seq x j, j = 0 ..5 #` `|| est l'oprateur de concatnation
x0, x1, x2, x3, x4, x5

(2.2.4)

(2.2.5)

seq x j , j = 0 ..5 #` `criture en indice


x0 , x1 , x2 , x3 , x4 , x5
i

Poly := `C` seq ai x , i = 0 ..4

(2.2.6)

: sort %, x, ascending
2

a0 C a1 x C a2 x C a3 x C a4 x

(2.2.7)

On peut aussi obtenir une suite l'aide de l'oprateur $ :


$1 ..6 = 1, 2, 3, 4, 5, 6
3
i $ i = 0 ..4 = 0, 1, 8, 27, 64
Lorsque la suite ne dpend pas de la variable de la boucle, l'oprateur dollar $ peut servir comme
un oprateur de rptition.2$5 = 2, 2, 2, 2, 2
"Jamal"$3 = "Jamal", "Jamal", "Jamal"
4
diff x , x$3 = 24 x

Listes
Une liste (list) est une suite crite entre deux crochets [...]. La liste a les mmes proprits que la suite,
mais elle est vue par Maple comme une expression de type different. l'ordre des lments est important
et les rptitions sont prserves.
L d a x, b, b, c, d, a ;
a x, b, b, c, d, a
(3.1)
L d a, a $3, x C 2 = a, a , a , a , x C 2
Le type d'une liste est : list. whattype L = list
Pour dfinir une liste vide, on crit : L d ; nops L
0

(3.2)

Oprations sur les oprandes d'une liste


On accde chaque lment d'une liste par son rang (ordre).
L1 = a, L2 =
, L3 =

Pour les listes, l'affectatation est autorise : L 3 d b : L = a,

a , b,

a , xC2

Pour transformer une liste en une suite : s d op L = a, a , b, a , x C 2


Les fonctions op (donne les oprandes) et nops (donne le nombre d'oprandes) ne peuvent agir sur
une squence s : op s Error, invalid input: op expects 1 or 2
arguments, but received 0
Faire op([s]) et nops([s]) : op s = a, a , b, a , x C 2, nops
Mais, c'est possible avec les listes : op L ; nops L
a,

a , b,

=5

a , xC2
5

Pour modifier les oprandes d'une liste, on peut aussi utiliser subs ou subsop.

(3.1.1)

subs a = 2, L =

, subs a = b, L =

subsop 2 = e, L = a, e, b,
, subsop K1 = w, L = a,
, remarquez le signe -.

, subs x = b, L =

a , xC2
a , b,

a,w

Pour extraire les lments d'une liste on crira : L3 = b , L3 ..3 = b , L3 ..K2 = b,


deux derniers sont des sous-listes de la liste L.

a , ces

Et c'est diffrent lorsqu'on utilise la syntaxe suivante : op L 3 ..3 = b, op L 3 ..K2 = b,


, cette dernire est une suite et non plus une liste.
Pour savoir si une expression est membre d'une liste, on utilise la fonction member :

member x C 2, L = false, member a, L = false, member


a , L = membe r
a,
,
On pourra utiliser la syntaxe suivante : is x C 2 in L = false, is x C 1 2 L = false
Suppression des lments d'une liste : les fonctions remove, select, subsop
2
2
2
liste d x , a C b, t, x C 3, cos x
:
2
2
2
2
remove has, liste, x ; # supprime x , x C 3 et cos x
a C b, t
(3.1.2)
2

remove y / evalb y = x , liste # supprimer seulement x


2

a C b, t, x C 3, cos x

(3.1.3)

L d $1 ..20 :
remove x/is x, even , L = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 , c'est pour supprimer les nombres
pairs de L.
select isprime, L = 2, 3, 5, 7, 11, 13, 17, 19 , c'est pour choisir les nombres premiers de L.
select x/is x, odd , L = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 , c'est pour choisir les nombres
impairs de L.
Remarque : Le 1er argument des deux fonctions remove et select est de type une procdure dont la
rponse est une valeur logique.
subsop 1 = NULL, % = 3, 5, 7, 9, 11, 13, 15, 17, 19 , supprimer le 1er lment,
subsop 2 = NULL, K2 = NULL, %% = 1, 5, 7, 9, 11, 13, 15, 19 , supprimer le 2me dernier et
l'avant dernier lment.

Addition, soustraction et multiplication


Addition et soustraction des listes : On peut ajouter et soustraire des listes, les oprations
s'effectuant par lments correspondants et condition que les listes aient le mme nombres de
termes. On peut galement multiplier ou diviser globalement une liste par des constantes de type
numeric ( condition que ces opration aient un sens).
1, 2, 3,K1
restart : k d r, s, t, u : K d 2$k C
=
3
1
2
1
C 2 r,
C 2 s, 1 C 2 t, K C 2 u
3
3
3
Addition ou multiplication des lments d'une liste : Avec la fonction add on peut trs
simplement ajouter les oprandes, ou une fonction des oprandes, d'une liste. De faon similaire
la fonction seq la variable i prend ici les valeurs successives de la liste L. Cette variable est muette,
i, (pas comme fortran), c'est--dire qu'elle ne prend aucune valeur particulire aprs l'opration ou
garde la valeur qu'elle avait avant celle-ci.

add i, i = k = r C s C t C u, add sin i , i = k = sin r C sin s C sin t C sin u ,


Pour multiplier les lments de k : mul i, i = k = r s t u
On peut utiliser aussi la fonction convert selon cette syntaxe : convert k, `C` = r C s C t C u,
convert k, `$` = r s t u
2
Un autre exemple : restart : S d sin x , cos x , 2 sin z cos z , cos 2 z : add s , s = S
sin x
simplify combine %

C cos x

C 4 sin z

cos z

C cos 2 z

(3.2.1)

= 2, c'est la somme des carrs des lments de S.

La fonction map
C'est une fonction de grand intrt, elle permet d'appliquer une fonction tous les termes d'une liste.
L d a, b, c : map sin, L = sin a , sin b , sin c , map f, L = f a , f b , f c ,
2
2 2 2
map x/x , L = a , b , c
Remarque 1 : Le 1er argument est le nom d'une procdure. map isprime, 1, 2, 4, 7 =
false, true, false, true
Le 2me argument est de type list : s d a, b, c : S d map sqrt, s =
a, b, c .
Pour appliquer la fonction map une suite, il faut d'abord la convertir en une liste puis
la repasser en une suite : op S = a , b , c
map sqrt, s Error, invalid input: sqrt expects its 2nd
argument, f, to be of type identical(symbolic), but received b
Remarque 2 : La fonction expand s'applique tous les lments de la liste sans qu'il soit ncessaire
d'utiliser explicitement la fonction map. Mme remarque pour les autres oprateurs de transformations
comme subs, evalf, eval, etc.
2
2
expand x 1 C x , 1 K x
= x 1 C x , x K 2 x C 1 , par contre a ne marche pas avec par
2
exemple la fonction sin , a provoque un message d'erreur : sin x 1 C x , 1 K x
Error, invalid input: sin expects its 1st argument, x, to be
of type algebraic, but received [x(1+x), (1-x)^2]
2
Il faut ncessairement passer par map : map sin, x 1 C x , 1 K x
=
2
sin x 1 C x , sin 1 K x
Remarque 3 : Lorsque l'oprateur ncessite plus d'un argument, les arguments supplmentaires sont
placs la suite de l'objet sur lequel s'applique map. Par exemple type peut s'crire type(x, numeric)
d'o la syntaxe :
map type, x, 1, .3 , numeric = false, true, true

La fonction zip
Elle permet d'appliquer un oprateur, deux variables, aux oprandes de deux listes. Le rsultat est
une liste.
L1 d 1, 2, 3 : L2 d 4, 5, 6 :
zip f, L1 , L2 = f 1, 4 , f 2, 5 , f 3, 6
g d x, y /x C y : zip g, L1 , L2 = 5, 7, 9
zip

x, y / x, y , L1 , L2 =

La bibliothque ListTools
?ListTools

1, 4 , 2, 5 , 3, 6

Cette bibliothque ou package contient 29 fonctions (ou commandes) pour manipuler les listes.
L'utilisation de ces fonctions se fait, soit par accs direct la bibliothque l'aide de with (on crit la
syntaxe : with(ListTools), chargement de la bibliothque), soit par utilisation simple de la fonction
voulue selon la syntaxe : ListTools[nom de la commande](arguments). Cette dernire syntaxe
consomme moins de ressources mmoire.
sort 1, 8, 5, 3 = 1, 3, 5, 8 . Cette fonction, on peut l'utilser sans avoir besoin d'accder la
bibliothque ListTools. Selon cette syntaxe, elle permet de ranger les lments d'une liste par ordre
croissant.
Si on veut les ranger par ordre dcroissant, on crit : sort 1, 8, 5, 3 , `O` = 8, 5, 3, 1
with ListTools
BinaryPlace, BinarySearch, Categorize, Classify, DotProduct, Enumerate,
(3.5.1)
FindMaximalElement, FindMinimalElement, FindRepetitions, Flatten, FlattenOnce,
Group, Interleave, Join, JoinSequence, LengthSplit, MakeUnique, Occurrences, Pad,
PartialSums, Reverse, Rotate, Search, SearchAll, SelectFirst, SelectLast, Sorted, Split,
Transpose
nops with ListTools = 29
L := $1 ..6 :
Rotate L, 3 = 4, 5, 6, 1, 2, 3 : permutation circulaire partir de 3,
Reverse L = 6, 5, 4, 3, 2, 1 : renverser l'ordre de L,
MakeUnique 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6 = 1, 2, 3, 4, 5, 6 : liminer toutes les
rptitions,
MakeUnique 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6 , 2 = 1, 2, 3, 4, 3, 2, 4, 5, 5, 6 : tous les
lments ne doivent pas se rpter plus de 2 fois,
Occurrences 3, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6 = 4 : combien de fois se rpte 3,
Categorize x, y /irem x K y, 3 = 0, $1 ..16 =
1, 4, 7, 10, 13, 16 , 2, 5, 8, 11, 14 , 3, 6, 9, 12, 15 : regoupe les lments selon un certain
critre (dfini par le 1er argument), SelectFirst isprime, L = 2 : choisr le 1er nombre premier de L,
SelectLast 3, isprime, L = 2, 3, 5 : choisir les 3 derniers nombres premiers de L,
SelectFirst 2, type, L, odd = 1, 3 : choisir les 2 premiers nombres impairs de L.

Ensembles
Un ensemble est une structure de donnes de MAPLE dfinie syntaxiquement par une suite encadre
par deux accolades : {...}.
L'ordre des lments d'un ensemble et leur rptition n'ont pas d'importance. Les lments rpts sont
considrs comme un lment unique.
restart : true, a C b, b, 1 = 1, b, true, a C b : remarquez l'ordre des lments, il est alatoire,
x, b, x, a, b = a, b, x , les rptitins sont ignores, seq K1 i , i = 1 ..4 = K1, 1 , op % =
K1, 1
Le type d'un ensemble est : set, whattype e, r = set
Pour dfinir l'ensemble vide on crit : e d
=
.

Evaluation, substitution
restart :
E d a, b$2 = a, b
2
2
eval E, a = x C 1 = b, x C 1

Les fonctions subs ou subsop permettent de modifier les lmenets d'un ensemble :
subs a = a, E = a, b
2
subsop 2 = cos x K 1, b, x C 1 = b, cos x K 1

Suppression d'lments
restart :
Pour supprimer des lments d'un ensemble, on peut aussi utiliser la fonction minus (soustraction)
; comme on peut utiliser aussi les fonctions remove, select et subsop
E d x, y, 1, 2, 3 : E minus 2, 3 = 1, x, y : retirer de E les lments 2 et 3.
Remarque : La soustraction A minus B (note aussi A y B, en 2-D math) est dfinie comme tant
l'ensemble contenant les lments de A sauf les lments de son intersection avec B. L'opration n'est
pas commutative : 2, 3, 5 y E = 5 , E y 2, 3, 5 = 1, x, y
select type, E, name = x, y : choisir les lments ayant le type name.
remove isprime, 2, 4, 5, 9 = 4, 9 : retirer les nombres premiers.
remove type, 2, 4, 5, 9 , odd = 2, 4 : retirer les nombres impairs.

Egalit de deux ensemble


Pour tester si deux ensembles sont gaux on peut utiliser la fonction evalb : si les deux ensemble sont
gaux, cette fonction renvoie la valeur true sinon false.
restart :
e d a,

6
, cos
4

Pi
, s, a C n ; g d a,
6

3 3
, , a C n, s
2
2

G d a,

3 3
, , s, a C n ; evalb e = g
2
2

: evalb e = G

3 3
, , a C n, s : evalb e = G
2
2
C'est possible aussi avec la fonction verify, selon la syntaxe suivante : verify e, g , verify e, G =
true, false
Mais attention !
2
2
A d a, b, cos x C sin x K 1 : B d 0, a, b : evalb A = B , verify A, B
false, false
(4.3.1)
verify A, B,'set simplify ' = true
verify A, B,'set expand ' = false
2
2
2
2
simplify cos x C sin x K 1 , expand cos x C sin x K 1
G d a,

0, cos x

C sin x

K1

(4.3.2)

Intersection, union, subset


2

K d x, x ,

: L d 1., x, 2, 3 :

T d K intersect L = x , U d K union L = 2, 3, 1., x,


2

2,x

ou on crit en 2-D math :

KX L, KW L = x , 2, 3, 1., x, 2 , x
T subset K = true, T est un sous-ensemble de K. Pour U ce n'est pas vrai : U subset K = false
T 4 K = true
U 4 K = false

La fonction map
Souvent utilise, la commande map savre trs utile pour les ensembles. Lopration de
correspondance (mapping) permet dappliquer une fonction simultanment tous les lments de
3 3.
nimporte quelle structure.E d 0, 5, ,
, q : map sqrt, E =
2 5
1
0, 0.7745966692, 5 , q ,
6 , evalf %, 4 = 0., 0.7746, 1.224, 2.236, q
2

La fonction convert
convert E y 0 , list = 5,

3
, 0.6000000000, q : convertir l'ensemble E (aprs avoir y retirer
2

l'lment zro) en une liste.


3
convert %, set = 5, , 0.6000000000, q : convertir cette liste, juste obtenue, en un ensemble.
2
convert %, `*` = 4.500000000 q : multiplier les lments de l'ensemble qu'on vient d'obtenir.
convert %%, `C` = 7.100000000 C q : maintenant, additionner les lments de cet ensemble.

Chapitre 5 : Manipulation des expressions


Simplifications et transformations
J. EL KHAMKHAMI
Calcul Scientifique : Maple
Parcours "Rayonnement"
Dpartement de Physique
Facult des Sciences de Ttouan
10-04-2016
______________________jamalelkhamkhami@gmail.com______________________
De nombreuses commandes Maple permettent la manipulation dexpressions. Il est ainsi possible de
transformer les rsultats de commandes Maple en des formes familires, ou encore de manipuler vos propres
expressions en des formes que Maple peut reconnatre.
Dans ce chapitre, on apprendra les commandes les plus couramment utilises cet effet : simplify,
combine, convert, expand, factor, rationalize, normal, radnormal, trigsubs, coeff, coeffs, collect,
is, coulditbe, assume, additionally, about, assuming.
Maple connat certaines rgles de simplification pour divers types dexpressions et de formes comme les
fonctions trigonomtriques, les radicaux, les fonctions logarithmiques, les fonctions exponentielles, les
puissances ainsi que plusieurs autres fonctions spciales.

Simplifications et transformations
Pourquoi le rsultat de simplify nest-il pas sous sa forme la plus simple ?
Tout simplement parce que la question de la simplification est complique en raison de la difficult
dfinir ce quest une forme " simple " pour une expression. La conception dune forme simple pour un
utilisateur peut tre trs diffrente de celle dun autre utilisateur ; de plus, lide dune forme la plus
simple peut varier dune situation lautre. Ceci est bien claire sur l'exemple suivant :

Exemple 1
A d 1C3

1
K
2

: B d 1C

1C
b d simplify B =

9C2

6C

rb d rationalize b = K

1
33

expand numer rb
denom rb

b=

1
A

, est-ce que cette forme est la plus simple ?


9C2

9C2
6C

3
3

K6 C
=

16
1
C
11
11

is % = true
Page 1 de 8

simplify A$B =

1
3

3C 3

9C2

6C

, est-ce que cette forme est la plus simple ? Je pense

pas !
ab d simplify expand A$B

11 C 5
6C

1
rab d rationalize ab = K
33
ab =

expand numer rab


denom rab

3
3

11 C 5

11 C 5
6C

3
3

3
=

K6 C

17
19
C
11
33

is % = true

Exemple 2, simplify avec relations accssoires


nK1

S d Sum sin t$ 2 k C 1 , k = 0 ..nK1 =

> sin t

2 kC1

k=0

res d value S = K

cos t n
sin t

1
, est-ce que cette rponse est l'expression la plus simple
sin t

de S ?

cos t n 2 K 1
, mme question !
sin t
Avec des relations particulires on peut forcer Maple obtenir des expressions encore plus simples :
2
2
rel d cos t n = 1 K sin t n
:
2
sin t n
simplify res1, rel =
sin t
res1 d simplify res = K

La fonction expand
Essentiellement, la commande expand est linverse de la commande factor. Elle permet lexpansion
de termes multiplis de mme que plusieurs autres expansions. Pour cette raison, expand figure parmi
les commandes de manipulation les plus utiles. Bien que lon puisse imaginer par son nom que le
rsultat quelle produit soit plus long et plus complexe que lexpression originale, il nen est pas
toujours ainsi. En fait, lexpansion de certaines expressions permet de grandes simplifications.
tan a C tan b
restart : E0 d
K tan a C b :
1 K tan a $tan b
tan a C tan b
E1 d simplify E0 =
K tan a C b , aucune simplification !
1 K tan a tan b
tan a
tan b
tan a C tan b
E2 d expand E0 =
C
K
1 K tan a tan b
1 K tan a tan b
1 K tan a tan b
'E0 '= simplify E2 = E0 = 0
simplify ln 3 b = ln 3 C ln b , expand ln 3 b = ln 3 C ln b , on obtient les mmes
transformations !
2
simplify sin 3 b = sin 3 b , expand sin 3 b = 4 sin b cos b K sin b = ,
maintenant, des transformations diffrentes !
Page 2 de 8

simplify ln a b = ln a b , expand ln a b
pour les deux commandes !

= ln a b , cette fois-ci aucune transformation

Commentaire : Lorsquon utilise Maple pour la premire fois, on est port croire que la commande
simplify est la commande la plus utile. Malheureusement, le mot simplify est plutt vague. Lorsquon
lui demande de simplifier une expression, Maple examine cette dernire, essaie plusieurs techniques,
puis tente dappliquer la rgle de simplification la plus approprie. Cela peut prendre du temps. De
plus, Maple peut ne pas tre en mesure de deviner ce que vous souhaitez accomplir, puisque aucune
rgle mathmatique universelle ne dfinit ce qui est " plus simple ".
Lorsque vous connaissez quelles manipulations rendront votre expression plus simple vos yeux,
spcifiez-les directement. En particulier, la commande expand figure parmi les plus utiles. Elle permet
souvent une simplification substantielle des expressions et reformule ces dernires sous une forme
pratique pour plusieurs autres commandes.

Simplify avec options : trig, ln, sqrt


Remarquez ce qu'on obtient comme rponse lorsqu' on utilise des options diffrentes :
simplify sin t 2 C ln 3 x C cos t 2 , trig = 1 C ln 3 x
2
2
2
2
simplify sin t C ln 3 x C cos t , exp = sin t C ln 3 x C cos t
2
2
2
2
simplify sin t C ln 3 x C cos t , ln = sin t C ln 3 C ln x C cos t
Mme remarque avec ce qui suit :
simplify
simplify

2 1/2

2 1/2

, trig =

, sqrt = csgn x x

2 1/2

simplify x
, symbolic = x
!!! L'option symbolic considre x comme symbolique, ce qui fait que csgn(x) = 1 (normalement c'est 1
ou -1).

La fonction combine
Cette fonction applique certaines rgles de transformation pour de nombreuses fonctions
mathmatiques. Elle ralise l'opration inverse de la commande expand. Il est possible de l'utiliser
avec des options dont les principales sont : trig, ln, exp, radical, abs, power.
Quelques exemples
2
E d 2 cos x K 1 :
2
simplify E = 2 cos x K 1, aucune transformation.
combine E = cos 2 x , donne le rsultat souhait.
combine 2 sin a cos b = sin a C b C sin a K b ,
combine 2 sin a cos a = sin 2 a ,
simplify 2 sin a cos a = 2 sin a cos a , commentaire ?
2
2
2
2
combine sin a C cos a
= simplify sin a C cos a
1=1
(1.5.1.1)
Les 2 syntaxes donnent le mme rsultat.
K2 r t
K2 r t
combine e $e = simplify e $e
K2 r C t

K2 r C t

=e

(1.5.1.2)
Page 3 de 8

L aussi, les deux donnent le mme rsultat.


b

combine

x dx K
a

combine

x dx

a
2

lim x
x/a

Kx C x dx

lim x
x/a

C c = x/a
lim x C c

combine 4 sin x , trig = Ksin 3 x C 3 sin x , on linarise sin(x)^3.


combine avec options : trig, ln, sqrt, power, radical, symbolic
a 2

2a

combine x , power = x , l'option power force combine effectuer des combinaisons


relative la fonction puissance.
combine ey ex, trig = ey ex, aucune transformation.
y x
yCx
combine e e , exp = e
, comme a c'est mieux.
sin a cos b cos a sin b
sin a C b
combine e
e
, trig, exp = e
, Remarquez une
combinaison d'options est possible, mais attention aux crochets.
2
combine 2 sin x cos x , 2 cos x K 1 , trig = sin 2 x , cos 2 x , elle peut
s'appliquer une liste.
Qd 3 2 C y
combine Q, radical
=

6 C

x K1 :

x K1

combine Q, radical, symbolic =

6 C

y x2 K 1 , Remarquez l'absence des crochets.

La fonction convert
Cette fonction convert (possde 137 options) permet galement de raliser des transformations
complexes.
1
Ix
KI x
convert sin x , exp = K I e K e
2
2

Kx2 C 1

convert exp x K 1 K 2 sinh x K 1 , exp = e


,
1
1
1
convert
, parfrac =
K
2
3 xK2
3 xC1
x K xK2
convert 34, binary = 100010
convert 2345, base, 4 = 1, 2, 2, 0, 1, 2
1
convert 1,'units ','m ','km ' =
1000
convert N m, dimensions = energy
K2
convert N m , dimensions = pressure
convert GAMMA n , factorial = n K 1 !
convert BesselJ

3
, x , StandardFunctions =
2

Kcos x x C sin x
3/2

p x

Pour plus d'options (il y en a 137) voir le help : convert


Pour les autres fonctions : factor, rationalize, normal, radnormal, trigsubs, coeff, coeffs, collect,
essayez de les voir sur le help.

Page 4 de 8

Simplification avec des hypothses


Il existe deux faons d'imposer des hypothses sur des variables. Pour modifier globalementles proprits
des variables, on utilise la commande assume. Pour effectuer une sele opration avec des hypothses sur
de variables, on utilise la commande assuming.

Les fonctions is et coulditbe


La fonction is

La fonction is pose la question : est-elle ? Cette fonction a 3 rponses possibles : les 2 valeurs
logiques (true et false) et la valeur FAIL (lorsque is ne sait pas rpondre soit par manque
d'informations, soit parce qu'elle ne sait rsoudre la condition).
is Pi C 2, real = true, is Pi C 2, integer = false
is

x , real = false, is

x O 0 = false , attention ! x pourrait tre complexe.


1
Q d SetOf rational : is
in Q = true, is evalf Pi in Q = false
3

La fonction coulditbe

Celle-ci pose la question : peut-elle tre ? En effet, il est vrai que l'expression E peut re relle,
ngative ou nulle.
coulditbe E % 0 = true mais, is E % 0 = false
P
2
coulditbe
, integer = true, coulditbe
, integer = false, coulditbe a$b !K2 = true
3
3

Les commandes assume, about et additionally


Le systme d'hypothse de Maple est un ensemble de routines permettant de grer les proprits des
variables. La commande assume permet une meilleure simplifcation d'expressions symboliques,
particulirement avec les fonctions retourant plusieurs valeurs comme la racine carre.

La commande assume

Cette commande permet d'associer des proprits (conditions) une variable symbolique.
Elle dfinit si une variable est relle, positive, entire, etc. Une variable ainsi conditionne,
apparait l'affichage suivie d'un tilde (~). La commande assume ne renvoie aucune
simplify

rponse.
assume a T real : simplify

assume a T positive : simplify


assume a ! 0 : simplify

a2

= csgn a a,

= a~
a

= a~

= Ka~

assume a O 0 : simplify a
= a~
Remarque : Une nouvelle contrainte faite avec assume sur un objet annule la prcdente.
Pour librer une variable de ses hypothses, il suffit de la dsassigner.
2

a d'a': simplify a = csgn a a


Toute assignation une variable lui fait perdre ses contraintes ; elle prend, alors, les
proprits de l'objet assign. a assume n T even : cos n Pi = 1
n d p : cos n Pi = cos p p , Le nombre n n'est plus pair, parce qu'il est rassign p :
hasassumptions n = false
Si on met sous hypothse p, par exemple, comme tant un nombre impair et on recalcule
Page 5 de 8

cos n Pi : on aura :
assume p T odd : cos n Pi = K1
Il est possible de mettre des hypothses sur plusieurs variables :
2

assume x !K1, y !K1 : r d x C y :


is r O 0 = true, coulditbe r ! 0 = false
2

r_ d x Ky :
is r_ T real = false, coulditbe r_ T real = true
2

3 K7 = 2 I

10

La fonction about

Pour obtenir de l'information sur les hypothses propos d'une variable, on utilise la
fonction about selon la syntaxe : about x = Originally x, renamed x~:
is assumed to be: RealRange(-infinity,Open(-1))
about t = t:
nothing known about this object
C'est dire, aucune hypothse n'est faite sur cet cobjet (ici : t).
> assume x O 0 : about x
Originally x, renamed x~:
is assumed to be: RealRange(Open(0),infinity)

La commande aadditionally

Celle-ci permet d'ajouter des contraintes sans dtruire celles qui sont dj dfinies.
restart :
2

r d 1 K x : is r O 0 = false
assume x ! 1 : is r O 0 = false, cette condition est insuffisante pour que r soit positif ;
pour qu'il soit ainsi, il faut ajouter une autre condition :
additionally x OK1 :
is r O 0 = true, maintenant r est positif.
> z d aCI b :
> ' Re z '= Re z ,'Im z '= Im z ,'abs z '= abs z
R z = R aCI b , I z = I aCI b , z = aCI b
(2.2.3.1)
> assume a T real :
' Re z '= Re z ,'Im z '= Im z
R z = a~ K I b , I z = R b
> 'abs z '= abs z

(2.2.3.2)

z = a~ C I b

(2.2.3.3)

> additionally b T real :


' Re z '= Re z ,'Im z '= Im z ,'abs z '= abs z
R z = a~, I z = b~, z =

a~ C b~

(2.2.3.4)

La commande assuming
Elle permet d'imposer des hypotses sur des variables pour effectuer une opration sans que ces
Page 6 de 8

hypothses soient permanentes. L'hypothse ne vaut que pour l'opration demande et n'impose acune
contrainte sur les variables aprs l'execution de la commande.
Ka x
restart : limit exp Ka x , x = infinity = x/N
lim e , Maple ne peut pas calculer cette limite parce
qu'elle dpend du signe du paramtre a. Si on veut la calculer lorsque a est ngative, on crit alors :
Ka x
lim e
assuming a ! 0 = N, about a = a:
x/N
nothing known about this object
assume a ! 0 :
Ka x
lim e
= N, about a = Originally a, renamed a~:
x/N
is assumed to be: RealRange(-infinity,Open(0))

simplify

assuming t O 0 = t,

assuming t T real = t .

simplify

Si l'on veut faire l'hypothse que toutes les variables d'une expression possdent une mme
proprit, on peut la formuler en faisant suivre l'expression par : assuming proprit.
2

xy
: simplify e =
xy

ed

x y
xy
I

simplify e assuming negative =

Ky

, ici, l'hypothse porte sur x et y.


2

x y
, ici, l'hypothse ne porte que sur y.
xy

simplify e assuming y T negative =


2 2

simplify

kx
y

simplify

kx
y

assuming k O 0, x O 0 = k x

2 2

assuming positive =

kx
y

2 2

kx
y

simplify
N

Kp x

xe

0
N

Kp x

xe

assuming k O 0, x O 0, y ! 0 =
Kp x

dx = x/N
lim

xpe

dx assuming p O 0 =

Kp x

Ce
p

1
y

Ikx
Ky

K1

1
2

p
Quelle le sens de ces deux rponses ?
Kx sin x
is e
O 0 = false
Kt sin t
is e
O 0 assuming t T real = true
Remarque : La syntaxe suivante ressemble l'environnement assuming, mais l, on utilise assume :
0

simplify v , assume = real = v


about v = v:
Page 7 de 8

nothing known about this object


2

use RealDomain in simplify m end use = m


about m = m:
nothing known about this object
about v = v:
nothing known about this object
N

simplify

Kp x

xe

dx, assume = positive =

1
2

p
use RealDomain in Re a C I b end use; = a~
about a, b = Originally a, renamed a~:
is assumed to be: RealRange(-infinity,Open(0))
0

b:
nothing known about this object
Re a C I b = a~ K I b

Page 8 de 8

Chapitre 6 : Maple en analyse


Fonctions, Drivation, Intgration
J. EL KHAMKHAMI
Calcul Scientifique : Maple
Parcours "Rayonnement"
Dpartement de Physique
Facult des Sciences de Ttouan
25-04-2016
______________________jamalelkhamkhami@gmail.com______________________

Fonctions
Dfinition
A l'aide de l'oprateur fonctionnel flche -> , on peut construire trs facilement une fonction.
L'oprateur flche permet de transposer en Maple la notion mathmatique de rgle de
correspondance fonctionnelle.
f d x/x2 C 1 :
f 1 =2
Remarque : L'oprateur flche est constitu des deux caractres : - et >
Attention cette criture, c'est une mauvaise habitude qu'il faut viter. y x d x2 K 1
x/x2 K 1
(1.1.1)
: Avec les anciennes versions, cette syntaxe une message d'erreur ; mais avec les dernires, si on
valide cette instruction, Maple demande une clarification.y 2 =
d x d x, d 1 = d 1
f = f , c'est le nom de la fonction,
eval f = x/x2 C 1 c'est la dfinition de f,
whattype eval f
= procedure, pour avoir le type de f. Il s'agit d'une procdure,
'f t '= f t = f t = t2 C 1, c'est l'expression de f pour la variable t.
Expression utilisant l'expression de f : E d f 2$b C 1 C b f a C b =
2 b C 1 2 C 1 C b a C b 2 C 1 , collect E, b = 2 C b3 C 4 C 2 a b2 C a2 C 5 b.
Pour une fonction de deux variables : restart : F d x, y /cos x C y : F Pi, 2 =
Kcos 2 , F 0, 2 n$Pi = cos 2 n p , simplify % assuming n T integer = 1

Exemples
Il est possible de construire des fonctions en utilisant des commandes Maple.
v
Pi
1. f d x/factor expand sin 2 x
eK2 x C t t2
: f K
=
vt
3
1

1
K
2

p 2/3 t

e t t C 2 , factor combine %

1
=K
2

3 t tC2 e

2
pCt
3

1 3
t C t, F 1 = t
3
a
3. T d x/whattype x : T a C b = `C` , T
= `*`, T a = sin b = `=`, T 2, a
b
Vectorcolumn ,
4. courbe d x/plot x, t = 0 ..Pi, color = blue : courbe sin t , T % =
2. F d X/ X dt : F t2 C 1 =

1
0.6
, procedure, la valeur de cette fonction est un graphique, son type est

p 3p
8 8

3p p
4
t

function.
Exercice : Soit la fonction g dfinie par : g d x, y, z /nops
la valeur de la fonction g pour les triplets 1, 4, 2 , 1, 2.1, 3 ,

x y, z2 ,Ky eI Pi x

: . Anticiper
1
, 4, 3 : , puis vrifier avec la
2

syntaxe Maple.
g 1, 4, 2 = 1, g 1, 2.1, 3 = 2, g

1
, 4, 3 = 3,
2

Arguments
f d x/x2 C 1 :
L'argument x peut tre de type complexe, parce que rien n'est prcis sur son type. Voyons
quelques exemples :
f 1 C I$2 = K2 C 4 I,
2 0
on peut appliquer f une matrice : f Matrix 2, shape = identity =
,
0 2
mais on peut pas l'appliquer un vecteur : f x s 1 Error, (in simpl/reloprod)
invalid terms in product: (x <> 1)^2 .
Pour restreindre le type de l'argument un type bien dfini, on utilisera la syntaxe suivante :
g d x T integer/x2 C 1 : g 2 = 5, g 2. Error, invalid input: g expects its
1st argument, x, to be of type integer, but received 2. =
g d x T float/x2 C 1 : g 2. = 5., g 2 Error, invalid input: g expects its
1st argument, x, to be of type float, but received 2
cle d x T list/convert x, set : , cle 1, 2, 3, 2 = 1, 2, 3 , cle 1, 2, 3, 2
=
1, 2, 3, 2 ,cette fonction convertit une liste en un ensemble.

L'oprateur unapply
2

Il permet de transformer une expression en une fonction. C'est une alternative de dfinir une
fonction.
y C 3 y2 C 2 x K 3
restart : E d
: , F d unapply E, x, y =
xC2 y
y C 3 y2 C 2 x K 3
3
2 C3
3
x, y /
, F K1, 2 = K
, rationalize % = K
xC2 y
7
K1 C 2 2
1 C 2 2 , radnormal % = K3 K 3 2 ,
2 a2 C 1
9
2
F a ,K2 = 2
, convert F a2 ,K2 , parfrac = 2 K
4 aC2
a K4
2
2 a C1
normal % =
.
aK2 aC2

C3

9
,
4 aK2

Composition de fonctions
Pour composer deux fonctions f et g on utilise l'oprateur @.
restart : f d x/sin x : g d x/x2 C 1 :
fg d f@g : fg x = sin x2 C 1 ,
L'oprateur @@n permet la composition rpte n fois d'une fonction (n positif ou nul).
f3 d f@@3 : f3 x = sin sin sin x .
Id d f@@0 = /args, Id x = x, c'est la fonction identit,
sin@@0 : , % x = x, sqrt@@0 : % x = x, toutes ce sont des identits.
1
Fonction inverse : sin@@ K1 : % x = arcsin x , ou sin x K1 =
,
sin x

Fonction dfinie sur intervalles, piecewise


Pour crer des fonctions dfinies sur des intervalles, on utilise la commande piecewise.
1. Fmorceaux d x/piecewise x ! 1, x C 3, 1 % x % 4, 4, 5 K cos x K 4 : Fmorceaux t ;
3Ct

t!1

1 % t and t % 4

5 K cos K4 C t

otherwise

Fmorceaux 2 , plot Fmorceaux x , x =K2 ..12, color = red, thickness = 2

4,

6
5
4
3
2
K2 0 2 4 6 8 10 12
x
3

(1.6.1)

2. restart :
cer d x, y, r /piecewise x2 C y2 % r2 , print intrieur du disque ,
print extrieur du disque :
cer 1, 2, 3 = intrieur du disque, cer 3, 2, 3 = extrieur du disque,
Remarque : Lorsqu'il s'agit de dfinir une fonction sur deux intervalles, on peut le faire l'aide de
l'oprateur if crit entre deux accents (cet oprateur possde 3 arguments) :
f d x/`if` x O 0, x,Kx :
f 3 = 3, f K3 = 3

Drivation
Pour chercher la drive, Maple procde de deux faons. Selon que l'on drive une fonction ou selon
que l'on drive une expression.
On utilise l'oprateur de drivation D, si l'on veut calculer la drive d'une fonction et on obtient ainsi la
fonction drive. Lorsqu'il s'agit de driver une expression qui dpend d'un certain nombre de variables,
on utilise la fonction diff.

L'oprateur D
L'oprateur de diffrentiation D ne s'applique qu' une fonction pour donner une nouvelle fonction.
2

f d x/ x2 C 1 : D f x = 4 x2 C 1 x, c'est la fonction qui fait correspondre la variable


x la fonction drive de f. D f 0 = 0, D f a K b = 4 a K b 2 C 1 a K b ,
whattype D f
= procedure,
Soit une liste de fonctions : Error, missing operator or `;`
1
1
L d sin x , cos, ln, exp, sqrt : , D L (x) = D sin x , Ksin, z/ , exp,
,
z
2 sqrt
D D f
= x/12 x2 C 4, D@@2 f = x/12 x2 C 4, il s'agit de deux critures identiques,
c'est la drive seconde de f. Mais, ne sont pas identiques celle-l : D$2 f =
x/4 x2 C 1 x, x/4 x2 C 1 x, qui est identique celle-l : D f $2 = x/4 x2 C 1 x, x
/4 x2 C 1 x.
seq D@@n f , n = 0 ..5 = f, x/4 x2 C 1 x, x/12 x2 C 4, x/24 x, 24, 0, Drives
successives de f. L'ordre n = 0 correspond la fonction elle-mme.
seq D@@n f 3 , n = 0 ..5 = 100, 120, 112, 72, 24, 0

Fonction de plusieurs variables

restart :
F d x, y, z /x sin 2 y eKa z :
Fonction drive par rapport x : D 1 F = x, y, z /sin 2 y eKa z .
Fonction drive par rapport y : D 2 F = x, y, z /2 x cos 2 y eKa z .
Fonction drive par rapport x puis par rapport z : D 1, 3 F =
x, y, z /Ksin 2 y a eKa z .
Fonction drive par rapport y, puis par rapport x et enfin par rapport z : D 2, 1, 3 F
= x, y, z /K2 cos 2 y a eKa z .
Fonction drive 3 fois par rapport y, puis une seule fois par rapport x et enfin 2 fois par
rapport z : D 2$3, 1, 3$2 F = x, y, z /K8 cos 2 y a2 eKa z .
4

Fonction dfinie sur intervalles

Maple sait parfaitement driver une fonction dfinie sur intervalles, il sait mme calculer les points
o la fonction n'est pas drivable.
Fmorceaux d x/piecewise x ! 1, x C 3, 1 % x % 4, 4, 5 K cos x K 4 :

D Fmorceaux
plot

x =

Fmorceaux

x!1

undefined

x=1

x%4

sin K4 C x
4!x
x , D Fmorceaux x , x =K2 ..8, color = blue, green , thickness = 3

K2

La fonction diff
Soit l'expression E dpendant des deux variables, par exemple r et s. E d er
Cherchons l'expression drive de E par rapport s puis par rapport r :
Drive par rapport s :
Diff E, s = diff E, s
5

s 2 C sin r

v r s 2 C sin r
2
e
= 2 r s er s C sin r
vs
Drive par rapport r : Diff E, r = diff E, r
v r s 2 C sin r
2
e
= s2 C sin r C r cos r er s C sin r
vr
On utilise l'oprateur dollar $ suivi du nombre n si l'on veut une drivation l'ordre n.
Diff E, s$2 = diff E, s$2 : factor %
2
v2 r s 2 C sin r
e
= 2 r er s C sin r
2 r s2 C 1
2
vs
Diff E, r$3 = diff E, r$3 :
collect %, er
v3 r s 2 C sin
e
vr3
C r cos r

(2.2.2)

(2.2.3)

s 2 C sin r
r

= Kr cos r K 3 sin r C 3 2 cos r K r sin r


C s2 C sin r C r cos r

er

s2 C sin r

s 2 C sin r

Drive croise : Diff E, r, s = diff E, r, s : factor %


2
2
v2
er s C sin r = 2 s er s C sin r
cos r r2 C r s2 C r sin r C 1
vs vr
C'est la drives successives par rapport r puis par rapport s.
f d x/x sin x : diff f x , x$5 = 5 sin x C x cos x ,
seq diff f x , x$n , n = 0 ..3 =
x sin x , sin x C x cos x , 2 cos x K x sin x , K3 sin x K x cos x
Exercice 1 : Anticiper la rponse de chacune des syntaxes suivantes : ,
f d x, y /x2 sin x C y : diff f, y, x = 0,
y d x/x2 : diff y x , y = 0,
diff y y , y = 2 y,
diff y, y = 1,
diff eval y , x Error, non-algebraic expressions cannot be
differentiated,
Remarque : y' t = 2 t, cette criture 2-D Math son quivalence en 1-D Math est :
> eval(diff(y(x), x), x = t);
2t
d
y' t =
y x
dx
x=t
2t=2t
Drive d'ordre n : Avec Maple, il est possible de calculer la drive d'ordre n, n tant
symbolique.
dn 2 x
2x
2x
Diff e , x$n = diff e , x$n =
e = 2n e2 x
n
dx
6

(2.2.4)

(2.2.5)

(2.2.6)

(2.2.7)

Pour n =4 : %
n=4
d4
4

dx

e2 x = 16 e2 x

restart : Diff cos a x , x$n = diff cos a x , x$n =


Pour n =3 : %

=
n=3

(2.2.8)
1
vn
cos a x = cos a x C
n p an
n
2
vx

v3
cos a x = sin a x a3
3
vx

La fonction implicitdiff
restart :
Soit la fonction implicite dfinie par la relation : y K x2 = 0 : , c'est la fonction y(x) = x^2. Pour
avoir la drive de y(x), par rapport x, partir de la relation y-x^2 = 0. on utilise la fonction
implicitdiff selon la syntaxe : implicitdiff y K x2 = 0, y, x = 2 x, comme si on drive l'expression y
(x) obtenue partir de la relation : y-x^2 = 0, qui est y(x) = x^2. Cette drive, on peut l'avoir en
utilisant tout simplement la commande diff : diff x2 , x = . Mais lorsqu'on peut pas sparer y de x et
nous voulons avoir la drive de y(x) ; il est impossible d'utiliser difff, d'o l'intrt de la command
implicitdff.
'diff y x , x '= implicitdiff x y K sin 3 x C 2 y = x, y, x
#` `remarquez que y et x ne sont pas sparables
d
3 cos 3 x C 2 y K y C 1
y x =K
dx
Kx C 2 cos 3 x C 2 y
'diff x y , y '= implicitdiff x y K sin 3 x C 2 y , x, y =

(2.3.1)

d
Kx C 2 cos 3 x C 2 y
x y =K
dy
3 cos 3 x C 2 y K y

'diff x t , t '= implicitdiff x C a cos w t C b sin q x = 0, x, t


d
a w sin w t
x t =
dt
1 C cos q x b q

(2.3.2)

Intgration
Pour effectuer un calcul d'intgrale Maple utilise l'oprateur int. Il existe aussi l'oprateur inerte Int,
celui- ci est pour mmoriser l'intgrale sans effectuer le calcul. On se sert de la fonction value pour
excuter le calcul.

Intgrales indfinies
On utilise la syntaxe : int(expression, x), x tant la variable par rappoprt laquelle on intgre. On
remarquera que Maple pose automatiquement la constante additive gale 0.
x2
restart; E := 3
: int(E, x);
x K1
7

1
ln x3 K 1
3
x2

(3.1.1)

1
ln x3 K 1
3
x K1
Pour faire appartre la constante on pourra crire : Int E, x = int E, x C cte
Int E, x = value Int E, x

dx =

x2
x3 K 1

1
ln x3 K 1 C cte
3

dx =

(3.1.2)

Cas d'une fonction de x : f d x/sin x : ,


'int f x , x '= int f x , x
f x dx = Kcos x

(3.1.3)

Faites la diffrence avec la syntaxe suivante : 'int f, x '= int f, x


f dx = f x

(3.1.4)

De mme : int sqrt, x = sqrt x, a ressemble diff sqrt, x = 0, cela signifie que le 1er argument est
indpendant de x, malgr le fait que f (ou sqrt ) est le nonm d'une fonction. Les deux commandes int
et diff s'appliquent une expression qui dpend (ou non) de la variable qu'on doit crire en 2me
2 3/2
argument : int sqrt t , t =
t .
3
Il est possible que Maple ne puisse automatiquement faire l'intgration indfinie. Dans ce cas,
l'valuateur retourne, comme un cho, l'intgrale demande (pas de rponse, c'est dire il ne trouve
pas un rsultat analytique de la primitive de l'expression intgerer).
Int exp sin t , t = int exp sin t , t = esin t dt = esin t dt
Intgration d'ordre n : Avec Maple, il est possible de calculer l'intgrale d'ordre n, n tant
symbolique.
dKn 2 x
2x
2x
'diff e , x$Kn '= diff e , x$Kn =
e = 2Kn e2 x
Kn
dx
Pour n = 4 : rhs %

1 2x
e
16

n=4
restart :'diff cos a x , x$Kn '= diff cos a x , x$Kn
1
vKn
cos a x = cos a x K
n p aKn
Kn
2
vx
sin a x
Pour n = 3 : rhs %
=K
a3
n=3
C'est identique : int int int cos a x , x , x , x
restart :'diff
x , x$Kn '= diff
x , x$Kn
dKn
dxKn

x = pochhammer

_EnvFallingNotation d G : 'diff

3
C n, Kn x 2
2

x , x$Kn '= diff


8

(3.1.5)

Cn

x , x$Kn =

(3.1.6)

Kn

x =

Kn

dx

rhs %

1
2

1
Cn
2

p x
3
G
Cn
2
2 3/2
=
x
3

n=1
diff cos a x , x$K3
Error, invalid input: diff expects 2 or more arguments, but
received 1
Message d'erreur parce que l'instruction x$K3 n'affiche aucun rsultat !

Intgrales dfinies
De la mme faon, on pourra effectuer des calculs d'intgrales dfinies ; tout simplement en prcisant
l'intervalle d'intgration selon la syntaxe : int(expression, x = a..b).
Int x sin x , x = 0 ..2 Pi = int x sin x , x = 0 ..2 Pi
2p

x sin x dx = K2 p

(3.2.1)

f d q/ 1 K cos q
2p

1 K cos q

: Int f q , q = 0 ..2 Pi = int f q , q = 0 ..2 Pi =

dq = 4

Intgrales impropres
1

Soit la fonction dfinie par : restart : f d x/

: Cette fonction n'est pas dfinie en x = 1 ;


xK1
Sans aucun problme, Maple sait parfaitement calculer l'intgrale impropre suivante :
Int f x , x = 1 ..a = int f x , x = 1 ..a
a

dx = 2

xK1

aK1

De mme, pour ces deux intgrales impropres :


1
1
Int 4 , x = 1 ..infinity = int 4 , x = 1 ..infinity
x
x
N

dx =

Int

sin x
x4

, x = 1 ..infinity = int
N

sin x
x4

dx =

sin x
x4

1
3

, x = 1 ..infinity

1
1
1
sin 1 C
cos 1 C
Ci 1
6
6
6

Le concept de l'infini doit tre ici compris comme tant la limite de l'intgrale quand la borne
9

(3.3.3)

suprieure tend vers l'infini. Ci est la fonction cosinus intgrale ; voir le help : Ci

Lorsque l'ordre de l'intgration est symbolique


1.
2.

dKn
Kn

dx
dKn

d xKn

ea x = aKn ea x
ln a x =

1Cn

a xK1

eval %, n = 1, a = 2

1
4

hypergeom 1, 1 , 2 C n , Ka x C 1 aKn
G 2Cn

2 xK1

convert %, StandardFunctions =
3. restart :

dKn
Kn

dx

hypergeom 1, 1 , 3 , K2 x C 1

2 xK1

2
4 x ln 2 x
C
2 xK1
2 xK1 2

xa = pochhammer a C n C 1, Kn xa C n

_EnvFallingNotation d G :
eval %, a =

1
4

1
,n=2
2

dKn

xa =

d xKn
4 5/2
=
x
15

G a C 1 xa C n
G aCnC1

1
np
2
diff %, x$Kn = sin x , intgration symbolique d'ordre n.
1
diff sin x , x$Kn = Ksin Kx C
np
2
diff sin x , x$n = sin x C

Intgration d'une fonction de deux ou trois variables


Pour une double intgration, on crit : Int x2 y, x, y
x2 y dx dy =

= Int Int x2 y, x , y ; value rhs %

x2 y dx dy

1 3 2
x y
6

(3.5.1)

ou tout simplement : Int x2 y, x, y

int x2 y, x = 0 ..a, y = 1 ..b

= int x2 y, x, y
1 3 2
x2 y dx dy =
x y
(3.5.2)
6
1 3 1 2
1
1 3 2
=
a
b K
, simplify % =
a b K 1 , si on veut
3
2
2
6
2

b a

prciser les bornes des deux variables, ou Int Int x y, x = 0 ..a , y = 1 ..b =
1 0

1 3 2
value % =
a b K1
6
Pour une triple intgration, on crit :
Int x y z2 , x, y, z = Int Int Int x y z2 , x , y , z ; value rhs %
x y z2 dx dy dz =
10

x y z2 dx dy dz

x2 y dx dy

1 2 2 3
x y z
12
Int x y z2 , x = 2 ..a, y = 1 ..b, z = 0 ..c
..c ; value rhs %
c b a

(3.5.3)

= Int Int Int x y z2 , x = 2 ..a , y = 1 ..b , z = 0


c b a

x y z2 dx dy dz =

0 1 2

x y z2 dx dy dz

0 1 2

1
12

a2 K 4

b2 K 1 c3

(3.5.4)

1 2
R p, remarquez la borne
4
variable dpendant de y. Cette intgrale reprsente la surface d'un quart de cercle de rayon R.
4 3
int r2 sin q , r = 0 ..R, q = 0 ..Pi, 4 = 0 ..2 Pi =
R p, c'est le volume d'une sphre de
3
rayon R.
Calculer la surface d'une ellipse d'axes a et b.
int 1, x = 0 .. R2 K y2 , y = 0 ..R assuming R T positive =

Calcul numrique d'une intgrale


Il est cependant possible d'appliquer l'oprateur evalf sur int ou Int pour valuer numriquement une
intgrale en fixant ventuellement le nombre de chiffres significatifs... mais attention au temps de
calcul !
Important : on appliquera la fonction evalf sur l'oprateur inerte Int plutt que int : evalf(Int(...)). En
procdant ainsi, MAPLE dclenche immdiatement la procdure de calcul numrique. Sinon, suivant
la rgle d'valuation pralable des arguments d'une fonction, il cherche d'abord l'expression exacte de
l'intgrale et, s'il peut la trouver, lui applique evalf. Ceci peut allonger srieusement les temps de
calcul.
restart : int r2 $BesselJ 0, r 2 sin theta , r = 0 ..3., theta = 0 ..Pi ;
1.830504451
(3.6.1)
Int r2 $BesselJ 0, r

sin theta , r = 0 ..3., theta = 0 ..Pi

p 3.

r2 BesselJ 0, r

= evalf %

sin q dr dq = 1.830504451

(3.6.2)

0 0

Int exp Kx * sin sqrt x , x = 0 ..1 = evalf Int exp Kx sin sqrt x , x = 0 ..1,'method'
= _NCrule
1

eKx sin

dx = 0.3466144871

student trapezoid exp Kx * sin sqrt x , x = 0 ..1., 10 ;


9

0.01547799378 C 0.1000000000

>e

K0.1000000000 i

i=1

evalf % = 0.3399611300
student simpson exp Kx * sin sqrt x , x = 0 ..1., 12

11

sin 0.3162277660

(3.6.3)

0.008598885437 C 0.1111111111

>

(3.6.4)

i=1

eK0.1666666667 i C 0.08333333333 sin

0.1666666667 i K 0.08333333333

>e

K0.1666666667 i

C 0.05555555557

sin 0.4082482905

i=1

evalf % = 0.3446264733
1
1
Int
, x = 0 ..1 = evalf Int
, x = 0 ..1,'method'
1 C ln 1 C x
1 C ln 1 C x
= _Gquad
1

1
1 C ln 1 C x

dx = 0.7371607096

Int exp Kx * sin 3 sqrt x , x = 0 ..1 = evalf Int exp K.2 x $sin 8
= _d01akc
1

eKx sin 3

(3.6.5)
x , x = 0 ..10,'method'

dx = K0.1069439897

(3.6.6)

plot exp K.3 x $sin 10

x , x = 0 ..10 , evalf Int exp K.2 x $sin 8

x , x = 0 ..10

0.8
0.4
0
K0.4

, K0.1069439897

2 4 6 8 10
x

K0.8
igrand :=

1
2 K sin p x K sin

355 x
113

evalf igrand

= Float N
x = 0.5
evalf15 igrand
= 1.11111111111111 1014 , evalf20 igrand
=
x = 0.5
x = 0.5
1.1241778044582643369 1014 , evalf25 igrand
= 1.124177605944406775029070 1014 ,
x = 0.5
12

evalf25 Int igrand, x = 0 ..1


1.

0.

1
2. K 1. sin 3.141592653589793238462643 x K 1. sin 3.141592920353982300884956 x

dx
evalf25 Int igrand, x = 0 ..1, e = 1. 10K10
1.499451605234141071490295 107
igrand :=

(3.6.7)

sin e x

:
1 C x2
evalf Int igrand, x = K10 ..10, method = _d01akc
Error, (in evalf/int) NE_QUAD_MAX_SUBDIV:
The maximum number of subdivisions has
been reached: max_num_subint = 500
evalf Int igrand, x = K10 ..10, method = _d01akc, methodoptions = maxintervals = 1000
1.235076653
(3.6.8)
plot igrand, x = 0 ..5

0.8

0.6

0.4

0.2

3
x

K0.2

13

La bibliothque VectorCalculus
Fonction int
Cette fonction se trouve dans la bibliothque VectorCalculus.
with VectorCalculus :
int f r, q , r, q = Circle 0, 0 , R

R 2p

f r cos q , r sin q

r dq dr

0 0

int 1, r, q = Sector Circle 0, 0 , R , 0, p

1
p R2 , surface du demi-disque de rayon
2

R.
int 1, x, y = Rectangle 0 ..a, 0 ..b

= a b, surface du rectangle de cots a et b.


1
int 1, x, y = Triangle 0, 0 , 1, 0 , 0, 1
= , surface du triangle de sommets les points :
2
(0,0), (1,0) et (0,1).
1 2
int 1, x, y = Region 0 ..a, 0 ..x =
a
2
int 1, x, y = Region 0 ..1, x2 .. x , plot x2 , x , x = 0 ..1

1
,
3

1
0.8
0.6
0.4
0.2
0

0.2 0.4 0.6 0.8 1


x

, surface de la rgion comprise entre les 2 courbes y = x^2 et y = sqrt(x) avec 0<x<1.
4
int 1, x, y, z = Sphere 0, 0, 0 , R =
p R3 , volume de la sphre de centre (0,0,0) et de
3
rayon R.
1 2
1 3
1 4
t, t2 , t3 dt =
t ex C
t ey C
t ez , prmitive de chacune des composantes du
2
3
4
vecteur, le rsultat est un vecteur.
PathInt 1, x, y = Line 0, 0 , 1, 1
= 2 , longueur d'un segment.
PathInt 1, x, y = Arc Circle 0, 0 , R , 0, q assuming R O 0 = R q, longueur d'un arc du
cercle.
SetCoordinates cartesianx, y :
LineInt VectorField x, y , Line 1, 2 , 3, K4
= 10, intgrale curviligne, circulation d'un
champ vectoriel.
LineInt VectorField x, y , LineSegments 0, 0 , 1, 1 , 1, K1
=1
2 2
2
LineInt VectorField x , y , Path t, t , t = 0 ..2 = 24
LineInt VectorField y, Kx , Circle 0, 0 , r = K2 p r2
x2
y2
LineInt VectorField x, y , Ellipse
C
=1
=0
4
9
14

SetCoordinates cartesianx, y, z : Curl VectorField x, y, 0

= 0ex, il s'agit d'un champ

conservatif.

Aspects divers
Intgrale d'une fonction dfinie sur intervalles
1. f d x / piecewise x % 0, cos x , exp Kx2 :
Int 'f x ', x =KPi / 4 ..infinity : % = value %
N

cos x

x%0

Kx2

otherwise

dx =

1
2

2 C

1
2

1
p
4

2. A d Int Heaviside Kx C 1 R x , x =K2 ..2 : A = value A


2

Heaviside Kx C 1 R x dx =
K2

R x dx

(3.8.2)

K2

subs R x = exp Kx , A : % = value % ;


2

Heaviside Kx C 1 eKx dx = e2 K eK1

(3.8.3)

K2

3. Int Dirac xKp g x , x =Kinfinity ..infinity : % = value % ;


N

Dirac x K p g x dx = g p

(3.8.4)

KN

Intgration sous contraintes


a d Int x * exp Kp * x , x = 0 ..infinity : a = value a
x p eKp x C eKp x K 1

N
0

x eKp x dx = x/N
lim

p2

(3.8.5)

a = value a assuming p T positive


N

x eKp x dx =

(3.8.6)

p2

Intgration dans le plan complexe


restart : f d z / exp Kz K I * z :
Int f x , x = aKI * Pi ..I * b :
% = simplify value %
Ib
aKIp

1
2
1
1
Ip C
I a2 C
I b2 C p a K eKa K eKI b
2
2
2

eKx K I x dx = K

Changement de variable
restart :
E = Int cos x C 1 3 sin x , x = E =

cos x C 1

La fonction changevar de la bibliothque student :


value student changevar cos x C 1 = u, %, u
15

sin x dx

(3.8.7)

1 4
u
4

E=K
Int

cos x C 1

sin x , x = int
cos x C 1

(3.8.8)
3

cos x C 1
1
4

sin x dx = K

sin x , x
cos x C 1

(3.8.9)
b

Ou l'aide de la fonction Change de la bibliothque IntegrationTools :V :=

f x2 dx :

a
2

V = IntegrationTools Change V, x = u
b

f x2 dx =

2 f u4 u du

(3.8.10)

f x dx = IntegrationTools Change

f x dx, x = u K c, u

a
cCb

f x dx =
a

f u K c du

(3.8.11)

cCa
d b

Pour une intgration 2 variables : S d

f x, y dx dy :
c a
2

S = IntegrationTools Change S, x = u , y = v2
d b

f x, y dx dy =
c a

2
c

16

2 f u2 , v2 u du v dv

(3.8.12)