Utiliser

Maple 8
Inspir´e du travail de B.W. Char
Traduit de l’anglais par Sylvain Hall´e
c ( 2002 Waterloo Maple Inc.
ii •
Waterloo Maple Inc.
57 Erb Street West
Waterloo, ON N2L 6C2
Canada
Maple et Maple 8 sont des marques d´epos´ees de Waterloo Maple Inc.
c ( 2002, 2001, 2000, 1998, 1996 Waterloo Maple Inc.
Tous droits r´eserv´es. La reproduction ou la traduction, mˆeme partielle,
par quelque proc´ed´e que ce soit, est interdite sans l’autorisation ´ecrite du
d´etenteur des droits d’auteur, ` a l’exception de courts extraits en rapport
avec un compte rendu ou une analyse savante. L’utilisation en relation
avec quelque forme de stockage et de recherche d’information, d’adapta-
tion ´electronique, de logiciel d’ordinateur, ou avec toute autre m´ethode
semblable ou diff´erente, connue ou conue ult´erieurement, est interdite.
L’utilisation de noms descriptifs g´en´eraux, de noms d´epos´es, de
marques de commerce, etc., dans la pr´esente publication, mˆeme s’ils ne
sont pas express´ement d´esign´es, n’est pas une indication que de tels noms,
en vertu de la Loi sur les marques de commerce, peuvent cons´equemment
ˆetre librement employ´es par quiconque.
Imprim´e au Canada
ISBN 1-894511-33-6
Table des mati`eres
1 Introduction `a Maple 1
1.1 Les autres manuels . . . . . . . . . . . . . . . . . . . . . . 3
2 Math´ematiques de base avec Maple 5
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Calculs num´eriques . . . . . . . . . . . . . . . . . . . . . . 7
Calculs sur des entiers . . . . . . . . . . . . . . . . . . . . 7
Arithm´etique exacte – Rationnels, irrationnels et constantes 9
Approximations ` a virgule flottante . . . . . . . . . . . . . 12
Arithm´etique avec des nombres sp´eciaux . . . . . . . . . . 14
Fonctions math´ematiques . . . . . . . . . . . . . . . . . . 15
2.3 Calculs symboliques de base . . . . . . . . . . . . . . . . . 16
2.4 Affecter des noms ` a des expressions . . . . . . . . . . . . . 18
2.5 Les principaux types d’objets Maple . . . . . . . . . . . . 20
Les suites d’expressions . . . . . . . . . . . . . . . . . . . 20
Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . 23
Les op´erations sur les ensembles et les listes . . . . . . . . 25
Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . 26
Les tables . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Les chaˆınes . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6 La manipulation d’expressions . . . . . . . . . . . . . . . . 32
La commande simplify . . . . . . . . . . . . . . . . . . . 33
La commande factor . . . . . . . . . . . . . . . . . . . . 34
La commande expand . . . . . . . . . . . . . . . . . . . . 34
La commande convert . . . . . . . . . . . . . . . . . . . . 35
La commande normal . . . . . . . . . . . . . . . . . . . . 37
La commande combine . . . . . . . . . . . . . . . . . . . . 37
La commande map . . . . . . . . . . . . . . . . . . . . . . 38
Les commandes lhs et rhs . . . . . . . . . . . . . . . . . 39
iii
iv • Table des mati`eres
Les commandes numer et denom . . . . . . . . . . . . . . . 39
Les commandes nops et op . . . . . . . . . . . . . . . . . 40
Questions courantes sur la manipulation d’expressions . . 41
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3 Trouver des solutions 45
3.1 R´esolution au moyen de solve . . . . . . . . . . . . . . . 45
V´erifier les solutions . . . . . . . . . . . . . . . . . . . . . 47
Restreindre les solutions . . . . . . . . . . . . . . . . . . . 49
Explorer les solutions . . . . . . . . . . . . . . . . . . . . . 50
La commande unapply . . . . . . . . . . . . . . . . . . . . 51
La commande assign . . . . . . . . . . . . . . . . . . . . 53
La commande RootOf . . . . . . . . . . . . . . . . . . . . 55
3.2 R´esoudre num´eriquement : fsolve . . . . . . . . . . . . . 56
Les limites de solve . . . . . . . . . . . . . . . . . . . . . 57
3.3 D’autres solveurs . . . . . . . . . . . . . . . . . . . . . . . 60
Trouver des solutions enti`eres . . . . . . . . . . . . . . . . 60
Trouver des solutions modulo m . . . . . . . . . . . . . . 60
R´esoudre des relations de r´ecurrence . . . . . . . . . . . . 61
3.4 Les polynˆ omes . . . . . . . . . . . . . . . . . . . . . . . . 61
Tri et regroupement . . . . . . . . . . . . . . . . . . . . . 62
Op´erations math´ematiques . . . . . . . . . . . . . . . . . 64
Coefficients et degr´es . . . . . . . . . . . . . . . . . . . . . 65
Recherche de racines et factorisation . . . . . . . . . . . . 65
3.5 Le calcul diff´erentiel . . . . . . . . . . . . . . . . . . . . . 67
3.6 Les ´equations diff´erentielles : dsolve . . . . . . . . . . . . 73
3.7 L’organisation de Maple . . . . . . . . . . . . . . . . . . . 79
3.8 Les packages Maple . . . . . . . . . . . . . . . . . . . . . . 81
Liste des packages . . . . . . . . . . . . . . . . . . . . . . 81
Le package Student Calculus1 (une variable) . . . . . . . . 86
Le package LinearAlgebra . . . . . . . . . . . . . . . . . . 91
Le package Matlab . . . . . . . . . . . . . . . . . . . . . . 93
Le package Statistics . . . . . . . . . . . . . . . . . . . . . 94
Le package d’optimisation lin´eaire . . . . . . . . . . . . . 97
3.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4 Tracer des graphiques 101
4.1 Graphiques en deux dimensions . . . . . . . . . . . . . . . 101
Les graphiques param´etriques . . . . . . . . . . . . . . . . 103
Les coordonn´ees polaires . . . . . . . . . . . . . . . . . . . 105
Les fonctions discontinues . . . . . . . . . . . . . . . . . . 108
Table des mati`eres • v
Graphiques multiples . . . . . . . . . . . . . . . . . . . . . 111
Tracer des points . . . . . . . . . . . . . . . . . . . . . . . 113
Raffiner des graphiques . . . . . . . . . . . . . . . . . . . 115
4.2 Graphiques en trois dimensions . . . . . . . . . . . . . . . 116
Les graphiques param´etriques . . . . . . . . . . . . . . . . 118
Les coordonn´ees sph´eriques . . . . . . . . . . . . . . . . . 119
Les coordonn´ees cylindriques . . . . . . . . . . . . . . . . 121
Raffiner des graphiques . . . . . . . . . . . . . . . . . . . 123
Mod`eles de coloriage et d’´eclairage . . . . . . . . . . . . . 124
4.3 L’animation . . . . . . . . . . . . . . . . . . . . . . . . . . 125
L’animation en deux dimensions . . . . . . . . . . . . . . 125
L’animation en trois dimensions . . . . . . . . . . . . . . . 128
4.4 Annoter des graphiques . . . . . . . . . . . . . . . . . . . 129
4.5 Les graphiques composites . . . . . . . . . . . . . . . . . . 132
Placer du texte dans les graphiques . . . . . . . . . . . . . 134
4.6 Quelques graphiques particuliers . . . . . . . . . . . . . . 135
4.7 Manipuler des objets graphiques . . . . . . . . . . . . . . 140
4.8 Code des graphiques des planches en couleurs . . . . . . . 145
4.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5 L’´evaluation et la simplification 149
5.1 Manipulations math´ematiques . . . . . . . . . . . . . . . . 149
D´evelopper des polynˆ omes en sommes . . . . . . . . . . . 150
Regrouper les coefficients de mˆeme degr´e . . . . . . . . . . 152
Factoriser des polynˆ omes et des fonctions rationnelles . . 154
Supprimer des exposants rationnels . . . . . . . . . . . . . 157
Combiner des termes . . . . . . . . . . . . . . . . . . . . . 158
Forme normale factoris´ee . . . . . . . . . . . . . . . . . . 159
Simplifier des expressions . . . . . . . . . . . . . . . . . . 161
Simplification avec des hypoth`eses . . . . . . . . . . . . . 163
Simplification au moyen des relations accessoires . . . . . 163
Trier des expressions alg´ebriques . . . . . . . . . . . . . . 164
Conversion entre diff´erentes formes . . . . . . . . . . . . . 166
5.2 Les hypoth`eses . . . . . . . . . . . . . . . . . . . . . . . . 168
La commande assume . . . . . . . . . . . . . . . . . . . . 168
La commande assuming . . . . . . . . . . . . . . . . . . . 172
5.3 Manipulations structurelles . . . . . . . . . . . . . . . . . 173
Appliquer une fonction ` a une liste ou un ensemble . . . . 174
Choisir des ´el´ements dans une liste ou un ensemble . . . . 176
Combiner deux listes . . . . . . . . . . . . . . . . . . . . . 178
Trier des listes . . . . . . . . . . . . . . . . . . . . . . . . 179
vi • Table des mati`eres
Les parties d’une expression . . . . . . . . . . . . . . . . . 182
La substitution . . . . . . . . . . . . . . . . . . . . . . . . 190
Changer le type d’une expression . . . . . . . . . . . . . . 193
5.4 Les r`egles d’´evaluation . . . . . . . . . . . . . . . . . . . . 196
Niveaux d’´evaluation . . . . . . . . . . . . . . . . . . . . . 196
´
Evaluation du dernier nom . . . . . . . . . . . . . . . . . 197
´
Evaluation ` a un niveau . . . . . . . . . . . . . . . . . . . . 200
Commandes avec des r`egles sp´eciales d’´evaluation . . . . . 200
Empˆecher l’´evaluation d’une expression . . . . . . . . . . 201
Utiliser les variables entour´ees de guillemets comme argu-
ments de fonctions . . . . . . . . . . . . . . . . . . 204
Concat´enation de noms . . . . . . . . . . . . . . . . . . . 205
5.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 207
6 Exemples tir´es du calcul diff´erentiel 209
6.1 Calcul diff´erentiel ´el´ementaire . . . . . . . . . . . . . . . . 209
La d´eriv´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Une approximation de Taylor . . . . . . . . . . . . . . . . 215
L’int´egrale . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
D´eriv´ees partielles mixtes . . . . . . . . . . . . . . . . . . 231
6.2
´
Equations diff´erentielles ordinaires . . . . . . . . . . . . . 235
La commande dsolve . . . . . . . . . . . . . . . . . . . . 236
Un exemple : les s´eries de Taylor . . . . . . . . . . . . . . 251
Lorsqu’une solution explicite est impossible ` a trouver . . . 255
Tracer le graphique d’´equations diff´erentielles ordinaires . 256
Coefficients discontinus d’une ´equation . . . . . . . . . . . 261
6.3
´
Equations aux d´eriv´ees partielles . . . . . . . . . . . . . . 266
La commande pdsolve . . . . . . . . . . . . . . . . . . . . 266
Changer la variable d´ependante dans une EDP . . . . . . 268
Tracer le graphique d’´equations aux d´eriv´ees partielles . . 269
6.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 271
7 Entr´ees et sorties 273
7.1 Lire des fichiers . . . . . . . . . . . . . . . . . . . . . . . . 273
Lire des colonnes de nombres depuis un fichier . . . . . . 274
Lire des commandes depuis un fichier . . . . . . . . . . . . 276
7.2
´
Ecrire des donn´ees dans un fichier . . . . . . . . . . . . . 278
´
Ecrire des colonnes de donn´ees num´eriques dans un fichier 278
Sauvegarder des expressions au format interne de Maple . 279
Convertir au format L
A
T
E
X . . . . . . . . . . . . . . . . . . 280
7.3 Exporter des feuilles compl`etes . . . . . . . . . . . . . . . 282
Table des mati`eres • vii
Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Texte Maple . . . . . . . . . . . . . . . . . . . . . . . . . . 283
L
A
T
E
X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
HTML et HTML avec MathML . . . . . . . . . . . . . . . 285
RTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
7.4 Imprimer des graphiques . . . . . . . . . . . . . . . . . . . 288
7.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 290
8 Les maplets 291
8.1 Exemple de maplet . . . . . . . . . . . . . . . . . . . . . . 291
8.2 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . 292
8.3 Comment d´emarrer le package Maplets . . . . . . . . . . 293
8.4 Comment appeler une maplet ` a partir d’une feuille Maple 293
8.5 Comment fermer une maplet . . . . . . . . . . . . . . . . 294
8.6 Comment utiliser les Maplets et la fenˆetre Maple (modalit´e)294
8.7 Comment activer la fenˆetre d’une maplet . . . . . . . . . 294
8.8 Comment arrˆeter puis red´emarrer une maplet . . . . . . . 295
8.9 Comment utiliser les raccourcis de l’interface graphique . 295
Listes d´eroulantes . . . . . . . . . . . . . . . . . . . . . . . 295
La barre d’espacement et la touche Tab . . . . . . . . . . 295
8.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 296
1 Introduction `a Maple
On appelle le logiciel Maple un syst`eme de calcul symbolique, ´evoquant
ainsi sa capacit´e `a manipuler l’information de mani`ere symbolique ou
alg´ebrique. En effet, contrairement aux logiciels math´ematiques stan-
dard, qui requi`erent des valeurs num´eriques pour toutes leurs variables,
Maple, tout en demeurant capable d’´evaluer des expressions num´eriques,
sait ´egalement manipuler les expressions et les symboles sous-jacents.
Cette capacit´e symbolique permet ` a Maple de calculer des solutions
analytiques exactes ` a de nombreux probl`emes math´ematiques incluant
syst`emes d’´equations, int´egrales, ´equations diff´erentielles et probl`emes
d’alg`ebre lin´eaire. En compl´ement ` a ces op´erations symboliques, une vaste
gamme de routines graphiques facilite la visualisation de donn´ees math´e-
matiques complexes ; des algorithmes num´eriques fournissent des r´eponses
approxim´ees aux probl`emes ne poss´edant pas de solution exacte, et un lan-
gage de programmation complet et accessible permet le d´eveloppement sur
mesure de nouvelles fonctions et applications.
On acc`ede facilement ` a l’´etendue des fonctions math´ematiques de
Maple par son interface graphique prenant la forme de feuilles (work-
sheets). Une feuille est un document flexible permettant d’explorer des
id´ees math´ematiques et de cr´eer des rapports complexes.
Les utilisateurs de Maple ont trouv´e plusieurs mani`eres d’utiliser son
langage et ses feuilles.
Les ing´enieurs et les professionnels dans des industries aussi vari´ees
que l’agriculture et l’a´erospatiale utilisent Maple comme un outil puissant
rempla¸ cant `a la fois leurs manuels de r´ef´erence, leurs calculatrices, leurs
chiffriers et mˆeme leurs langages de programmation tel FORTRAN. Ces
utilisateurs gagnent en rapidit´e dans la r´esolution de probl`emes math´e-
matiques courants et consignent les r´esultats de leurs calculs dans des
rapports techniques professionnels.
Les chercheurs de plusieurs domaines consid`erent ´egalement Maple
comme un outil essentiel ` a leur travail. Maple est en effet tout indiqu´e pour
1
2 • Chapitre 1: Introduction `a Maple
la formulation, la r´esolution et l’exploration de mod`eles math´ematiques.
Son caract`ere symbolique ´elargit grandement l’´eventail des probl`emes
qu’ils peuvent ainsi traiter.
Les professeurs emploient Maple en classe, ravivant l’enseignement
traditionnel au coll`ege et ` a l’universit´e en introduisant des probl`emes
et des exercices qui exploitent l’interactivit´e du logiciel. Plutˆ ot que de
s’astreindre ` a des manipulations alg´ebriques fastidieuses, leurs ´etudiants
peuvent ainsi se concentrer sur les concepts fondamentaux.
Chacun utilise Maple d’une mani`ere toute personnelle selon ses be-
soins ; cependant, deux grandes cat´egories d’utilisation dominent.
La premi`ere cat´egorie consiste en l’utilisation de Maple comme d’un
environnement interactif de r´esolution de probl`emes. Traditionnellement,
lorsqu’on travaille sur un probl`eme, l’essai d’une m´ethode de r´esolution
n´ecessite parfois plusieurs heures et plusieurs pages. Maple permet ` a son
utilisateur de se concentrer sur de beaucoup plus grands probl`emes en
le lib´erant d’erreurs m´ecaniques ; son interface documente les ´etapes de
sa recherche d’une solution. Elle permet aussi de modifier ais´ement l’une
de ces ´etapes, ou mˆeme d’en ins´erer une nouvelle. Que ce soit pour le
d´eveloppement d’un nouveau mod`ele math´ematique ou pour l’analyse
d’une strat´egie financi`ere, il est possible d’en apprendre beaucoup sur
un probl`eme, facilement et efficacement.
La seconde cat´egorie utilise Maple en tant que syst`eme de cr´eation
de documents techniques. Il est en effet possible de cr´eer des documents
interactifs, structur´es et dynamiques ou de modifier une ´equation et d’ac-
tualiser sa solution automatiquement. Le langage math´ematique naturel
de Maple facilite l’entr´ee des ´equations, et permet le calcul et le trac´e
de graphiques sur demande. De plus, les documents Maple peuvent ˆetre
structur´es en utilisant des outils modernes tels les styles, la division en
sous-sections et les hyperliens, cr´eant ainsi des feuilles qui sont non seule-
ment claires et faciles ` a cr´eer, mais ´egalement faciles ` a mettre ` a jour.
Puisque les composantes des feuilles sont directement associ´ees ` a la struc-
ture du document, il est facile de les traduire en d’autres formats comme
L
A
T
E
X, RTF ou HTML.
Plusieurs types de documents peuvent profiter des caract´eristiques
des feuilles Maple. Ces caract´eristiques facilitent la r´edaction de rapports
ou mˆeme d’ouvrages math´ematiques et sont aussi appropri´ees pour la
cr´eation et la pr´esentation d’expos´es. Par exemple, la division en sous-
sections cache des sections arides et riches en d´etails qui peuvent ˆetre
distrayantes aux yeux de l’observateur ; les styles font clairement ressortir
les mots cl´es et les titres ; les hyperliens autorisent la cr´eation de r´ef´erences
dynamiques qui am`enent le lecteur aux pages renfermant de l’information
1.1 Les autres manuels • 3
compl´ementaire. Enfin, la nature interactive de Maple permet de calcu-
ler et de r´epondre ` a des questions durant une pr´esentation. On peut ainsi
clairement et efficacement d´emontrer pourquoi une m´ethode de r´esolution
a priori acceptable s’av`ere en fait inappropri´ee, ou pourquoi une modifi-
cation ` a un processus de manufacturation entraˆıne des pertes ou engendre
des profits.
Ce livre constitue votre introduction ` a Maple. Il discute syst´emati-
quement des concepts cl´es et construit un cadre d’apprentissage qui vous
guidera dans votre utilisation de l’interface et du langage Maple. Ce ma-
nuel vous donnera un aper¸ cu des fonctionnalit´es de Maple, d´ecrivant ` a
la fois ses capacit´es symboliques et num´eriques, et introduisant les ob-
jets Maple, les commandes et les m´ethodes mises ` a votre disposition. Une
attention particuli`ere est plac´ee non seulement sur la recherche de solu-
tions, mais ´egalement sur le trac´e de graphiques, la cr´eation d’animations
et l’exportation de feuilles en d’autres formats. Plus important encore,
il pr´esente la philosophie et les m´ethodes d’utilisation sugg´er´ees par les
concepteurs du syst`eme. Ces quelques concepts simples vous permettront
d’utiliser Maple ` a son meilleur.
Consid´erez ce livre d’abord comme un guide ; l’aide en ligne consti-
tuera votre manuel de r´ef´erence. En effet, puisque l’on peut y rechercher
de l’information de plusieurs mani`eres et qu’il se trouve toujours acces-
sible, le syst`eme d’aide de Maple se r´ev`ele plus pratique que tout autre
texte traditionnel. Vous trouverez ´egalement des exemples que vous pou-
vez copier, coller et ex´ecuter imm´ediatement.
1.1 Les autres manuels
Trois autres manuels (en anglais) d´ecrivent le fonctionnement de Maple :
le Guide de prise en main (Maple 8 Getting Started Guide), le Guide
d’introduction ` a la programmation (Maple 8 Introductory Program-
ming Guide) et le Guide de programmation avanc´ee (Maple 8 Advanced
Programming Guide)
1
.
Le Guide de prise en main (Getting Started Guide) contient une
introduction ` a l’interface graphique et un tutoriel r´esumant l’utilisation
1
La version ´etudiante n’inclut pas les deux guides de programmation. Ces guides
peuvent toutefois etre achet´es chez des libraires sp´ecialis´es ou directement aupr`es de
Waterloo Maple Inc.
4 • Chapitre 1: Introduction `a Maple
de Maple pour r´esoudre des probl`emes math´ematiques et cr´eer des do-
cuments techniques.
`
A l’int´erieur, vous y trouverez de l’information sup-
pl´ementaire ` a l’intention des nouveaux utilisateurs au sujet du syst`eme
d’aide en ligne, sur le tour guid´e du logiciel (New User’s Tour), sur
les exemples de feuilles de travail ainsi que sur le site Web de Waterloo
Maple.
Le Guide d’introduction ` a la programmation (Introductory Program-
ming Guide) pr´esente les concepts fondamentaux de la programmation
sous Maple : les expressions, les structures de donn´ees, les boucles et les
m´ecanismes de d´ecision, les proc´edures, les entr´ees-sorties, le d´ebogage et
les Maplets.
Enfin, le Guide de programmation avanc´ee (Advanced Programming
Guide) couvre des concepts de programmation comme les modules, les
entr´ees-sorties, la programmation num´erique, les graphiques et le code
compil´e.
2 Math´ematiques de base
avec Maple
Ce chapitre commence par une discussion ` a propos des calculs num´eriques
exacts avec Maple, qui diff`erent l´eg`erement de ceux effectu´es par d’autres
applications. Des renseignements sur les calculs symboliques de base et les
commandes d’affectation suivent. Les deux derni`eres sections ´enoncent les
principaux types d’objets de base et donnent des instructions concernant
la manipulation d’objets et les commandes les plus utiles ` a cet ´egard.
Vous tirerez le meilleur parti de ce livre en utilisant votre ordinateur
pour esssayer les diff´erents exemples que vous rencontrerez au fil de votre
lecture. Ce chapitre explique les commandes n´ecessaires pour commencer
`a travailler. Les chapitres subs´equents donneront ` a ces commandes ainsi
qu’` a d’autres un traitement plus approfondi.
Si vous souhaitez comprendre davantage les rouages du syst`eme
Maple, vous pouvez utiliser le syst`eme d’aide en ligne. Pour obtenir de
l’aide ` a propos d’une commande, tapez simplement ` a l’invite Maple un
point d’interrogation (?) suivi du nom de la commande ou, dans d’autres
cas, du sujet sur lequel vous souhaitez obtenir plus d’information.
?commande
2.1 Introduction
Les calculs les plus simples dans Maple sont num´eriques. Maple peut
fonctionner comme une calculatrice traditionnelle avec les entiers et les
5
6 • Chapitre 2: Math´ematiques de base avec Maple
nombres ` a virgule flottante. Entrez l’expression en utilisant la syntaxe
naturelle
1
. Un point-virgule indique la fin de chaque calcul.
>
1 + 2;
3
>
1 + 3/2;
5
2
>
2*(3+1/3)/(5/3-4/5);
100
13
>
2.8754/2;
1.437700000
Bien entendu, Maple peut faire beaucoup plus, comme vous pourrez
le voir bientˆ ot.
Pour le moment, consid´erez cet exemple simple.
>
1 + 1/2;
3
2
Remarquez que Maple effectue des calculs exacts avec des nombres
rationnels. Le r´esultat de 1 + 1/2 est 3/2, et non 1.5. Pour Maple, le
nombre rationnel 3/2 et son approximation d´ecimale 1.5 sont deux objets
compl`etement diff´erents.
La possibilit´e de repr´esenter des expressions de mani`ere exacte permet
`a Maple de pr´eserver beaucoup plus d’information ` a propos de leur origine
et de leur structure. Par exemple, l’origine et la structure d’un nombre
comme
1
N.d.t. : Le logiciel Maple utilise la syntaxe anglo-saxonne pour la repr´esentation
des nombres d´ecimaux. C’est donc le point, et non la virgule, qu’il faut utiliser pour
saisir de tels nombres.
2.2 Calculs num´eriques • 7
0.5235987758
est beaucoup moins ´evidente que pour une quantit´e exacte comme
1
6
π
Lorsque vous commencerez ` a travailler avec des expressions plus com-
plexes, l’avantage en sera d’autant plus grand.
Maple peut travailler non seulement avec des nombres rationnels,
mais ´egalement avec des expressions arbitraires. Il peut manipuler les
entiers, les nombres ` a virgule flottante, les variables, les ensembles, les
suites, les polynˆ omes sur un anneau ainsi que plusieurs autres construc-
tions math´ematiques. De plus, Maple est un langage de programmation
complet contenant des proc´edures, des tableaux et d’autres structures de
donn´ees.
2.2 Calculs num´eriques
Calculs sur des entiers
Les calculs sur des entiers sont directs. N’oubliez pas de terminer chaque
commande par un point-virgule.
>
1 + 2;
3
>
75 - 3;
72
>
5*3;
15
>
120/2;
60
8 • Chapitre 2: Math´ematiques de base avec Maple
Maple peut ´egalement travailler avec des nombres entiers arbitraire-
ment grands. La limite pratique sur les entiers est d’environ 2
28
chiffres,
en fonction principalement de la vitesse et des ressources de votre or-
dinateur. Maple n’´eprouve aucun probl`eme ` a calculer de grands entiers,
compter le nombre de chiffres d’un nombre ou factoriser des entiers. Pour
des nombres et d’autres types de donn´ees qui s’´etendent sur plus d’une
ligne ` a l’´ecran, Maple utilise le caract`ere (\) pour indiquer que le r´esultat
est continu. La barre oblique et la coupure de ligne doivent ˆetre ignor´ees.
>
100!;
933262154439441526816992388562667004907`
15968264381621468592963895217599993229`
91560894146397615651828625369792082722`
37582511852109168640000000000000000000`
00000
>
length(%);
158
La r´eponse indique le nombre de chiffres contenus dans le dernier
exemple. L’op´erateur idem (%) est tout simplement une notation abr´eg´ee
affichant le r´esultat pr´ec´edent. Pour rappeler le deuxi`eme ou le troisi`eme
r´esultat pr´ec´edent, utilisez respectivement %% et %%%.
>
ifactor(60);
(2)
2
(3) (5)
En plus de ifactor, Maple poss`ede plusieurs commandes pour tra-
vailler avec des entiers permettant le calcul du plus grand commun di-
viseur (PGCD) de deux entiers, la division euclidienne et les tests de
primalit´e. Consultez les exemples ci-dessous ainsi que la table 2.1.
>
igcd(123, 45);
3
>
iquo(25,3);
2.2 Calculs num´eriques • 9
Tab. 2.1 – Commandes op´erant sur des entiers
Fonction Description
abs valeur absolue d’une expression
factorial factorielle d’un entier
iquo quotient d’une division enti`ere
irem reste d’une division enti`ere
iroot racine enti`ere approxim´ee d’un entier
isqrt racine carr´ee enti`ere approxim´ee d’un entier
max, min maximum et minimum d’un ensemble d’entr´ees
mod arithm´etique modulo
surd racine r´eelle d’un entier
8
>
isprime(18002676583);
true
Arithm´etique exacte – Rationnels, irrationnels et constantes
Une propri´et´e importante de Maple est sa capacit´e `a effectuer l’arithm´e-
tique rationnelle exacte, et ainsi de travailler avec des nombres rationnels
(fractions) sans avoir ` a les r´eduire ` a leurs approximations d´ecimales.
>
1/2 + 1/3;
5
6
Maple g`ere les nombres rationnels et produit un r´esultat exact. La
distinction entre des r´esultats exacts et approximatifs est importante. La
facult´e d’effectuer des calculs exacts au moyen d’ordinateurs vous permet
de r´esoudre une toute nouvelle gamme de probl`emes.
Maple peut effecter des approximations en virgule flottante si n´eces-
saire. En fait, le logiciel peut travailler avec des nombres ` a virgule flottante
de plusieurs milliers de chiffres pour des estimations pr´ecises d’expressions
exactes.
>
Pi;
10 • Chapitre 2: Math´ematiques de base avec Maple
π
>
evalf(Pi, 100);
3.1415926535897932384626433832795028841`
97169399375105820974944592307816406286`
208998628034825342117068
Il est important d’apprendre comment Maple distingue les repr´esen-
tations exactes des valeurs de leurs approximations d´ecimales.
Voici un exemple de nombre rationnel (exact).
>
1/3;
1
3
Le nombre suivant est son approximation d´ecimale (avec une pr´ecision
par d´efaut de dix chiffres).
>
evalf(%);
0.3333333333
Ces r´esultats ne sont pas les mˆemes math´ematiquement, et ne sont
pas non plus les mˆemes pour Maple.
Chaque fois que vous entrez un nombre sous forme d´ecimale,
Maple le consid`ere comme une approximation ` a virgule flottante. En
fait, la pr´esence d’un nombre d´ecimal dans une expression force Maple ` a
produire un r´esultat en virgule flottante, puisqu’il ne peut ˆetre certain
de produire une solution exacte, mˆeme ` a partir de donn´ees partiellement
exactes.
>
3/2*5;
15
2
>
1.5*5;
7.5
2.2 Calculs num´eriques • 11
Ainsi, il est recommand´e de n’utiliser des nombres d´ecimaux que
lorsque vous souhaitez forcer Maple ` a travailler avec des expressions
non exactes.
Vous pouvez saisir des quantit´es exactes en utilisant la repr´esentation
symbolique, comme π, comparativement ` a 3.14. Maple traite les nombres
irrationnels comme des quantit´es exactes. Voici comment repr´esenter la
racine carr´ee de 2 dans Maple.
>
sqrt(2);

2
Voici un autre exemple de racine carr´ee.
>
sqrt(3)^2;
3
Maple connaˆıt les constantes arithm´etiques standard comme π et la
base des logarithmes naturels, e. Il travaille avec ces nombres comme avec
des quantit´es exactes.
>
Pi;
π
>
sin(Pi);
0
La fonction exponentielle est repr´esent´ee par la fonction Maple exp.
>
exp(1);
e
>
ln(exp(5));
5
Le deuxi`eme exemple peut paraˆıtre ´etrange. Souvenez-vous que
lorsque Maple produit une notation math´ematique

typographique

,
il essaie de repr´esenter les expressions math´ematiques de la mani`ere dont
12 • Chapitre 2: Math´ematiques de base avec Maple
vous les ´ecririez vous-mˆeme. Ainsi, vous entrez π comme Pi et Maple
l’affiche comme π.
Maple tient compte des majuscules et des minuscules ; soyez donc
certain de les respecter en faisant r´ef´erence ` a ces constantes. Les noms
Pi, pi et PI ne sont pas ´equivalents ! Les noms Pi et PI sont employ´es
pour afficher respectivement les lettres grecques minuscule et majuscule π
et Π. Pour obtenir davantage d’information sur les constantes de Maple,
tapez ?constants `a l’invite.
Approximations `a virgule flottante
Mˆeme si Maple pr´ef`ere travailler avec des valeurs exactes, il peut retour-
ner une approximation d´ecimale d’une longueur maximale de 2
38
chiffres
lorsque cela lui est demand´e.
Dix ou vingt chiffres exacts semblent ad´equats pour la plupart des
situations ; cependant, deux probl`emes particuliers limitent s´erieusement
l’utilit´e d’un tel syst`eme.
Tout d’abord, en soustrayant deux nombres d´ecimaux d’ordres de
grandeur presque identiques, l’erreur relative de la diff´erence peut ˆetre
tr`es grande : si chacun des deux nombres originaux sont identiques pour
leurs dix-sept premiers chiffres (sur vingt), leur diff´erence est un nombre
de vingt chiffres dont on ne connaˆıt que trois chiffres significatifs ! Dans
ce cas, une pr´ecision de quarante chiffres serait n´ecessaire pour obtenir en
fin de calcul un r´esultat pr´ecis ` a environ vingt chiffres significatifs.
Ensuite, la forme math´ematique d’un r´esultat est plus concise, com-
pacte et utile que sa valeur num´erique. Par exemple, une fonction expo-
nentielle fournit plus d’information sur la nature d’un ph´enom`ene qu’un
grand ensemble de nombres de vingt chiffres significatifs. Une descrip-
tion analytique exacte peut ´egalement d´eterminer le comportement d’une
fonction en extrapolant ` a des r´egions pour lesquelles aucune donn´ee n’est
disponible.
La commande evalf convertit une expression num´erique exacte en un
nombre d´ecimal.
>
evalf(Pi);
3.141592654
Par d´efaut, Maple calcule le r´esultat ` a l’aide de dix chiffres de pr´eci-
sion ; vous pouvez cependant sp´ecifier un nombre arbitraire de chiffres. Il
suffit de le sp´ecifier apr`es l’expression num´erique en utilisant la notation
suivante.
2.2 Calculs num´eriques • 13
>
evalf(Pi, 200);
3.1415926535897932384626433832795028841`
97169399375105820974944592307816406286`
20899862803482534211706798214808651328`
23066470938446095505822317253594081284`
81117450284102701938521105559644622948`
9549303820
Vous pouvez ´egalement forcer Maple ` a effectuer tous ses calculs avec
des approximations d´ecimales en incluant au moins un nombre d´ecimal
dans chaque expression. Les nombres ` a virgule flottante sont

conta-
gieux

: si une expression contient ne serait-ce qu’un seul nombre d´ecimal,
Maple ´evalue l’expression enti`ere en arithm´etique ` a virgule flottante.
>
1/3 + 1/4 + 1/5.3;
0.7720125786
>
sin(0.2);
.1986693308
Alors que le second argument optionnel de la commande evalf
d´etermine le nombre de chiffres ` a afficher pour ce calcul en particulier, la
variable sp´eciale Digits fixe le nombre de chiffres d´ecimaux pour tous les
calculs subs´equents.
>
Digits := 20;
Digits := 20
>
sin(0.2);
0.19866933079506121546
Digits est maintenant fix´e `a vingt, le nombre de chiffres que Maple
utilisera maintenant pour chaque ´etape d’un calcul. Sur ce plan, Maple
fonctionne comme une calculatrice ou un ordinateur classique. Souvenez-
vous que, lorsque vous ´evaluez une expression num´erique compliqu´ee, des
erreurs peuvent s’accumuler et rendre le r´esultat final moins pr´ecis que
14 • Chapitre 2: Math´ematiques de base avec Maple
les vingt chiffres qu’il contient. En g´en´eral, d´eterminer la valeur que doit
prendre Digits pour obtenir une pr´ecision donn´ee n’est pas chose facile,
le r´esultat final d´ependant du probl`eme. Cependant, il est en g´en´eral de
mise d’en augmenter la valeur pour obtenir plus de pr´ecision. Maple est
tr`es flexible si une grande pr´ecision d´ecimale est importante dans votre
travail.
Arithm´etique avec des nombres sp´eciaux
Maple peut ´egalement travailler avec des nombres complexes. Par ex-
emple, I est le symbole par d´efaut de Maple pour la racine carr´ee de
moins un, c’est-` a-dire I =

−1.
>
(2 + 5*I) + (1 - I);
3 + 4 I
>
(1 + I)/(3 - 2*I);
1
13
+
5
13
I
Vous pouvez aussi travailler sous d’autres bases avec d’autres syst`emes
de nombres.
>
convert(247, binary);
11110111
>
convert(1023, hex);
3FF
>
convert(17, base, 3);
[2, 2, 1]
Maple retourne une conversion en base enti`ere comme une liste de
nombres ; autrement, une ligne de nombres comme 221 peut devenir am-
bigu¨e, sp´ecialement pour de grandes bases. Remarquez que Maple liste
les chiffres dans l’ordre, du plus significatif au moins significatif.
Maple effectue ´egalement l’arithm´etique dans des anneaux finis et des
corps.
2.2 Calculs num´eriques • 15
>
27 mod 4;
3
Les repr´esentations sym´etriques et positives sont ´egalement dispo-
nibles.
>
mods(27,4);
−1
>
modp(27,4);
3
La valeur par d´efaut de la commande mod est la repr´esentation posi-
tive, mais vous pouvez changer cette option (consultez l’´ecran d’aide ?mod
pour plus de d´etails).
Maple peut ´egalement travailler avec les entiers gaussiens. Le package
GaussInt contient une trentaine de commandes permettant de travailler
avec ces nombres sp´eciaux. Tapez ?GaussInt pour plus d’information sur
ces commandes.
Fonctions math´ematiques
Maple connaˆıt toutes les fonctions math´ematiques standard (consultez la
table 2.2 pour une liste partielle).
>
sin(Pi/4);
1
2

2
>
ln(1);
0
Lorsque Maple ne peut trouver une forme plus simple, il laisse l’ex-
pression telle quelle plutˆ ot que de la convertir en une forme inexacte.
>
ln(Pi);
ln(π)
16 • Chapitre 2: Math´ematiques de base avec Maple
Tab. 2.2 – Quelques fonctions math´ematiques connues de Maple
Fonction Description
sin, cos, tan, etc. fonctions trigonom´etriques
sinh, cosh, tanh, etc. fonctions trigonom´etriques
hyperboliques
arcsin, arccos, arctan, etc. fonctions trigonom´etriques
inverses
exp fonction exponentielle
ln logarithme naturel
log[10] logarithme en base 10
sqrt racine carr´ee alg´ebrique
round arrondir ` a l’entier le plus pr`es
trunc tronquer ` a la partie enti`ere
frac partie fractionnaire
BesselI, BesselJ, fonctions de Bessel
BesselK, BesselY
binomial fonction binomiale
erf, erfc fonctions d’erreur et
d’erreur compl´ementaire
Heaviside fonction de Heaviside
Dirac fonction delta de Dirac
MeijerG fonction G de Meijer
Zeta fonction zeta de Riemann
LegendreKc, LegendreKc1,
LegendreEc, LegendreEc1,
LegendrePic, LegendrePic1 int´egrales elliptiques de Legendre
hypergeom fonction hyperg´eom´etrique
2.3 Calculs symboliques de base
Maple sait comment travailler avec des inconnues et des expressions les
contenant.
>
(1 + x)^2;
2.3 Calculs symboliques de base • 17
(1 +x)
2
>
(1 + x) + (3 - 2*x);
4 −x
Remarquez que Maple simplifie automatiquement la seconde expres-
sion.
Maple poss`ede des centaines de commandes pour travailler avec des
expressions symboliques.
>
expand((1 + x)^2);
1 + 2 x +x
2
>
factor(%);
(1 +x)
2
Comme il est mentionn´e `a la section Calculs num´eriques de la page 7,
l’op´erateur idem, %, est une notation abr´eg´ee de la commande pr´ec´edente.
>
Diff(sin(x), x);
d
dx
sin(x)
>
value(%);
cos(x)
>
Sum(n^2, n);
¸
n
n
2
>
value(%);
1
3
n
3

1
2
n
2
+
1
6
n
18 • Chapitre 2: Math´ematiques de base avec Maple
Divisez un polynˆ ome en x par un autre.
>
rem(x^3+x+1, x^2+x+1, x);
2 +x
Cr´eez une s´erie.
>
series(sin(x), x=0, 10);
x −
1
6
x
3
+
1
120
x
5

1
5040
x
7
+
1
362880
x
9
+ O(x
10
)
Toutes les fonctions math´ematiques mentionn´ees dans la section
pr´ec´edente acceptent ´egalement les inconnues comme arguments.
2.4 Affecter des noms `a des expressions
Utiliser l’op´erateur idem ou taper une expression chaque fois que vous
souhaitez l’employer peut s’av´erer fastidieux. C’est pourquoi Maple vous
permet de nommer des objets. Appliquez la syntaxe suivante.
nom := expression ;
Vous pouvez affecter un nom ` a n’importe quelle expression Maple.
>
var := x;
var := x
>
terme := x*y;
terme := xy
Vous pouvez mˆeme donner des noms ` a des ´equations.
>
eqs := x = y + 2;
eqs := x = y + 2
2.4 Affecter des noms `a des expressions • 19
Sous Maple, les noms peuvent contenir n’importe quel caract`ere al-
phanum´erique en plus du caract`ere soulign´e (underscore en anglais),
mais ils ne peuvent pas commencer par un nombre. De plus, ´evitez
de commencer un nom par le caract`ere soulign´e ; Maple utilise ces noms
`a des fins de classification interne. Les noms polynomial, test_data,
RoOt_lOcUs_pLoT et value2 sont des noms Maple valides, tandis que
2ndphase (parce qu’il commence par un nombre) et x&y (parce que &
n’est pas un caract`ere alphanum´erique) sont des noms invalides.
Vous pouvez d´efinir vos propres fonctions ` a l’aide de la notation
fl`eche (->) de Maple. Cela indique ` a Maple comment ´evaluer la fonc-
tion lorsqu’elle apparaˆıt dans les expressions Maple.
`
A ce point de votre
lecture, vous pouvez dessiner des graphiques simples au moyen de la com-
mande plot.
>
f := x -> 2*x^2 -3*x +4;
f := x → 2 x
2
−3 x + 4
>
plot (f(x), x= -5...5);
10
20
30
40
50
60
70
–4 –2 0 2 4
x
Vous en apprendrez davantage sur la commande plot au chapitre 4.
L’op´eration d’affectation (:=) peut ensuite associer le nom d’une fonc-
tion ` a la d´efinition de cette fonction. Le nom de la fonction se place ` a
gauche du signe :=, tandis que sa d´efinition de la fonction (utilisant la
notation fl`eche) est ` a droite. L’expression suivante d´efinit f comme ´etant
la fonction

mettre au carr´e

.
>
f := x -> x^2;
f := x → x
2
20 • Chapitre 2: Math´ematiques de base avec Maple
Puis, en ´evaluant f en un argument, on obtient le carr´e de l’argument
de f.
>
f(5);
25
>
f(y+1);
(y + 1)
2
Tous les noms ne sont pas disponibles comme variables : Maple en a
pr´ed´efini et r´eserv´e quelques-uns. Si vous tentez d’assigner un objet ` a un
nom qui est pr´ed´efini ou r´eserv´e, Maple affiche un message vous informant
que le nom choisi est prot´eg´e.
>
Pi := 3.14;
Error, attempting to assign to ‘Pi‘ which is protected
>
set := {1, 2, 3};
Error, attempting to assign to ‘set‘ which is protected
2.5 Les principaux types d’objets Maple
La pr´esente section examine les principaux types d’objets Maple, incluant
les suites d’expressions, les listes, les ensembles (sets), les tableaux (ar-
rays), les tables (tables) et les chaˆınes (strings).
Les suites d’expressions
La structure de donn´ees de base de Maple est la suite d’expressions.
C’est un groupe d’expressions Maple s´epar´ees par des virgules.
>
1, 2, 3, 4;
1, 2, 3, 4
2.5 Les principaux types d’objets Maple • 21
>
x, y, z, w;
x, y, z, w
Une suite d’expressions n’est ni une liste, ni un ensemble. C’est une
structure de donn´ees particuli`ere qui poss`ede ses caract´eristiques propres.
Par exemple, elle pr´eserve l’ordre et la r´ep´etition des ´el´ements. Les objets
respectent l’ordre dans lequel ils ont ´et´e entr´es et si un objet est entr´e deux
fois, les deux copies demeurent dans la suite. Vous remarquerez d’autres
propri´et´es des suites ` a mesure que vous parcourrez ce manuel. Les suites
sont souvent utilis´ees pour construire d’autres objets complexes par des
op´erations comme la concat´enation.
Les suites permettent d’´etendre les capacit´es de plusieurs op´erations
de base de Maple. Par exemple, la concat´enation est une op´eration de
base permettant de former des noms. L’op´erateur de concat´enation sous
Maple est le

||

, et vous pouvez l’utiliser de la mani`ere suivante.
>
a||b;
ab
Lorsque vous appliquez la concat´enation ` a une s´equence, l’op´eration
touche ` a chacun de ses ´el´ements. Ainsi, pour une suite S, vous pouvez
ajouter ` a un nom a des suffixes form´es de chaque ´el´ement de S en
concat´enant a et S :
>
S := 1, 2, 3, 4;
S := 1, 2, 3, 4
>
a||S;
a1, a2, a3, a4
Vous pouvez aussi effectuer plusieurs assignations en utilisant des
suites d’expressions. Par exemple :
>
f,g,h := 3, 6, 1;
f, g, h := 3, 6, 1
22 • Chapitre 2: Math´ematiques de base avec Maple
>
f;
3
>
h;
1
Les listes
Une liste est form´ee en encadrant un nombre quelconque d’objets Maple
(s´epar´es par des virgules) par des crochets.
>
data_list := [1, 2, 3, 4, 5];
data_list := [1, 2, 3, 4, 5]
>
polynomes := [x^2+3, x^2+3*x-1, 2*x];
polynomes := [x
2
+ 3, x
2
+ 3 x −1, 2 x]
>
participants := [Simon, Martin, Kim, Francois, Sylvain];
participants := [Simon, Martin, Kim, Francois, Sylvain]
Ainsi, une liste est une suite d’expressions encadr´ee par des crochets.
Maple conserve l’ordre et la r´ep´etition des ´el´ements dans une liste.
Ainsi, [a,b,c], [b,c,a] et [a,a,b,c,a] sont trois listes diff´erentes.
>
[a,b,c], [b,c,a], [a,a,b,c,a];
[a, b, c], [b, c, a], [a, a, b, c, a]
La conservation de l’ordre vous permet de retrouver un ´el´ement par-
ticulier d’une liste sans avoir ` a vous soucier d’un possible d´eplacement de
celui-ci.
>
lettres := [a,b,c];
lettres := [a, b, c]
2.5 Les principaux types d’objets Maple • 23
>
lettres[2];
b
Utilisez la commande nops pour d´eterminer le nombre total d’´el´e-
ments d’une liste.
>
nops(lettres);
3
La section Les commandes nops et op de la page 40 traite en pro-
fondeur de cette commande et de ses usages.
Les ensembles
Maple permet la gestion d’ensembles au sens math´ematique du terme.
Tout comme dans une suite ou dans une liste, des virgules s´eparent les
objets ; cependant, les accolades d´esignent l’objet en tant qu’ensemble.
>
data_set := {1, -1, 0, 10, 2};
data_set := ¦−1, 0, 1, 2, 10¦
>
inconnues := {x, y, z};
inconnues := ¦x, y, z¦
Ainsi, un ensemble est une suite d’expressions encadr´ee par des acco-
lades.
Maple ne conserve ni l’ordre, ni la r´ep´etition des ´el´ements dans les
ensembles : ces derniers poss`edent ainsi les mˆemes propri´et´es que leurs
´equivalents math´ematiques. Ainsi, les trois ensembles suivants sont iden-
tiques :
>
{a,b,c}, {c,b,a}, {a,a,b,c,a};
¦a, b, c¦, ¦a, b, c¦, ¦a, b, c¦
Rappelez-vous que, pour Maple, l’entier 2 est distinct de son approxi-
mation num´erique 2.0. L’ensemble suivant contient donc trois ´el´ements,
et non deux.
24 • Chapitre 2: Math´ematiques de base avec Maple
>
{1, 2, 2.0};
¦1, 2, 2.0¦
Les propri´et´es que revˆetent les ensembles font de ceux-ci des outils par-
ticuli`erement utiles dans Maple, tout comme ils le sont en math´ematiques.
Maple fournit plusieurs op´erateurs ensemblistes, incluant les op´erateurs
de base de l’intersection et de l’union en utilisant la notation intersect
et union.
>
{a,b,c} union {c,d,e};
¦a, b, c, d, e¦
>
{1,2,3,a,b,c} intersect {0,1,y,a};
¦1, a¦
La commande nops compte le nombre d’´el´ements d’un ensemble, tout
comme pour une liste.
>
nops(%);
2
Pour plus d’information, consultez la section Les commandes nops
et op de la page 40.
Souvent utilis´ee, la commande map s’av`ere tr`es utile pour les en-
sembles. L’op´eration de correspondance (mapping) vous permet d’appli-
quer une fonction simultan´ement ` a tous les ´el´ements de n’importe quelle
structure.
>
nombres := {0, Pi/3, Pi/2, Pi};
nombres := ¦0, π,
1
3
π,
1
2
π¦
>
map(g, nombres);
¦g(0), g(π), g(
1
3
π), g(
1
2
π)¦
2.5 Les principaux types d’objets Maple • 25
>
map(sin, nombres);
¦0, 1,
1
2


D’autres exemples d´emontrant l’utilisation de map figurent dans la
section La commande map de la page 38 et Appliquer une fonction ` a
une liste ou un ensemble `a la page 174.
Les op´erations sur les ensembles et les listes
La commande member permet de v´erifier l’appartenance d’un objet ` a un
ensemble ou ` a une liste.
>
participants := [JeanSebastien, Sophie, Josee];
participants := [JeanSebastien, Sophie, Josee]
>
member(Sophie, participants);
true
>
data_set := {5, 6, 3, 7};
data_set := ¦3, 5, 6, 7¦
>
member(2, data_set);
false
Pour choisir des ´el´ements depuis une liste, utilisez la notation indic´ee
[n] , o` u n d´esigne la position de l’´el´ement d´esir´e dans la liste.
>
participants[2];
Sophie
Maple reconnaˆıt les ensembles et les listes vides (qui ne contiennent
aucun ´el´ement).
>
empty_set := {};
26 • Chapitre 2: Math´ematiques de base avec Maple
empty_set := ¦¦
>
empty_list := [];
empty_list := []
Vous pouvez cr´eer un nouvel ensemble ` a partir d’autres ensembles ` a
l’aide, par exemple, de la commande union. Supprimez des ´el´ements d’un
ensemble par la commande minus.
>
old_set := {2, 3, 4} union {};
old_set := ¦2, 3, 4¦
>
new_set := old_set union {2, 5};
new_set := ¦2, 3, 4, 5¦
>
third_set := old_set minus {2, 5};
third_set := ¦3, 4¦
Les tableaux
Les tableaux (arrays en anglais) sont une extension d’une autre structure
de donn´ees : la liste. Imaginez une liste comme un groupe d’´el´ements o` u
chacun est associ´e `a un nombre entier positif, son indice, qui repr´esente
sa position dans la liste. La structure de tableau (array) est une
g´en´eralisation de cette id´ee. Chaque ´el´ement est toujours associ´e `a un
indice, mais cet indice n’est pas forc´ement unidimensionnel. De plus, les
indices peuvent ˆetre nuls ou n´egatifs. Vous pouvez ´egalement d´efinir ou
modifier individuellement chacun des ´el´ements d’un tableau sans pour
autant red´efinir ce dernier enti`erement.
On doit d´eclarer le tableau de mani`ere que Maple connaisse le nombre
de dimensions souhait´e.
>
carres := array(1..3);
carres := array(1..3, [])
2.5 Les principaux types d’objets Maple • 27
Assignez des ´el´ements au tableau. Plusieurs commandes peuvent ˆetre
entr´ees ` a la mˆeme invite en autant que chacune d’entre elles se termine
par le deux-points ou le point-virgule.
>
carres[1] := 1; carres[2] := 2^2; carres[3] := 3^2;
carres
1
:= 1
carres
2
:= 4
carres
3
:= 9
Ou, si vous pr´ef´erez, effectuez toutes ces op´erations en mˆeme temps.
>
cubes := array( 1..3, [1,8,27] );
cubes := [1, 8, 27]
Vous pouvez choisir un seul ´el´ement en utilisant la notation appliqu´ee
aux listes.
>
carres[2];
4
Vous devez d´eclarer les tableaux ` a l’avance. Pour afficher le contenu
du tableau, vous devez utiliser une commande comme print.
>
carres;
carres
>
print(carres);
[1, 4, 9]
Le tableau pr´ec´edent ne poss`ede qu’une dimension. Cependant, en
g´en´eral, les tableaux peuvent en avoir plus d’une. D´efinissez un tableau
de dimensions 3 3.
>
pwrs := array(1..3,1..3);
pwrs := array(1..3, 1..3, [])
28 • Chapitre 2: Math´ematiques de base avec Maple
Ce tableau est de dimension deux (deux ensembles d’indices). Assignez
d’abord les ´el´ements de la premi`ere rang´ee.
>
pwrs[1,1] := 1; pwrs[1,2] := 1; pwrs[1,3] := 1;
pwrs
1, 1
:= 1
pwrs
1, 2
:= 1
pwrs
1, 3
:= 1
Poursuivez maintenant avec le reste du tableau. Si vous pr´ef´erez, vous
pouvez terminer chaque commande par le deux-points (:) plutˆ ot que par
le point-virgule habituel (;), pour supprimer l’affichage du r´esultat. Le
deux-points, tout comme le point-virgule, est un s´eparateur de com-
mandes.
>
pwrs[2,1] := 2: pwrs[2,2] := 4: pwrs[2,3] := 8:
>
pwrs[3,1] := 3: pwrs[3,2] := 9: pwrs[3,3] := 27:
>
print(pwrs);

1 1 1
2 4 8
3 9 27
¸
¸
Vous pouvez s´electionner un ´el´ement en sp´ecifiant ` a la fois sa rang´ee
et sa colonne.
>
pwrs[2,3];
8
Vous pouvez d´efinir un tableau bidimensionnel et ses ´el´ements tout ` a
la fois en appliquant une m´ethode similaire ` a celle qui a ´et´e employ´ee pour
l’exemple unidimensionnel montr´e pr´ec´edemment. Pour ce faire, utilisez
des listes imbriqu´ees dans d’autres listes : cr´eez une liste dans laquelle
chaque ´el´ement est une autre liste qui contient les ´el´ements d’une rang´ee
du tableau. Ainsi, vous pouvez d´efinir le tableau pwrs de la mani`ere sui-
vante :
>
pwrs2 := array( 1..3, 1..3, [[1,1,1], [2,4,8], [3,9,27]] );
2.5 Les principaux types d’objets Maple • 29
pwrs2 :=

1 1 1
2 4 8
3 9 27
¸
¸
Les tableaux ne sont pas limit´es `a deux dimensions ; cependant, ceux
qui contiennent plus de deux dimensions sont difficiles ` a afficher. Si vous
le souhaitez, vous pouvez ´egalement d´eclarer les ´el´ements du tableau en
mˆeme temps que vous d´eclarez le tableau lui-mˆeme.
>
tableau3 := array( 1..2, 1..2, 1..2,
>
[[[1,2],[3,4]], [[5,6],[7,8]]] );
tableau3 := array(1..2, 1..2, 1..2, [
(1, 1, 1) = 1
(1, 1, 2) = 2
(1, 2, 1) = 3
(1, 2, 2) = 4
(2, 1, 1) = 5
(2, 1, 2) = 6
(2, 2, 1) = 7
(2, 2, 2) = 8
])
Maple n’´etend pas automatiquement le nom d’un tableau ` a la
repr´esentation de tous ses ´el´ements. Ainsi, pour certaines commandes,
vous devez sp´ecifier que vous souhaitez effectuer une op´eration sur les
´el´ements.
Supposons que vous souhaitez remplacer chaque apparition du
nombre 2 dans pwrs par le nombre 9. Pour effectuer des substitutions
de ce genre, utilisez la commande subs. Sa syntaxe de base est la sui-
vante :
subs( x=expr1, y=expr2, ... , expr_principale )
Par exemple, supposons que vous souhaitez remplacer z par x + y dans
une ´equation.
>
expr := z^2 + 3;
expr := z
2
+ 3
30 • Chapitre 2: Math´ematiques de base avec Maple
>
subs( {z=x+y}, expr);
(x +y)
2
+ 3
Cependant, vous pourriez ˆetre d´e¸cu de d´ecouvrir que la commande
suivante ne fonctionne pas.
>
subs( {2=9}, pwrs );
pwrs
En effet, vous devez forcer Maple ` a ´evaluer compl`etement le nom du
tableau tant pour ce qui est de ses composantes que pour ce qui regarde
son nom, en utilisant la commande d’´evaluation de matrices evalm.
>
subs( {2=9}, evalm(pwrs) );

1 1 1
9 4 8
3 9 27
¸
¸
Non seulement cette commande permet la substitution des ´el´ements
comme il est souhait´e, mais encore l’´evaluation compl`ete affiche ´egalement
les ´el´ements du tableau, de la mˆeme mani`ere que grˆ ace `a la commande
print.
>
evalm(pwrs);

1 1 1
2 4 8
3 9 27
¸
¸
Les tables
Une table est une extension de tableau.
`
A la diff´erence d’un tableau, les
indices d’une table peuvent ˆetre quelconques, et non seulement limit´es `a
des nombres entiers.
>
traduit := table([one=un,two=deux,three=trois]);
traduit := table([two = deux, three = trois, one = un])
2.5 Les principaux types d’objets Maple • 31
>
traduit[two];
deux
Mˆeme si les tables semblent ` a premi`ere vue revˆetir peu d’int´erˆet,
elles sont en fait des structures puissantes. Les tables vous permettent
de travailler avec des notations naturelles dans vos structures de donn´ees.
Par exemple, vous pouvez afficher les propri´et´es physiques de certains
mat´eriaux en utilisant une table Maple.
>
earth_data := table( [ mass=[5.976*10^24,kg],
>
radius=[6.378164*10^6,m],
>
circumference=[4.00752*10^7,m] ] );
earth_data := table([radius = [.6378164000 10
7
, m],
circumference = [.4007520000 10
8
, m],
mass = [.5976000000 10
25
, kg]
])
>
earth_data[mass];
[.5976000000 10
25
, kg]
Dans cet exemple, chacun des indices est un nom et chaque entr´ee est
une liste. Ce n’est en fait qu’un exemple tr`es simple ; la plupart du temps,
des indices beaucoup plus g´en´eraux sont pr´ef´erables. Ainsi, vous pourriez
construire une table dont les indices sont des formules alg´ebriques et dont
les valeurs sont les d´eriv´ees de ces formules.
Les chaınes
Une chaıne est un autre objet Maple cr´e´e en encadrant un nombre quel-
conque de caract`eres par des guillemets anglais.
>
"Ceci est une chaine.";
“Ceci est une chaine.”
Les chaˆınes sont des unit´es indivisibles que l’on peut consid´erer comme
des constantes : on ne peut leur assigner une valeur.
>
"mon age" := 22;
Error, invalid left hand side of assignment
32 • Chapitre 2: Math´ematiques de base avec Maple
Comme les ´el´ements des listes ou des tableaux, on peut acc´eder indivi-
duellement aux diff´erents caract`eres d’une chaˆıne en utilisant la notation
des crochets.
>
mystr := "I ate the whole thing.";
mystr := “I ate the whole thing.”
>
mystr[11..-2];
“whole thing”
L’op´erateur de concat´enation (“||”) ou la commande cat sont utilis´es
pour joindre deux chaˆınes ensemble. La commande length, de son cˆ ot´e,
est employ´ee pour d´eterminer le nombre de caract`eres dans une chaˆıne.
>
newstr := cat("I can’t believe ", mystr);
newstr := “I can’t believe I ate the whole thing.”
>
length(newstr);
38
Il existe plusieurs autres commandes qui agissent sur des chaˆınes et
d’autres encore qui prennent des chaˆınes comme arguments. Pour d’autres
exemples, reportez-vous ` a l’´ecran d’aide ?StringTools.
2.6 La manipulation d’expressions
De nombreuses commandes Maple permettent la manipulation d’expres-
sions. Il vous est ainsi possible de transformer les r´esultats de commandes
Maple en des formes famili`eres, ou encore de manipuler vos propres ex-
pressions en des formes que Maple peut reconnaˆıtre. Dans cette section,
vous apprendrez les commandes les plus couramment utilis´ees `a cet effet.
2.6 La manipulation d’expressions • 33
La commande simplify
Vous pouvez choisir cette commande pour appliquer des r`egles de simpli-
fication ` a une expression. Maple connaˆıt certaines r`egles de simplification
pour divers types d’expressions et de formes comme les fonctions trigo-
nom´etriques, les radicaux, les fonctions logarithmiques, les fonctions ex-
ponentielles, les puissances ainsi que plusieurs autres fonctions sp´eciales.
>
expr := cos(x)^5 + sin(x)^4 + 2*cos(x)^2
>
- 2*sin(x)^2 - cos(2*x);
expr :=
cos(x)
5
+ sin(x)
4
+ 2 cos(x)
2
−2 sin(x)
2
−cos(2 x)
>
simplify(expr);
cos(x)
5
+ cos(x)
4
Pour effectuer seulement un certain type de simplification, sp´ecifiez le
type souhait´e.
>
simplify(sin(x)^2 + ln(2*y) + cos(x)^2);
1 + ln(2) + ln(y)
>
simplify(sin(x)^2 + ln(2*y) + cos(x)^2, ’trig’);
1 + ln(2 y)
>
simplify(sin(x)^2 + ln(2*y) + cos(x)^2, ’ln’);
sin(x)
2
+ ln(2) + ln(y) + cos(x)
2
Avec les relations accessoires (side relations), vous pouvez
´egalement appliquer vos propres r`egles de simplification.
>
siderel := {sin(x)^2 + cos(x)^2 = 1};
siderel := ¦sin(x)
2
+ cos(x)
2
= 1¦
>
trig_expr := sin(x)^3 - sin(x)*cos(x)^2 + 3*cos(x)^3;
34 • Chapitre 2: Math´ematiques de base avec Maple
trig_expr := sin(x)
3
−sin(x) cos(x)
2
+ 3 cos(x)
3
>
simplify(trig_expr, siderel);
2 sin(x)
3
−3 cos(x) sin(x)
2
+ 3 cos(x) −sin(x)
La commande factor
La commande factor factorise les expressions polynomiales.
>
big_poly := x^5 - x^4 - 7*x^3 + x^2 + 6*x;
big_poly := x
5
−x
4
−7 x
3
+x
2
+ 6 x
>
factor(big_poly);
x(x −1) (x −3) (x + 2) (x + 1)
>
rat_expr := (x^3 - y^3)/(x^4 - y^4);
rat_expr :=
x
3
−y
3
x
4
−y
4
Le num´erateur et le d´enominateur contiennent tous les deux le facteur
commun x −y ; ainsi, la factorisation annule ces termes.
>
factor(rat_expr);
x
2
+xy +y
2
(y +x) (x
2
+y
2
)
Maple peut factoriser les polynˆ omes univari´es et multivari´es sur le
domaine de coefficients sp´ecifi´e. Vous pouvez ´egalement factoriser les
polynˆ omes sur des extensions alg´ebriques. Voyez ?factor pour plus de
d´etails ` a ce sujet.
La commande expand
Essentiellement, la commande expand est l’inverse de la commande
factor. Elle permet l’expansion de termes multipli´es de mˆeme que plu-
sieurs autres expansions. Pour cette raison, expand figure parmi les com-
mandes de manipulation les plus utiles. Bien que l’on puisse imaginer par
2.6 La manipulation d’expressions • 35
son nom que le r´esultat qu’elle produit soit plus long et plus complexe que
l’expression originale, il n’en est pas toujours ainsi. En fait, l’expansion
de certaines expressions permet de grandes simplifications.
>
expand((x+1)*(x+2));
x
2
+ 3 x + 2
>
expand(sin(x+y));
sin(y) cos(x) + cos(y) sin(x)
>
expand(exp(a+ln(b)));
e
a
b
La commande expand est tr`es flexible ; non seulement il est pos-
sible de pr´eciser que certaines sous-expressions doivent ˆetre laiss´ees telles
quelles au cours de l’expansion, mais des r`egles d’expansion personnalis´ees
peuvent ´egalement ˆetre programm´ees.
Lorsqu’on utilise Maple pour la premi`ere fois, on est port´e `a croire que
la commande simplify est la commande la plus utile. Malheureusement,
le mot simplify est plutˆ ot vague. Lorsqu’on lui demande de simplifier une
expression, Maple examine cette derni`ere, essaie plusieurs techniques, puis
tente d’appliquer la r`egle de simplification la plus appropri´ee. Cela peut
prendre du temps. De plus, Maple peut ne pas ˆetre en mesure de devi-
ner ce que vous souhaitez accomplir, puisque aucune r`egle math´ematique
universelle ne d´efinit ce qui est

plus simple

.
Lorsque vous connaissez quelles manipulations rendront votre expres-
sion plus simple ` a vos yeux, sp´ecifiez-les directement. En particulier, la
commande expand figure parmi les plus utiles. Elle permet souvent une
simplification substantielle des expressions et reformule ces derni`eres sous
une forme pratique pour plusieurs autres commandes.
La commande convert
Cette commande convertit les expressions entre diff´erentes formes.
>
convert(cos(x),exp);
1
2
e
(I x)
+
1
2
1
e
(I x)
36 • Chapitre 2: Math´ematiques de base avec Maple
Tab. 2.3 – Conversions courantes
Argument Description
polynom d’une s´erie ` a un polynˆ ome
exp, expln, expsincos d’une expression trigonom´etrique ` a une
forme exponentielle
parfrac d’une expression rationnelle ` a une
fraction partielle
rational d’un nombre ` a virgule flottante ` a une
forme rationnelle
radians, degrees des degr´es aux radians
set, list, listlist entre diff´erentes structures de donn´ees
>
convert(1/2*exp(x) + 1/2*exp(-x),trig);
cosh(x)
>
A := Matrix([[a,b],[c,d]]);
A :=
¸
a b
c d

>
convert(A, ’listlist’);
[[a, b], [c, d]]
>
convert(A, ’set’);
¦a, b, c, d¦
>
convert(%, ’list’);
[a, b, c, d]
2.6 La manipulation d’expressions • 37
La commande normal
Cette commande transforme les expressions rationnelles en forme nor-
male factoris´ee (factored normal form),
num´erateur
d´enominateur
o` u num´erateur et d´enominateur sont deux polynˆ omes relativement pre-
miers ` a coefficients entiers. Ainsi, la commande normal met les fractions
au mˆeme d´enominateur.
>
rat_expr_2 := (x^2 - y^2)/(x - y)^3 ;
rat_expr_2 :=
x
2
−y
2
(−y +x)
3
>
normal(rat_expr_2);
y +x
(−y +x)
2
>
normal(rat_expr_2, ’expanded’);
y +x
y
2
−2 xy +x
2
L’option expanded transforme les expressions rationnelles en forme
normale factoris´ee.
La commande combine
Cette commande combine les termes de sommes, de produits et de puis-
sances en un seul terme. Ces transformations sont, dans plusieurs cas,
l’inverse des transformations appliqu´ees par la commande expand.
>
combine(exp(x)^2*exp(y),exp);
e
(2 x+y)
>
combine((x^a)^2, power);
x
(2 a)
38 • Chapitre 2: Math´ematiques de base avec Maple
La commande map
Cette commande est tr`es utile lorsque vous travaillez sur des listes, des en-
sembles et des tableaux. Elle fournit un moyen commode de g´erer plusieurs
solutions ou d’appliquer une op´eration ` a chaque ´el´ement d’un tableau. La
commande map applique une commande ` a chaque ´el´ement de la structure
de donn´ees ou de l’expression fournie. Mˆeme s’il est possible d’´ecrire des
boucles dans un programme pour accomplir ces tˆ aches, l’utilit´e et la puis-
sance de la commande map ne devraient pas ˆetre sous-estim´ees. Prenez le
temps n´ecessaire pour vous assurer que vous connaissez bien l’utilisation
de map, l’une des plus puissantes fonctions de Maple.
>
map( f, [a,b,c] );
[f(a), f(b), f(c)]
>
data_list := [0, Pi/2, 3*Pi/2, 2*Pi];
data_list := [0,
1
2
π,
3
2
π, 2 π]
>
map(sin, data_list);
[0, 1, −1, 0]
Si vous donnez ` a la commande map plus de deux arguments, Maple
passe les derniers ` a la commande initiale.
>
map( f, [a,b,c], x, y );
[f(a, x, y), f(b, x, y), f(c, x, y)]
Par exemple, pour d´eriver chaque ´el´ement d’une liste par rapport ` a
x, vous pouvez utiliser les commandes suivantes :
>
fcn_list := [sin(x),ln(x),x^2];
fcn_list := [sin(x), ln(x), x
2
]
>
map(Diff, fcn_list, x);
[
d
dx
sin(x),
d
dx
ln(x),
d
dx
x
2
]
2.6 La manipulation d’expressions • 39
>
map(value, %);
[cos(x),
1
x
, 2 x]
Non seulement la proc´edure peut ˆetre une commande existante, mais
vous pouvez ´egalement cr´eer une op´eration ` a appliquer sur une liste. Par
exemple, supposons que vous voulez mettre au carr´e chaque ´el´ement d’une
liste.
>
map(x->x^2, [-1,0,1,2,3]);
[1, 0, 1, 4, 9]
Les commandes lhs et rhs
Ces deux commandes vous permettent de prendre respectivement le cˆ ot´e
gauche (left-hand side) et le cˆ ot´e droit (right-hand side) d’une expres-
sion.
>
eqn1 := x+y=z+3;
eqn1 := y +x = z + 3
>
lhs(eqn1);
y +x
>
rhs(eqn1);
z + 3
Les commandes numer et denom
Ces deux commandes servent ` a extraire respectivement le num´erateur et
le d´enominateur d’une expression rationnelle.
>
numer(3/4);
3
>
denom(1/(1 + x));
40 • Chapitre 2: Math´ematiques de base avec Maple
x + 1
Les commandes nops et op
Ces deux commandes s’av`erent utiles pour diviser des expressions en plu-
sieurs parties et en extraire les sous-expressions.
La commande nops vous indique combien de parties contient une ex-
pression.
>
nops(x^2);
2
>
nops(x + y + z);
3
La commande op vous permet d’acc´eder aux diff´erentes parties d’une
expression, qu’elle retourne sous forme de suite d’expressions.
>
op(x^2);
x, 2
Vous pouvez ´egalement acc´eder ` a des ´el´ements en particulier en
sp´ecifiant leur indice, ou une plage d’indices.
>
op(1, x^2);
x
>
op(2, x^2);
2
>
op(2..-2, x+y+z+w);
y, z
2.6 La manipulation d’expressions • 41
Questions courantes sur la manipulation d’expressions
Comment substituer un produit de deux inconnues ? Utilisez les rela-
tions accessoires pour sp´ecifier une

identit´e

. La substituion directe ne
fonctionne g´en´eralement pas, puisque Maple cherche une correspondance
exacte avant de remplacer.
>
expr := a^3*b^2;
expr := a
3
b
2
>
subs(a*b=5, expr);
a
3
b
2
Ici, la commande subs a ´echou´e dans sa tentative de substitution.
Utilisez la commande simplify pour obtenir la r´eponse souhait´ee.
>
simplify(expr, {a*b=5});
25 a
Vous pouvez ´egalement essayer la commande algsubs, qui effectue
une substitution alg´ebrique.
>
algsubs(a*b=5, expr);
25 a
Pourquoi le r´esultat de simplify n’est-il pas sous sa forme la plus
simple ? Par exemple :
>
expr2 := cos(x)*(sec(x)-cos(x));
expr2 := cos(x) (sec(x) −cos(x))
>
simplify(expr2);
1 −cos(x)
2
La forme attendue ´etait sin(x)
2
.
42 • Chapitre 2: Math´ematiques de base avec Maple
Encore une fois, utilisez les relations accessoires pour sp´ecifier l’iden-
tit´e.
>
simplify(%, {1-cos(x)^2=sin(x)^2});
sin(x)
2
La question de la simplification est compliqu´ee en raison de la dif-
ficult´e `a d´efinir ce qu’est une forme

simple

pour une expression. La
conception d’une forme simple pour un utilisateur peut ˆetre tr`es diff´erente
de celle d’un autre utilisateur ; de plus, l’id´ee d’une forme la plus simple
peut varier d’une situation ` a l’autre.
Comment mettre en ´evidence la constante dans 2x + 2y ? Actuel-
lement, cette op´eration n’est pas possible dans Maple puisque son sim-
plificateur distribue automatiquement le nombre sur le produit, croyant
qu’une somme est plus simple qu’un produit. Dans la plupart des cas, cela
est vrai.
Si vous entrez l’expression
>
2*(x + y);
2 x + 2 y
vous remarquez que Maple multiplie automatiquement la constante dans
l’expression.
Comment peut-on alors g´erer de telles expressions, lorsque l’on doit
mettre des constantes ou des signes n´egatifs en ´evidence ? Advenant le
besoin de factoriser ces expressions, utilisez la prochaine substitution.
>
expr3 := 2*(x + y);
expr3 := 2 x + 2 y
>
subs( 2=deux, expr3 );
xdeux +y deux
>
factor(%);
deux (x +y)
2.7 Conclusion • 43
2.7 Conclusion
Dans ce chapitre, vous avez vu plusieurs des types d’objets que Maple
peut manipuler : les suites, les ensembles et les listes. Vous avez ´egalement
vu plusieurs commandes, dont expand, factor et simplify, qui figurent
parmi les plus utiles pour manipuler et simplifier des expressions alg´e-
briques. D’autres, comme map, sont utiles pour les ensembles, les listes et
les tableaux. De son cˆ ot´e, la commande subs sert dans presque toutes les
situations.
Dans le prochain chapitre, vous apprendrez ` a manipuler ces concepts
pour aborder un des probl`emes fondamentaux des math´ematiques : la
r´esolution des syst`emes d’´equations.
`
A mesure que vous apprendrez de
nouvelles commandes, observez comment les concepts de ce chapitre sont
utilis´es pour poser les probl`emes et manipuler leurs solutions.
44 • Chapitre 2: Math´ematiques de base avec Maple
3 Trouver des solutions
Ce chapitre introduit les concepts cl´es n´ecessaires ` a une r´esolution de
probl`emes rapide et efficace dans Maple. En apprenant comment utiliser
des outils comme solve, map, subs et unapply, vous gagnerez du temps
et ´economiserez de nombreux efforts. De plus, le pr´esent chapitre examine
l’interaction entre ces diff´erentes commandes.
3.1 R´esolution au moyen de solve
La commande solve de Maple est un solveur d’´equations tout usage.
Dans un ensemble d’une ou de plusieurs ´equations, solve tente de
r´esoudre le syst`eme de mani`ere exacte pour l’ensemble d’inconnues
sp´ecifi´e. (Souvenez-vous que, dans la section Les ensembles de la page 23,
on utilisait les accolades pour encadrer les ´el´ements d’un ensemble.) Dans
les exemples suivants, vous r´esolvez une ´equation pour une inconnue, et
chaque ensemble contient cons´equemment un seul ´el´ement.
>
solve({x^2=4}, {x});
¦x = 2¦, ¦x = −2¦
>
solve({a*x^2+b*x+c=0}, {x});
¦x =
1
2
−b +

b
2
−4 a c
a
¦, ¦x =
1
2
−b −

b
2
−4 a c
a
¦
Maple retourne chaque solution possible sous forme d’un ensemble.
Puisque les deux ´equations pr´ec´edentes poss`edent deux solutions, Maple
45
46 • Chapitre 3: Trouver des solutions
retourne une suite d’ensembles solutions. Si aucune inconnue n’est
sp´ecifi´ee dans l’´equation, Maple r´esout pour toutes celles-ci.
>
solve({x+y=0});
¦x = −y, y = y¦
Ici, une seule solution est obtenue, contenant deux ´equations. Ce
r´esultat signifie que y peut prendre n’importe quelle valeur, tandis que x
est l’oppos´e de y. Cette solution est param´etris´ee par rapport ` a y.
Si vous donnez une expression plutˆ ot qu’une ´equation, Maple assume
automatiquement que l’´equation est ´egale ` a z´ero.
>
solve({x^3-13*x+12}, {x});
¦x = 1¦, ¦x = 3¦, ¦x = −4¦
La commande solve peut ´egalement g´erer les syst`emes d’´equations.
>
solve({x+2*y=3, y+1/x=1}, {x,y});
¦x = −1, y = 2¦, ¦x = 2, y =
1
2
¦
Mˆeme si les accolades (d´enotant un ensemble) ne sont obligatoires ni
autour de l’´equation, ni autour de la variable, leur utilisation force Maple
`a retourner la solution sous la forme d’un ensemble, ce qui repr´esente
g´en´eralement la mani`ere la plus commode. En effet, la premi`ere chose ` a
faire avec une solution est g´en´eralement de la v´erifier en la substituant
`a nouveau dans les ´equations originales. L’exemple suivant montre cette
proc´edure.
´
Etant un ensemble d’´equations, la solution est une forme id´eale pour
la commande subs. Vous pouvez d’abord donner un nom ` a l’ensemble
d’´equations, par exemple eqns.
>
eqns := {x+2*y=3, y+1/x=1};
eqns := ¦x + 2 y = 3, y +
1
x
= 1¦
Puis, r´esolvez.
>
soln := solve( eqns, {x,y} );
3.1 R´esolution au moyen de solve • 47
soln := ¦x = −1, y = 2¦, ¦x = 2, y =
1
2
¦
Cela produit deux solutions : d’abord,
>
soln[1];
¦x = −1, y = 2¦
et ensuite,
>
soln[2];
¦x = 2, y =
1
2
¦
V´erifier les solutions
Pour v´erifier les solutions ainsi produites, il suffit de les substituer ` a nou-
veau dans l’ensemble d’´equations original en utilisant la commande eval.
>
eval( eqns, soln[1] );
¦3 = 3, 1 = 1¦
>
eval( eqns, soln[2] );
¦3 = 3, 1 = 1¦
Vous d´ecouvrirez que cette m´ethode de v´erification est g´en´eralement
la plus commode.
Remarquez que cette application de la commande eval se prˆete `a
d’autres usages. Supposons que vous voulez extraire la valeur de x de la
premi`ere solution. Encore une fois, la commande eval s’av`ere le meilleur
outil.
>
x1 := eval( x, soln[1] );
x1 := −1
Vous pouvez ´egalement extraire la premi`ere solution pour y.
>
y1 := eval(y, soln[1]);
48 • Chapitre 3: Trouver des solutions
y1 := 2
Vous pouvez mˆeme appliquer ce truc d’´evaluation pour convertir
des ensembles solutions sous d’autres formes. Par exemple, vous pou-
vez construire une liste (list) `a partir de la premi`ere solution, o` u x sera
le premier ´el´ement et y le second. D’abord, construisez une liste dont
les variables sont dans le mˆeme ordre que souhait´e dans les solutions
correspondantes.
>
[x,y];
[x, y]
Puis, ´evaluez simplement cette liste ` a la premi`ere solution.
>
eval([x,y], soln[1]);
[−1, 2]
La premi`ere solution est maintenant une liste.
Si vous pr´ef´erez obtenir d’abord la solution pour y dans la liste, ´evaluez
[y,x] `a la solution.
>
eval([y,x], soln[1]);
[2, −1]
Puisque, typiquement, Maple retourne ses solutions sous la forme
d’ensembles (dans lesquels l’ordre des objets est incertain), il est utile
de se souvenir de cette m´ethode d’extraction des solutions.
Une autre commande utile, map, vous permet d’appliquer une op´era-
tion ` a toutes les solutions. Par exemple, essayez de substituer les deux
solutions.
La commande map applique l’op´eration sp´ecifi´ee comme premier ar-
gument ` a son deuxi`eme argument.
>
map(f, [a,b,c], y, z);
[f(a, y, z), f(b, y, z), f(c, y, z)]
3.1 R´esolution au moyen de solve • 49
En raison de la syntaxe de map, cette derni`ere ne peut appliquer en
mˆeme temps plusieurs fonctions ` a des suites. Par exemple, consid´erez la
suite de solutions pr´ec´edente.
>
soln;
¦y = 2, x = −1¦, ¦y =
1
2
, x = 2¦
Encadrez soln par des crochets pour la convertir en liste (list).
>
[soln];
[¦y = 2, x = −1¦, ¦y =
1
2
, x = 2¦]
Maintenant, utilisez la commande suivante pour substituer chacune
des solutions simultan´ement dans les ´equations originales, eqns.
>
map(subs, [soln], eqns);
[¦3 = 3, 1 = 1¦, ¦3 = 3, 1 = 1¦]
Cette m´ethode peut s’av´erer pr´ecieuse si votre ´equation poss`ede plu-
sieurs solutions, ou si vous n’ˆetes pas certain du nombre de solutions
qu’une certaine commande produira.
Restreindre les solutions
Vous pouvez limiter les solutions en sp´ecifiant les in´egalit´es au moyen de
la commande solve.
>
solve({x^2=y^2},{x,y});
¦x = −y, y = y¦, ¦x = y, y = y¦
>
solve({x^2=y^2, x<>y},{x,y});
¦x = −y, y = y¦
Consid´erez ce syst`eme de cinq ´equations ` a cinq inconnues.
50 • Chapitre 3: Trouver des solutions
>
eqn1 := x+2*y+3*z+4*t+5*u=41:
>
eqn2 := 5*x+5*y+4*z+3*t+2*u=20:
>
eqn3 := 3*y+4*z-8*t+2*u=125:
>
eqn4 := x+y+z+t+u=9:
>
eqn5 := 8*x+4*z+3*t+2*u=11:
R´esolvez maintenant le syst`eme pour toutes ses variables.
>
s1 := solve({eqn1,eqn2,eqn3,eqn4,eqn5}, {x,y,z,t,u});
s1 := ¦x = 2, t = −11, z = −1, y = 3, u = 16¦
Vous pouvez ´egalement choisir de r´esoudre pour un sous-ensemble des
inconnues ; Maple retourne ensuite les solutions en fonction des autres
inconnues.
>
s2 := solve({eqn1,eqn2,eqn3}, { x, y, z});
s2 := ¦x = −
527
13
−7 t −
28
13
u, z = −
70
13
−7 t −
59
13
u,
y =
635
13
+ 12 t +
70
13

Explorer les solutions
Vous pouvez explorer les solutions param´etriques calcul´ees `a la fin de la
section pr´ec´edente. Par exemple, ´evaluez la solution en u = 1 et t = 1.
>
eval( s2, {u=1,t=1} );
¦x =
−646
13
, z =
−220
13
, y =
861
13
¦
Tout comme ` a la page 47, supposons que vous n´ecessitiez que les cinq
solutions trouv´ees par solve soient plac´ees dans un ordre particulier.
Puisqu’il est impossible de fixer l’ordre des ´el´ements dans un ensemble,
solve ne retournera pas n´ecessairement les solutions dans l’ordre x, y, z.
Cependant, les listes pr´eservent l’ordre de leurs ´el´ements ; ainsi, essayez
la commande suivante.
>
eval( [x,y,z], s2 );
[−
527
13
−7 t −
28
13
u,
635
13
+ 12 t +
70
13
u, −
70
13
−7 t −
59
13
u]
3.1 R´esolution au moyen de solve • 51
Non seulement cette commande a fix´e l’ordre des solutions, mais elle
en a ´egalement extrait le cˆ ot´e droit de l’´egalit´e (puisque vous connais-
sez toujours quelle solution s’applique ` a quelle variable en raison de leur
ordre). Cette possibilit´e est particuli`erement utile lorsque vous souhaitez
tracer la surface qui repr´esente la solution.
>
plot3d(%, u=0..2, t=0..2, axes=BOXED);
–58
–56
–54
–52
–50
–48
–46
–44
–42
50
55
60
65
70
75
80
–25
–20
–15
–10
–5
La commande unapply
Supposez que vous souhaitez explorer encore davantage. Par souci de com-
modit´e, d´efinissez x = x(u, t), y = y(u, t) et z = z(u, t) (c.-` a-d. convertis-
sez les solutions en fonctions). Souvenez-vous que vous pouvez facilement
choisir l’expression d’une solution pour une variable particuli`ere en uti-
lisant eval.
>
eval( x, s2 );

527
13
−7 t −
28
13
u
Cependant, cela est une expression pour x, et non une fonction.
>
x(1,1);
x(1, 1)
Pour transformer l’expression en une fonction, il faut utiliser une autre
commande tr`es importante, unapply. Pour ce faire, il suffit de fournir ` a
unapply l’expression et les variables ` a partir desquelles Maple doit faire
une fonction. Ainsi, par exemple,
>
f := unapply(x^2 + y^2 + 4, x, y);
52 • Chapitre 3: Trouver des solutions
f := (x, y) → x
2
+y
2
+ 4
produit la fonction f de x et y, qui fait correspondre ` a un couple (x, y) le
polynˆ ome x
2
+y
2
+ 4. Cette nouvelle fonction est facile ` a utiliser.
>
f(a,b);
a
2
+b
2
+ 4
Ainsi, pour transformer la solution pour x en une fonction ` a la fois de
u et de t, la premi`ere ´etape consiste ` a obtenir l’expression pour x, comme
il a ´et´e mentionn´e pr´ec´edement.
>
eval(x, s2);

527
13
−7 t −
28
13
u
Puis, on doit utiliser unapply pour transformer cette expression en
une fonction de u et de t.
>
x := unapply(%, u, t);
x := (u, t) → −
527
13
−7 t −
28
13
u
>
x(1,1);
−646
13
On cr´ee les fonctions y et z de la mˆeme mani`ere.
>
eval(y,s2);
635
13
+ 12 t +
70
13
u
>
y := unapply(%,u,t);
y := (u, t) →
635
13
+ 12 t +
70
13
u
3.1 R´esolution au moyen de solve • 53
>
eval(z,s2);

70
13
−7 t −
59
13
u
>
z := unapply(%, u, t);
z := (u, t) → −
70
13
−7 t −
59
13
u
>
y(1,1), z(1,1);
861
13
,
−220
13
La commande assign
La commande assign permet ´egalement d’affecter des valeurs ` a des in-
connues. Par exemple, plutˆ ot que de d´efinir x, y et z en tant que fonc-
tions, assignez chacune d’elles ` a l’expression du cˆ ot´e droit de l’´egalit´e de
l’´equation correspondante.
>
assign( s2 );
>
x, y, z;

527
13
−7 t −
28
13
u,
635
13
+ 12 t +
70
13
u, −
70
13
−7 t −
59
13
u
Souvenez-vous de assign comme ´etant la commande permettant de
transformer le signe

=

de la solution en un signe

:=

.
La commande assign est utile pour assigner des noms aux expres-
sions. Cependant, rappelez-vous que meme si cette commande est
utile pour rapidement assigner des noms aux solutions, elle ne peut
cr´eer de fonctions.
Le prochain exemple comprend la r´esolution d’´equations diff´eren-
tielles, dont la section 3.6 discute plus en d´etail. Pour commencer, assignez
un nom ` a la solution.
>
s3 := dsolve( {diff(f(x),x)=6*x^2+1, f(0)=0}, {f(x)} );
54 • Chapitre 3: Trouver des solutions
s3 := f(x) = 2 x
3
+x
>
assign( s3 );
Il vous reste cependant ` a cr´eer une fonction.
>
f(x);
2 x
3
+x
produit la r´eponse attendue ; cependant, malgr´e les apparences, f(x) est
simplement le nom de l’expression 2x
3
+x, et non une fonction. Appelez
la fonction f en utilisant un argument autre que x.
>
f(1);
f(1)
La raison de ce comportement en apparence ´etrange vient du fait que
assign demande ` a Maple l’affectation
>
f(x) := 2*x^3 + x;
f(x) := 2 x
3
+x
qui n’est pas du tout semblable ` a l’affectation
>
f := x -> 2*x^3 + x;
f := x → 2 x
3
+x
La premi`ere d´efinit seulement la valeur de la fonction f pour l’argu-
ment sp´ecial x; la seconde d´efinit la fonction f: x → 2x
3
+ x de mani`ere
`a fonctionner, que l’on ´ecrive f(x), f(y) ou f(1).
Pour d´efinir la solution f comme une fonction de x, utilisez unapply.
>
eval(f(x),s3);
2 x
3
+x
3.1 R´esolution au moyen de solve • 55
>
f := unapply(%, x);
f := x → 2 x
3
+x
>
f(1);
3
La commande RootOf
`
A l’occasion, Maple retourne ses solutions ` a l’aide de la commande
RootOf. Consid´erons l’exemple suivant.
>
solve({x^5 - 2*x + 3 = 0},{x});
¦x = RootOf(_Z
5
−2 _Z + 3, index = 1)¦,
¦x = RootOf(_Z
5
−2 _Z + 3, index = 2)¦,
¦x = RootOf(_Z
5
−2 _Z + 3, index = 3)¦,
¦x = RootOf(_Z
5
−2 _Z + 3, index = 4)¦,
¦x = RootOf(_Z
5
−2 _Z + 3, index = 5)¦
RootOf(expr) est un nom g´en´erique pour toutes les racines de expr,
et _Z est un nom g´en´erique pour x. Cela signifie que x est une racine
du polynˆ ome z
5
−2z +3, o` u le param`etre index num´erote et ordonne les
solutions. Cela peut s’av´erer fort utile lorsqu’on fait de l’alg`ebre sur un
corps diff´erent des nombres complexes. En utilisant la commande evalf,
vous obtenez une forme explicite des racines complexes.
>
evalf(%);
¦x = .9585321812 +.4984277790 I¦,
¦x = −.2467292569 + 1.320816347 I¦,
¦x = −1.423605849¦,
¦x = −.2467292569 −1.320816347 I¦,
¦x = .9585321812 −.4984277790 I¦
Une expression g´en´erale pour d´esigner les racines des polynˆ omes de
degr´e cinq sous forme de radicaux n’existe pas.
56 • Chapitre 3: Trouver des solutions
3.2 R´esoudre num´eriquement : fsolve
La commande fsolve est l’´equivalent num´erique de solve. Elle trouve
les racines d’une ou de plusieurs ´equations en utilisant une variante de la
m´ethode de Newton, et produit des solutions num´eriques approxim´ees.
>
fsolve({cos(x)-x = 0}, {x});
¦x = .7390851332¦
Pour une ´equation g´en´erale, fsolve cherche une racine r´eelle simple.
Pour un polynˆ ome, cependant, la commande cherche toutes les racines
r´eelles.
>
poly :=3*x^4 - 16*x^3 - 3*x^2 + 13*x + 16;
poly := 3 x
4
−16 x
3
−3 x
2
+ 13 x + 16
>
fsolve({poly},{x});
¦x = 1.324717957¦, ¦x = 5.333333333¦
Pour chercher plus d’une racine d’une ´equation g´en´erale, utilisez l’op-
tion avoid.
>
fsolve({sin(x)=0}, {x});
¦x = 0.¦
>
fsolve({sin(x)=0}, {x}, avoid={x=0});
¦x = −3.141592654¦
Pour chercher un nombre d´etermin´e de racines d’un polynˆ ome, utilisez
l’option maxsols.
>
fsolve({poly}, {x}, maxsols=1);
¦x = 1.324717957¦
L’option complex force Maple ` a chercher des racines complexes en
plus des racines r´eelles.
3.2 R´esoudre num´eriquement : fsolve • 57
>
fsolve({poly}, {x}, complex);
¦x = −.6623589786 −.5622795121 I¦,
¦x = −.6623589786 +.5622795121 I¦,
¦x = 1.324717957¦, ¦x = 5.333333333¦
Vous pouvez ´egalement sp´ecifier l’intervalle dans lequel chercher une
racine en particulier.
>
fsolve({cos(x)=0}, {x}, Pi..2*Pi);
¦x = 4.712388980¦
Dans plusieurs cas, fsolve peut ´echouer dans sa recherche d’une ra-
cine, mˆeme si une telle racine existe. Dans ces situations, sp´ecifier un
intervalle peut aider Maple. Pour am´eliorer la pr´ecision de solutions,
vous pouvez augmenter la valeur de la variable sp´eciale, Digits. Remar-
quez que dans l’exemple suivant, la solution trouv´ee ne garantit pas une
pr´ecision de trente d´ecimales ; cependant, Maple effectue toutes les ´etapes
de ses calculs ` a une pr´ecision d’au moins trente chiffres significatifs au lieu
des dix chiffres par d´efaut.
>
Digits := 30;
Digits := 30
>
fsolve({cos(x)=0}, {x});
¦x = 1.57079632679489661923132169164¦
Les limites de solve
La commande solve ne s’applique pas ` a toutes les situations. Souvenez-
vous que l’approche employ´ee par Maple est algorithmique et que ce der-
nier ne poss`ede pas n´ecessairement la capacit´e de faire appel aux trucs
que vous pouvez utiliser lorsque vous r´esolvez un probl`eme ` a la main.
Math´ematiquement parlant, les polynˆ omes de degr´e sup´erieur ou ´egal
`a cinq ne poss`edent pas de solution g´en´erale sous forme de radicaux. Maple
tente de les r´esoudre symboliquement le mieux possible, mais il est fort
possible que vous deviez avoir recours ` a une solution num´erique en cas
d’´echec.
58 • Chapitre 3: Trouver des solutions
La r´esolution d’´equations trigonom´etriques peut ´egalement ˆetre dif-
ficile. En fait, le travail avec toutes les ´equations transcendantes s’av`ere
plutˆ ot difficile.
>
solve({sin(x)=0}, {x});
¦x = 0¦
Remarquez que Maple retourne seulement une solution parmi une in-
finit´e. Cependant, si vous fixez la valeur de la variable _EnvAllSolutions
`a true (vrai), Maple retourne alors l’ensemble complet des solutions.
>
_EnvAllSolutions := true;
_EnvAllSolutions := true
>
solve({sin(x)=0}, {x});
¦x = π _Z1~¦
Le pr´efixe _Z de la variable indique que cette derni`ere poss`ede des
valeurs enti`eres. Le tilde (~) indique qu’une hypoth`ese a ´et´e plac´ee sur
cette variable ; dans le cas pr´esent, on suppose qu’il s’agit d’une variable
enti`ere. De plus, la commande fsolve vous permet de sp´ecifier l’intervalle
dans lequel Maple cherchera une solution. Ainsi, vous pouvez obtenir plus
de contrˆ ole sur les solutions calcul´ees.
>
fsolve({sin(x)=0}, {x}, 3..4);
¦x = 3.14159265358979323846264338328¦
Ces types de probl`emes sont communs ` a tous les syt`emes de calcul
symbolique et t´emoignent des limites naturelles d’une approche algorith-
mique ` a la r´esolution d’´equations.
Lorsque vous utilisez solve, rappelez-vous de bien v´erifier vos r´esul-
tats. Le prochain exemple met en ´evidence une incompr´ehension qui peut
survenir en raison de la gestion des singularit´es par Maple.
>
expr := (x-1)^2/(x^2-1);
3.2 R´esoudre num´eriquement : fsolve • 59
expr :=
(x −1)
2
x
2
−1
Maple trouve bien une solution
>
soln := solve({expr=0},{x});
soln := ¦x = 1¦
mais lorsqu’elle est ´evalu´ee en x = 1, on obtient 0/0.
>
eval(expr, soln);
Error, division by zero
La limite montre pourtant que x = 1 est presque une solution.
>
Limit(expr, x=1);
lim
x→1
(x −1)
2
x
2
−1
>
value (%);
0
Maple affiche une ligne verticale ` a l’endroit de l’asymptote, ` a moins de
sp´ecifier discont=true.
>
plot(expr, x=-5..5, y=-10..10);
–10
–8
–6
–4
–2
0
2
4
6
8
10
y
–4 –2 2 4
x
Maple enl`eve la singularit´e x = 1 de l’expression avant de la r´esoudre.
Peu importe la m´ethode ou les outils utilis´es pour r´esoudre les ´equations,
il est crucial de v´erifier les r´esultats obtenus. Fort heureusement, ces
v´erifications sont faciles au moyen de Maple.
60 • Chapitre 3: Trouver des solutions
3.3 D’autres solveurs
Maple contient plusieurs commandes solve sp´ecialis´ees. Puisque vous ris-
quez de ne pas les trouver aussi utiles que les fonctions plus g´en´erales
solve et fsolve, cette section n’en signale que quelques-unes. Si vous
d´esirez obtenir plus de d´etail ` a propos de ces commandes, utilisez le
syst`eme d’aide en ligne en entrant ? suivi du nom de commande sou-
hait´e `a l’invite de Maple.
Trouver des solutions enti`eres
La commande isolve trouve des solutions enti`eres aux ´equations en r´e-
solvant pour toutes les inconnues dans l’expression ou les expressions.
>
isolve({3*x-4*y=7});
¦x = 5 + 4 _Z1, y = 2 + 3 _Z1¦
Trouver des solutions modulo m
La commande msolve r´esout des ´equations enti`eres modulo m (la repr´e-
sentation positive pour les entiers) en r´esolvant pour toutes les inconnues
dans l’expression ou les expressions.
>
msolve({3*x-4*y=1,7*x+y=2},17);
¦y = 6, x = 14¦
Maple utilise les variables globales _Z1, . . ._Zn pour d´enoter les pa-
ram`etres entiers de la solution.
>
msolve({2^n=3},19);
¦n = 13 + 18 _Z1~¦
Le tilde (~) sur _Z1 indique que msolve a plac´e une hypoth`ese ` a propos
de _Z1 ; dans ce cas-ci, que _Z1 soit entier.
>
about( _Z1 );
3.4 Les polyn omes • 61
Originally _Z1, renamed _Z1~:
is assumed to be: integer
La section 5.2 d´ecrit comment vous pouvez placer vous-mˆeme des
hypoth`eses ` a propos d’inconnues.
R´esoudre des relations de r´ecurrence
La commande rsolve r´esout des relations de r´ecurrence, retournant une
expression correspondant au terme g´en´eral de la fonction.
>
rsolve({f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=1},{f(n)});

f(n) = −
2
5

5 (−
2
1 −

5
)
n
1 −

5
+
2
5

5 (−
2

5 + 1
)
n

5 + 1

Consultez ´egalement la rubrique d’aide ?LREtools.
3.4 Les polyn omes
Pour Maple, un polyn ome est une expression contenant des incon-
nues ; chaque terme du polynˆ ome contient un produit des inconnues. Par
exemple, si le polynˆ ome contient seulement une inconnue, x, les termes
peuvent contenir x
3
, x
1
= x et x
0
= 1, comme dans le cas du polynˆ ome
x
3
−2x+1. Si plus d’une inconnue existe, un terme peut ´egalement conte-
nir un produit des inconnues, comme dans le polynˆ ome x
3
+3x
2
y+y
2
. Les
coefficients peuvent ˆetre entiers (comme dans les exemples pr´ec´edents), ra-
tionnels, irrationnels, d´ecimaux, complexes ou mˆeme faire appel ` a d’autres
variables.
>
x^2 - 1;
x
2
−1
>
x + y + z;
62 • Chapitre 3: Trouver des solutions
x +y +z
>
1/2*x^2 - sqrt(3)*x - 1/3;
1
2
x
2


3 x −
1
3
>
(1 - I)*x + 3 + 4*I;
(1 −I) x + 3 + 4 I
>
a*x^4 + b*x^3 + c*x^2 + d*x + f;
a x
4
+b x
3
+c x
2
+d x +f
Maple poss`ede des commandes permettant plusieurs types de mani-
pulations et de calculs math´ematiques sur les polynˆ omes ; les prochaines
sections en examinent quelques-uns.
Tri et regroupement
La commande sort arrange les termes d’un polynˆ ome dans l’ordre
d´ecroissant des degr´es de leurs inconnues. Plutˆ ot que de conserver une
deuxi`eme copie du polynˆ ome original dont les termes ont ´et´e tri´es, sort
modifie directement la mani`ere dont les termes sont emmagasin´es dans
le polynˆ ome de d´epart. Ainsi, si vous affichez le polynˆ ome apr`es l’avoir
pass´e `a sort, vous remarquerez qu’il demeure tri´e :
>
sort_poly := x + x^2 - x^3 + 1 - x^4;
sort_poly := x +x
2
−x
3
+ 1 −x
4
>
sort(sort_poly);
−x
4
−x
3
+x
2
+x + 1
>
sort_poly;
−x
4
−x
3
+x
2
+x + 1
3.4 Les polyn omes • 63
Maple classe les polynˆ omes multivari´es de deux mani`eres. La m´ethode
par d´efaut classe les termes selon leur degr´e total. Ainsi, x
2
y
2
sera plac´e
avant x
3
et y
3
. Selon l’autre option, les termes sont class´es selon l’ordre
lexicographique pur (plex). Lorsque vous choisissez cette option, le tri
examine d’abord les puissances de la premi`ere variable de la liste des
variables (cette liste est le second argument de la commande sort), puis
les puissances de la seconde variable. La diff´erence entre ces deux types
de tri se con¸ coit clairement au moyen d’un exemple.
>
mul_var_poly := y^3 + x^2*y^2 + x^3;
mul _var_poly := y
3
+x
2
y
2
+x
3
>
sort(mul_var_poly, [x,y]);
x
2
y
2
+x
3
+y
3
>
sort(mul_var_poly, [x,y], ’plex’);
x
3
+x
2
y
2
+y
3
La commande collect regroupe les coefficients de mˆeme degr´e dans
un polynˆ ome. Par exemple, lorsque les termes ax et bx se trouvent dans
le mˆeme polynˆ ome, Maple les regroupe en (a +b)x.
>
big_poly:=x*y + z*x*y + y*x^2 - z*y*x^2 + x + z*x;
big_poly := xy +z xy +y x
2
−z y x
2
+x +z x
>
collect(big_poly, x);
(y −z y) x
2
+ (y +z y + 1 +z) x
>
collect(big_poly, z);
(xy −y x
2
+x) z +xy +y x
2
+x
64 • Chapitre 3: Trouver des solutions
Op´erations math´ematiques
Vous pouvez effectuer plusieurs op´erations math´ematiques sur les po-
lynˆ omes. Parmi les op´erations les plus fondamentales, on trouve la division
(c’est-` a-dire diviser un polynˆ ome par un autre et en d´eterminer le quotient
et le reste). Maple fournit les commandes rem et quo pour d´eterminer le
reste (remainder en anglais) et le quotient d’une division polynomiale.
>
r := rem(x^3+x+1, x^2+x+1, x);
r := 2 +x
>
q := quo(x^3+x+1, x^2+x+1, x);
q := x −1
>
collect( (x^2+x+1) * q + r, x );
x
3
+x + 1
Dans certaines situations, il peut suffire de d´eterminer si un polynˆ ome
divise exactement un autre polynˆ ome. La commande divide v´erifie la
division polynomiale exacte.
>
divide(x^3 - y^3, x - y);
true
>
rem(x^3 - y^3, x - y, x);
0
Vous ´evaluez les polynˆ omes en des valeurs comme avec n’importe
quelle expression en utilisant la commande eval.
>
poly := x^2 + 3*x - 4;
poly := x
2
+ 3 x −4
>
eval(poly, x=2);
6
3.4 Les polyn omes • 65
Tab. 3.1 – Commandes servant ` a d´eterminer les coefficients polynomiaux
Commande Description
coeff extraire un coefficient
lcoeff trouver le coefficient du terme de plus haut degr´e
tcoeff trouver le coefficient du terme de plus faible degr´e
coeffs retourner une suite de tous les coefficients
degree d´eterminer le degr´e (sup´erieur) du polynˆ ome
ldegree d´eterminer le degr´e inf´erieur du polynˆ ome
>
mul_var_poly := y^2*x - 2*y + x^2*y + 1;
mul _var_poly := y
2
x −2 y +y x
2
+ 1
>
eval(mul_var_poly, {y=1,x=-1});
−1
Coefficients et degr´es
Les commandes degree et coeff d´eterminent le degr´e d’un polynˆ ome et
fournissent un m´ecanisme d’extraction des coefficients.
>
poly := 3*z^3 - z^2 + 2*z - 3*z + 1;
poly := 3 z
3
−z
2
−z + 1
>
coeff(poly, z^2);
−1
>
degree(poly,z);
3
Recherche de racines et factorisation
La commande solve d´etermine les racines d’un polynˆ ome tandis que
factor exprime le polynˆ ome sous une forme compl`etement factoris´ee.
66 • Chapitre 3: Trouver des solutions
>
poly1 := x^6 - x^5 - 9*x^4 + x^3 + 20*x^2 + 12*x;
poly1 := x
6
−x
5
−9 x
4
+x
3
+ 20 x
2
+ 12 x
>
factor(poly1);
x(x −2) (x −3) (x + 2) (x + 1)
2
>
poly2 := (x + 3);
poly2 := x + 3
>
poly3 := expand(poly2^6);
poly3 :=
x
6
+ 18 x
5
+ 135 x
4
+ 540 x
3
+ 1215 x
2
+ 1458 x + 729
>
factor(poly3);
(x + 3)
6
>
solve({poly3=0}, {x});
¦x = −3¦, ¦x = −3¦, ¦x = −3¦, ¦x = −3¦, ¦x = −3¦, ¦x = −3¦
>
factor(x^3 + y^3);
(x +y) (x
2
−xy +y
2
)
Maple factorise le polynˆ ome sur l’anneau contenant les coefficients
(entiers, rationnels, etc.). La commande factor vous permet ´egalement de
sp´ecifier un corps alg´ebrique de nombres sur lequel factoriser le polynˆ ome.
Consultez la rubrique d’aide ?factor pour obtenir plus de renseigne-
ments.
3.5 Le calcul diff´erentiel • 67
Tab. 3.2 – D’autres fonctions agissant sur des polynˆ omes
Fonction Description
content contenu d’un polynˆ ome multivari´e
compoly d´ecomposition polynomiale
discrim discriminant d’un polynˆ ome
gcd plus grand commun diviseur
gcdex algorithme ´etendu de division euclidienne
interp interpolation polynomiale
lcm plus petit commun multiple
norm norme d’un polynˆ ome
prem pseudo-reste
primpart partie primitive d’un polynˆ ome multivari´e
randpoly polynˆ ome al´eatoire
recipoly polynˆ ome r´eciproque
resultant r´esultante de deux polynˆ omes
roots racines sur un corps alg´ebrique de nombres
sqrfree factorisation libre de carr´es
3.5 Le calcul diff´erentiel
Maple offre plusieurs outils puissants permettant la r´esolution de
probl`emes de calcul diff´erentiel. Par exemple, il est utile pour calculer les
limites des fonctions. Calculez la limite d’une fonction rationnelle lorsque
x tend vers 1.
>
f := x -> (x^2-2*x+1)/(x^4 + 3*x^3 - 7*x^2 + x+2);
f := x →
x
2
−2 x + 1
x
4
+ 3 x
3
−7 x
2
+x + 2
>
Limit(f(x), x=1);
lim
x→1
x
2
−2 x + 1
x
4
+ 3 x
3
−7 x
2
+x + 2
>
value(%);
1
8
68 • Chapitre 3: Trouver des solutions
Il est ´egalement possible de calculer les limites ` a gauche et ` a droite
d’une fonction. Par exemple, consid´erez la limite de tan(x) lorsque x tend
vers π/2.
Calculez la limite ` a gauche en utilisant l’option left.
>
Limit(tan(x), x=Pi/2, left);
lim
x→(1/2 π)−
tan(x)
>
value(%);

Faites de mˆeme pour la limite ` a droite.
>
Limit(tan(x), x=Pi/2, right);
lim
x→(1/2 π)+
tan(x)
>
value(%);
−∞
Une autre op´eration facile ` a effectuer est la cr´eation d’une s´erie ap-
proximant une fonction donn´ee. Par exemple, utilisez la fonction
>
f := x -> sin(4*x)*cos(x);
f := x → sin(4 x) cos(x)
>
fs1 := series(f(x), x=0);
fs1 := 4 x −
38
3
x
3
+
421
30
x
5
+ O(x
6
)
Remarquez que, par d´efaut, la commande series produit un po-
lynˆ ome d’ordre 6. En modifiant la valeur de la variable sp´eciale Order, il
est possible d’augmenter ou de diminuer l’ordre d’une s´erie polynomiale.
L’utilisation de convert(fs1, polynom) supprime le terme d’ordre
de la s´erie de mani`ere que Maple puisse en tracer le graphique.
3.5 Le calcul diff´erentiel • 69
>
p := convert(fs1,polynom);
p := 4 x −
38
3
x
3
+
421
30
x
5
>
plot({f(x), p},x=-1..1, -2..2);
–2
–1
0
1
2
–1–0.8–0.6–0.4–0.2 0.2 0.4 0.6 0.8 1
x
En augmentant l’ordre de troncation de la s´erie ` a 12 et en recommen-
ant les op´erations pr´ec´edentes, on remarque l’am´elioration escompt´ee de
la pr´ecision de l’approximation.
>
Order := 12;
Order := 12
>
fs1 := series(f(x), x=0);
fs1 := 4 x −
38
3
x
3
+
421
30
x
5

10039
1260
x
7
+
246601
90720
x
9

6125659
9979200
x
11
+ O(x
12
)
>
p := convert(fs1,polynom);
p := 4 x −
38
3
x
3
+
421
30
x
5

10039
1260
x
7
+
246601
90720
x
9

6125659
9979200
x
11
>
plot({f(x), p}, x=-1..1, -2..2);
70 • Chapitre 3: Trouver des solutions
–2
–1
0
1
2
–1–0.8–0.6–0.4–0.2 0.2 0.4 0.6 0.8 1
x
Maple peut calculer symboliquement les d´eriv´ees et les int´egrales. Par
exemple, d´erivez une expression, int´egrez son r´esultat et comparez celui-ci
`a l’expression originale.
>
f := x -> x*sin(a*x) + b*x^2;
f := x → xsin(a x) +b x
2
>
Diff(f(x),x);

∂x
(xsin(a x) +b x
2
)
>
df := value(%);
df := sin(a x) +xcos(a x) a + 2 b x
>
Int(df, x);

sin(a x) +xcos(a x) a + 2 b xdx
>
value(%);

cos(a x)
a
+
cos(a x) +a xsin(a x)
a
+b x
2
>
simplify(%);
x(sin(a x) +b x)
3.5 Le calcul diff´erentiel • 71
Il n’est pas n´ecessaire d’utiliser les formes inertes Diff et Int en con-
jonction avec la commande value pour calculer symboliquement la d´eriv´ee
et l’int´egrale. Les r´esultats peuvent ˆetre calcul´es en une seule commande
en utilisant respectivement diff et int.
Vous pouvez ´egalement effectuer des int´egrales d´efinies. Par exemple,
recalculez l’int´egrale pr´ec´edente sur l’intervalle de x = 1 `a x = 2.
>
Int(df,x=1..2);

2
1
sin(a x) +xcos(a x) a + 2 b xdx
>
value(%);
2 sin(2 a) + 3 b −sin(a)
Consid´erez une int´egrale plus compliqu´ee.
>
Int(exp(-x^2), x);

e
(−x
2
)
dx
>
value(%);
1
2

π erf(x)
`
A quelques occasions, Maple ne peut d´eterminer si une variable est
r´eelle ou complexe, et retourne donc un r´esultat inattendu.
>
g := t -> exp(-a*t)*ln(t);
g := t → e
(−a t)
ln(t)
>
Int (g(t), t=0..infinity);


0
e
(−a t)
ln(t) dt
>
value(%);
72 • Chapitre 3: Trouver des solutions
lim
t→∞

e
(−a t)
ln(t) + Ei(1, a t) +γ + ln(a)
a
Ici, Maple assume que le param`etre est un nombre complexe. Il re-
tourne donc une r´eponse plus g´en´erale.
Dans les situations o` u vous savez que a est un nombre positif r´eel,
sp´ecifiez-le ` a Maple en utilisant la commande assume.
>
assume(a > 0):
>
ans := Int(g(t), t=0..infinity);
ans :=


0
e
(−a~ t)
ln(t) dt
>
value(%);

ln(a~)
a~

γ
a~
Le r´esultat est beaucoup plus simple. Le seul terme non ´el´ementaire est
la constante gamma. Le tilde (~) indique que a porte une hypoth`ese. Vous
devez maintenant supprimer cette hypoth`ese pour parcourir les exemples
ult´erieurs. Deux ´etapes sont n´ecessaires. La r´eponse, ans, contient a avec
des hypoth`eses. Si vous souhaitez repartir de z´ero et continuer ` a utiliser
ans, vous devez remplacer toutes les occurrences de a~ par a.
>
ans := subs(a =’a’, ans );
ans :=


0
e
(−a t)
ln(t) dt
Le premier argument, a = ’a’, m´erite une attention particuli`ere. Si
vous tapez a apr`es avoir plac´e une hypoth`ese sur a, Maple assume auto-
matiquement que vous parlez de la variable a~. En Maple, les guillemets
simples retardent l’´evaluation. Dans ce cas, ils assurent que Maple in-
terpr`ete le deuxi`eme a comme a et non a~.
Maintenant que vous avez supprim´e l’hypoth`ese sur a dans ans, vous
pouvez supprimer l’hypoth`ese sur a elle-mˆeme en lui affectant son propre
nom.
>
a := ’a’:
Utilisez les guillemets simples pour la mˆeme raison que pr´ec´edemment.
Pour plus de renseignements, consultez la section 5.2.
3.6 Les ´equations diff´erentielles : dsolve • 73
3.6 Les ´equations diff´erentielles : dsolve
Maple peut r´esoudre symboliquement plusieurs ´equations diff´erentielles
ordinaires (EDO), incluant les probl`emes de conditions initiales et de
conditions aux limites.
D´efinissez une EDO.
>
ode1 := {diff(y(t),t,t) + 5*diff(y(t),t) + 6*y(t) = 0};
ode1 := ¦(
d
2
dt
2
y(t)) + 5 (
d
dt
y(t)) + 6 y(t) = 0¦
D´efinissez les conditions initiales.
>
ic := {y(0)=0, D(y)(0)=1};
ic := ¦y(0) = 0, D(y)(0) = 1¦
R´esolvez au moyen de dsolve, en utilisant l’op´erateur union pour
former l’union des deux ensembles.
>
soln := dsolve(ode1 union ic, {y(t)});
soln := y(t) = −e
(−3 t)
+e
(−2 t)
Si vous souhaitez utiliser cette solution pour l’´evaluer en certains
points ou pour en tracer le graphique, rappelez-vous d’utiliser la com-
mande unapply pour d´efinir correctement une fonction Maple. La sec-
tion 3.1 discute davantage de cette question.
Vous pouvez extraire une valeur d’un ensemble solution au moyen de
la commande eval.
>
eval( y(t), soln );
−e
(−3 t)
+e
(−2 t)
Utilisez maintenant ce fait pour d´efinir y comme une fonction de t en
utilisant unapply :
>
y1:= unapply(%, t );
y1 := t → −e
(−3 t)
+e
(−2 t)
74 • Chapitre 3: Trouver des solutions
>
y1(a);
−e
(−3 a)
+e
(−2 a)
V´erifiez maintenant que y1 est bien une solution de l’EDO :
>
eval(ode1, y=y1);
¦0 = 0¦
et que y1 satisfait bien aux conditions initiales.
>
eval(ic, y=y1);
¦1 = 1, 0 = 0¦
Une autre m´ethode de v´erification des solutions est ´egalement dispo-
nible, bien qu’elle puisse sembler d´eroutante au premier abord. Donnez ` a
la nouvelle solution le nom y plutˆ ot que y1.
>
y := unapply( eval(y(t), soln), t );
y := t → −e
(−3 t)
+e
(−2 t)
Maintenant, lorsque vous entrez une ´equation contenant y, Maple uti-
lise cette fonction et en ´evalue le r´esultat, en une seule ´etape.
>
ode1;
¦0 = 0¦
>
ic;
¦1 = 1, 0 = 0¦
Si vous souhaitez modifier l’´equation diff´erentielle, vous ne voudrez
plus de cette d´efinition pour y(x) ; vous devrez donc supprimer cette
d´efinition au moyen de la commande suivante :
>
y := ’y’;
3.6 Les ´equations diff´erentielles : dsolve • 75
y := y
Maple reconnaˆıt ´egalement les fonctions sp´eciales, comme la fonction
de Dirac utilis´ee en physique.
>
ode2 := 10^6*diff(y(x),x,x,x,x) = Dirac(x-2) -
>
Dirac(x-4);
ode2 := 1000000 (
d
4
dx
4
y(x)) = Dirac(x −2) −Dirac(x −4)
Sp´ecifiez des conditions aux limites :
>
bc := {y(0)=0, D(D(y))(0)=0, y(5)=0};
bc := ¦(D
(2)
)(y)(0) = 0, y(0) = 0, y(5) = 0¦
sp´ecifiez ´egalement une valeur initiale.
>
iv := {D(D(y))(5)=0};
iv := ¦(D
(2)
)(y)(5) = 0¦
>
soln := dsolve({ode2} union bc union iv, {y(x)});
soln := y(x) =
1
6000000
Heaviside(x −2) x
3

1
750000
Heaviside(x −2) +
1
500000
Heaviside(x −2) x

1
1000000
Heaviside(x −2) x
2

1
6000000
Heaviside(x −4) x
3
+
1
93750
Heaviside(x −4) −
1
125000
Heaviside(x −4) x
+
1
500000
Heaviside(x −4) x
2

1
15000000
x
3
+
1
1250000
x
>
eval(y(x), soln);
76 • Chapitre 3: Trouver des solutions
1
6000000
Heaviside(x −2) x
3

1
750000
Heaviside(x −2)
+
1
500000
Heaviside(x −2) x

1
1000000
Heaviside(x −2) x
2

1
6000000
Heaviside(x −4) x
3
+
1
93750
Heaviside(x −4) −
1
125000
Heaviside(x −4) x
+
1
500000
Heaviside(x −4) x
2

1
15000000
x
3
+
1
1250000
x
>
y := unapply(%, x);
y := x →
1
6000000
Heaviside(x −2) x
3

1
750000
Heaviside(x −2) +
1
500000
Heaviside(x −2) x

1
1000000
Heaviside(x −2) x
2

1
6000000
Heaviside(x −4) x
3
+
1
93750
Heaviside(x −4) −
1
125000
Heaviside(x −4) x
+
1
500000
Heaviside(x −4) x
2

1
15000000
x
3
+
1
1250000
x
Cette valeur de y satisfait ` a l’´equation diff´erentielle, ` a la condition
aux limites et ` a la valeur initiale.
>
ode2;
3.6 Les ´equations diff´erentielles : dsolve • 77
24 Dirac(1, x −4) −12 Dirac(1, x −2)
+ 6 Dirac(1, x −2) x −6 Dirac(1, x −4) x
+ 8 Dirac(2, x −2) −8 Dirac(2, x −2) x
+ 2 Dirac(2, x −2) x
2
+ 16 Dirac(2, x −4) x
−2 Dirac(2, x −4) x
2
+
1
6
Dirac(3, x −2) x
3
+ 2 Dirac(3, x −2) x −Dirac(3, x −2) x
2

1
6
Dirac(3, x −4) x
3
−8 Dirac(3, x −4) x
+ 2 Dirac(3, x −4) x
2
−32 Dirac(2, x −4)

4
3
Dirac(3, x −2) +
32
3
Dirac(3, x −4) + 4 Dirac(x −2)
−4 Dirac(x −4) = Dirac(x −2) −Dirac(x −4)
>
simplify(%);
Dirac(x −2) −Dirac(x −4) = Dirac(x −2) −Dirac(x −4)
>
bc;
¦0 = 0¦
>
iv;
¦0 = 0¦
>
plot(y(x), x=0..5, axes=BOXED);
0
2e–07
4e–07
6e–07
8e–07
1e–06
0 1 2 3 4 5
x
Maintenant que vous n’utilisez plus y, vous devriez y enlever toute
r´ef´erence.
78 • Chapitre 3: Trouver des solutions
>
y := ’y’;
y := y
Maple peut ´egalement r´esoudre des syst`emes d’´equations diff´eren-
tielles ; par exemple, le syst`eme suivant form´e de deux ´equations simul-
tan´ees du second ordre.
>
de_sys := { diff(y(x),x,x)=z(x), diff(z(x),x,x)=y(x) };
de_sys := ¦
d
2
dx
2
y(x) = z(x),
d
2
dx
2
z(x) = y(x)¦
>
soln := dsolve(de_sys, {z(x),y(x)});
soln := ¦
y(x) = −_C1 sin(x) + _C2 e
x
−_C3 cos(x) + _C4 e
(−x)
,
z(x) = _C1 sin(x) + _C2 e
x
+ _C3 cos(x) + _C4 e
(−x)
¦
Si vous r´esolvez le syst`eme sans sp´ecifier de conditions suppl´emen-
taires, Maple produit automatiquement les constantes appropri´ees _C1,
. . ., _C4.
Observez encore qu’il est possible d’extraire et de d´efinir les solutions
`a l’aide des commandes eval et unapply :
>
y := unapply(eval(y(x), soln), x );
y := x → −_C1 e
(−x)
+ _C2 e
x
−_C3 sin(x) + _C4 cos(x)
>
y(1);
−_C1 e
(−1)
+ _C2 e −_C3 sin(1) + _C4 cos(1)
Vous pouvez d´er´ef´erencer les solutions lorsque vous en avez termin´e.
>
y := ’y’;
y := y
3.7 L’organisation de Maple • 79
3.7 L’organisation de Maple
Au d´emarrage, Maple ne charge en m´emoire que le noyau (en anglais
kernel ) de son programme. Ce noyau constitue la base du syst`eme, car
il contient les commandes fondamentales et primitives : l’interpr´eteur du
langage Maple (qui convertit les commandes saisies en instructions ma-
chine que le microprocesseur de votre ordinateur peut comprendre), des
algorithmes de calcul num´erique ´el´ementaire ainsi que des routines d’af-
fichage des r´esultats et d’op´erations d’entr´ee-sortie.
Le noyau est form´e de code C hautement optimis´e et totalise environ
10% de la taille du syst`eme. Les programmeurs de Maple ont d´elib´er´ement
conserv´e sa taille petite pour en pr´eserver la rapidit´e d’ex´ecution. Le
noyau de Maple ex´ecute les routines les plus fr´equentes en arithm´etique
enti`ere et rationnelle et dans la manipulation des polynˆ omes.
Les 90% restants du savoir math´ematique de Maple sont ´ecrits dans
le langage Maple et r´esident dans sa biblioth`eque (library en anglais). La
biblioth`eque se divise en deux groupes : la biblioth`eque principale (main
library) et les packages. Hi´erarchiquement, ces groupes de fonctions se
situent au-dessus du noyau.
La biblioth`eque principale contient les commandes Maple les plus
fr´equemment utilis´ees (excluant celles d´ej`a contenues dans le noyau).
Ces commandes sont charg´ees lorsqu’elles sont appel´ees — il n’est pas
n´ecessaire de les charger explicitement. Le langage Maple produit des
proc´edures tr`es compactes qui n’affichent pas de d´elai observable : vous
ne remarquerez probablement pas la diff´erence entre ces derni`eres et les
commandes du noyau ´ecrites en C.
Les derni`eres commandes de la biblioth`eque sont les packages. Chacun
des nombreux packages de Maple contient un groupe de commandes ef-
fectuant des calculs apparent´es. Par exemple, le package LinearAlgebra
contient des commandes pour la manipulation des matrices.
Vous pouvez utiliser une commande d’un package de trois mani`eres.
1. Utilisez le nom complet du package, suivi de la commande d´esir´ee.
package[cmd]( ... )
Si le package poss`ede un sous-package, utilisez le nom complet du pac-
kage, le nom complet du sous-package, suivi de la commande d´esir´ee.
package[souspackage][cmd](...)
Puis, entrez le nom abr´eg´e de la commande.
80 • Chapitre 3: Trouver des solutions
cmd(...)
2. Activez les noms abr´eg´es pour toutes les commandes d’un package en
utilisant la commande with.
with(package)
Si le package poss`ede un sous-package, utilisez la commande with de
la mani`ere suivante.
with(package[souspackage])
Puis, entrez le nom abr´eg´e de la commande.
cmd(...)
3. Activez le nom abr´eg´e d’une seule commande d’un package.
with(package, cmd)
Si le package poss`ede un sous-package, utilisez la commande with de
la mani`ere suivante.
with(package[souspackage], cmd)
Puis, entrez le nom abr´eg´e de la commande.
cmd(...)
Le prochain exemple utilise la commande Tangent du package
Student pour calculer la pente de la tangente de l’expression sin(x) au
point x = 0.
>
with(Student[Calculus1]);
3.8 Les packages Maple • 81
[AntiderivativePlot, ApproximateInt, ArcLength,
Asymptotes, Clear, CriticalPoints, DerivativePlot,
ExtremePoints, FunctionAverage, FunctionChart,
GetMessage, GetNumProblems, GetProblem, Hint,
InflectionPoints, Integrand, InversePlot,
MeanValueTheorem, NewtonQuotient, NewtonsMethod,
PointInterpolation, RiemannSum, RollesTheorem,
Roots, Rule, Show, ShowIncomplete, ShowSteps,
Summand, SurfaceOfRevolution, Tangent,
TaylorApproximation, Understand, Undo,
VolumeOfRevolution, WhatProblem]
>
Tangent(sin(x), x = 0);
x
Lorsque vous utilisez with(package), vous voyez apparaˆıtre une liste
de tous les noms abr´eg´es des commandes du package. De plus, Maple vous
avertit lorsqu’il red´efinit des noms d´ej`a existants.
3.8 Les packages Maple
Les packages inclus dans Maple permettent d’effectuer des tˆ aches dans
de nombreuses disciplines, du calcul diff´erentiel ´el´ementaire ` a la th´eorie
g´en´erale de la relativit´e. Les exemples de cette section ne se veulent pas
d´etaill´es et complets : ils ne sont que des illustrations de quelques com-
mandes dans des packages particuliers qui vous donneront un aper¸ cu des
capacit´es de Maple.
Liste des packages
Vous trouverez la liste de packages suivante dans la page d’aide
?packages. Pour obtenir une liste compl`ete des commandes d’un package
en particulier, consultez la page d’aide ?nomdupackage.
algcurves Outils pour l’´etude des vari´et´es (courbes) alg´ebriques unidi-
mensionnelles d´efinies par des polynˆ omes multivari´es.
codegen Outils de cr´eation, de manipulation et de traduction de proc´e-
dures Maple en d’autres langages. Ce package permet la diff´erentiation
82 • Chapitre 3: Trouver des solutions
automatique, l’optimisation de code, la traduction en C et en FOR-
TRAN, etc.
CodeGeneration Fonctions qui traduisent un programme Maple en
d’autres langages de programmation.
combinat Fonctions combinatoires incluant des commandes pour calculer
les permutations et les combinaisons de listes, de mˆeme que les parti-
tions enti`eres. (Utilisez plutˆ ot le package combstruct lorsque cela est
possible.)
combstruct Commandes qui permettent de g´en´erer et de compter les
structures combinatoires ainsi que de d´eterminer les ´equations des
fonctions g´en´eratrices permettant ce comptage.
context Outils de construction et de modification des menus contextuels
de l’interface graphique de Maple (affich´es, par exemple, en cliquant
sur une expression avec le bouton de droite de la souris).
CurveFitting Commandes qui permettent de tracer des courbes de ten-
dances.
DEtools Outils de manipulation, de r´esolution et d’affichage des syst`emes
d’´equations diff´erentielles ; espaces de phases et graphiques de champs.
diffalg Commandes de manipulation de syst`emes d’´equations diff´eren-
tielles polynomiales (EDO ou EDP).
difforms Commandes de gestion des formes diff´erentielles ; d´edi´e aux
probl`emes de g´eom´etrie diff´erentielle.
Domains Commandes qui permettent de cr´eer des domaines de calcul
(domains of computation en anglais) ; supporte le calcul sur les
polynˆ omes, les matrices de mˆeme que les s´eries sur des anneaux de
nombres, les anneaux finis, les anneaux de polynˆ omes et les anneaux
de matrices.
ExternalCalling Commandes effectuant des liens vers des fonctions ex-
ternes.
finance Commandes de calcul financier.
GaussInt Commandes qui permettent de travailler sur les nombres de
la forme a + bI (o` u a et b sont entiers) que l’on appelle les entiers
gaussiens ; commandes de calcul du PGCD, de factorisation et de
tests de primalit´e.
genfunc Commandes de manipulation des fonctions g´en´eratrices ration-
nelles.
geom3d Commandes de g´eom´etrie euclidienne tridimensionnelle pour
d´efinir et manipuler en trois dimensions points, lignes, plans, triangles,
sph`eres, poly`edres, etc.
3.8 Les packages Maple • 83
geometry Commandes de g´eom´etrie euclidienne bidimensionnelle servant
`a d´efinir et ` a manipuler en deux dimensions points, lignes, triangles
et cercles.
Groebner Commandes pour les calculs en base de Gr¨ obner ; en particu-
lier, outils de calcul pour les alg`ebres de Ore et les D-modules.
group Commandes permettant de travailler avec les groupes de permu-
tations et les groupes finiment pr´esent´es.
inttrans Commandes qui permettent de travailler avec les transforma-
tions d’int´egrales et leurs inverses.
LibraryTools Commandes de manipulation et de traitement de biblio-
th`eques.
liesymm Commandes servant ` a caract´eriser les sym´etries de contact des
syst`emes d’´equations aux d´eriv´ees partielles.
linalg Plus de 100 commandes de manipulation matricielle et vecto-
rielle ; de l’addition de matrices aux vecteurs et valeurs propres.
LinearAlgebra Commandes d’alg`ebre lin´eaire am´elior´ees servant ` a cr´eer
des types sp´eciaux de matrices, calculer avec de grandes matrices nu-
m´eriques et effectuer des op´erations d’alg`ebre matricielle.
LinearFunctionalSystems Commandes qui permettent de r´esoudre des
syst`emes lin´eaires de fonctions avec des coefficients polynomiaux,
d´eterminent le d´enominateur universel d’une solution rationnelle et
transforment un syst`eme de r´ecurrence matriciel en un syst`eme
´equivalent avec une matrice de tˆete ou de queue non singuli`ere.
ListTools Commandes de manipulation de listes.
LREtools Commandes de manipulation, d’affichage et de r´esolution de
relations de r´ecurrence lin´eaire.
Maplets Commandes permettant de cr´eer des fenˆetres, des boˆıtes de dia-
logue et d’autres interfaces visuelles qui interagissent avec l’utilisateur.
MathML Commandes qui importent et exportent des expressions Maple en
texte MathML.
Matlab Commandes qui exploitent plusieurs des fonctions matricielles nu-
m´eriques de Matlab, incluant les valeurs et les vecteurs propres, les
d´eterminants et la d´ecomposition LU. (Ce package est accessible seule-
ment si Matlab est install´e sur votre syst`eme.)
MatrixPolynomialAlgebra Ensemble d’outils de manipulation alg´e-
brique des polynˆ omes matriciels.
84 • Chapitre 3: Trouver des solutions
networks Outils de construction, de tra¸ cage et d’analyse des r´eseaux
combinatoires. Outils de gestion des graphes orient´es et d’expressions
arbitraires pour les poids des nœuds et des arˆetes.
numapprox Commandes de calcul d’approximations polynomiales de fonc-
tions sur un intervalle donn´e.
numtheory Commandes de th´eorie des nombres classique, tests de pri-
malit´e, calcul du n-i`eme nombre premier, g´en´eration de polynˆ omes
d’unit´es cyclotomiques. Ce package contient ´egalement des com-
mandes de gestion des convergents.
Ore_algebra Routines de calcul de base dans les alg`ebres d’op´erateurs
lin´eaires.
OrthogonalSeries Commandes de manipulation de s´eries de polynˆ omes
orthogonaux classiques ou, de mani`ere plus g´en´erale, de polynˆ omes
hyperg´eom´etriques.
orthopoly Commandes servant ` a g´en´erer diff´erents types de polynˆ omes
orthogonaux ; ce package s’av`ere utile pour la r´esolution d’´equations
diff´erentielles.
padic Commandes de calcul des approximations p-adiques de nombres
r´eels.
PDEtools Outils de manipulation, de r´esolution et d’affichage d’´equations
aux d´eriv´ees partielles.
plots Commandes pour diff´erents types de graphiques sp´ecialis´es, in-
cluant les graphiques d’isovaleurs, les graphiques bidimensionnels et
tridimensionnels de fonctions implicites, l’affichage de texte et de gra-
phiques dans diff´erents syst`emes de coordonn´ees.
plottools Commandes servant ` a g´en´erer et ` a manipuler des objets gra-
phiques.
PolynomialTools Commandes de manipulation d’objets polynomiaux.
polytools Commandes de manipulation d’objets polynomiaux.
powseries Commandes servant ` a cr´eer et manipuler des s´eries enti`eres
formelles repr´esent´ees par leur terme g´en´eral.
process Commandes permettant d’´ecrire des programmes Maple multi-
processus sous UNIX.
RandomTools Commandes permettant de travailler avec des objets al´ea-
toires.
RationalNormalForms Commandes permettant de construire la forme
normale polynomiale ou les formes rationnelles canoniques d’une fonc-
tion rationnelle, ou la repr´esentation minimale d’un terme hyperg´eo-
m´etrique.
3.8 Les packages Maple • 85
RealDomain Fournit un environnement dans lequel le syst`eme de nombres
assum´e est le syst`eme des nombres r´eels, et non le syst`eme des nombres
complexes.
ScientificConstants Commandes donnant acc`es aux valeurs de diff´e-
rentes quantit´es physiques utilis´ees couramment en physique ou en
chimie.
simplex Commandes d’optimisation lin´eaire utilisant la m´ethode du sim-
plexe.
Slode Commandes servant ` a trouver des solutions ` a des EDO lin´eaires
sous forme de s´eries enti`eres.
Sockets Commandes permettant les communications r´eseau avec Maple.
Les routines de ce package vous permettent de vous connecter ` a des
processus situ´es sur des hˆ otes distants (par Internet ou Intranet) et
´echanger des donn´ees avec ces processus.
SolveTools Commandes qui permettent de r´esoudre des syst`emes
d’´equations alg´ebriques. Ce package donne aux utilisateurs exp´eri-
ment´es l’acc`es aux routines appliqu´ees par la commande solve pour
un meilleur contrˆ ole du processus de r´esolution.
Spread Outils permettant de travailler avec les feuilles de calcul dans
Maple.
stats Manipulation statistique de donn´ees ; inclut des commandes pour
le calcul de la moyenne, l’´ecart type, les coefficients de corr´elation, la
variance et l’analyse de r´egression.
StringTools Commandes optimis´ees de manipulation des chaˆınes de ca-
ract`eres.
Student Sous-packages sp´ecifiques ` a certains cours. Dans des versions
futures de Maple, ce package sera ´elargi pour inclure d’autres sous-
packages li´es `a l’enseignement. Le premier de ceux-ci est Calculus1.
Calculus1 Commandes permettant de d´ecortiquer les ´etapes de la
diff´erentiation, de l’int´egration et du calcul des limites, la visua-
lisation de la m´ethode de Newton, les sommes de Riemann, la
longueur d’arc, les volumes de r´evolution, de mˆeme que des rou-
tines pour trouver les points critiques d’une expression.
sumtools Commandes de calcul de sommes d´efinies et ind´efinies. Com-
prend les algorithmes de Gosper et de Zeilberger.
Sumtools Outils permettant de calculer des formes ferm´ees de sommes
d´efinies et ind´efinies.
tensor Commandes permettant le calcul tensoriel et ses applications ` a
la th´eorie g´en´erale de la relativit´e.
86 • Chapitre 3: Trouver des solutions
Le package Student Calculus1 (une variable)
Le package Student[Calculus1] vous aide ` a effectuer les calculs de
diff´erentiation, d’int´egration et de limites. Consid´erez le probl`eme sui-
vant : trouvez la d´eriv´ee de la fonction 4 ∗ x
2
.
>
with(Student[Calculus1]):
>
infolevel[Student] := 1:
Pour voir la liste de toutes les commandes charg´ees par Maple, remplacez
les deux points par le point-virgule ` a la fin de la commande.
>
Diff(4*x^2, x);
d
dx
(4 x
2
)
Utilisez la r`egle constantmultiple.
>
Rule[constantmultiple](%);
Creating problem #1
d
dx
(4 x
2
) = 4 (
d
dx
(x
2
))
Utilisez la r`egle power.
>
Rule[power](%);
d
dx
(4 x
2
) = 8 x
Consid´erez maintenant cet exemple d’int´egration. Int´egrez x∗cos(x)+
x entre x = 0 et x = π.
>
Int(x*cos(x) + x, x=0..Pi);

π
0
xcos(x) +xdx
Utilisez la r`egle sum.
>
Rule[sum](%);
Creating problem #2
3.8 Les packages Maple • 87

π
0
xcos(x) +xdx =

π
0
xcos(x) dx +

π
0
xdx
Utilisez la r`egle power.
>
Rule[power](%);

π
0
xcos(x) +xdx =

π
0
xcos(x) dx +
1
2
π
2
Employez la commande Hint pour obtenir un indice sur la prochaine
´etape de r´esolution du probl`eme.
>
Hint(%);
[parts, x, sin(x)]
Utilisez cet indice avec la commande Rule.
>
Rule[%](%%);

π
0
xcos(x) +xdx = −

π
0
sin(x) dx +
1
2
π
2
Servez-vous de la r`egle sin pour terminer le calcul.
>
Rule[sin](%);

π
0
xcos(x) +xdx = −2 +
1
2
π
2
Employez le package Student[Calculus1] pour calculer la limite de
(1 + 1/x)
x
.
Utilisez la commande Understand pour sp´ecifier des r`egles qui servi-
ront au calcul d’une limite par la commande Limit sans les appliquer
directement. Sp´ecifiez ` a Understand les r`egles de la constante, de la
constante multiplicative, de la puissance et de la somme pour le pro-
chain exemple.
>
Understand(Limit, constant, ‘c*‘, power, sum);
88 • Chapitre 3: Trouver des solutions
Limit = [constant, constantmultiple, power, sum]
>
Limit((1 + 1/x)^x, x=infinity);
lim
x→∞
(1 +
1
x
)
x
Demandez un indice ` a propos de la prochaine ´etape ` a effectuer.
>
Hint(%);
Creating problem #3
Rewrite the expression as an exponential to prepare for
using l‘Hopital’s rule
[rewrite, (1 +
1
x
)
x
= e
(xln(1+
1
x
))
]
Utilisez la r`egle donn´ee par Hint.
>
Rule[%](%%);
lim
x→∞
(1 +
1
x
)
x
= lim
x→∞
e
(xln(1+
1
x
))
>
Hint(%);
[exp]
>
Rule[%](%%);
lim
x→∞
(1 +
1
x
)
x
= e
(lim
x→∞
xln(1+
1
x
))
>
Hint(%);
[lhopital , ln(1 +
1
x
)]
>
Rule[%](%%);
3.8 Les packages Maple • 89
lim
x→∞
(1 +
1
x
)
x
= e
(lim
x→∞
x
x+1
)
>
Hint(%);

rewrite,
x
x + 1
=
1
1 +
1
x
¸
¸
¸
>
Rule[%](%%);
lim
x→∞
(1 +
1
x
)
x
= e
Consid´erez la fonction −2/3∗x
2
+x. Tracez-en le graphique, de mˆeme
que la pente de sa tangente en x = 0.
>
Tangent(-2/3*x^2+x, x=0, -2..2, output=plot,
>
showtangent=true);
f(x)
The tangent at x = 0

The Tangent to the Graph of
f(x) = –2/3*x^2+x
at the Point (0, f(0))
–5
–4
–3
–2
–1
1
2
–2 –1 1 2
x
En quel endroit cette courbe traverse-t-elle l’axe des x?
>
Roots(-2/3*x^2+x);
[0,
3
2
]
Vous pouvez calculer l’aire sous la courbe entre ces deux points au
moyen de sommes de Riemann.
90 • Chapitre 3: Trouver des solutions
>
ApproximateInt(-2/3*x^2+x, x=0..3/2, method=midpoint,
>
output=plot, view=[0..1.6, -0.15..0.4]);
f(x)

An Approximation of the Integral of
f(x) = –2/3*x^2+x
on the Interval [0, 3/2]
Using a Midpoint Riemann Sum
Approximate Value: .3750000000
Area: .3768750000
–0.2
–0.1
0
0.1
0.2
0.3
0.4
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
x
Puisque le r´esultat n’est pas une bonne approximation, augmentez
`a 40 le nombre de boˆıtes utilis´ees.
>
ApproximateInt(-2/3*x^2+x, x=0..3/2, method=midpoint,
>
output=plot, view=[0..1.6, -0.15..0.4],
>
partition=40);
f(x)

An Approximation of the Integral of
f(x) = –2/3*x^2+x
on the Interval [0, 3/2]
Using a Midpoint Riemann Sum
Approximate Value: .3750000000
Area: .3751171867
–0.2
–0.1
0
0.1
0.2
0.3
0.4
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
x
Quelle est la valeur exacte ? Utilisez d’abord n boˆıtes et calculez la
formule de la somme.
>
ApproximateInt(-2/3*x^2+x, x=0..3/2, method=midpoint,
>
output=sum, partition=n);
3
2
n−1
¸
i=0

¸
¸

3
2
(i +
1
2
)
2
n
2
+
3
2
i +
1
2
n
¸

n
3.8 Les packages Maple • 91
Prenez ensuite la limite lorsque n tend vers ∞.
>
Limit( %, n=infinity );
lim
n→∞
3
2
n−1
¸
i=0

¸
¸

3
2
(i +
1
2
)
2
n
2
+
3
2
i +
1
2
n
¸

n
>
value(%);
3
8
Remarquez maintenant que vous pouvez obtenir le mˆeme r´esultat au
moyen d’une int´egrale.
>
Int(-2/3*x^2+x, x=0..3/2 );

3/2
0

2
3
x
2
+xdx
>
value(%);
3
8
Pour plus d’information sur le calcul diff´erentiel avec Maple, reportez-
vous au chapitre 6.
Le package LinearAlgebra
En alg`ebre lin´eaire, un ensemble de vecteurs lin´eairement ind´ependants
qui engendrent l’espace vectoriel se nomme une base. Il est possible d’ex-
primer n’importe quel ´el´ement de l’espace vectoriel comme une combinai-
son lin´eaire des ´el´ements de la base.
Un ensemble de vecteurs ¦v
1
, v
2
, v
3
, . . . , v
n
¦ est lin´eairement ind´epen-
dant si et seulement si, lorsque
c
1
v
1
+c
2
v
2
+c
3
v
3
+ +c
n
v
n
= 0
alors
c
1
= c
2
= c
3
= = c
n
= 0.
92 • Chapitre 3: Trouver des solutions
Probl`eme : D´eterminer une base de l’espace vectoriel g´en´er´e par les
vecteurs [1, −1, 0, 1], [5, −2, 3, −1] et [6, −3, 3, 0]. Exprimer le vecteur
[1, 2, 3, −5] par rapport ` a cette base.
Solution : Entrer les vecteurs.
>
with(LinearAlgebra):
>
v1:=<1|-1|0|1>:
>
v2:=<5|-2|3|-1>:
>
v3:=<6|-3|3|0>:
>
vector_space:=<v1,v2,v3>;
vector_space :=

1 −1 0 1
5 −2 3 −1
6 −3 3 0
¸
¸
Si les vecteurs sont lin´eairement ind´ependants, il forment une base.
Pour v´erifier l’ind´ependance lin´eaire, ´ecrivez l’´equation c
1
v
1
+c
2
v
2
+c
3
v
3
=
0.
c
1
[1, −1, 0, 1] +c
2
[5, −2, 3, −1] +c
3
[6, −3, 3, 0] = [0, 0, 0, 0]
Cette ´equation est ´equivalente ` a
c
1
+ 5c
2
+ 6c
3
= 0
−c
1
−2c
2
−3c
3
= 0
3c
2
+ 3c
3
= 0
c
1
−c
2
= 0
>
LinearSolve( Transpose(vector_space), <0,0,0,0> );

−_t3
3
−_t3
3
_t3
3
¸
¸
Les vecteurs sont lin´eairement d´ependants puisque chacun est un pro-
duit lin´eaire d’une variable. Ils ne peuvent donc pas former une base. La
commande RowSpace retourne une base pour un espace vectoriel donn´e.
>
b:=RowSpace(vector_space);
b := [[1, 0, 1, −1], [0, 1, 1, −2]]
3.8 Les packages Maple • 93
>
b1:=b[1]; b2:=b[2];
b1 := [1, 0, 1, −1]
b2 := [0, 1, 1, −2]
>
basis:=<b1,b2>;
basis :=
¸
1 0 1 −1
0 1 1 −2

Exprimer [1, 2, 3, −5] en coordonn´ees par rapport ` a cette base.
>
LinearSolve( Transpose(basis), <1|2|3|-5> );
¸
1
2

Pour obtenir davantage d’information ` a propos de ce package, ex´ecu-
tez la commande ?LinearAlgebra.
Le package Matlab
Le package Matlab vous permet d’appeler certaines fonctions de Matlab ` a
partir d’une session Maple, en supposant que Matlab soit install´e sur votre
syst`eme
1
. Matlab est une abr´eviation de matrix laboratory (laboratoire
de matrices) et est un package de calcul num´erique fort populaire, utilis´e
par des ing´enieurs et d’autres professionnels.
On doit d’abord ´etablir une connexion entre les deux produits avec
>
Matlab[openlink]();
Pour d´eterminer les valeurs et les vecteurs propres d’une matrice d’en-
tiers, on d´efinit d’abord la matrice souhait´ee avec la syntaxe de Maple.
>
A := Matrix([1,2,3],[1,2,3],[2,5,6]]):
On appelle ensuite la commande eig de Matlab.
1
Il existe ´egalement un Symbolic Computation Toolbox disponible pour Matlab qui
vous permet d’appeler des commandes Maple depuis Matlab.
94 • Chapitre 3: Trouver des solutions
>
P,W := Matlab[eig](A, eigenvectors=true):
Remarquez ce qui se trouve ` a la gauche de l’op´erateur d’affectation.
Le (P,W) sp´ecifie que deux objets seront g´en´er´es et assign´es aux variables
— les valeurs propres, ` a W, et les vecteurs propres, ` a P. L’affectation
multiple est ´egalement possible avec les commandes Maple, mais, puisque
les commandes Maple existantes sont con¸ cues pour ne retourner qu’un
seul r´esultat, cette fonctionnalit´e est peu utilis´ee.
Examinons les r´esultats.
>
W;

9.321825 0. 0.
0. −.5612673 10
−15
0.
0. 0. −.3218253
¸
¸
¸
¸
>
P;

−.3940365889964673 −.9486832980505138 −.5567547110202646
−.3940365889964672 −2.758331802155925 10
−16
−.5567547110202655
−.8303435030540421 .3162277660168383 .6164806432593667
¸
¸
¸
¸
Les commandes de ce package peuvent ´egalement prendre comme pa-
ram`etres des donn´ees en format Matlab. Consultez l’aide sous la rubrique
Matlab pour obtenir plus d’information sur les donn´ees Matlab accept´ees
par Maple.
Le package Statistics
Le package stats poss`ede plusieurs commandes d’analyse et de mani-
pulation de donn´ees, de mˆeme que plusieurs types de graphiques utilis´es
en statistique. Il contient ´egalement un grand ´eventail de distributions
statistiques.
stats est un exemple de package renfermant des sous-packages (sub-
packages en anglais).
`
A l’int´erieur de chaque sous-package se trouvent
plusieurs commandes group´ees par fonctionnalit´e.
>
with(stats);
[anova, describe, fit, importdata, random, statevalf ,
statplots, transform]
3.8 Les packages Maple • 95
Le package stats traite les donn´ees sous la forme de listes statis-
tiques, qui peuvent ˆetre de simples listes Maple. Une liste statistique peut
´egalement contenir des intervalles et des valeurs auxquelles des poids ont
´et´e assign´es. La diff´erence se comprend plus facilement au moyen d’un
exemple. marks est une liste standard,
>
marks :=
>
[64,93,75,81,45,68,72,82,76,73];
marks := [64, 93, 75, 81, 45, 68, 72, 82, 76, 73]
tout comme readings,
>
readings := [ 0.75, 0.75, .003, 1.01, .9125,
>
.04, .83, 1.01, .874, .002 ];
readings :=
[.75, .75, .003, 1.01, .9125, .04, .83, 1.01, .874, .002]
qui sont ´equivalentes ` a cette liste statistique.
>
readings := [ Weight(.75, 2), .003, Weight(1.01, 2),
>
.9125, .04, .83, .874, .002 ];
readings := [Weight(.75, 2), .003, Weight(1.01, 2),
.9125, .04, .83, .874, .002]
L’expression Weight(x,n) indique que la valeur x apparaˆıt n fois dans
la liste.
Si des diff´erences de moins de 0, 01 sont suffisamment petites pour
ˆetre n´egligeables, il est possible de les regrouper et de ne sp´ecifier qu’un
intervalle (en utilisant “..”).
>
readings := [ Weight(.75, 2), Weight(1.01, 2), .9125,
>
.04, .83, .874, Weight(0.002..0.003, 2) ];
readings := [Weight(.75, 2), Weight(1.01, 2), .9125, .04,
.83, .874, Weight(.002...003, 2)]
Le sous-package describe contient des commandes servant ` a l’analyse
de donn´ees.
>
describe[mean](marks);
96 • Chapitre 3: Trouver des solutions
729
10
>
describe[range](marks);
45..93
>
describe[range](readings);
.002..1.01
>
describe[standarddeviation](readings);
.4038750456
Ce package contient plusieurs distributions statistiques. G´en´erez des
donn´ees al´eatoires en utilisant la distribution normale, groupez-les en
classes et tracez un histogramme de ces classes.
>
random_data:=[random[normald](50)];
random_data := [1.253885017, −.8364873682,
−.4386378394, −1.140005385, .1529160443,
.7487697029, −.4908898750, −.6385850228,
.7648245898, −.04721150696, −1.463572278,
.4470293004, 1.342701867, 2.162605068,
−.2620109124, .1093403084, −.9886372087,
−.7765483851, −.1231141571, .3876183720,
1.625165927, 1.095665255, −.2068680316,
−1.283733823, 1.583279600, .3045008349,
−.7304597374, .4996033128, .8670709448,
−.1729739933, −.6819890237, .005183053789,
.8876933468, −.3758638317, 1.452138520,
2.858250470, .6917100232, .6341448687,
.6707087107, .5872984199, .03801888006,
−.1238893314, −.01231563388, −.7709242575,
−1.599692668, .8181350112, .08547526754,
.09467224460, −1.407989130, .4128440679]
>
ranges:=[-5..-2,-2..-1,-1..0,0..1,1..2,2..5];
3.8 Les packages Maple • 97
ranges := [−5.. −2, −2.. −1, −1..0, 0..1, 1..2, 2..5]
>
data_list:=transform[tallyinto](random_data,ranges);
data_list := [Weight(1..2, 6), Weight(−5.. −2, 0),
Weight(2..5, 2), Weight(−2.. −1, 5), Weight(0..1, 20),
Weight(−1..0, 17)]
>
statplots[histogram](data_list);
0
5
10
15
20
–6 –4 –2 2 4 6
Le package d’optimisation lin´eaire
Le package simplex contient des commandes d’optimisation lin´eaire grˆ ace
`a l’utilisation de l’algorithme du simplexe. L’optimisation lin´eaire permet
de trouver des solutions optimales ` a des ´equations soumises ` a certaines
contraintes.
Un exemple classique d’optimisation est le probl`eme de la livraison de
pizza. Imaginez-vous en livreur de pizza : vous devez livrer quatre pizzas
en quatre endroits diff´erents dispers´es dans la ville. Vous souhaitez livrer
toutes les quatre en utilisant le moins de carburant possible. Vous devez
´egalement vous rendre aux quatre endroits en moins de vingt minutes,
de mani`ere que les pizzas demeurent chaudes. Si vous cr´eez des ´equations
math´ematiques repr´esentant les routes menant aux quatre endroits ainsi
que leurs distances respectives, vous pouvez trouver la solution optimale,
c’est-` a-dire la solution qui vous fera utiliser le moins de carburant tout
en atteignant toutes les adresses dans le plus court d´elai possible. Les
contraintes de ce syst`eme particulier sont que vous devez avoir livr´e toutes
les quatre pizzas vingt minutes apr`es avoir quitt´e le restaurant.
Voici un petit syst`eme en guise d’exemple.
>
with(simplex);
98 • Chapitre 3: Trouver des solutions
Warning, the protected names maximize and minimize have
been redefined and unprotected
Warning, the name basis has been redefined
[basis, convexhull , cterm, define_zero, display, dual ,
feasible, maximize, minimize, pivot, pivoteqn, pivotvar,
ratio, setup, standardize]
Supposons que vous souhaitez maximiser l’expression w
>
w := -x+y+2*z;
w := −x +y + 2 z
soumise aux contraintes c1, c2 et c3.
>
c1 := 3*x+4*y-3*z <= 23;
c1 := 3 x + 4 y −3 z ≤ 23
>
c2 := 5*x-4*y-3*z <= 10;
c2 := 5 x −4 y −3 z ≤ 10
>
c3 := 7*x +4*y+11*z <= 30;
c3 := 7 x + 4 y + 11 z ≤ 30
>
maximize(w, {c1,c2,c3});
Dans ce cas, l’absence de r´eponse signifie que Maple ne peut trouver de
solution. Vous pouvez utiliser la commande feasible pour v´erifier que
l’ensemble des contraintes est valide.
>
feasible({c1,c2,c3});
true
Essayez ` a nouveau, en ajoutant une restriction ` a la solution.
>
maximize(w, {c1,c2,c3}, NONNEGATIVE);
3.9 Conclusion • 99
¦x = 0, z =
1
2
, y =
49
8
¦
3.9 Conclusion
Ce chapitre vous a pr´esent´e des caract´eristiques fondamentales de Maple
qui vous aideront grandement ` a mesure que vous apprendrez de nouvelles
m´ethodes de r´esolution de probl`emes plus complexes. La section 3.1 vous
a introduit aux commandes solve et fsolve de mˆeme qu’` a leur utilisation
ad´equate. Que vous utilisiez ou non les commandes solve, ces m´ethodes
s’av`ereront utiles ` a de nombreuses reprises.
Les derni`eres sections du pr´esent chapitre ont introduit les mani-
pulations, la commande solve et l’organisation de Maple et de ses bi-
blioth`eques de mani`ere `a vous donner un avant-goˆ ut de son potentiel.
`
A
ce point de votre lecture, vous ne connaissez pas encore tout ` a fait ce
logiciel. Vous en savez cependant suffisamment pour commencer ` a utiliser
Maple de mani`ere efficace.
`
A votre guise, vous pouvez interrompre ici votre ´etude pour travailler
(ou jouer !) avec Maple.
100 • Chapitre 3: Trouver des solutions
4 Tracer des graphiques
Quelquefois, la meilleure mani`ere de mieux comprendre une structure
math´ematique consiste ` a en tracer le graphique. Maple peut produire
plusieurs formes de graphiques : en deux ou trois dimensions, anim´es ou
non, affichables selon n’importe quel angle. Maple peut g´erer les formes
explicites, implicites et param´etriques et exploiter plusieurs syst`emes de
coordonn´ees. La flexibilit´e de Maple vous permet de manipuler ais´ement
des graphiques dans de nombreuses situations.
4.1 Graphiques en deux dimensions
Lorsqu’on lui demande de tracer une fonction donn´ee explicitement y =
f(x), Maple doit connaˆıtre la fonction et son domaine.
>
plot( sin(x), x=-2*Pi..2*Pi );
–1
–0.5
0
0.5
1
–6 –4 –2 2 4 6
x
Cliquer sur n’importe quel point de la fenˆetre du graphique fait af-
ficher les coordonn´ees de ce point. Les menus (que l’on retrouve sur la
barre de menu ou en cliquant avec le bouton droit de la souris sur le gra-
phique lui-mˆeme) vous permettent de modifier plusieurs caract´eristiques
101
102 • Chapitre 4: Tracer des graphiques
des graphiques et d’utiliser des options d’affichage r´esum´ees sous la ru-
brique ?plot,options.
Maple peut ´egalement tracer le graphe de fonctions d´efinies par l’uti-
lisateur.
>
f := x -> 7*sin(x) + sin(7*x);
f := x → 7 sin(x) + sin(7 x)
>
plot(f(x), x=0..10);
–6
–4
–2
0
2
4
6
2 4 6 8 10
x
Maple vous permet d’examiner plus en d´etail des intervalles, ` a la fois
en x et en y.
>
plot(f(x), x=0..10, y=4..8);
4
5
6
7
8
y
0 2 4 6 8 10
x
Maple peut mˆeme g´erer des domaines infinis.
>
plot( sin(x)/x, x=0..infinity);
4.1 Graphiques en deux dimensions • 103
0
infinity
x
Les graphiques param´etriques
Certains graphiques ne peuvent ˆetre sp´ecifi´es explicitement ; en d’autres
mots, il est impossible d’exprimer la variable d´ependante sous forme de
fonction y = f(x). Sur un cercle, par exemple, la plupart des valeurs de x
correspondent deux valeurs de y. Une solution consiste ` a rendre ` a la fois
x et y d´ependantes d’un autre param`etre, par exemple t. Le graphique
g´en´er´e `a partir de ces fonctions se nomme un graphique param´etrique.
Utilisez la syntaxe suivante pour utiliser les graphiques param´etriques.
plot( [ x-expr, y-expr, parametre=intervalle ] )
Vous tracez ainsi une liste contenant x-expr, y-expr, le nom et l’intervalle
du param`etre. Par exemple :
>
plot( [ t^2, t^3, t=-1..1 ] );
–1
–0.5
0
0.5
1
0.2 0.4 0.6 0.8 1
Les points (cos t, sint) forment un cercle.
>
plot( [ cos(t), sin(t), t=0..2*Pi ] );
104 • Chapitre 4: Tracer des graphiques
–1
–0.5
0.5
1
–1 –0.5 0.5 1
Plutˆ ot que de produire un cercle, le graphique ci-dessus ressemble da-
vantage ` a une ellipse puisque Maple, par d´efaut, d´eforme le graphique
pour lui faire prendre les dimensions de la fenˆetre. Voici le mˆeme gra-
phique pour lequel on a sp´ecifi´e le param`etre scaling=constrained. Il
est possible de changer l’´echelle des axes en utilisant les menus ou l’option
scaling.
>
plot( [ cos(t), sin(t), t=0..2*Pi ], scaling=constrained );
–1
–0.5
0.5
1
–1 –0.5 0.5 1
Le d´esavantage de constrained r´eside dans le fait que cette option
peut cacher d’importants d´etails lorsque les caract´eristiques d’une dimen-
sion apparaissent ` a une ´echelle beaucoup plus petite que les autres. Le
graphique suivant est trac´e sans l’option constrained (unconstrained).
>
plot( exp(x), x=0..3 );
4.1 Graphiques en deux dimensions • 105
2
4
6
8
10
12
14
16
18
20
0 0.5 1 1.5 2 2.5 3
x
Voici maintenant le mˆeme graphique, trac´e avec l’option
constrained.
>
plot( exp(x), x=0..3, scaling=constrained);
2
4
6
8
10
12
14
16
18
20
0123
x
Les coordonn´ees polaires
Les coordonn´ees cart´esiennes (ordinaires) sont les coordonn´ees par d´efaut
de Maple et ne repr´esentent qu’une des multiples mani`eres de sp´ecifier un
point dans l’espace ; les coordonn´ees polaires, (r, θ), peuvent ´egalement
ˆetre utilis´ees.
En coordonn´ees polaires, r est la distance du point ` a l’origine, et θ
repr´esente l’angle entre l’axe des x et la ligne passant par le point donn´e
et l’origine.
Maple peut tracer une fonction en coordonn´ees polaires ` a l’aide de
la commande polarplot. Pour acc´eder ` a la forme abr´eg´ee de cette com-
mande, vous devez d’abord appeler la commande with(plots).
>
with(plots):
106 • Chapitre 4: Tracer des graphiques
Figure 4.1 Le syst`eme de coordonn´ees polaires
θ
r
0
y
x
Utilisez la syntaxe suivante pour tracer les graphiques en coordonn´ees
polaires.
polarplot( r-expr, angle=intervalle )
En coordonn´ees polaires, vous pouvez sp´ecifier le cercle explicitement en
entrant r = 1.
>
polarplot( 1, theta=0..2*Pi, scaling=constrained );
–1
–0.5
0.5
1
–1 –0.5 0.5 1
Tout comme dans cette section ` a la page 103, le param`etre
scaling=constrained fait apparaˆıtre le cercle rond. Voici le graphique
de r = sin(3θ).
>
polarplot( sin(3*theta), theta=0..2*Pi );
4.1 Graphiques en deux dimensions • 107
–1
–0.8
–0.6
–0.4
–0.2
0
0.2
0.4
–0.8–0.6–0.4–0.2 0.2 0.4 0.6 0.8
Le graphique de r = θ est une spirale.
>
polarplot(theta, theta=0..4*Pi);
–10
–8
–6
–4
–2
2
4
6
8
–5 5 10
La commande polarplot accepte ´egalement les graphiques param´etri-
s´es ; vous pouvez donc exprimer le rayon et les coordonn´ees angulaires en
fonction d’un param`etre, par exemple t. La syntaxe est similaire aux gra-
phiques param´etriques en coordonn´ees cart´esiennes. Consultez la pr´esente
section, page 103.
polarplot( [ r-expr, angle-expr, param` etre=intervalle ] )
Les ´equations r = sin(t) et θ = cos(t) d´efinissent le graphique suivant.
>
polarplot( [ sin(t), cos(t), t=0..2*Pi ] );
108 • Chapitre 4: Tracer des graphiques
–0.4
–0.2
0.2
0.4
–1 –0.5 0.5 1
Voici le graphique de θ = sin(3r).
>
polarplot( [ r, sin(3*r), r=0..7 ] );
–4
–2
0
2
4
1 2 3 4 5 6
Les fonctions discontinues
Les fonctions poss´edant des discontinuit´es demandent davantage d’at-
tention. Consid´erez par exemple la fonction suivante, qui poss`ede deux
discontinuit´es en x = 1 et x = 2.
f(x) =

−1 si x < 1,
1 si 1 ≤ x < 2,
3 sinon.
Voici comment d´efinir f(x) dans Maple.
>
f := x -> piecewise( x<1, -1, x<2, 1, 3 );
f := x → piecewise(x < 1, −1, x < 2, 1, 3)
>
plot(f(x), x=0..3);
4.1 Graphiques en deux dimensions • 109
–1
0
1
2
3
0.5 1 1.5 2 2.5 3
x
Maple dessine des lignes presque verticales pr`es d’un point de discon-
tinuit´e. L’option discont=true indique qu’il peut y avoir des disconti-
nuit´es.
>
plot(f(x), x=0..3, discont=true);
–1
0
1
2
3
0.5 1 1.5 2 2.5 3
x
Les fonctions qui poss`edent des singularit´es (qui deviennent arbitrai-
rement grandes en un certain point) forment un autre cas particulier. La
fonction x → 1/(x −1)
2
poss`ede une singularit´e en x = 1.
>
plot( 1/(x-1)^2, x=-5..6 );
0
50000
100000
150000
200000
250000
–4 –2 2 4 6
x
110 • Chapitre 4: Tracer des graphiques
Dans le graphique pr´ec´edent, tous les d´etails int´eressants du graphique
sont perdus en raison du pic en x = 1. La solution consiste ` a visualiser la
fonction sur un intervalle restreint, par exemple entre y = −1 et y = 7.
>
plot( 1/(x-1)^2, x=-5..6, y=-1..7 );
–1
0
1
2
3
4
5
6
7
y
–4 –2 2 4 6
x
La fonction tangente poss`ede plusieurs singularit´es en x =
π
2
+πn, o` u
n est un entier.
>
plot( tan(x), x=-2*Pi..2*Pi );
1000
2000
3000
–6 –4 –2 2 4 6
x
Pour en voir les d´etails, on r´eduit l’intervalle entre y = −4 et y = 4,
par exemple.
>
plot( tan(x), x=-2*Pi..2*Pi, y=-4..4 );
–4
–3
–2
–1
0
1
2
3
4
y
–6 –4 –2 2 4 6
x
4.1 Graphiques en deux dimensions • 111
Maple dessine des lignes presque verticales pr`es des singularit´es ; vous
devez donc utiliser l’option discont=true.
>
plot( tan(x), x=-2*Pi..2*Pi, y=-4..4, discont=true );
–4
–3
–2
–1
0
1
2
3
4
y
–6 –4 –2 2 4 6
x
Graphiques multiples
Pour tracer plus d’une fonction dans un mˆeme graphique, il suffit de
donner ` a la commande plot une liste de fonctions.
>
plot( [ x, x^2, x^3, x^4 ], x=-10..10, y=-10..10 );
–10
–8
–6
–4
–2
0
2
4
6
8
10
y
–10 –8 –6 –4 –2 2 4 6 8 10
x
>
f := x -> piecewise( x<0, cos(x), x>=0, 1+x^2 );
f := x → piecewise(x < 0, cos(x), 0 ≤ x, 1 +x
2
)
>
plot( [ f(x), diff(f(x), x), diff(f(x), x, x) ],
>
x=-2..2, discont=true );
112 • Chapitre 4: Tracer des graphiques
–1
0
1
2
3
4
5
–2 –1 1 2
x
Cette technique fonctionne ´egalement pour les graphiques param´e-
triques.
>
plot( [ [ 2*cos(t), sin(t), t=0..2*Pi ],
>
[ t^2, t^3, t=-1..1 ] ], scaling=constrained );
–1
–0.5
0.5
1
–2 –1 1 2
En utilisant diff´erents styles de ligne (par exemple continue ou poin-
till´ee), il est ais´e de distinguer diff´erentes fonctions dans un mˆeme gra-
phique en sp´ecifiant le param`etre linestyle. Dans l’exemple suivant,
Maple utilise linestyle=SOLID pour la premi`ere fonction, sin(x)/x et
linestyle=DOT pour la seconde fonction, cos(x)/x.
>
plot( [ sin(x)/x, cos(x)/x ], x=0..8*Pi, y=-0.5..1.5,
>
linestyle=[1,4] );
4.1 Graphiques en deux dimensions • 113
–0.4
–0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
y
5 10 15 20 25
x
Vous pouvez ´egalement changer le style de ligne en utilisant les menus
standard et contextuels. De mani`ere similaire, vous pouvez sp´ecifier les
couleurs des graphiques au moyen de l’option color. (Vous pouvez en
voir l’effet sur un affichage en couleurs, contrairement au pr´esent livre qui
n’affiche les lignes que selon diff´erentes teintes de gris.)
>
plot( [ [f(x), D(f)(x), x=-2..2],
>
[D(f)(x), (D@@2)(f)(x), x=-2..2] ],
>
color=[gold, plum] );
–1
0
1
2
3
4
1 2 3 4 5
Consultez la rubrique ?plot,color pour obtenir plus de d´etails sur
les couleurs dans Maple.
Tracer des points
Pour tracer des donn´ees num´eriques, appelez la fonction pointplot en
sp´ecifiant les donn´ees dans une liste de listes de la forme
[[x
1
, y
1
], [x
2
, y
2
], . . . , [x
n
, y
n
]].
Si la liste est longue, donnez-lui un nom.
>
data_list:=[[-2,4],[-1,1],[0, 0],[1,1],[2,4],[3,9],[4,16]];
114 • Chapitre 4: Tracer des graphiques
data_list :=
[[−2, 4], [−1, 1], [0, 0], [1, 1], [2, 4], [3, 9], [4, 16]]
>
pointplot(data_list);
0
2
4
6
8
10
12
14
16
–2 –1 1 2 3 4
Par d´efaut, Maple ne relie pas les points par des lignes droites ; l’option
style=line oblige ` a tracer ces lignes. Vous pouvez ´egalement utiliser les
menus pour indiquer ` a Maple de tracer les lignes.
>
pointplot( data_list, style=line );
0
2
4
6
8
10
12
14
16
–2 –1 1 2 3 4
Vous pouvez changer l’apparence des points eux-mˆemes ` a l’aide des
menus ou des options symbol et symbolsize.
>
data_list_2:=[[1,1], [2,2], [3,3], [4,4]];
data_list_2 := [[1, 1], [2, 2], [3, 3], [4, 4]]
>
pointplot(data_list_2, style=point, symbol=cross,
>
symbolsize=16);
4.1 Graphiques en deux dimensions • 115
1
1.5
2
2.5
3
3.5
4
1 1.5 2 2.5 3 3.5 4
Utilisez le package CurveFitting pour lisser une courbe passant par
une suite de points et appelez la commande plot pour en voir le r´esultat.
Pour plus d’information, reportez-vous ` a la rubrique ?CurveFitting.
Raffiner des graphiques
Maple comporte un algorithme de trac´e adaptatif. Il calcule la valeur de
la fonction en un nombre raisonnable de points approximativement ´e-
quidistants dans l’intervalle sp´ecifi´e. Il d´ecide ensuite de calculer plus de
points dans les intervalles o` u les valeurs fluctuent davantage. Cependant,
il peut arriver que cet algorithme adaptatif ne donne pas de r´esultats
satisfaisants.
>
plot(sum((-1)^(i)*abs(x-i/10), i=0..30), x=-1..4);
2.6
2.8
3
3.2
3.4
–1 0 1 2 3 4 5 6
x
Pour raffiner ce graphique, on peut indiquer ` a Maple de calculer da-
vantage de points.
>
plot(sum((-1)^(i)*abs(x-i/10), i=0..30), x=-1..4,
>
numpoints=500);
116 • Chapitre 4: Tracer des graphiques
2.6
2.8
3
3.2
3.4
–1 0 1 2 3 4 5 6
x
Consultez ?plot et ?plot,options pour en connaˆıtre davantage.
4.2 Graphiques en trois dimensions
Vous pouvez tracer le graphique d’une fonction de deux variables comme
une surface dans l’espace tridimensionnel. Cela vous permet de visualiser
cette derni`ere. La syntaxe de plot3d est similaire ` a celle de plot. Encore
une fois, une fonction donn´ee explicitement, z = f(x, y), est la plus facile
`a tracer.
>
plot3d( sin(x*y), x=-2..2, y=-2..2 );
Vous pouvez faire tourner le graphique en cliquant sur la fenˆetre avec
votre souris et en faisant bouger la boˆıte qui en d´efinit le contour. Les
menus vous permettent de modifier plusieurs caract´eristiques d’un gra-
phique.
Tout comme plot, plot3d peut tracer des fonctions d´efinies par l’uti-
lisateur.
4.2 Graphiques en trois dimensions • 117
>
f := (x,y) -> sin(x) * cos(y);
f := (x, y) → sin(x) cos(y)
>
plot3d( f(x,y), x=0..2*Pi, y=0..2*Pi );
Par d´efaut, Maple affiche le graphique comme une surface color´ee,
mais il est possible de modifier cette option en utilisant les menus ou
le param`etre style. Par exemple, style=hidden dessine le graphique
comme une structure en fil de fer.
>
plot3d( f(x,y), x=0..2*Pi, y=0..2*Pi, style=hidden );
Consultez ?plot3d,options pour obtenir une liste des options de
style.
Le domaine du deuxi`eme param`etre peut d´ependre du premier pa-
ram`etre.
>
plot3d( sqrt(x-y), x=0..9, y=-x..x );
118 • Chapitre 4: Tracer des graphiques
Les graphiques param´etriques
Certains graphiques ne peuvent ˆetre sp´ecifi´es explicitement ; en d’autres
mots, il est impossible d’exprimer la variable d´ependante sous forme de
fonction z = f(x, y). La sph`ere en est un exemple. Comme pour les
graphiques bidimensionnels (consultez la section Les graphiques pa-
ram´etriques de la page 103), une solution consiste ` a rendre ` a la fois
x, y et z d´ependantes de deux autres param`etres, par exemple s et t.
Le graphique produit ` a partir de ces fonctions se nomme un graphique
param´etrique. Utilisez la syntaxe suivante pour sp´ecifier les graphiques
param´etriques.
plot3d( [ x-expr, y-expr, z-expr ],
paramtre1=intervalle, paramtre2=intervalle )
En voici deux exemples.
>
plot3d( [ sin(s), cos(s)*sin(t), sin(t) ],
>
s=-Pi..Pi, t=-Pi..Pi );
>
plot3d( [ s*sin(s)*cos(t), s*cos(s)*cos(t), s*sin(t) ],
>
s=0..2*Pi, t=0..Pi );
4.2 Graphiques en trois dimensions • 119
Les coordonn´ees sph´eriques
Les coordonn´ees cart´esiennes (ordinaires) sont les coordonn´ees par d´efaut
de Maple et ne repr´esentent qu’une des multiples mani`eres de sp´ecifier un
point dans l’espace en trois dimensions ; les coordonn´ees sph´eriques sont
une autre option.
En coordonn´ees sph´eriques, les trois coordonn´ees sont r, la distance
du point ` a l’origine, l’angle θ dans le plan xy depuis l’axe des x et l’angle
φ depuis l’axe des z.
Figure 4.2 Le syst`eme de coordonn´ees sph´eriques
θ
r
φ
0
z
y
x
Maple peut tracer une fonction en coordonn´ees sph´eriques en utilisant
la commande sphereplot du package plots. Pour acc´eder ` a la forme
abr´eg´ee de cette commande, vous devez d’abord appeler la commande
with(plots). Pour ´eviter d’afficher la liste de toutes les commandes de
plots, tapez les deux-points plutˆ ot que le point-virgule.
>
with(plots):
Vous pouvez utiliser la commande sphereplot de la mani`ere suivante.
120 • Chapitre 4: Tracer des graphiques
sphereplot( r-expr, theta=intervalle, phi=intervalle )
Le graphique de r = (4/3)
θ
sinφ ressemble ` a ceci :
>
sphereplot( (4/3)^theta * sin(phi),
>
theta=-1..2*Pi, phi=0..Pi );
Le trac´e d’une sph`ere en coordonn´ees sph´eriques est simple : il suffit
de sp´ecifier le rayon, par exemple 1, et de laisser θ tourner tout le long de
l’´equateur et φ tourner du pˆ ole nord (φ = 0) au pˆole sud (φ = π).
>
sphereplot( 1, theta=0..2*Pi, phi=0..Pi,
>
scaling=constrained );
(Consultez la section 4.1 pour une explication de l’option
constrained.)
La commande sphereplot accepte ´egalement les graphiques para-
m´etris´es, c’est-` a-dire les graphiques qui sp´ecifient le rayon et les deux
coordonn´ees d’angle en fonction de deux autres param`etres, par exemple s
et t. La syntaxe est similaire ` a celle d’un graphique param´etrique en deux
dimensions en coordonn´ees cart´esiennes ; consultez la pr´esente section ` a
la page 118.
4.2 Graphiques en trois dimensions • 121
sphereplot([ r-expr, theta-expr, phi-expr ],
param1=intervalle, param2=intervalle)
Ici, r = exp(s) +t, θ = cos(s +t) et φ = t
2
.
>
sphereplot( [ exp(s)+t, cos(s+t), t^2 ],
>
s=0..2*Pi, t=-2..2 );
Les coordonn´ees cylindriques
On peut ´egalement sp´ecifier un point dans le syst`eme cylindrique en
sp´ecifiant les coordonn´ees r, θ et z. Ici, r et θ sont les cooronn´ees polaires
(voir la section 4.1) dans le plan xy et z est la coordonn´ee cart´esienne
usuelle en z.
Figure 4.3 Le syst`eme de coordonn´ees cylindriques
r θ
0
z
y
x
Maple trace les fonctions en coordonn´ees cylindriques au moyen de la
commande cylinderplot du package plots.
>
with(plots):
Vous pouvez tracer les graphiques en coordonn´ees cylindriques en appli-
quant la syntaxe suivante :
122 • Chapitre 4: Tracer des graphiques
cylinderplot( r-expr, angle=intervalle, z=intervalle )
Voici une version tridimensionnelle de la spirale montr´ee dans la sec-
tion 4.1.
>
cylinderplot( theta, theta=0..4*Pi, z=-1..1 );
Les cˆ ones sont facilement trac´es en coordonn´ees cylindriques : il suffit
de sp´ecifier r = z et de faire varier θ de 0 `a 2π.
>
cylinderplot( z, theta=0..2*Pi, z=0..1 );
cylinderplot accepte ´egalement les graphiques param´etriques. Leur
syntaxe est similaire ` a celle des graphiques param´etriques en coordonn´ees
cart´esiennes. Consultez la section Les graphiques param´etriques de la
page 118.
cylinderplot( [ r-expr, theta-expr, z-expr ],
param` etre1=intervalle,
param` etre2=intervalle )
L’image suivante est un graphique de la fonction r = st, θ = s et
z = cos(t
2
).
4.2 Graphiques en trois dimensions • 123
>
cylinderplot( [s*t, s, cos(t^2)], s=0..Pi, t=-2..2 );
Raffiner des graphiques
Si votre graphique n’est pas aussi lisse ou pr´ecis que vous le souhaitez,
vous pouvez indiquer ` a Maple d’en calculer plus de points. L’option le
permettant est
grid=[m, n]
o` u m est le nombre de points ` a utiliser pour la premi`ere coordonn´ee, et n
le nombre de points ` a utiliser pour la seconde coordonn´ee.
>
plot3d( sin(x)*cos(y), x=0..3*Pi, y=0..3*Pi, grid=[50,50] );
Dans le prochain exemple, un grand nombre de points (100) pour la
premi`ere coordonn´ee (theta) rend la spirale lisse. Cependant, la fonction
ne varie pas selon l’axe des z ; un nombre faible de points (5) est donc
suffisant.
>
cylinderplot( theta, theta=0..4*Pi, z=-1..1, grid=[100,5] );
124 • Chapitre 4: Tracer des graphiques
La valeur par d´efaut de grid est d’environ 25 points sur 25.
Mod`eles de coloriage et d’´eclairage
Deux m´ethodes permettent colorier une surface en trois dimensions. Dans
la premi`ere, une ou plusieurs sources lumineuses color´ees illuminent la
surface. Dans la seconde, la couleur de chaque point est fonction directe
de ses coordonn´ees.
Maple poss`ede un grand nombre de configurations de sources lumi-
neuses donnant des r´esultats esth´etiquement satisfaisants. Vous pouvez
choisir ces sources lumineuses par les menus ou au moyen de l’option
lightmodel. Pour colorier la surface directement, un certain nombre de
fonctions de coloriage pr´ed´efinies est ´egalement disponible par les menus
ou au moyen de l’option shading.
L’usage simultan´e de sources lumineuses et de coloriage direct peut
compliquer le rendu des couleurs. Utilisez des sources lumineuses ou un
coloriage direct. Voici une surface colori´ee avec un shading zgrayscale
sans ´eclairage.
>
plot3d( x*y^2/(x^2+y^4), x=-5..5,y=-5..5,
>
shading=zgrayscale, lightmodel=none );
4.3 L’animation • 125
Voici la mˆeme surface illumin´ee par le mod`ele d’´eclairage light1 sans
coloriage (shading).
>
plot3d( x*y^2/(x^2+y^4), x=-5..5,y=-5..5,
>
shading=none, lightmodel=light1 );
Dans le pr´esent manuel, les graphiques apparaissent en noir et blanc.
Essayez-les vous-mˆeme pour voir les effets de la couleur.
4.3 L’animation
Tracer des graphiques constitue une excellente mani`ere de repr´esenter
l’information ; cependant, des images statiques ne mettent pas toujours
en ´evidence certains comportements graphiques, comme la d´eformation
d’une balle qui rebondit.
Une animation Maple ressemble ` a une s´equence d’images d’un film :
une suite de graphiques s’affichent rapidement l’un apr`es l’autre. Les deux
commandes utilis´ees pour les animations, animate et animate3d, sont
d´efinies dans le package plots. Souvenez-vous qu’il vous faut d’abord
entrer la commande with(plots) pour exploiter ensuite ces fonctions
sous leur forme abr´eg´ee.
L’animation en deux dimensions
Vous pouvez sp´ecifier une animation bidimensionnelle selon la syntaxe qui
suit.
animate( y-expr, x=intervalle, temps=intervalle )
Les images suivantes sont un exemple d’animation.
>
with(plots):
126 • Chapitre 4: Tracer des graphiques
Warning, the name changecoords has been redefined
>
animate( sin(x*t), x=-10..10, t=1..2 );
x x
x x x x
x x x
x
x
x x x
x x
Pour faire d´efiler une animation, vous devez d’abord la s´electionner
en cliquant dessus. Puis, choisissez Play dans le menu Animation.
Par d´efaut, une animation en deux dimensions est form´ee de seize
graphiques (frames). Si le mouvement vous semble saccad´e, vous pouvez
augmenter le nombre d’images. Notez cependant que le calcul d’un grand
nombre d’images demande beaucoup de temps et accapare beaucoup de
m´emoire. La commande suivante peut ˆetre coll´ee dans Maple pour pro-
duire une animation de 50 images.
>
animate( sin(x*t), x=-10..10, t=1..2, frames=50);
Les options standard des commandes plot sont ´egalement disponibles.
Entrez l’exemple suivant dans Maple pour en voir l’animation.
>
animate( sin(x*t), x=-10..10, t=1..2,
>
frames=50, numpoints=100 );
Vous pouvez afficher n’importe quelle animation bidimensionnelle sous
la forme d’un graphique tridimensionnel statique. Par exemple, essayez de
tracer l’animation de sin(xt) ci-dessus comme une surface.
>
plot3d( sin(x*t), x=-10..10, t=1..2, grid=[50,100],
>
orientation=[135,45], axes=boxed , style=HIDDEN );
4.3 L’animation • 127
–10
10
x
1
2
t
–1
0
1
Que vous pr´ef´eriez une animation ou un graphique est une question de
goˆ ut et d´epend des concepts que l’animation ou le graphique doit mettre
en ´evidence.
L’animation de graphiques param´etriques est ´egalement possible (con-
sultez la section 4.1 de la page 103).
>
animate( [ a*cos(u), sin(u), u=0..2*Pi ], a=0..2 );
L’option coords indique ` a la commande animate d’utiliser un syst`eme
de coordonn´ees autre que les coordonn´ees cart´esiennes.
>
animate( theta*t, theta=0..8*Pi, t=1..4, coords=polar );
128 • Chapitre 4: Tracer des graphiques
Pour voir les animations, entrez ces commandes dans Maple.
L’animation en trois dimensions
Utilisez la commande animate3d pour animer des surfaces en trois di-
mensions. Vous pouvez utiliser la commande animate3d de la mani`ere
suivante.
animate3d( z-expr, x=intervalle, y=intervalle,
temps=intervalle )
Les images qui suivent sont un exemple d’une animation en trois di-
mensions.
>
animate3d( cos(t*x)*sin(t*y),
>
x=-Pi..Pi, y=-Pi..Pi, t=1..2 );
Par d´efaut, une animation tridimensionnelle est form´ee de huit gra-
phiques. De la mˆeme mani`ere que pour les animations en deux dimensions,
vous pouvez indiquer ` a Maple le nombre de graphiques ` a tracer au moyen
du param`etre frames.
>
animate3d( cos(t*x)*sin(t*y), x=-Pi..Pi, y=-Pi..Pi, t=1..2,
>
frames=16 );
La section 4.2 explique le fonctionnement des graphiques tridimen-
sionnels param´etriques, que vous pouvez ´egalement animer.
4.4 Annoter des graphiques • 129
>
animate3d( [s*time, t-time, s*cos(t*time)],
>
s=1..3, t=1..4, time=2..4, axes=boxed);
12
2 2
–3
2 2 2
2
2 2 2
Pour animer une fonction dans un syst`eme de coordonn´ees diff´erent
des coordonn´ees cart´esiennes, utilisez l’option coords. Pour les coor-
donn´ees sph´eriques, par exemple, utilisez coords=spherical.
>
animate3d( (1.3)^theta * sin(t*phi), theta=-1..2*Pi,
>
phi=0..Pi, t=1..8, coords=spherical );
Pour les coordonn´ees cylindriques, utilisez coords=cylindrical.
>
animate3d( sin(theta)*cos(z*t), theta=1..3, z=1..4,
>
t=1/4..7/2, coords=cylindrical );
Pour obtenir une liste des syst`emes de coordonn´ees accept´es par
Maple, consultez ?plots,changecoords.
4.4 Annoter des graphiques
Il est possible d’ajouter plusieurs types d’annotations textuelles aux gra-
phiques. L’option title imprime le titre choisi dans la fenˆetre du gra-
phique, centr´e et pr`es du haut.
>
plot( sin(x), x=-2*Pi..2*Pi, title="Plot of Sine" );
130 • Chapitre 4: Tracer des graphiques
Plot of Sine
–1
–0.5
0
0.5
1
–6 –4 –2 2 4 6
x
Prenez note qu’en sp´ecifiant le titre, vous devez placer des guillemets
doubles (") aux deux extr´emit´es du texte. Ce d´etail est tr`es important.
Maple utilise des guillemets doubles pour d´elimiter les chaˆınes de ca-
ract`eres : il consid`ere tout ce qui apparaˆıt entre les guillemets doubles
comme du texte qu’il doit prendre tel quel. Vous pouvez sp´ecifier la po-
lice, le style et la taille du titre au moyen de l’option titlefont. Consultez
?plot,options ou ?plot3d,options.
>
with(plots):
Warning, the name changecoords has been redefined
>
sphereplot( 1, theta=0..2*Pi, phi=0..Pi,
>
scaling=constrained, title="The Sphere",
>
titlefont=[HELVETICA, BOLD, 24] );
The Sphere
L’option labels vous permet de cr´eer des ´etiquettes aux axes, l’op-
tion labelsfont d´efinit la police et le style des ´etiquettes et l’option
labeldirections permet de placer les ´etiquettes des axes verticale-
ment ou horizontalement. Remarquez que les ´etiquettes ne doivent pas
4.4 Annoter des graphiques • 131
forc´ement ˆetre identiques au nom des variables de l’expression dont vous
tracez le graphique.
>
plot( x^2, x=0..3, labels=["time", "velocity"],
>
labeldirections=[horizontal,vertical] );
0 2 4 6 8
v e l o c i t y
0
.5
1
1
.5
2
2
.5
3
tim
e
Les ´etiquettes s’affichent seulement si les axes sont ´egalement affich´es.
Dans le cas des graphiques tridimensionnels, les axes ne sont pas affich´es
par d´efaut ; vous devez donc les sp´ecifier.
>
plot3d( sin(x*y), x=-1..1, y=-1..1,
>
labels=["length", "width", "height"], axes=FRAMED );
–1
1
length
–1
1
width
–0.8
0.8
height
L’option legend vous permet d’ajouter une l´egende de texte ` a votre
graphique.
>
plot( [sin(x), cos(x)], x=-3*Pi/2..3*Pi/2, linestyle=[1,4],
>
legend=["The Sine Function", "The Cosine Function"] );
132 • Chapitre 4: Tracer des graphiques
The Sine Function
The Cosine Function

–1
–0.5
0.5
1
–4 –2 2 4
x
Voyez ´egalement la section 4.5 ` a la page 134.
4.5 Les graphiques composites
Maple vous permet d’afficher plusieurs graphiques simultan´ement, apr`es
avoir donn´e des noms aux graphiques individuels. Puisque la structure
interne des graphiques est g´en´eralement tr`es longue ` a afficher, terminez
vos commandes d’affectation par deux points plutˆ ot que par un point-
virgule.
>
mon_graphique := plot( sin(x), x=-10..10 ):
Vous pouvez conserver le graphique pour un usage ult´erieur, comme toute
autre expression. Affichez-le en utilisant la commande display d´efinie
dans le package plots.
>
with(plots):
>
display( mon_graphique );
–1
–0.5
0
0.5
1
–10 –8 –6 –4 –2 2 4 6 8 10
x
La commande display permet de tracer plus d’un graphique ` a la fois.
Il suffit de lui sp´ecifier une liste de graphiques.
4.5 Les graphiques composites • 133
>
a := plot( [ sin(t), exp(t)/20, t=-Pi..Pi ] ):
>
b := polarplot( [ sin(t), exp(t), t=-Pi..Pi ] ):
>
display( [a,b] );
–1
–0.5
0
0.5
1
–1 –0.5 0.5 1
Cette technique vous permet d’afficher plusieurs graphiques de dif-
f´erents types sur les mˆemes axes. Vous pouvez ´egalement afficher des
graphiques tridimensionnels et mˆeme des animations.
>
c := sphereplot( 1, theta=0..2*Pi, phi=0..Pi ):
>
d := cylinderplot( 0.5, theta=0..2*Pi, z=-2..2 ):
>
display( [c,d], scaling=constrained );
Entrez la d´efinition pr´ec´edente de b et les commandes suivantes dans
Maple pour voir une animation et un graphique avec les mˆemes axes.
>
e := animate( m*x, x=-1..1, m=-1..1 ):
>
display( [b,e] );
Si vous affichez deux animations ou plus ensemble, assurez-vous que
ces derni`eres poss`edent toutes le mˆeme nombre d’images. Entrez l’exemple
suivant dans Maple pour voir deux animations simultan´ement.
>
f := animate3d( sin(x+y+t), x=0..2*Pi, y=0..2*Pi, t=0..5,
>
frames=20 ):
>
g := animate3d( t, x=0..2*Pi, y=0..2*Pi, t=-1.5..1.5,
>
frames=20):
>
display( [f,g] );
134 • Chapitre 4: Tracer des graphiques
Placer du texte dans les graphiques
Les options title et labels des commandes graphiques vous permettent
de placer des titres et des ´etiquettes dans vos graphiques. Les commandes
textplot et textplot3d vous donnent encore plus de flexibilit´e en vous
permettant de sp´ecifier la position exacte des ´el´ements de texte. Le pa-
ckage plots contient ces deux commandes.
>
with(plots):
Vous pouvez utiliser textplot and textplot3d de la mani`ere suivante.
textplot( [ x-coord, y-coord, "texte" ] ) ;
textplot3d( [ x-coord, y-coord, z-coord, "texte"] ) ;
Par exemple :
>
a := plot( sin(x), x=-Pi..Pi ):
>
b := textplot( [ Pi/2, 1, "Local Maximum" ] ):
>
c := textplot( [ -Pi/2, -1, "Local Minimum" ] ):
>
display( [a,b,c] );
Local Minimum
Local Maximum
–1
–0.5
0.5
1
–3 –2 –1 1 2 3
x
Consultez la rubrique ?plots,textplot pour obtenir plus de d´etails
sur la mani`ere de placer les ´el´ements de texte avec pr´ecision. Utilisez l’op-
tion font pour sp´ecifier la police de caract`eres employ´ee pour l’affichage.
Dans le graphique suivant, l’origine, un point de selle, est indiqu´ee par la
lettre P.
>
d := plot3d( x^2-y^2, x=-1..1, y=-1..1 ):
>
e := textplot3d( [0, 0, 0, "P"],
>
font=[HELVETICA, OBLIQUE, 22], color=white ):
>
display( [d,e], orientation=[68,45] );
4.6 Quelques graphiques particuliers • 135
P
4.6 Quelques graphiques particuliers
Le package plots contient plusieurs routines permettant de produire des
types de graphiques particuliers.
En voici quelques exemples. Pour obtenir davantage d’information sur
une commande particuli`ere, consultez la rubrique ?plots,commande.
>
with(plots):
Tracez des fonctions d´efinies implicitement au moyen de implicitplot.
>
implicitplot( x^2+y^2=1, x=-1..1, y=-1..1, scaling=
>
constrained );
–1
–0.5
0
0.5
1
y
–1 –0.5 0.5 1
x
L’image ci-dessous est un graphique de la r´egion satisfaisant aux
in´egalit´es x +y < 5, 0 < x et x ≤ 4.
>
inequal( {x+y<5, 0<x, x<=4}, x=-1..5, y=-10..10,
>
optionsexcluded=(color=yellow) );
136 • Chapitre 4: Tracer des graphiques
–10
–5
5
10
–1 1 2 3 4 5
Dans l’exemple suivant, l’axe vertical est trac´e `a une ´echelle logarith-
mique.
>
logplot( 10^x, x=0..10 );
1.
.1e2
.1e3
.1e4
.1e5
1e+05
1e+06
1e+07
1e+08
1e+09
1e+10
2 4 6 8 10
x
Un graphique semilogplot poss`ede un axe horizontal logarithmique.
>
semilogplot( 2^(sin(x)), x=1..10 );
0.6
0.8
1
1.2
1.4
1.6
1.8
2
1. 2. 4. 7. .1e2
x
Maple peut ´egalement tracer des graphiques o` u les deux axes pos-
s`edent des ´echelles logarithmiques.
>
loglogplot( x^17, x=1..7 );
4.6 Quelques graphiques particuliers • 137
1.
.1e2
.1e3
.1e4
.1e5
1e+05
1e+06
1e+07
1e+08
1e+09
1e+10
1e+11
1e+12
1e+13
1e+14
2. 4. 7.
x
Dans un densityplot, des teintes plus claires indiquent une plus
grande valeur de la fonction.
>
densityplot( sin(x*y), x=-1..1, y=-1..1 );
–1
–0.5
0.5
1
y
–1 –0.5 0.5 1
x
Le long des courbes suivantes, la fonction sin(xy) est constante,
comme dans une carte topographique.
>
contourplot(sin(x*y),x=-10..10,y=-10..10);
–10
–5
0
5
10
y
–10 –5 5 10
x
Une grille rectangulaire dans le plan complexe devient le graphique
suivant par la relation z → z
2
.
>
conformal( z^2, z=0..2+2*I );
138 • Chapitre 4: Tracer des graphiques
0
2
4
6
8
–4 –2 2 4
La commande fieldplot dessine un vecteur donn´e pour plusieurs
valeurs de x et y ; le graphique ainsi form´e est un champ de vecteurs de
mˆeme type qu’un champ magn´etique.
>
fieldplot( [y*cos(x*y), x*cos(x*y)], x=-1..1, y=-1..1);
–1
–0.5
0.5
1
y
–1 –0.5 0.5 1
x
Maple peut dessiner des courbes dans l’espace ` a trois dimensions.
>
spacecurve( [cos(t),sin(t),t], t=0..12 );
Ici, Maple

gonfle

la courbe pr´ec´edente pour en faire un tube.
>
tubeplot( [cos(t),sin(t),t], t=0..4*Pi, radius=0.5 );
4.6 Quelques graphiques particuliers • 139
La commande matrixplot affiche les valeurs d’un objet de type Ma-
trix.
>
A := LinearAlgebra[HilbertMatrix](8):
>
B := LinearAlgebra[ToeplitzMatrix]([1,2,3,4,-4,-3,-2,-1],
>
symmetric):
>
matrixplot( A+B, heights=histogram, axes=frame,
>
gap=0.25, style=patch);
2
4
6
8
row
2
4
6
8
column
–4
–2
0
2
4
L’image suivante est une d´emonstration d’un graphique root locus.
>
rootlocus( (s^5-1)/(s^2+1), s, -5..5, style=point,
>
adaptive=false );
–1
–0.5
0
0.5
1
–1.5 –1 –0.5 0 0.5 1 1.5
140 • Chapitre 4: Tracer des graphiques
La commande arrow affiche des fl`eches ou des vecteurs en deux ou
trois dimensions.
>
plots[arrow]( [<2, 1>, <3, 2>], [<2, 5>, <1, 4>], difference,
>
scaling=constrained );
1
2
3
4
5
1 1.5 2 2.5 3
En tapant ?plots `a l’invite, vous obtiendrez une liste de tous les types
de graphiques possibles dans Maple.
4.7 Manipuler des objets graphiques
Le package plottools contient des commandes permettant de cr´eer des
objets graphiques et de manipuler leurs graphiques correspondants. Utili-
sez with(plottools) pour acc´eder aux commandes par leur nom abr´eg´e.
>
with(plottools):
Les objets dans le package plottools ne s’affichent pas par eux-
mˆemes ; on doit y acc´eder par la commande display d´efinie dans le
package plots `a l’aide de la commande with.
>
with(plots):
Consid´erez l’exemple suivant.
>
display( dodecahedron(), scaling=constrained, style=patch );
4.7 Manipuler des objets graphiques • 141
Donnez un nom ` a l’objet.
>
s1 := sphere( [3/2,1/4,1/2], 1/4, color=red):
Remarquez que l’affectation se termine par deux points (:) ; si vous utili-
sez un point-virgule (;), Maple affiche une longue structure de graphique.
Encore une fois, vous devez utiliser display pour faire afficher le gra-
phique.
>
display( s1, scaling=constrained );
Placez une seconde sph`ere dans l’image et faites afficher les axes.
>
s2 := sphere( [3/2,-1/4,1/2], 1/4, color=red):
>
display( [s1, s2], axes=normal, scaling=constrained );
142 • Chapitre 4: Tracer des graphiques
0.4
0.6 –0.4
–0.2
0
0.2
0.4
1.3
1.4
1.5
1.6
1.7
Vous pouvez ´egalement cr´eer des cˆ ones au moyen de plottools.
>
c := cone([0,0,0], 1/2, 2, color=khaki):
>
display( c, axes=normal );
0.5
1
1.5
2
–0.4
–0.2
0.2
0.4
–0.4
–0.2
0.2
0.4
Exp´erimentez la capacit´e de Maple ` a faire tourner les objets.
>
c2 := rotate( c, 0, Pi/2, 0 ):
>
display( c2, axes=normal );
–0.4
–0.2
0.2
0.4
–0.4
–0.2
0.2
0.4
–2
–1.5
–1
–0.5
Vous pouvez aussi translater les objets.
>
c3 := translate( c2, 3, 0, 1/4 ):
>
display( c3, axes=normal );
4.7 Manipuler des objets graphiques • 143
–0.2
0.2
0.4
0.6
–0.4
–0.2
0
0.2
0.4
1
1.5
2
2.5
3
La commande hemisphere cr´ee un h´emisph`ere. Vous pouvez sp´ecifier
le rayon et les coordonn´ees de son centre ; sinon, n’´ecrivez rien entre les
parenth`eses pour accepter les valeurs par d´efaut.
>
cup := hemisphere():
>
display( cup );
>
cap := rotate( cup, Pi, 0, 0 ):
>
display( cap );
Les cˆ ot´es du dod´eca`edre mentionn´e plus tˆ ot dans cette section sont
tous des pentagones. Si vous ´elevez le point milieu de chaque penta-
gone au moyen de la commande stellate, l’objet r´esultant se nomme
144 • Chapitre 4: Tracer des graphiques
un dod´eca`edre ´etoil´e.
>
a := stellate( dodecahedron() ):
>
display( a, scaling=constrained, style=patch );
>
stelhs := stellate(cap, 2):
>
display( stelhs );
Plutˆ ot que de rendre le dod´eca`edre ´etoil´e, vous pouvez supprimer les
trois quarts de l’int´erieur de chaque pentagone.
>
a := cutout( dodecahedron(), 3/4 ):
>
display( a, scaling=constrained, orientation=[45, 30] );
>
hedgehog := [s1, s2, c3, stelhs]:
>
display( hedgehog, scaling=constrained,
4.8 Code des graphiques des planches en couleurs • 145
>
style=patchnogrid );
4.8 Code des graphiques des planches en
couleurs
Dans Maple, cr´eer des graphiques impressionnants ne n´ecessite souvent
que quelques lignes de code, ainsi que le montrent les exemples de la
pr´esente section. Cependant, d’autres graphiques demandent plusieurs
lignes de code. Les commandes utilis´ees pour les planches en couleurs
1
qui
ne sont pas indiqu´ees ici se trouvent dans le Maple Application Center.
Il existe deux mani`eres d’acc´eder au Maple Application Center.
– Ouvrez le navigateur Internet de votre choix et entrez
http ://www.mapleapps.com
– Dans le menu Help de votre session Maple 8, choisissez Maple on
the Web, puis Application Center.
Pour acc´eder au code des planches qui n’est pas affich´e dans ce manuel :
1. Acc´edez au Maple Application Center.
2. Rendez-vous au bas de la page. Dans la section Maple Tools, cliquez
sur Maple 8 Color Plates. Le code est disponible en format HTML
et sous forme de feuille Maple.
Des centaines de graphiques ainsi que des animations sont disponibles
dans la Maple Graphics Gallery et la Maple Animation Gallery. Pour
acc´eder ` a ces galeries, rendez-vous au Maple Application Center et cli-
quez sur Maple Graphics.
1
La plupart des planches en couleurs ont ´et´e export´ees et dessin´ees dans POV-
Ray
TM
. La duplication exacte des images peut de ce fait s’av´erer difficile.
146 • Chapitre 4: Tracer des graphiques
Note : Sur certains ordinateurs, il peut ˆetre n´ecessaire de diminuer la
valeur de l’option numpoints pour dessiner le graphique.
1. Probl`eme de Dirichlet pour un cercle
>
with(plots):
>
setoptions3d(scaling=constrained, projection=0.5,
>
style=patchnogrid):
>
f1 := (x, y) -> 0.5*sin(10*x*y):
>
f2 := t -> f1(cos(t), sin(t)):
>
a0 := evalf(Int(f2(t), t=-Pi..Pi)/Pi):
>
a := seq(evalf(Int(f2(t)*cos(n*t), t=-Pi..Pi)/Pi), n=1..50):
>
b := seq(evalf(Int(f2(t)*sin(n*t), t=-Pi..Pi)/Pi), n=1..50):
>
L := (r, s) -> a0/2+sum(’r^n*(a[n]*cos(n*s)+b[n]*sin(n*s))’,
>
’n’=1..50):
>
q := plot3d([r*cos(s), r*sin(s), L(r, s)], r=0..1, s=0..2*Pi,
>
color=[L(r, s), -L(r, s), 0.2], grid=[29, 100],
>
numpoints=10000):
>
p := tubeplot([cos(t), sin(t), f2(t), t=-Pi..Pi,
>
radius=0.015], tubepoints=70, numpoints=1500):
>
display3d({q, p}, orientation=[3, 89], lightmodel=light2);
2. Ensemble de Mandelbrot
L’ensemble de Mandelbrot est l’un des objets math´ematiques les plus
complexes en raison de sa nature cahotique. Le code de ce graphique
est disponible dans le Maple Application Center.
3. Oiseau en origami
L’oiseau en origami peut ˆetre affich´e comme un simple graphique ou
comme une animation Maple. Le code de ce graphique ainsi que de
l’animation sont disponibles dans le Maple Application Center.
4. Structure concho¨ıdale
Le code de cet objet ainsi que d’autres coquillages est disponible dans
le Maple Application Center.
5. Transformation de Gauss appliqu´ee `a un tore
>
sp := [rho*cos(2*Pi*t), rho*sin(2*Pi*t), 0, radius=b]:
>
pc := n -> [ (rho-r*cos(2*Pi*t))*cos(2*Pi/(n+t)),
>
(rho-r*cos(2*Pi*t))*sin(2*Pi/(n+t)),
>
-r*sin(2*Pi*t)]:
>
rho, r, b := 3, 1.1, 1:
>
with(plots):
>
s := spacecurve( {seq(pc(k), k=1..50)}, t=0..1, thickness=2,
>
color=blue, view=[-4.4..4.4, -4.4..4.4, -2.2..2.2]):
>
s2 := tubeplot( sp, t=0..1, tubepoints=20, color=green,
>
view=[-4.4..4.4, -4.4..4.4, -2.2..2.2], style=PATCHNOGRID,
>
lightmodel=light2 ):
>
display( {s,s2} );
6. Ruban de Moebius
4.9 Conclusion • 147
>
moebius := plot3d([4+x*cos(1/2*y), y, x*sin(1/2*y)],
>
x=-Pi..Pi, y=-0..2*Pi, coords=cylindrical, style=patchnogrid,
>
grid=[60,60], orientation=[-176, 45], lightmodel=light3,
>
shading=zhue, scaling=constrained):
>
plots[display](moebius);
7. Icosa`edre
>
with(geom3d):
>
icosahedron(p1, point(o, 0, 0, 0), 1):
>
stellate(p2, p1, 4):
>
p := draw(p2):
>
q := plottools[homothety](p,3):
>
plots[display]([p,q], scaling=constrained, style=patchnogrid,
>
lightmodel=light4, shading=xyz, orientation=[-107,81]);
Pour voir d’autres variations, modifiez la valeur de hauteur dans la
commande stellate.
8. Surface de r´evolution param´etris´ee
>
r1 := 2 + sin(7*t):
>
z1 := r1*cos(s):
>
r2 := 8+r1*sin(s):
>
plot3d([r2*sin(t), r2*cos(t), z1], s=0..2*Pi, t=0..2*Pi,
>
grid=[80, 80], axes=none, style=patchnogrid, lightmodel=light1);
9. Bonhomme de neige
Le graphique du bonhomme de neige est une animation. Le code de
cette animation est disponible dans le Maple Application Center.
10. Fonction de deux variables en coordonn´ees cart´esiennes
>
plot3d({sin(x^2+y^2), 2*cos(x^3+y^3)}, x=-3..3, y=-3..3,
>
style=patch, grid=[120, 120], axes=none, shading=zhue,
>
style=patchnogrid, scaling=constrained, orientation=[50,30]);
4.9 Conclusion
Ce chapitre a pr´esent´e les capacit´es d’affichage graphique de Maple en
deux et trois dimensions pour des fonctions explicites, implicites et pa-
ram´etriques. Les coordonn´ees cart´esiennes, polaires, sph´eriques et cylin-
driques ne sont que quelques-uns des syst`emes de coordonn´ees exploit´es
par Maple. De plus, vous pouvez animer un graphique et le colorier de
plusieurs mani`eres pour vous assurer d’une bonne compr´ehension de sa
nature.
148 • Chapitre 4: Tracer des graphiques
Utilisez les commandes contenues dans le package plots pour affi-
cher plusieurs graphiques de fonctions et d’expressions. Quelques-uns des
types particuliers de graphiques que vous pouvez cr´eer en utilisant ces
commandes sont les graphiques logarithmiques, de contour et de densit´e.
Les commandes du package plottools permettent de cr´eer et de mani-
puler des objets. Ces commandes rendent possibles la translation et la
rotation des entit´es graphiques, et peuvent mˆeme les rendre ´etoil´es.
5 L’´evaluation et la
simplification
Dans Maple, beaucoup de temps et d’efforts sont consacr´es `a la manipu-
lation d’expressions. Celle-ci sert ` a convertir des r´esultats sous une forme
famili`ere et v´erifier une r´eponse, ou ` a convertir une expression sous une
forme particuli`ere requise par certaines routines Maple.
Le probl`eme de la simplification s’av`ere ´etonnamment complexe en
math´ematiques symboliques. Ce qui est simple dans un contexte peut ne
pas l’ˆetre dans un autre ; chaque situation peut avoir sa propre d´efinition
d’une forme

simple

.
Maple fournit un jeu d’outils permettant de travailler avec les ex-
pressions pour y effectuer ` a la fois des manipulations math´ematiques et
structurelles. Les manipulations math´ematiques sont celles correspondant
`a une forme de processus math´ematique, par exemple la factorisation d’un
polynˆ ome ou la rationalisation du d´enominateur d’une expression ration-
nelle. Les manipulations structurelles sont quant ` a elles des outils fournis
par Maple pour acc´eder ` a certaines parties des structures de donn´ees du
logiciel qui repr´esentent des expressions et d’autres types d’objets, et les
modifier.
5.1 Manipulations math´ematiques
La r´esolution d’´equations ` a la main demande normalement d’effectuer une
s´equence de manipulations alg´ebriques. Vous pouvez ´egalement effectuer
ces ´etapes au moyen de Maple.
>
eq := 4*x + 17 = 23;
eq := 4 x + 17 = 23
149
150 • Chapitre 5: L’´evaluation et la simplification
Ici, vous devez soustraire 17 des deux cˆ ot´es de l’´equation. Pour ce faire,
il suffit de soustraire l’´equation 17=17 de eq. Assurez-vous de mettre des
parenth`eses autour de l’´equation sans nom.
>
eq - ( 17 = 17 );
4 x = 6
Divisez maintenant le r´esultat par 4. Remarquez qu’il n’est pas
n´ecessaire d’utiliser 4=4 dans ce cas.
>
% / 4;
x =
3
2
Les sections suivantes pr´esentent plusieurs autres manipulations com-
plexes.
D´evelopper des polynomes en sommes
Les sommes sont g´en´eralement plus faciles ` a comprendre que les produits ;
vous pouvez donc trouver utile de d´evelopper un polynˆ ome comme somme
de produits. La commande expand vous permet de le faire.
>
poly := (x+1)*(x+2)*(x+5)*(x-3/2);
poly := (x + 1) (x + 2) (x + 5) (x −
3
2
)
>
expand( poly );
x
4
+
13
2
x
3
+ 5 x
2

31
2
x −15
La commande expand d´eveloppe le num´erateur d’une expression ra-
tionnelle.
>
expand( (x+1)*(y^2-2*y+1) / z / (y-1) );
xy
2
z (y −1)
−2
xy
z (y −1)
+
x
z (y −1)
+
y
2
z (y −1)
−2
y
z (y −1)
+
1
z (y −1)
5.1 Manipulations math´ematiques • 151
Utilisez la commande normal pour annuler les facteurs communs ;
consultez la section Forme normale factoris´ee de la page 159.
La commande expand applique ´egalement les r`egles d’expansion de
plusieurs fonctions math´ematiques standard.
>
expand( sin(2*x) );
2 sin(x) cos(x)
>
ln( abs(x^2)/(1+abs(x)) );
ln(
[x[
2
1 +[x[
)
>
expand(%);
2 ln([x[) −ln(1 +[x[)
La commande combine applique les mˆemes r`egles, mais dans le sens
oppos´e. Consultez la pr´esente section ` a la page 158.
Vous pouvez aussi sp´ecifier des sous-expressions que vous ne voulez
pas d´evelopper comme argument de la commande expand.
>
expand( (x+1)*(y+z) );
xy +xz +y +z
>
expand( (x+1)*(y+z), x+1 );
(x + 1) y + (x + 1) z
Vous pouvez d´evelopper une expression sur un domaine sp´ecifique.
>
poly := (x+2)^2*(x-2)*(x+3)*(x-1)^2*(x-1);
poly := (x + 2)
2
(x −2) (x + 3) (x −1)
3
>
expand( poly );
x
7
+ 2 x
6
−10 x
5
−12 x
4
+ 37 x
3
+ 10 x
2
−52 x + 24
152 • Chapitre 5: L’´evaluation et la simplification
>
% mod 3;
x
7
+ 2 x
6
+ 2 x
5
+x
3
+x
2
+ 2 x
Cependant, la commande Expand est plus utile.
>
Expand( poly ) mod 3;
x
7
+ 2 x
6
+ 2 x
5
+x
3
+x
2
+ 2 x
Lorsque vous utilisez Expand avec mod, Maple effectue tous les calculs
interm´ediaires en arithm´etique modulo. Vous pouvez ´egalement ´ecrire vos
propres routines pour expand ; consultez la rubrique ?expand pour plus
de d´etails.
Regrouper les coefficients de meme degr´e
Une expression comme x
2
+ 2x + 1 −ax +b −cx
2
peut ˆetre plus facile ` a
lire si vous regroupez les coefficients de x
2
, x et les constantes ` a l’aide de
la commande collect.
>
collect( x^2 + 2*x + 1 - a*x + b - c*x^2, x );
(1 −c) x
2
+ (2 −a) x +b + 1
Le deuxi`eme argument de la commande collect sp´ecifie sur quelle
variable il doit regrouper les termes.
>
poly := x^2 + 2*y*x - 3*y + y^2*x^2;
poly := x
2
+ 2 y x −3 y +y
2
x
2
>
collect( poly, x );
(1 +y
2
) x
2
+ 2 y x −3 y
>
collect( poly, y );
y
2
x
2
+ (2 x −3) y +x
2
Vous pouvez regrouper les termes sur des variables ou des appels de
fonctions non ´evalu´es.
5.1 Manipulations math´ematiques • 153
>
trig_expr := sin(x)*cos(x) + sin(x) + y*sin(x);
trig_expr := sin(x) cos(x) + sin(x) +y sin(x)
>
collect( trig_expr, sin(x) );
(cos(x) + 1 +y) sin(x)
>
DE := diff(f(x),x,x)*sin(x) - diff(f(x),x)*sin(f(x))
>
+ sin(x)*diff(f(x),x) + sin(f(x))*diff(f(x),x,x);
DE := (
d
2
dx
2
f(x)) sin(x) −(
d
dx
f(x)) sin(f(x))
+ sin(x) (
d
dx
f(x)) + sin(f(x)) (
d
2
dx
2
f(x))
>
collect( DE, diff );
(−sin(f(x)) + sin(x)) (
d
dx
f(x))
+ (sin(x) + sin(f(x))) (
d
2
dx
2
f(x))
Vous ne pouvez regrouper les termes sur des sommes ou des produits.
>
big_expr := z*x*y + 2*x*y + z;
big_expr := z xy + 2 y x +z
>
collect( big_expr, x*y );
Error, (in collect) cannot collect y*x
Pour contourner ce probl`eme, effectuez d’abord une substitution.
Dans l’exemple pr´ec´edent, cr´eez une variable rempla¸ cant x*y, puis re-
groupez les termes sur cette nouvelle variable.
>
subs( x=xyprod/y, big_expr );
z xyprod + 2 xyprod +z
>
collect( %, xyprod );
(z + 2) xyprod +z
154 • Chapitre 5: L’´evaluation et la simplification
>
subs( xyprod=x*y, % );
(z + 2) y x +z
Dans la section 5.3 de la page 190, on explique l’usage de la commande
subs.
Si vous regroupez les coefficients de plus d’une variable ` a la fois, deux
options s’offrent ` a vous : employer la forme r´ecursive ou la forme dis-
tribu´ee. La forme r´ecursive regroupe d’abord les termes autour de la
premi`ere variable sp´ecifi´ee, puis la deuxi`eme, et ainsi de suite. C’est la
forme par d´efaut.
>
poly := x*y + z*x*y + y*x^2 - z*y*x^2 + x + z*x;
poly := y x +z xy +y x
2
−z y x
2
+x +z x
>
collect( poly, [x,y] );
(1 −z) y x
2
+ ((1 +z) y + 1 +z) x
La forme distribu´ee regroupe les coefficients de toutes les variables en
mˆeme temps.
>
collect( poly, [x,y], distributed );
(1 +z) x + (1 +z) y x + (1 −z) y x
2
La commande collect ne trie pas les termes ; pour ce faire, vous devez
utiliser la commande sort. Consultez la pr´esente section ` a la page 164.
Factoriser des polynomes et des fonctions rationnelles
Vous pouvez ´ecrire un polynˆ ome sous forme d’un produit de termes de plus
faible degr´e. Utilisez la commande factor pour factoriser des polynˆ omes.
>
factor( x^2-1 );
(x −1) (x + 1)
>
factor( x^3+y^3 );
5.1 Manipulations math´ematiques • 155
(x +y) (x
2
−y x +y
2
)
Vous pouvez ´egalement factoriser des fonctions rationnelles. La com-
mande factor factorise ` a la fois le num´erateur et le d´enominateur, et
annule ensuite leurs termes communs.
>
rat_expr := (x^16 - y^16) / (x^8 - y^8);
rat_expr :=
x
16
−y
16
x
8
−y
8
>
factor( rat_expr );
x
8
+y
8
>
rat_expr := (x^16 - y^16) / (x^7 - y^7);
rat_expr :=
x
16
−y
16
x
7
−y
7
>
factor(rat_expr);
(y +x) (x
2
+y
2
) (x
4
+y
4
) (x
8
+y
8
)
x
6
+y x
5
+y
2
x
4
+y
3
x
3
+y
4
x
2
+y
5
x +y
6
Sp´ecifier le corps de nombres alg´ebriques La commande factor fac-
torise un polynˆ ome sur l’anneau indiqu´e par les coefficients. Le polynˆ ome
suivant poss`ede des coefficients entiers ; ainsi, les termes de sa forme fac-
toris´ee poss`edent ´egalement des coefficients entiers.
>
poly := x^5 - x^4 - x^3 + x^2 - 2*x + 2;
poly := x
5
−x
4
−x
3
+x
2
−2 x + 2
>
factor( poly );
(x −1) (x
2
−2) (x
2
+ 1)
Dans le prochain exemple, les coefficients incluent

2. Remarquez la
diff´erence dans le r´esultat.
156 • Chapitre 5: L’´evaluation et la simplification
>
expand( sqrt(2)*poly );

2 x
5


2 x
4


2 x
3
+

2 x
2
−2

2 x + 2

2
>
factor( % );

2 (x
2
+ 1) (x −

2) (x +

2) (x −1)
Vous pouvez ´etendre explicitement le corps des coefficients en four-
nissant un deuxi`eme argument ` a la commande factor.
>
poly := x^4 - 5*x^2 + 6;
poly := x
4
−5 x
2
+ 6
>
factor( poly );
(x
2
−2) (x
2
−3)
>
factor( poly, sqrt(2) );
(x
2
−3) (x −

2) (x +

2)
>
factor( poly, { sqrt(2), sqrt(3) } );
(x −

3) (x +

3) (x −

2) (x +

2)
Vous pouvez ´egalement sp´ecifier l’extension en utilisant RootOf. Ici,
RootOf(x^2-2) repr´esente une solution ` a x
2
−2 = 0, soit

2 ou −

2.
>
factor( poly, RootOf(x^2-2) );
(x
2
−3) (x + RootOf(_Z
2
−2)) (x −RootOf(_Z
2
−2))
Consultez la rubrique ?evala pour plus d’information sur le calcul
dans un corps alg´ebrique de nombres.
5.1 Manipulations math´ematiques • 157
Factoriser dans des domaines sp´eciaux Utilisez la commande Factor
pour factoriser une expression sur les entiers modulo p pour un p premier.
La syntaxe est similaire ` a celle de la commande Expand.
>
Factor( x^2+3*x+3 ) mod 7;
(x + 6) (x + 4)
La commande Factor permet ´egalement les extensions alg´ebriques de
corps.
>
Factor( x^3+1 ) mod 5;
(x + 1) (x
2
+ 4 x + 1)
>
Factor( x^3+1, RootOf(x^2+x+1) ) mod 5;
(x + 1) (x + 4 RootOf(_Z
2
+ _Z + 1) + 4)
(x + RootOf(_Z
2
+ _Z + 1))
Pour obtenir des d´etails sur l’algorithme utilis´e, la factorisation des
polynˆ omes multivari´es ou la factorisation de polynˆ omes sur des corps
alg´ebriques de nombres, consultez la rubrique ?Factor.
Supprimer des exposants rationnels
En g´en´eral, il est pr´ef´erable de pr´esenter les expressions rationnelles sans
exposant rationnel au d´enominateur. La commande rationalize enl`eve
les racines du d´enominateur d’une expression rationnelle en multipliant
par un facteur convenable.
>
1 / ( 2 + root[3](2) );
1
2 + 2
(1/3)
>
rationalize( % );
2
5

1
5
2
(1/3)
+
1
10
2
(2/3)
>
(x^2+5) / (x + x^(5/7));
158 • Chapitre 5: L’´evaluation et la simplification
x
2
+ 5
x +x
(5/7)
>
rationalize( % );
(x
2
+ 5)
(x
(6/7)
−x
(12/7)
−x
(4/7)
+x
(10/7)
+x
(2/7)
−x
(8/7)
+x
2
)

(
x
3
+x)
Le r´esultat de rationalize est souvent plus long que l’original.
Combiner des termes
La commande combine applique certaines r`egles de transformation pour
de nombreuses fonctions math´ematiques.
>
combine( sin(x)^2 + cos(x)^2 );
1
>
combine( sin(x)*cos(x) );
1
2
sin(2 x)
>
combine( exp(x)^2 * exp(y) );
e
(2 x+y)
>
combine( (x^a)^2 );
x
(2 a)
Pour voir comment combine permet d’obtenir le r´esultat, donnez au
param`etre infolevel[combine] une valeur positive.
>
infolevel[combine] := 1;
infolevel
combine
:= 1
>
expr := Int(1, x) + Int(x^2, x);
5.1 Manipulations math´ematiques • 159
expr :=

1 dx +

x
2
dx
>
combine( expr );
combine: combining with respect to Int
combine: combining with respect to linear
combine: combining with respect to int
combine: combining with respect to linear
combine: combining with respect to Int
combine: combining with respect to linear
combine: combining with respect to int
combine: combining with respect to linear
combine: combining with respect to Int
combine: combining with respect to linear
combine: combining with respect to cmbplus
combine: combining with respect to cmbpwr
combine: combining with respect to power

x
2
+ 1 dx
La commande expand applique la plupart de ces r`egles de transforma-
tion en sens inverse. Consultez la section D´evelopper des polyn omes en
sommes `a la page 150.
Forme normale factoris´ee
Si une expression contient des fractions, vous pouvez trouver utile de
regrouper celles-ci en une seule et d’annuler les facteurs communs du nu-
m´erateur et du d´enominateur. La commande normal effectue ce processus,
qui m`ene g´en´eralement ` a des expressions plus simples.
>
normal( x + 1/x );
x
2
+ 1
x
>
expr := x/(x+1) + 1/x + 1/(1+x);
expr :=
x
x + 1
+
1
x
+
1
x + 1
>
normal( expr );
160 • Chapitre 5: L’´evaluation et la simplification
x + 1
x
>
expr := (x^2 - y^2) / (x-y)^3;
expr :=
x
2
−y
2
(x −y)
3
>
normal( expr );
x +y
(x −y)
2
>
expr := (x - 1/x) / (x-2);
expr :=
x −
1
x
x −2
>
normal( expr );
x
2
−1
x(x −2)
Utilisez le deuxi`eme argument, expanded, si vous souhaitez que
normal d´eveloppe le num´erateur et le d´enominateur.
>
normal( expr, expanded );
x
2
−1
x
2
−2 x
La commande normal agit r´ecursivement sur les fonctions, les en-
sembles et les listes.
>
normal( [ expr, exp(x+1/x) ] );
[
x
2
−1
x(x −2)
, e
(
x
2
+1
x
)
]
>
big_expr := sin( (x*(x+1)-x)/(x+2) )^2
>
+ cos( (x^2)/(-x-2) )^2;
5.1 Manipulations math´ematiques • 161
big_expr := sin(
(x + 1) x −x
x + 2
)
2
+ cos(
x
2
−x −2
)
2
>
normal( big_expr );
sin(
x
2
x + 2
)
2
+ cos(
x
2
x + 2
)
2
Remarquez dans le dernier exemple que la commande normal ne sim-
plifie que les fonctions rationnelles – et non les fonctions trigonom´etriques.
Un cas particulier La commande normal peut retourner une expression
sous forme ´etendue qui n’est pas aussi simple que la forme factoris´ee.
>
expr := (x^25-1) / (x-1);
expr :=
x
25
−1
x −1
>
normal( expr );
1 +x
5
+x
4
+x
3
+x
2
+x
18
+x
12
+x
14
+x
19
+x
17
+x
15
+x
9
+x
8
+x
11
+x
10
+x +x
16
+x
7
+x
24
+x
22
+x
23
+x
21
+x
20
+x
13
+x
6
Pour annuler le facteur commun (x − 1) du num´erateur et du d´e-
nominateur, utilisez la commande factor. Consultez la section 5.1 ` a la
page 154.
>
factor(expr);
(x
4
+x
3
+x
2
+x + 1) (x
20
+x
15
+x
10
+x
5
+ 1)
Simplifier des expressions
Les r´esultats des calculs de simplification de Maple peuvent ˆetre tr`es com-
pliqu´es. La commande simplify tente de trouver une expression plus
simple en effectuant une s´erie de manipulations.
>
expr := 4^(1/2) + 3;
expr :=

4 + 3
162 • Chapitre 5: L’´evaluation et la simplification
>
simplify( expr );
5
>
expr := cos(x)^5 + sin(x)^4 + 2*cos(x)^2
>
- 2*sin(x)^2 - cos(2*x);
expr :=
cos(x)
5
+ sin(x)
4
+ 2 cos(x)
2
−2 sin(x)
2
−cos(2 x)
>
simplify( expr );
cos(x)
4
(cos(x) + 1)
Maple poss`ede des r`egles de simplification pour les expressions trigo-
nom´etriques, logarithmiques et exponentielles de mˆeme que pour les ex-
pressions contenant des radicaux, des puissances, des expressions RootOf
ainsi que d’autres fonctions sp´eciales.
Lorsque vous sp´ecifiez une r`egle particuli`ere de simplification comme
argument ` a la commande simplify, seule cette r`egle (ou cette classe de
r`egles) sera utilis´ee.
>
expr := ln(3*x) + sin(x)^2 + cos(x)^2;
expr := ln(3 x) + sin(x)
2
+ cos(x)
2
>
simplify( expr, trig );
ln(3 x) + 1
>
simplify( expr, ln );
ln(3) + ln(x) + sin(x)
2
+ cos(x)
2
>
simplify( expr );
ln(3) + ln(x) + 1
Consultez la rubrique ?simplify pour obtenir une liste des r`egles de
simplification int´egr´ees.
5.1 Manipulations math´ematiques • 163
Simplification avec des hypoth`eses
Il est possible que Maple n’effectue pas une simplification comme vous
l’entendez ; cela survient lorsque vous connaissez les propri´et´es sp´eciales
d’une variable mais que Maple la traite d’une mani`ere plus g´en´erale.
>
expr := sqrt( (x*y)^2 );
expr :=

x
2
y
2
>
simplify( expr );

x
2
y
2
L’option assume=propri´ et´ e indique ` a la commande simplify d’as-
sumer que toutes les inconnues de l’expression poss`edent la propri´et´e.
>
simplify( expr, assume=real );
[xy[
>
simplify( expr, assume=positive );
xy
Vous pouvez ´egalement vous servir de la commande assume pour pla-
cer des hypoth`eses individuellement sur des variables. Consultez la section
5.2.
Simplification au moyen des relations accessoires
Vous pouvez quelquefois simplifier une expression en utilisant votre propre
r`egle de transformation. La commande simplify vous permet de le faire
en utilisant des relations accessoires.
>
expr := x*y*z + x*y + x*z + y*z;
expr := xy z +xy +xz +y z
>
simplify( expr, { x*z=1 } );
xy +y z +y + 1
164 • Chapitre 5: L’´evaluation et la simplification
Vous pouvez sp´ecifier une ou plusieurs relations accessoires dans un
ensemble ou une liste. La commande simplify consid`ere les ´equations
donn´ees comme des simplifications additionnelles.
Il est ´egalement possible de sp´ecifier l’ordre dans lequel simplify
effectue l’op´eration.
>
expr := x^3 + y^3;
expr := x
3
+y
3
>
siderel := x^2 + y^2 = 1;
siderel := x
2
+y
2
= 1
>
simplify( expr, {siderel}, [x,y] );
y
3
−xy
2
+x
>
simplify( expr, {siderel}, [y,x] );
x
3
−y x
2
+y
Dans le premier cas, Maple effectue la substitution x
2
= 1−y
2
dans la
premi`ere expression, puis tente d’effectuer une substituion pour les termes
en y
2
; n’en trouvant aucun, l’ex´ecution est arrˆet´ee.
Dans le second cas, Maple effectue la substitution y
2
= 1 − x
2
dans
la premi`ere expression, puis tente d’effectuer des substitutions pour les
termes en x
2
; n’en trouvant aucun, l’ex´ecution est arrˆet´ee.
Les manipulations de polynˆ omes en base de Gr¨ obner sont ` a la base du
fonctionnement de simplify. Pour obtenir davantage d’information sur
cette commande, consultez la rubrique ?simplify,siderels.
Trier des expressions alg´ebriques
Maple affiche les termes d’un polynˆ ome dans l’ordre o` u le polynˆ ome a
d’abord ´et´e cr´e´e. Vous pouvez en trier les termes par ordre d´ecroissant de
degr´e `a l’aide de la commande sort.
>
poly := 1 + x^4 - x^2 + x + x^3;
poly := 1 +x
4
−x
2
+x +x
3
5.1 Manipulations math´ematiques • 165
>
sort( poly );
x
4
+x
3
−x
2
+x + 1
Remarquez que sort r´eorganise les expressions alg´ebriques sur place
en rempla¸ cant le polynˆ ome original par sa copie tri´ee.
>
poly;
x
4
+x
3
−x
2
+x + 1
Vous pouvez trier des polynˆ omes multivari´es de deux mani`eres : par
degr´e total ou en ordre lexicographique. Maple utilise par d´efaut le tri
par degr´e total ; les termes sont alors r´earrang´es en ordre d´ecroissant de
degr´e. Avec ce tri, lorsque deux termes ont le mˆeme degr´e, Maple les trie
en ordre lexicographique (de telle sorte que a vienne avant b, et ainsi de
suite).
>
sort( x+x^3 + w^5 + y^2 + z^4, [w,x,y,z] );
w
5
+z
4
+x
3
+y
2
+x
>
sort( x^3*y + y^2*x^2, [x,y] );
x
3
y +x
2
y
2
>
sort( x^3*y + y^2*x^2 + x^4, [x,y] );
x
4
+x
3
y +x
2
y
2
Remarquez que l’ordre des variables dans la liste d´etermine l’ordon-
nancement de l’expression.
>
sort( x^3*y + y^2*x^2, [x,y] );
x
3
y +x
2
y
2
>
sort( x^3*y + y^2*x^2, [y,x] );
y
2
x
2
+y x
3
166 • Chapitre 5: L’´evaluation et la simplification
Vous pouvez ´egalement trier l’expression enti`ere en ordre lexicogra-
phique en utilisant l’option plex de la commande sort.
>
sort( x + x^3 + w^5 + y^2 + z^4, [w,x,y,z], plex );
w
5
+x
3
+x +y
2
+z
4
Encore une fois, l’ordre dans lequel sont donn´ees les inconnues au
moment de l’appel ` a sort d´etermine l’ordonnancement.
>
sort( x + x^3 + w^5 + y^2 + z^4, [x,y,z,w], plex );
x
3
+x +y
2
+z
4
+w
5
La commande sort peut ´egalement trier des listes. Consultez la sec-
tion 5.3.
Conversion entre diff´erentes formes
Vous pouvez ´ecrire plusieurs fonctions math´ematiques selon diverses
formes ´equivalentes. Par exemple, vous pouvez exprimer sin(x) en termes
de la fonction exponentielle. La commande convert permet d’effectuer
des conversions de ce genre. Pour plus d’information, consultez la ru-
brique ?convert.
>
convert( sin(x), exp );
−1
2
I (e
(I x)

1
e
(I x)
)
>
convert( cot(x), sincos );
cos(x)
sin(x)
>
convert( arccos(x), ln );
−I ln(x +I

−x
2
+ 1)
>
convert( binomial(n,k), factorial );
n!
k! (n −k)!
5.1 Manipulations math´ematiques • 167
L’argument parfrac indique que l’on souhaite obtenir des fractions
partielles.
>
convert( (x^5+1) / (x^4-x^2), parfrac, x );
x +
1
x −1

1
x
2
Vous pouvez ´egalement utiliser convert pour trouver une approxima-
tion fractionnelle ` a un nombre d´ecimal.
>
convert( .3284879342, rational );
19615
59713
Remarquez que les conversions ne sont pas n´ecessairement r´eci-
proques.
>
convert( tan(x), exp );
−I ((e
(I x)
)
2
−1)
(e
(I x)
)
2
+ 1
>
convert( %, trig );
−I ((cos(x) +I sin(x))
2
−1)
(cos(x) +I sin(x))
2
+ 1
La commande simplify nous r´ev`ele que cette expression est tan(x).
>
simplify( % );
sin(x)
cos(x)
Vous pouvez ´egalement vous servir de la commande convert pour
effectuer des manipulations structurelles sur des objets Maple. Consultez
la section 5.3.
168 • Chapitre 5: L’´evaluation et la simplification
5.2 Les hypoth`eses
Il existe deux mani`eres d’imposer des hypoth`eses sur des inconnues. Pour
modifier globalement les propri´et´es des inconnues, utilisez la commande
assume. Pour effectuer une seule op´eration avec des hypoth`eses sur des
inconnues, utilisez la commande assuming. Les commandes assume et
assuming sont expliqu´ees dans les sous-sections suivantes.
La commande assume
Le syst`eme d’hypoth`eses de Maple est un ensemble de routines permettant
de g´erer les propri´et´es des inconnues. La commande assume permet une
meilleure simplification d’expressions symboliques, particuli`erement avec
les fonctions retournant plusieurs valeurs comme les racines carr´ees.
>
sqrt(a^2);

a
2
Maple ne peut simplifier cette expression, ´etant donn´e que le r´esultat
est diff´erent pour les valeurs positives et n´egatives de a. Fournir une hy-
poth`ese sur la valeur de a permet ` a Maple de simplifier l’expression.
>
assume( a>0 );
>
sqrt(a^2);
a~
Utilisez la commande about pour obtenir de l’information sur les hy-
poth`eses ` a propos d’une inconnue.
>
about(a);
Originally a, renamed a~:
is assumed to be: RealRange(-infinity,Open(0))
Utilisez la commande additionally pour poser des hypoth`eses
suppl´ementaires sur une inconnue.
>
assume(m, nonnegative);
>
additionally( m<=0 );
>
about(m);
Originally m, renamed m~:
is assumed to be: 0
5.2 Les hypoth`eses • 169
Plusieurs fonctions font usage des hypoth`eses sur une inconnue. La
commande frac retourne la partie fractionnaire d’un nombre.
>
frac(n);
frac(n)
>
assume(n, integer);
>
frac(n);
0
La limite suivante d´epend de b.
>
limit(b*x, x=infinity);
signum(b) ∞
>
assume( b>0 );
>
limit(b*x, x=infinity);

Vous pouvez utiliser infolevel pour obtenir de Maple un rapport
d´etaill´e de l’activit´e d’une commande.
>
infolevel[int] := 2;
infolevel
int
:= 2
>
int( exp(c*x), x=0..infinity );
int/cook/nogo1:
Given Integral
Int(exp(c*x),x = 0 .. infinity)
Fits into this pattern:
Int(exp(-Ucplex*x^S1-U2*x^S2)*x^N*ln(B*x^DL)^M*cos(C1*x^R)
/((A0+A1*x^D)^P),x = t1 .. t2)
Definite integration: Can’t determine if the integral is
convergent.
Need to know the sign of --> -c
Will now try indefinite integration and then take limits.
int/indef1: first-stage indefinite integration
int/indef2: second-stage indefinite integration
int/indef2: applying derivative-divides
170 • Chapitre 5: L’´evaluation et la simplification
int/indef1: first-stage indefinite integration
lim
x→∞
e
(c x)
−1
c
La commande int doit connaˆıtre le signe de c (ou plutˆ ot le signe de -c).
>
assume( c>0 );
>
int( exp(c*x), x=0..infinity );
int/cook/nogo1:
Given Integral
Int(exp(x),x = 0 .. infinity)
Fits into this pattern:
Int(exp(-Ucplex*x^S1-U2*x^S2)*x^N*ln(B*x^DL)^M*cos(C1*x^R)
/((A0+A1*x^D)^P),x = t1 .. t2)
int/cook/IIntd1:
--> U must be <= 0 for converging integral
--> will use limit to find if integral is +infinity
--> or - infinity or undefined

Les logarithmes retournent plusieurs valeurs ; g´en´eralement, pour des
valeurs complexes de x, ln(e
x
) est diff´erent de x.
>
ln( exp( 3*Pi*I ) );
π I
Ainsi, Maple ne simplifie pas l’expression suivante, ` a moins de la savoir
correcte, par exemple lorsque x est r´eel.
>
ln(exp(x));
ln(e
x
)
>
assume(x, real);
>
ln(exp(x));
x~
Vous pouvez utiliser la commande is pour v´erifier directement les
propri´et´es des inconnues.
5.2 Les hypoth`eses • 171
>
is( c>0 );
true
>
is(x, complex);
true
>
is(x, real);
true
Dans le prochain exemple, Maple croit toujours que la variable a est
n´egative.
>
eq := xi^2 = a;
eq := ξ
2
= a~
>
solve( eq, {xi} );
¦ξ =

−a~ I¦, ¦ξ = −I

−a~¦
Pour retirer des hypoth`eses sur une variable, il suffit d’en d´esaffecter
le nom. Cependant, l’expression eq renvoie toujours ` a a~.
>
eq;
ξ
2
= a~
Vous devez retirer l’hypoth`ese sur a `a l’int´erieur de eq avant
de retirer l’hypoth`ese sur a. Tout d’abord, retirez les hypoth`eses sur a `a
l’int´erieur de eq.
>
eq := subs( a=’a’, eq );
eq := ξ
2
= a
Puis, d´esaffectez a.
172 • Chapitre 5: L’´evaluation et la simplification
>
a := ’a’;
a := a
Consultez la rubrique ?assume pour obtenir davantage d’information.
S’il ne vous est n´ecessaire de poser une hypoth`ese que pour une
seule ´evaluation, vous pouvez utiliser la commande assuming d´ecrite
dans la prochaine sous-section. Lorsque vous vous servez de la commande
assuming, vous n’avez pas besoin de retirer par la suite les hypoth`eses
sur les inconnues et les ´equations.
La commande assuming
Pour n’effectuer qu’une seule ´evaluation avec des hypoth`eses sur les noms
d’une expression, utilisez la commande assuming. Son utilisation est
´equivalente ` a la proc´edure consistant ` a appeler la commande assume,
`a ´evaluer l’expression, puis ` a retirer les hypoth`eses sur l’expression et ses
composantes. Cela facilite l’exp´erimentation de l’´evaluation d’une expres-
sion sous diff´erentes hypoth`eses.
>
about(a);
a:
nothing known about this object
>
sqrt(a^2) assuming a<0;
−a
>
about(a);
a:
nothing known about this object
>
sqrt(a^2) assuming a>0;
a
Vous pouvez ´evaluer une expression avec une hypoth`ese sur tous les
noms dans une expression :
5.3 Manipulations structurelles • 173
>
sqrt((a*b)^2) assuming positive;
a b~
ou avec des hypoth`eses sur des noms en particulier.
>
ln(exp(x)) + ln(exp(y)) assuming x::real, y::complex;
x~ + ln(e
y
)
Dans cet exemple, les doubles deux-points (::) indiquent l’affectation
d’une propri´et´e. En g´en´eral, les doubles deux-points sont utilis´es pour
v´erifier le type d’un objet. Pour plus d’information, r´ef´erez-vous ` a la ru-
brique ?type.
Pour en savoir davantage sur la commande assuming, consultez la
rubrique ?assuming.
5.3 Manipulations structurelles
Les manipulations structurelles sont des manipulations qui permettent,
entre autres choses, de choisir et de modifier des parties d’un objet, d’uti-
liser la connaissance de la structure ou la repr´esentation interne d’un
objet plutˆ ot que de travailler avec l’expression comme un objet purement
math´ematique. Dans les cas particuliers des listes et des ensembles, choisir
un ´el´ement est direct.
>
L := { Z, Q, R, C, H, O };
L := ¦O, R, Z, Q, H, C¦
>
L[3];
Z
Choisir des ´el´ements de listes et d’ensembles est facile, ce qui rend leur
manipulation ais´ee. Le concept de ce qui constitue les parties d’une ex-
pression g´en´erale est plus difficile. Cependant, plusieurs des commmandes
qui manipulent les listes et les ensembles s’appliquent ´egalement aux ex-
pressions g´en´erales.
174 • Chapitre 5: L’´evaluation et la simplification
Appliquer une fonction `a une liste ou un ensemble
Vous pouvez appliquer une fonction ou une commande ` a chacun des
´el´ements plutˆ ot qu’` a un objet en tant que tout. La commande map vous
permet d’effectuer cette application multiple.
>
f( [a, b, c] );
f([a, b, c])
>
map( f, [a, b, c] );
[f(a), f(b), f(c)]
>
map( expand, { (x+1)*(x+2), x*(x+2) } );
¦x
2
+ 2 x, x
2
+ 3 x + 2¦
>
map( x->x^2, [a, b, c] );
[a
2
, b
2
, c
2
]
Lorsque map est appel´ee avec plus de deux arguments, les arguments
suppl´ementaires sont pass´es `a la fonction.
>
map( f, [a, b, c], p, q );
[f(a, p, q), f(b, p, q), f(c, p, q)]
>
map( diff, [ (x+1)*(x+2), x*(x+2) ], x );
[2 x + 3, 2 x + 2]
La commande map2 est ´etroitement li´ee ` a map. L`a o` u map remplace
s´equentiellement le premier argument d’une fonction, map2 remplace le
deuxi`eme argument d’une fonction.
>
map2( f, p, [a,b,c], q, r );
[f(p, a, q, r), f(p, b, q, r), f(p, c, q, r)]
5.3 Manipulations structurelles • 175
>
map2( diff, x^y/z, [x,y,z] );
[
x
y
y
xz
,
x
y
ln(x)
z
, −
x
y
z
2
]
Vous pouvez utiliser map2 pour obtenir la liste de toutes les d´eriv´ees
partielles d’une expression.
>
map2( map, { [a,b], [c,d], [e,f] }, p, q );
¦[a(p, q), b(p, q)], [c(p, q), d(p, q)], [e(p, q), f(p, q)], ¦
Vous pouvez mˆeme utiliser seq conjointement avec map lorsque vous
les appliquez ` a des sous-´el´ements. Ici, seq produit une suite en appliquant
la fonction f aux ´el´ements d’un ensemble et d’une liste.
>
seq( f(i), i={a,b,c} );
f(a), f(b), f(c)
>
seq( f(p, i, q, r), i=[a,b,c] );
f(p, a, q, r), f(p, b, q, r), f(p, c, q, r)
Un autre exemple est le triangle de Pascal.
>
L := [ seq( i, i=0..5 ) ];
L := [0, 1, 2, 3, 4, 5]
>
[ seq( [ seq( binomial(n,m), m=L ) ], n=L ) ];
[[1, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0], [1, 2, 1, 0, 0, 0],
[1, 3, 3, 1, 0, 0], [1, 4, 6, 4, 1, 0], [1, 5, 10, 10, 5, 1]]
>
map( print, % );
176 • Chapitre 5: L’´evaluation et la simplification
[1, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0]
[1, 2, 1, 0, 0, 0]
[1, 3, 3, 1, 0, 0]
[1, 4, 6, 4, 1, 0]
[1, 5, 10, 10, 5, 1]
[]
Les commandes add et mul fonctionnent comme seq, `a l’exception
qu’elles engendrent respectivement des sommes et des produits au lieu de
suites.
>
add( i^2, i=[5, y, sin(x), -5] );
50 +y
2
+ sin(x)
2
Les commandes map, map2, seq, add et mul peuvent ´egalement agir
sur des expressions g´en´erales. Consultez la section Les parties d’une
expression de la page 182.
Choisir des ´el´ements dans une liste ou un ensemble
Vous pouvez choisir certains ´el´ements d’une liste ou d’un ensemble en four-
nissant une fonction bool´eenne qui d´etermine les ´el´ements ` a s´electionner.
La fonction bool´eenne suivante retourne true si son argument est sup´e-
rieur ` a 3.
>
large := x -> is(x > 3);
large := x → is(3 < x)
Vous pouvez maintenant utiliser la commande select pour choisir les
´el´ements dans une liste ou un ensemble qui satisfont ` a la propri´et´e large.
>
L := [ 8, 2.95, Pi, sin(9) ];
L := [8, 2.95, π, sin(9)]
5.3 Manipulations structurelles • 177
>
select( large, L );
[8, π]
De fa¸ con similaire, la commande remove retire les ´el´ements de L qui
satisfont ` a la propri´et´e large et affiche comme r´esultat les ´el´ements res-
tants.
>
remove( large, L );
[2.95, sin(9)]
Pour effectuer les deux op´erations simultan´ement, utilisez la com-
mande selectremove.
>
selectremove( large, L);
[8, π], [2.95, sin(9)]
Servez-vous de la commande type pour d´eterminer le type d’une ex-
pression.
>
type( 3, numeric );
true
>
type( cos(1), numeric );
false
Ici, la syntaxe de select passe le troisi`eme argument, numeric, `a la
commande type.
>
select( type, L, numeric );
[8, 2.95]
Consultez la section Les parties d’une expression `a la page 182 pour
obtenir davantage d’information sur les types de donn´ees et sur la mani`ere
d’utiliser select et remove sur des expressions en g´en´eral.
178 • Chapitre 5: L’´evaluation et la simplification
Combiner deux listes
Il est possible de combiner des listes de plusieurs mani`eres. Voici une liste
de valeurs en x et une liste de valeurs en y.
>
X := [ seq( ithprime(i), i=1..6 ) ];
X := [2, 3, 5, 7, 11, 13]
>
Y := [ seq( binomial(6, i), i=1..6 ) ];
Y := [6, 15, 20, 15, 6, 1]
Pour tracer le graphique des valeurs en y en fonction des valeurs en
x, construisez une liste de listes : [ [x1,y1], [x2,y2], ... ]. Pour
chaque paire de valeurs, construisez donc une liste de deux ´el´ements.
>
pair := (x,y) -> [x, y];
pair := (x, y) → [x, y]
La commande zip peut combiner les listes X et Y selon la fonction
binaire pair.
>
P := zip( pair, X, Y );
P := [[2, 6], [3, 15], [5, 20], [7, 15], [11, 6], [13, 1]]
>
plot( P );
2
4
6
8
10
12
14
16
18
20
2 4 6 8 10 12
Si les deux listes sont de longueur diff´erente, zip retourne une liste
de la longueur de la plus courte.
5.3 Manipulations structurelles • 179
>
zip( (x,y) -> x.y, [a,b,c,d,e,f], [1,2,3] );
[a, 2 b, 3 c]
Vous pouvez sp´ecifier un quatri`eme argument ` a zip qui lui fait retour-
ner une liste aussi longue que la plus longue des deux listes, en utilisant
le quatri`eme param`etre pour remplacer les valeurs manquantes.
>
zip( (x,y) -> x.y, [a,b,c,d,e,f], [1,2,3], 99 );
[a, 2 b, 3 c, 99 d, 99 e, 99 f]
>
zip( igcd, [7657,342,876], [34,756,213,346,123], 6! );
[1, 18, 3, 2, 3]
La commande zip peut ´egalement combiner des vecteurs. Consultez
la rubrique ?zip pour obtenir plus d’information sur cette commande.
Trier des listes
Dans Maple, une liste est une structure de donn´ees fondamentale qui
pr´eserve l’ordre des ´el´ements. Les ´el´ements d’une liste demeurent dans le
mˆeme ordre que lorsque la liste a ´et´e cr´e´ee. Vous pouvez cependant cr´eer
une copie d’une liste tri´ee dans un autre ordre en utilisant la commande
sort. Entre autres fonctions, la commande sort trie les listes en ordre
croissant. Elle trie une liste de nombres en ordre num´erique.
>
sort( [1,3,2,4,5,3,6,3,6] );
[1, 2, 3, 3, 3, 4, 5, 6, 6]
La commande sort peut ´egalement trier une liste chaˆınes de ca-
ract`eres en ordre lexicographique.
>
sort( ["Mary", "has", "a", "little", "lamb"] );
[“Mary”, “a”, “has”, “lamb”, “little”]
180 • Chapitre 5: L’´evaluation et la simplification
Lorsque vous m´elangez des nombres et des chaˆınes, ou lorsqu’une liste
contient des expressions autres que des nombres ou des chaˆınes, la com-
mande sort applique les adresses machine, qui peuvent varier ` a chaque
session.
>
sort( [x, 1, "apple"] );
[1, “apple”, x]
>
sort( [-5, 10, sin(34)] );
[10, sin(34), −5]
Notez que, pour Maple, π n’est pas un nombre.
>
sort( [4.3, Pi, 2/3] );
[π, 4.3,
2
3
]
Vous pouvez sp´ecifier une fonction bool´eenne pour d´efinir un ordre
`a la liste. Cette fonction bool´eenne doit avoir deux arguments et retour-
ner true si le premier argument doit ˆetre plac´e avant le second. Vous
pouvez employer cette m´ethode pour trier une liste de nombres en ordre
d´ecroissant.
>
sort( [3.12, 1, 1/2], (x,y) -> evalb( x>y ) );
[3.12, 1,
1
2
]
La commande is sert ` a comparer des constantes comme π et sin(5)
avec des nombres purs.
>
bf := (x,y) -> is( x < y );
bf := (x, y) → is(x < y)
>
sort( [4.3, Pi, 2/3, sin(5)], bf );
[sin(5),
2
3
, π, 4.3]
5.3 Manipulations structurelles • 181
Vous pouvez ´egalement trier des chaˆınes de caract`eres par longueur.
>
shorter := (x,y) -> evalb( length(x) < length(y) );
shorter := (x, y) → evalb(length(x) < length(y))
>
sort( ["Mary", "has", "a", "little", "lamb"], shorter );
[“a”, “has”, “lamb”, “Mary”, “little”]
Maple ne poss`ede pas de m´ethode int´egr´ee pour trier des listes mixtes
de chaˆınes de caract`eres et de nombres (sauf par adresse machine). Pour
trier une liste mixte de chaˆınes et de nombres, vous pouvez effectuer les
op´erations suivantes.
>
big_list := [1,"d",3,5,2,"a","c","b",9];
big_list := [1, “d”, 3, 5, 2, “a”, “c”, “b”, 9]
Cr´eez deux listes ` a partir de l’originale, l’une contenant des nombres,
et l’autre des chaˆınes de caract`eres.
>
list1 := select( type, big_list, string );
list1 := [“d”, “a”, “c”, “b”]
>
list2 := select( type, big_list, numeric );
list2 := [1, 3, 5, 2, 9]
Triez maintenant les deux listes ind´ependamment.
>
list1 := sort(list1);
list1 := [“a”, “b”, “c”, “d”]
>
list2 := sort(list2);
list2 := [1, 2, 3, 5, 9]
Finalement, regroupez les deux listes.
182 • Chapitre 5: L’´evaluation et la simplification
>
sorted_list := [ op(list1), op(list2) ];
sorted_list := [“a”, “b”, “c”, “d”, 1, 2, 3, 5, 9]
La commande sort peut ´egalement servir ` a trier des expressions
alg´ebriques. Consultez la section 5.1.
La pr´esente section, ` a la page 176, donne davantage d’information ` a
propos des commandes de cet exemple.
Les parties d’une expression
Pour manipuler les d´etails d’une expression, vous devez en choisir les
parties individuelles. Trois cas simples pour illustrer cette situation font
appel aux ´equations, aux intervalles et aux fractions. La commande lhs
s´electionne le cˆ ot´e gauche d’une ´equation.
>
eq := a^2 + b^ 2 = c^2;
eq := a
2
+b
2
= c
2
>
lhs( eq );
a
2
+b
2
La commande rhs, de mani`ere similaire, en s´electionne le cˆ ot´e droit.
>
rhs( eq );
c
2
Les commandes lhs et rhs fonctionnent ´egalement pour les inter-
valles.
>
lhs( 2..5 );
2
>
rhs( 2..5 );
5
>
eq := x = -2..infinity;
5.3 Manipulations structurelles • 183
eq := x = −2..∞
>
lhs( eq );
x
>
rhs( eq );
−2..∞
>
lhs( rhs(eq) );
−2
>
rhs( rhs(eq) );

Les commandes numer et denom extraient respectivement le num´era-
teur et le d´enominateur d’une fraction.
>
numer( 2/3 );
2
>
denom( 2/3 );
3
>
fract := ( 1+sin(x)^3-y/x) / ( y^2 - 1 + x );
fract :=
1 + sin(x)
3

y
x
y
2
−1 +x
>
numer( fract );
x + sin(x)
3
x −y
>
denom( fract );
184 • Chapitre 5: L’´evaluation et la simplification
x(y
2
−1 +x)
Consid´erez l’expression
>
expr := 3 + sin(x) + 2*cos(x)^2*sin(x);
expr := 3 + sin(x) + 2 cos(x)
2
sin(x)
La commande whattype consid`ere expr comme une somme.
>
whattype( expr );
+
Utilisez la commande op pour lister les termes d’une somme ou, en
g´en´eral, les op´erandes d’une expression.
>
op( expr );
3, sin(x), 2 cos(x)
2
sin(x)
L’expression expr est form´ee de trois ´el´ements. Utilisez la commande
nops pour compter le nombre d’op´erandes d’une expression.
>
nops( expr );
3
Par exemple, vous pouvez choisir le troisi`eme terme de la mani`ere
suivante.
>
term3 := op(3, expr);
term3 := 2 cos(x)
2
sin(x)
term3 est un produit de trois facteurs.
>
whattype( term3 );

>
nops( term3 );
5.3 Manipulations structurelles • 185
3
>
op( term3 );
2, cos(x)
2
, sin(x)
Obtenez le second facteur de term3 de la mani`ere suivante.
>
factor2 := op(2, term3);
factor2 := cos(x)
2
C’est une exponentiation.
>
whattype( factor2 );
^
factor2 poss`ede deux op´erandes.
>
op( factor2 );
cos(x), 2
Le premier op´erande est une fonction et ne contient qu’un seul
op´erande.
>
op1 := op(1, factor2);
op1 := cos(x)
>
whattype( op1 );
function
>
op( op1 );
x
x est un symbole.
186 • Chapitre 5: L’´evaluation et la simplification
>
whattype( op(op1) );
symbol
Puisque vous n’avez pas assign´e une valeur ` a x, il ne contient qu’un
seule op´erande, soit lui-mˆeme.
>
nops( x );
1
>
op( x );
x
Vous pouvez repr´esenter le r´esultat de la recherche des op´erandes
d’une expression par un graphique appel´e arbre des expressions. L’arbre
des expressions de expr ressemble ` a ceci.
x
x
2
cos
x
2 ^ sin
sin * 3
+
Les op´erandes d’une liste ou d’un ensemble sont ses ´el´ements.
>
op( [a,b,c] );
a, b, c
>
op( {d,e,f} );
e, f, d
5.3 Manipulations structurelles • 187
`
A la pr´esente section (page 174), on d´ecrit comment la commande map
applique une fonction ` a tous les ´el´ements d’une liste ou d’un ensemble.
La fonctionnalit´e de map s’´etend aux expressions en g´en´eral.
>
map( f, x^2 );
f(x)
f(2)
Les commandes select et remove d´ecrites dans la section 5.3 de la
page 176 fonctionnent ´egalement pour des expressions en g´en´eral.
>
large := z -> evalb( is(z>3) = true );
large := z → evalb(is(3 < z) = true)
>
remove( large, 5+8*sin(x) - exp(9) );
8 sin(x) −e
9
Maple poss`ede plusieurs commandes utiles, comme la fonction bool´e-
enne dans un appel ` a select ou remove. La commande has d´etermine si
une expression contient une sous-expression sp´ecifique.
>
has( x*exp(cos(t^2)), t^2 );
true
>
has( x*exp(cos(t^2)), cos );
true
Quelques-unes des solutions du syst`eme d’´equations suivant con-
tiennent des r´ef´erences ` a RootOf.
>
sol := { solve( { x^2*y^2 = b*y, x^2-y^2 = a*x },
>
{x,y} ) };
sol := ¦¦y = 0, x = 0¦, ¦y = 0, x = a¦, ¦
y =
b
RootOf(_Z
6
−b
2
−a _Z
5
)
2
,
x = RootOf(_Z
6
−b
2
−a _Z
5
)¦¦
188 • Chapitre 5: L’´evaluation et la simplification
Utilisez select et has pour choisir ces solutions.
>
select( has, sol, RootOf );
¦¦y =
b
RootOf(_Z
6
−b
2
−a _Z
5
)
2
,
x = RootOf(_Z
6
−b
2
−a _Z
5
)¦¦
Vous pouvez ´egalement choisir ou retirer des sous-expressions par
type. La commande type d´etermine si une expression est d’un type donn´e.
>
type( 3+x, ‘+‘ );
true
Dans cet exemple, la commande select passe son troisi`eme argument,
‘+‘, `a type.
>
expr := ( 3+x ) * x^2 * sin( 1+sqrt(Pi) );
expr := (3 +x) x
2
sin(1 +

π)
>
select( type, expr, ‘+‘ );
3 +x
La commande hastype d´etermine si une expression contient une sous-
expression d’un certain type.
>
hastype( sin( 1+sqrt(Pi) ), ‘+‘ );
true
Utilisez la combinaison select(hastype,...) pour choisir les op´e-
randes d’une expression qui contient un certain type.
>
select( hastype, expr, ‘+‘ );
(3 +x) sin(1 +

π)
Si vous ˆetes int´eress´e aux sous-expressions d’un certain type plutˆ ot
qu’aux op´erandes qui les contiennent, utilisez la commande indets.
5.3 Manipulations structurelles • 189
>
indets( expr, ‘+‘ );
¦3 +x, 1 +

π¦
Les deux RootOf contenus dans sol sont de type RootOf. Puisqu’ils
sont identiques, l’ensemble retourn´e par indets contient seulement un
´el´ement.
>
indets( sol, RootOf );
¦RootOf(_Z
6
−b
2
−a _Z
5

`
A l’instar de RootOf, toutes les commandes n’ont pas leur propre
type ; vous pouvez cependant utiliser le type structur´e specfunc(type,
nom). Ce type identifie les fonctions appel´ees nom avec les arguments de
type type.
>
type( diff(y(x), x), specfunc(anything, diff) );
true
Vous pouvez utiliser ceci pour trouver toutes les d´eriv´ees d’une
´equation diff´erentielle.
>
DE := expand( diff( cos(y(t)+t)*sin(t*z(t)), t ) )
>
+ diff(x(t), t);
DE := −sin(t z(t)) sin(y(t)) cos(t) (
d
dt
y(t))
−sin(t z(t)) sin(y(t)) cos(t)
−sin(t z(t)) cos(y(t)) sin(t) (
d
dt
y(t))
−sin(t z(t)) cos(y(t)) sin(t)
+ cos(t z(t)) cos(y(t)) cos(t) z(t)
+ cos(t z(t)) cos(y(t)) cos(t) t (
d
dt
z(t))
−cos(t z(t)) sin(y(t)) sin(t) z(t)
−cos(t z(t)) sin(y(t)) sin(t) t (
d
dt
z(t)) + (
d
dt
x(t))
>
indets( DE, specfunc(anything, diff) );
¦

∂t
x(t),

∂t
y(t),

∂t
z(t)¦
190 • Chapitre 5: L’´evaluation et la simplification
Les op´erandes suivants de DE contiennent les d´eriv´ees.
>
select( hastype, DE, specfunc(anything, diff) );
−sin(t z(t)) sin(y(t)) cos(t) (
d
dt
y(t))
−sin(t z(t)) cos(y(t)) sin(t) (
d
dt
y(t))
+ cos(t z(t)) cos(y(t)) cos(t) t (
d
dt
z(t))
−cos(t z(t)) sin(y(t)) sin(t) t (
d
dt
z(t)) + (
d
dt
x(t))
DE ne poss`ede qu’un seul op´erande qui est lui-mˆeme une d´eriv´ee.
>
select( type, DE, specfunc(anything, diff) );
d
dt
x(t)
Maple reconnaˆıt plusieurs types. Consultez la rubrique ?type pour en
obtenir une liste partielle, de mˆeme que ?type,structured pour obtenir
davantage d’information sur les types structur´es comme specfunc.
La substitution
Il est souvent n´ecessaire de substituer une valeur ` a une variable (en
d’autres termes, d’´evaluer une expression en un point). Par exemple, pour
r´esoudre le probl`eme

Si f(x) = ln(sin(xe
cos(x)
)), trouvez f

(2)

, vous
devez substituer la valeur 2 ` a x dans la d´eriv´ee. La commande diff calcule
la d´eriv´ee.
>
y := ln( sin( x * exp(cos(x)) ) );
y := ln(sin(xe
cos(x)
))
>
yprime := diff( y, x );
yprime :=
cos(xe
cos(x)
) (e
cos(x)
−xsin(x) e
cos(x)
)
sin(xe
cos(x)
)
Utilisez maintenant la commande eval pour substituer une valeur ` a
x dans yprime.
>
eval( yprime, x=2 );
5.3 Manipulations structurelles • 191
cos(2 e
cos(2)
) (e
cos(2)
−2 sin(2) e
cos(2)
)
sin(2 e
cos(2)
)
La commande evalf retourne une approximation d´ecimale du r´esul-
tat.
>
evalf( % );
−0.1388047428
La commande effectue des substitutions syntaxiques, et non math´e-
matiques ; cela signifie que vous pouvez effectuer des substitutions pour
n’importe quelle sous-expression.
>
subs( cos(x)=3, yprime );
cos(xe
3
) (e
3
−xsin(x) e
3
)
sin(xe
3
)
Vous ˆetes cependant limit´e aux sous-expressions telles que Maple les
reconnaˆıt.
>
expr := a * b * c * a^b;
expr := a b c a
b
>
subs( a*b=3, expr );
a b c a
b
expr est un produit de quatre facteurs.
>
op( expr );
a, b, c, a
b
Le produit a*b n’est donc pas un facteur dans expr. Vous pouvez effec-
tuer la substitution a*b=3 de trois mani`eres : r´esoudre la sous-expression
pour une des variables :
>
subs( a=3/b, expr );
192 • Chapitre 5: L’´evaluation et la simplification
3 c (
3
b
)
b
utiliser une relation accessoire dans simplify :
>
simplify( expr, { a*b=3 } );
3 c a
b
ou encore utiliser la commande algsubs qui effectue des substitutions
alg´ebriques.
>
algsubs( a*b=3, expr);
3 c a
b
Remarquez que, dans le premier cas, toutes les occurrences de a ont
´et´e remplac´ees par 3/b, tandis que, dans le deuxi`eme et le troisi`eme cas,
les variables a et b demeurent dans le r´esultat.
Vous pouvez effectuer plusieurs substitutions ` a la fois par un seul
appel ` a subs.
>
expr := z * sin( x^2 ) + w;
expr := z sin(x
2
) +w
>
subs( x=sqrt(z), w=Pi, expr );
z sin(z) +π
La commande subs effectue les substitutions de gauche ` a droite.
>
subs( z=x, x=sqrt(z), expr );

z sin(z) +w
Si vous donnez un ensemble ou une liste de substitutions, la commande
subs effectue ces substitutions simultan´ement.
>
subs( { x=sqrt(Pi), z=3 }, expr );
3 sin(π) +w
5.3 Manipulations structurelles • 193
Remarquez que, en g´en´eral, vous devez ´evaluer explicitement le
r´esultat d’un appel ` a subs.
>
eval( % );
w
Utilisez la commande subsop pour remplacer un op´erande sp´ecifique
dans une expression.
>
expr := 5^x;
expr := 5
x
>
op( expr );
5, x
>
subsop( 1=t, expr );
t
x
L’op´erande d’ordre z´ero est g´en´eralement le nom de la fonction.
>
expr := cos(x);
expr := cos(x)
>
subsop( 0=sin, expr );
sin(x)
La pr´esente section, ` a la page 182, donne plus de d´etails sur les
op´erandes d’une expression.
Changer le type d’une expression
Vous pouvez trouver n´ecessaire de convertir une expression dans un autre
type. Consid´erez la s´erie de Taylor de sin(x).
>
f := sin(x);
194 • Chapitre 5: L’´evaluation et la simplification
f := sin(x)
>
t := taylor( f, x=0 );
t := x −
1
6
x
3
+
1
120
x
5
+ O(x
6
)
Puisque vous ne pouvez tracer le graphique d’une s´erie, vous devez
utiliser convert(..., polynom) pour la convertir d’abord en approxi-
mation polynomiale.
>
p := convert( t, polynom );
p := x −
1
6
x
3
+
1
120
x
5
De mani`ere similaire, le titre d’un graphique doit ˆetre une chaˆıne, et
non une expression g´en´erale. Vous pouvez utiliser convert(..., string)
pour convertir une expression en chaˆıne.
>
p_txt := convert( p, string );
p_txt := “x-1/6*x^3+1/120*x^ 5”
>
plot( p, x=-4..4, title=p_txt );
x–1/6*x^3+1/120*x^5
–1.5
–1
–0.5
0
0.5
1
1.5
–4 –3 –2 –1 1 2 3 4
x
La commande cat concat`ene tous ses arguments pour cr´eer une nou-
velle cha
ˆ
ine.
>
ttl := cat( convert( f, string ),
>
" and its Taylor approximation ",
>
p_txt );
5.3 Manipulations structurelles • 195
ttl := “sin(x) and its Taylor approximation x-1/6*`
x^3+1/120*x^5”
>
plot( [f, p], x=-4..4, title=ttl );
sin(x) and its Taylor approximation x–1/6*x^3+1/120*x^5
–1.5
–1
–0.5
0
0.5
1
1.5
–4 –3 –2 –1 1 2 3 4
x
Vous pouvez ´egalement convertir une liste en ensemble ou un ensemble
en liste.
>
L := [1,2,5,2,1];
L := [1, 2, 5, 2, 1]
>
S := convert( L, set );
S := ¦1, 2, 5¦
>
convert( S, list );
[1, 2, 5]
La commande convert peut effectuer plusieurs autres conversions
structurelles et math´ematiques. Consultez la rubrique ?convert pour ob-
tenir davantage d’information ` a ce sujet.
196 • Chapitre 5: L’´evaluation et la simplification
5.4 Les r`egles d’´evaluation
Dans un programme de math´ematiques symboliques comme Maple, la
question de l’´evaluation occupe une place importante. Lorsque vous as-
signez la valeur y `a x, la valeur z `a y et la valeur 5 ` a z, comment x doit-il
ˆetre ´evalu´e ?
Niveaux d’´evaluation
Dans la plupart des cas, Maple effectue une ´evaluation compl`ete des noms :
lorsque vous utilisez un nom ou un symbole, le logiciel v´erifie si ce nom
ou ce symbole poss`ede une valeur assign´ee. Le cas ´ech´eant, Maple rem-
place le nom par la valeur trouv´ee. Si cette valeur poss`ede elle-mˆeme une
valeur assign´ee, Maple effectue une autre substitution, et ainsi de suite de
mani`ere r´ecursive jusqu’` a ce qu’aucune substitution ne soit possible.
>
x := y;
x := y
>
y := z;
y := z
>
z := 5;
z := 5
Maple ´evalue maintenant x int´egralement : il remplace x par y, y par
z et finalement z par 5.
>
x;
5
Vous pouvez utiliser la commande eval pour contrˆ oler le niveau d’´e-
valuation d’une expression. Lorsque vous appelez eval avec un seul argu-
ment, eval ´evalue int´egralement son argument.
>
eval(x);
5
5.4 Les r`egles d’´evaluation • 197
Un deuxi`eme argument ` a eval sp´ecifie jusqu’o` u vous souhaitez ´evaluer
le premier argument.
>
eval(x, 1);
y
>
eval(x, 2);
z
>
eval(x, 3);
5
Les principales exceptions ` a la r`egle de l’´evaluation compl`ete sont
les structures de donn´ees sp´eciales comme les tableaux, les matrices et
les proc´edures, de mˆeme que le comportement des variables locales ` a
l’int´erieur d’une proc´edure.
´
Evaluation du dernier nom
Les structures de donn´ees array, table, matrix et proc poss`edent un
comportement d’´evaluation sp´ecial appel´e ´evaluation du dernier nom.
>
x := y;
x := y
>
y := z;
y := z
>
z := array( [ [1,2], [3,4] ] );
z :=
¸
1 2
3 4

Maple remplace x par y et y par z, mais arrˆete ` a ce point puisque
l’´evaluation du dernier nom, z, produirait un tableau, l’un des quatre
types sp´eciaux de structures.
198 • Chapitre 5: L’´evaluation et la simplification
>
x;
z
Maple utilise l’´evaluation du dernier nom pour les tableaux, les tables,
les matrices et les proc´edures pour conserver la repr´esentation compacte
des entr´ees de tableaux non assign´ees (par exemple T[3]) et les com-
mandes non ´evalu´ees (par exemple sin(x)). Vous pouvez forcer une
´evaluation compl`ete en appelant explicitement la commande eval.
>
eval(x);
¸
1 2
3 4

>
add2 := proc(x,y) x+y; end proc;
add2 := proc(x, y) x +y end proc
>
add2;
add2
Vous pouvez facilement forcer une ´evaluation compl`ete en utilisant
eval ou print.
>
eval(add2);
proc(x, y) x +y end proc
Remarquez qu’une ´evaluation compl`ete des proc´edures contenues dans
la biblioth`eque de Maple, par d´efaut, supprime le code de cette proc´edure.
Pour illustrer cette situation, examinez la commande erfi.
>
erfi;
erfi
>
eval(erfi);
proc(x : :algebraic) . . . end proc
5.4 Les r`egles d’´evaluation • 199
Assignez ` a la variable verboseproc de la commande interface la
valeur 2, et essayez ` a nouveau.
>
interface( verboseproc=2 );
>
eval(erfi);
proc(x : :algebraic)
option‘Copyright (c) 1996 Waterloo Maple Inc.`
All rights reserved.‘;
if nargs = 1 then
error “expecting 1 argument, got %1”, nargs
elif type(x, ’complex(float)’) thenevalf(’erfi’(x))
elif x = 0 then0
elif type(x, ’∞’) then
if type(x, ’¦undefined, cx_infinity¦’) then
undefined +undefined ∗ I
elif type(x, ’extended_numeric’) thenx
elif type('(x), ’∞’) then∞+∞∗ I
else CopySign(I, ·(x))
end if
elif type(x, ’undefined’) then
if type(x, ’extended_numeric’) thenundefined
elif type(x, ’imaginary’) thenundefined ∗ I
else undefined +undefined ∗ I
end if
elif type(x, ‘ ∗ ‘) and member(I, ¦op(x)¦) then
I ∗ erf(−I ∗ x)
elif type(x, ’complex(numeric)’) and csgn(x) < 0 then
−erfi(−x)
eliftype(x, ‘ ∗ ‘) and type(op(1, x), ’complex(numeric)’)
and csgn(op(1, x)) < 0then −erfi(−x)
elif type(x, ‘ + ‘) and traperror(sign(x)) = −1 then
−erfi(−x)
else ’erfi’(x)
end if
end proc
La valeur par d´efaut de verboseproc est 1.
200 • Chapitre 5: L’´evaluation et la simplification
>
interface( verboseproc=1 );
La rubrique d’aide ?interface explique les valeurs permises de
verboseproc et des autres variables d’interface.
´
Evaluation `a un niveau
Les variables locales d’une proc´edure sont appliqu´ees ` a l’´evaluation ` a un
niveau : si vous assignez une variable locale, le r´esultat de l’´evaluation est
la valeur la plus r´ecemment assign´ee directement ` a cette variable.
>
test:=proc()
>
local x, y, z;
>
x := y;
>
y := z;
>
z := 5;
>
x;
>
end proc:
>
test();
y
Comparez cette ´evaluation ` a l’exemple similaire pr´esent´e `a la
page 196. L’´evaluation compl`ete ` a l’int´erieur d’une proc´edure est rare-
ment n´ecessaire et peut mener ` a une proc´edure inefficace. Lorsque vous
d´esirez obtenir de l’´evaluation compl`ete `a l’int´erieur d’une proc´edure, uti-
lisez eval.
Commandes avec des r`egles sp´eciales d’´evaluation
Les commandes assigned et evaln Les fonctions assigned et evaln
´evaluent leurs arguments seulement au point o` u les arguments deviennent
des noms pour la premi`ere fois.
>
x := y;
x := y
>
y := z;
y := z
>
evaln(x);
x
5.4 Les r`egles d’´evaluation • 201
La commande assigned v´erifie si une valeur a ´et´e assign´ee `a un nom.
>
assigned( x );
true
La commande seq Pour cr´eer des suites d’expressions, la commande seq
n’´evalue pas ses arguments, de mani`ere que si une valeur a ´et´e assign´ee ` a
une variable, elle peut toujours l’utiliser comme une variable d’indice.
>
i := 2;
i := 2
>
seq( i^2, i=1..5 );
1, 4, 9, 16, 25
>
i;
2
Comparez ceci au comportement de sum.
>
sum( i^2, i=1..5 );
Error, (in sum) summation variable previously assigned,
second argument evaluates to 2 = 1 .. 5
Vous pouvez facilement r´esoudre ce probl`eme en utilisant les guille-
mets simples.
Empecher l’´evaluation d’une expression
Le langage Maple supporte l’utilisation des guillemets pour retarder l’´eva-
luation d’un niveau. Entourer un nom de guillemets simples (’) empˆeche
Maple d’´evaluer celui-ci.
>
i := 4;
i := 4
>
i;
202 • Chapitre 5: L’´evaluation et la simplification
4
>
’i’;
i
Utilisez cette m´ethode pour ´eviter le probl`eme suivant.
>
i;
4
>
sum( i^2, i=1..5 );
Error, (in sum) summation variable previously assigned,
second argument evaluates to 4 = 1 .. 5
>
sum( ’i^2’, ’i’=1..5 );
55
>
i;
4
L’´evaluation compl`ete d’une expression entour´ee de guillemets sup-
prime un niveau de ces guillemets.
>
x := 0;
x := 0
>
’’’x’+1’’;
’’x’ + 1’
>
%;
’x’ + 1
>
%;
5.4 Les r`egles d’´evaluation • 203
x + 1
>
%;
1
Entourer une expression de guillemets retarde l’´evaluation, mais n’em-
pˆeche pas les simplifications automatiques ni les calculs arithm´etiques.
>
’1-1’;
0
>
’p+q-i-p+3*q’;
4 q −i
Lorsque vous entourez une simple variable de guillemets simples, le
r´esultat retourn´e est le nom de la variable. Vous pouvez employer cette
m´ethode pour d´esaffecter une variable.
>
x := 1;
x := 1
>
x;
1
>
x := ’x’;
x := x
>
x;
x
Cependant, en g´en´eral, vous devez utiliser evaln.
>
i := 4;
204 • Chapitre 5: L’´evaluation et la simplification
i := 4
>
a[i] := 9;
a
4
:= 9
Remarquez que ’a[i]’ est a[i] et non a[4].
>
’a[i]’;
a
i
Vous devez utilser evaln pour d´esaffecter a[i].
>
evaln( a[i] );
a
4
>
a[i] := evaln( a[i] );
a
4
:= a
4
Utiliser les variables entour´ees de guillemets comme arguments
de fonctions
Quelques commandes Maple se servent de noms comme moyen de retour-
ner de l’information en plus de la valeur retourn´ee de mani`ere standard.
La commande divide assigne le quotient au nom global q.
>
divide( x^2-1, x-1, ’q’ );
true
>
q;
x + 1
Rappelez-vous d’utiliser un nom entour´e de guillemets afin de vous
assurer de ne pas passer de variable allou´ee `a la proc´edure. Vous pouvez
´eviter d’utiliser les guillemets si vous vous assurez que le nom utilis´e n’a
pas de valeur assign´ee.
5.4 Les r`egles d’´evaluation • 205
>
q := 2;
q := 2
>
divide( x^2-y^2, x-y, q );
Error, wrong number (or type) of parameters in function
divide
>
q := evaln(q);
q := q
>
divide( x^2-y^2, x-y, q );
true
>
q;
x +y
Les commandes rem, quo, irem et iquo se comportent de mani`ere simi-
laire.
Concat´enation de noms
La concat´enation est une mani`ere de former de nouveaux noms de va-
riables bas´es sur d’autres noms.
>
a||b;
ab
L’op´erateur de concat´enation,

||

, dans un nom, entraˆıne l’´evalu-
ation du cˆ ot´e droit de l’op´erateur, mais pas celui du cˆ ot´e gauche.
>
a := x;
a := x
>
b := 2;
206 • Chapitre 5: L’´evaluation et la simplification
b := 2
>
a||b;
a2
>
c := 3;
c := 3
>
a||b||c;
a23
Si un nom issu d’une concat´enation ne forme pas un seul symbole,
Maple n’´evalue pas la concat´enation.
>
a := x;
a := x
>
b := y+1;
b := y + 1
>
new_name := a||b;
new_name := a[[(y + 1)
>
y := 3;
y := 3
>
new_name;
a4
Vous pouvez vous servir des noms concat´en´es pour assigner et cr´eer
des expressions.
5.5 Conclusion • 207
>
i := 1;
i := 1
>
b||i := 0;
b1 := 0
Ici, les guillemets simples sont n´ecessaires.
>
sum( ’a||k’ * x^k, k=0..8 );
a0 +a1 x +a2 x
2
+a3 x
3
+a4 x
4
+a5 x
5
+a6 x
6
+a7 x
7
+ a8 x
8
Lorsque vous omettez les guillemets simples, Maple ´evalue a||k `a ak.
>
sum( a||k * x^k, k=0..8 );
ak +ak x +ak x
2
+ak x
3
+ak x
4
+ak x
5
+ak x
6
+ak x
7
+ ak x
8
Vous pouvez ´egalement utiliser la concat´enation pour former des titres
de graphiques.
5.5 Conclusion
Dans ce chapitre, vous avez vu comment effectuer plusieurs types de ma-
nipulations sur des expressions, depuis l’addition de deux ´equations ` a la
s´election de parties d’une expression g´en´erale. Cependant, les commandes
que vous avez vues ici vous permettent de transformer une expression sous
plusieurs formes, souvent celles que vous jugez les plus simples. Si tel n’est
pas le cas, vous pouvez utiliser les relations accessoires pour sp´ecifier vos
propres r`egles de simplification, ou encore des hypoth`eses pour sp´ecifier
des propri´et´es des inconnues.
Vous avez ´egalement vu que, dans la plupart des cas, Maple effectue
l’´evaluation compl`ete des variables. Il existe cependant quelques excep-
tions, comme l’´evaluation du dernier nom pour certaines grandes struc-
tures de donn´ees, l’´evaluation ` a un seul niveau des variables locales d’une
proc´edure ainsi que l’´evaluation retard´ee au moyen des guillemets simples.
208 • Chapitre 5: L’´evaluation et la simplification
6 Exemples tir´es du calcul
diff´erentiel
Le pr´esent chapitre illustre par quelques exemples la mani`ere dont Maple
vous aide ` a pr´esenter et ` a r´esoudre des probl`emes de calcul diff´erentiel. La
premi`ere section d´ecrit les concepts ´el´ementaires de la d´eriv´ee et de l’in-
t´egrale ; la deuxi`eme traite des ´equations diff´erentielles ordinaires ; enfin,
la troisi`eme section porte sur les ´equations aux d´eriv´ees partielles.
6.1 Calcul diff´erentiel ´el´ementaire
Vous verrez ici plusieurs exemples montrant la mani`ere d’illustrer des
id´ees et de r´esoudre des probl`emes de calcul diff´erentiel. Le package
Student[Calculus1] contient plusieurs commandes qui s’av`erent par-
ticuli`erement utiles dans ce domaine.
La d´eriv´ee
La prsente section illustre la signification graphique de la d´eriv´ee en tant
que pente de la droite tangente, puis montre comment d´eterminer l’en-
semble des points d’inflexion d’une fonction.
D´efinissez la fonction f: x → exp(sin(x)) de la mani`ere suivante.
>
f := x -> exp( sin(x) );
f := x → e
sin(x)
Trouvez la d´eriv´ee de f ´evalu´ee en x
0
= 1.
>
x0 := 1;
209
210 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
x0 := 1
p
0
et p
1
sont deux points situ´es sur le graphique de f.
>
p0 := [ x0, f(x0) ];
p0 := [1, e
sin(1)
]
>
p1 := [ x0+h, f(x0+h) ];
p1 := [1 +h, e
sin(1+h)
]
La commande NewtonQuotient du package Student calcule la pente
de la s´ecante passant par p
0
et p
1
.
>
with(Student[Calculus1]):
Utilisez NewtonQuotient pour trouver une expression pour la pente.
>
m := NewtonQuotient(f(x), x=x0, h=h);
m := −
e
sin(1)
−e
sin(1+h)
h
Si h = 1, la pente est donn´ee par
>
eval( m, h=1 );
e
sin(2)
−e
sin(1)
La commande evalf nous donne une approximation d´ecimale de ce
r´esultat.
>
evalf( % );
0.162800903
Lorsque h tend vers z´ero, les valeurs de la pente de la s´ecante semblent
converger.
>
h_values := seq( NewtonQuotient( f(x), x=1.0, h=1.0/i^2 ),
>
i=1..20);
6.1 Calcul diff´erentiel ´el´ementaire • 211
h_values := 0.1628009030, 1.053234748, 1.174305789,
1.210917616, 1.226806975, 1.235154852, 1.240091510,
1.243256512, 1.245408615, 1.246939100, 1.248066842,
1.248921648, 1.249585493, 1.250111128, 1.250534250,
1.250880512, 1.251167122, 1.251406908, 1.251609743,
1.251782800
Voici l’´equation de la pente de la s´ecante.
>
y - p0[2] = m * ( x - p0[1] );
y −e
sin(1)
=
(e
sin(1+h)
−e
sin(1)
) (x −1)
h
La commande isolate r´ecrit l’´equation sous la forme pente-ordonn´ee
`a l’origine.
>
isolate( %, y );
y =
(e
sin(1+h)
−e
sin(1)
) (x −1)
h
+e
sin(1)
Vous devez faire de cette ´equation une fonction.
>
secant := unapply( rhs(%), x );
secant := x →
(e
sin(1+h)
−e
sin(1)
) (x −1)
h
+e
sin(1)
Vous pouvez maintenant tracer la s´ecante et la fonction elle-mˆeme
sur le mˆeme graphique pour diff´erentes valeurs de h. Tout d’abord, vous
devez cr´eer une suite de graphiques.
>
S := seq( plot( [f(x), secant(x)], x=0..4,
>
view=[0..4, 0..4] ),
>
h=h_values ):
La commande display du package plots peut afficher les graphiques
de la suite sous forme d’animation.
>
with(plots):
Warning, the name changecoords has been redefined
212 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
>
display( S, insequence=true, view=[0..4, 0..4] );
x
x
x x
x
x
x x x x
x
x
x x
x
x
x x x
x
Dans la limite lorsque h tend vers z´ero, la pente est donn´ee par
>
Limit( m, h=0 );
lim
h→0
e
sin(1+h)
−e
sin(1)
h
La valeur de cette limite est
>
value( % );
e
sin(1)
cos(1)
Bien entendu, cette r´eponse est la valeur de f

(x
0
). Pour vous assurer
de ceci, d´efinissez d’abord la fonction f1 comme ´etant la d´eriv´ee premi`ere
de f. Puisque f est une fonction, utilisez D. L’op´erateur D calcule la d´eriv´ee
d’une fonction, alors que diff calcule la d´eriv´ee d’une expression. Pour
en savoir plus, consultez la rubrique ?operators,D.
>
f1 := D(f);
f1 := x → cos(x) e
sin(x)
Maintenant, vous pouvez voir que f1(x
0
) est ´egale ` a la limite ci-
dessus.
>
f1(x0);
e
sin(1)
cos(1)
6.1 Calcul diff´erentiel ´el´ementaire • 213
Dans le cas pr´esent, la d´eriv´ee seconde existe.
>
diff( f(x), x, x );
−sin(x) e
sin(x)
+ cos(x)
2
e
sin(x)
Encore une fois, d´efinissez la fonction f2 comme la d´eriv´ee seconde
de f.
>
f2 := unapply( %, x );
f2 := x → −sin(x) e
sin(x)
+ cos(x)
2
e
sin(x)
Lorsque vous tracez le graphique de f de mˆeme que ses d´eriv´ees
premi`ere et seconde, vous pouvez remarquer que f augmente lorsque f1
est positive, et que la concavit´e de f est tourn´ee vers le bas lorsque f2
est n´egative.
>
plot( [f(x), f1(x), f2(x)], x=0..10 );
–2
–1
0
1
2
2 4 6 8 10
x
Le graphique de f poss`ede un point d’inflexion l` a o` u la d´eriv´ee seconde
change de signe ; ces changements de signe peuvent survenir aux valeurs
de x telles que f2(x) s’annule.
>
sol := { solve( f2(x)=0, x ) };
214 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
sol :=

arctan

¸
¸
2
1
2

5 −
1
2

−2 + 2

5
¸

, −arctan

¸
¸
2
1
2

5 −
1
2

−2 + 2

5
¸

+π,
arctan(−
1
2

1
2

5, −
1
2

−2 −2

5),
arctan(−
1
2

1
2

5,
1
2

−2 −2

5)
¸
Deux de ces solutions sont complexes.
>
evalf( sol );
¦0.6662394321, 2.475353222,
−1.570796327 + 1.061275064 I,
−1.570796327 −1.061275064 I, ¦
Dans cet exemple, seules les solutions r´eelles sont d’int´erˆet. Vous pou-
vez utiliser la commande select pour choisir les constantes r´eelles dans
l’ensemble solution.
>
infl := select( type, sol, realcons );
infl :=

arctan

¸
¸
2
1
2

5 −
1
2

−2 + 2

5
¸

, −arctan

¸
¸
2
1
2

5 −
1
2

−2 + 2

5
¸

>
evalf( infl );
¦0.6662394325, 2.475353222¦
Du graphique trac´e pr´ec´edemment, vous pouvez remarquer que f2
change en effet de signe en ces valeurs de x. L’ensemble des points d’in-
flexion devient donc
>
{ seq( [x, f(x)], x=infl ) };
6.1 Calcul diff´erentiel ´el´ementaire • 215

arctan

¸
¸
2
1
2

5 −
1
2

−2 + 2

5
¸

, e

¸
¸
¸
2
1/2

5−1/2

−2+2

5

1+4
(1/2

5−1/2)
2
−2+2

5
¸

¸
¸
¸
¸
¸
¸
¸
,

−arctan

¸
¸
2
1
2

5 −
1
2

−2 + 2

5
¸

+π, e

¸
¸
¸
2
1/2

5−1/2

−2+2

5

1+4
(1/2

5−1/2)
2
−2+2

5
¸

¸
¸
¸
¸
¸
¸
¸

>
evalf( % );
¦[2.475353222, 1.855276958],
[0.6662394325, 1.855276958]¦
Puisque la fonction f est p´eriodique, elle poss`ede une infinit´e de points
d’inflexion. Vous pouvez les obtenir tous en d´epla¸ cant horizontalement les
deux points d’inflexion ci-dessus par des multiples entiers de 2π.
Une approximation de Taylor
Voyons maintenant comment utiliser Maple pour analyser le terme d’er-
reur d’une approximation par s´erie de Taylor. Voici la formule de Taylor.
>
taylor( f(x), x=a );
f(a) + D(f)(a) (x −a) +
1
2
(D
(2)
)(f)(a) (x −a)
2
+
1
6
(D
(3)
)(f)(a)
(x −a)
3
+
1
24
(D
(4)
)(f)(a) (x −a)
4
+
1
120
(D
(5)
)(f)(a) (x −a)
5
+
O((x −a)
6
)
Vous pouvez utiliser cette formule pour calculer une approximation
polynomiale d’une fonction f pr`es de x = a.
>
f := x -> exp( sin(x) );
f := x → e
sin(x)
>
a := Pi;
216 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
a := π
>
taylor( f(x), x=a );
1 −(x −π) +
1
2
(x −π)
2

1
8
(x −π)
4
+
1
15
(x −π)
5
+
O((x −π)
6
)
Avant de tracer le graphique de l’approximation de Taylor, vous devez
convertir cette s´erie en un polynˆ ome.
>
poly := convert( %, polynom );
poly := 1 −x +π +
1
2
(x −π)
2

1
8
(x −π)
4
+
1
15
(x −π)
5
Tracez maintenant le graphique de f avec celui de poly.
>
plot( [f(x), poly], x=0..10, view=[0..10, 0..3] );
0
0.5
1
1.5
2
2.5
3
2 4 6 8 10
x
L’expression (1/6!)f
(6)
(ξ)(x−a)
6
nous donne l’erreur de l’approxima-
tion, o` u ξ est un nombre compris entre x et a. La d´eriv´ee sixi`eme de f
est
>
diff( f(x), x$6 );
−sin(x) e
sin(x)
+ 16 cos(x)
2
e
sin(x)
−15 sin(x)
2
e
sin(x)
+ 75 sin(x) cos(x)
2
e
sin(x)
−20 cos(x)
4
e
sin(x)
−15 sin(x)
3
e
sin(x)
+ 45 sin(x)
2
cos(x)
2
e
sin(x)
−15 sin(x) cos(x)
4
e
sin(x)
+ cos(x)
6
e
sin(x)
6.1 Calcul diff´erentiel ´el´ementaire • 217
L’usage de l’op´erateur s´equentiel $ dans la commande pr´ec´edente vous
permet de raccourcir l’appel de la fonction. Sans cet op´erateur, vous de-
vriez entrer , x six fois pour calculer la d´eriv´ee d’ordre 6. D´efinissez la
fonction f6 comme ´etant cette d´eriv´ee.
>
f6 := unapply( %, x );
f6 := x → −sin(x) e
sin(x)
+ 16 cos(x)
2
e
sin(x)
−15 sin(x)
2
e
sin(x)
+ 75 sin(x) cos(x)
2
e
sin(x)
−20 cos(x)
4
e
sin(x)
−15 sin(x)
3
e
sin(x)
+ 45 sin(x)
2
cos(x)
2
e
sin(x)
−15 sin(x) cos(x)
4
e
sin(x)
+ cos(x)
6
e
sin(x)
Vous pouvez maintenant calculer l’erreur de l’approximation.
>
err := 1/6! * f6(xi) * (x - a)^6;
err :=
1
720
(−sin(ξ) e
sin(ξ)
+ 16 cos(ξ)
2
e
sin(ξ)
−15 sin(ξ)
2
e
sin(ξ)
+ 75 sin(ξ) cos(ξ)
2
e
sin(ξ)
−20 cos(ξ)
4
e
sin(ξ)
−15 sin(ξ)
3
e
sin(ξ)
+ 45 sin(ξ)
2
cos(ξ)
2
e
sin(ξ)
−15 sin(ξ) cos(ξ)
4
e
sin(ξ)
+ cos(ξ)
6
e
sin(ξ)
)(x −π)
6
Le graphique pr´ec´edent indique que l’erreur (en valeur absolue) est
faible pour x compris entre 2 et 4.
>
plot3d( abs( err ), x=2..4, xi=2..4,
>
style=patch, axes=boxed );
2
4
x
2
4
xi
0
0.16
218 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
Pour d´eterminer l’erreur exacte, vous devez effectuer une analyse
compl`ete de l’expression err dans les deux r´egions ferm´ees par x = 2,
x = 4, ξ = a et ξ = x (soit pour x compris entre 2 et 4 et pour ξ com-
pris entre a et x). La commande curve du package plottools permet
d’illustrer ces deux r´egions.
>
with(plots): with(plottools):
Warning, the name changecoords has been redefined
Warning, the name arrow has been redefined
>
display( curve( [ [2,2], [2,a], [4,a], [4,4], [2,2] ] ),
>
labels=[x, xi] );
2
2.5
3
3.5
4
xi
2 2.5 3 3.5 4
x
Les d´eriv´ees partielles de err vous permettent de d´eterminer les ex-
tr´emums de err `a l’int´erieur de ces deux r´egions. Vous devez alors ´etudier
err aux bords du domaine. Les d´eriv´ees partielles de err sont
>
err_x := diff(err, x);
err_x :=
1
120
(−sin(ξ) e
sin(ξ)
+ 16 cos(ξ)
2
e
sin(ξ)
−15 sin(ξ)
2
e
sin(ξ)
+ 75 sin(ξ) cos(ξ)
2
e
sin(ξ)
−20 cos(ξ)
4
e
sin(ξ)
−15 sin(ξ)
3
e
sin(ξ)
+ 45 sin(ξ)
2
cos(ξ)
2
e
sin(ξ)
−15 sin(ξ) cos(ξ)
4
e
sin(ξ)
+ cos(ξ)
6
e
sin(ξ)
)(x −π)
5
>
err_xi := diff(err, xi);
6.1 Calcul diff´erentiel ´el´ementaire • 219
err_xi :=
1
720
(−cos(ξ) e
sin(ξ)
−63 sin(ξ) cos(ξ) e
sin(ξ)
+ 91 cos(ξ)
3
e
sin(ξ)
−210 sin(ξ)
2
cos(ξ) e
sin(ξ)
+ 245 sin(ξ) cos(ξ)
3
e
sin(ξ)
−35 cos(ξ)
5
e
sin(ξ)
−105 sin(ξ)
3
cos(ξ) e
sin(ξ)
+ 105 sin(ξ)
2
cos(ξ)
3
e
sin(ξ)
−21 sin(ξ) cos(ξ)
5
e
sin(ξ)
+ cos(ξ)
7
e
sin(ξ)
)(x −π)
6
Les deux d´eriv´ees partielles sont nulles au point critique.
>
sol := solve( {err_x=0, err_xi=0}, {x, xi} );
sol := ¦x = π, ξ = ξ¦
L’erreur est ´egalement nulle en ce point.
>
eval( err, sol );
0
Vous devez maintenant regrouper un ensemble de valeurs critiques.
La plus grande valeur critique borne l’erreur maximale.
>
critical := { % };
critical := ¦0¦
La d´eriv´ee partielle err_xi est nulle en un point critique situ´e sur
l’une des deux fronti`eres x = 2 ou x = 4.
>
sol := { solve( err_xi=0, xi ) };
220 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
sol := ¦
1
2
π, arctan(RootOf(%1, index = 4),
RootOf(_Z
2
+ RootOf(%1, index = 4)
2
−1)), arctan(
RootOf(%1, index = 1),
RootOf(_Z
2
+ RootOf(%1, index = 1)
2
−1)), arctan(
RootOf(%1, index = 5),
RootOf(_Z
2
+ RootOf(%1, index = 5)
2
−1)), arctan(
RootOf(%1, index = 2),
RootOf(_Z
2
+ RootOf(%1, index = 2)
2
−1)), arctan(
RootOf(%1, index = 6),
RootOf(_Z
2
+ RootOf(%1, index = 6)
2
−1)), arctan(
RootOf(%1, index = 3),
RootOf(_Z
2
+ RootOf(%1, index = 3)
2
−1))¦
%1 := −56 −161 _Z + 129 _Z
2
+ 308 _Z
3
+ 137 _Z
4
+ 21 _Z
5
+ _Z
6
>
evalf(sol);
¦−1.570796327 + 0.8535664710 I, 1.570796327,
−0.3257026605, −1.570796327 + 2.473801030 I,
0.6948635283, −1.570796327 + 1.767486929 I,
−1.570796327 + 3.083849212 I¦
Il est recommand´e de v´erifier l’ensemble solution en tra¸ cant le gra-
phique de la solution.
>
plot( eval(err_xi, x=2), xi=2..4 );
–0.2
0
0.2
0.4
0.6
2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 4
xi
6.1 Calcul diff´erentiel ´el´ementaire • 221
Deux solutions de err_xi=0 semblent exister entre 2 et 4 l` a o` u solve
n’en a trouv´e aucune : π/2 est inf´erieur ` a 2. Vous devez donc utiliser des
m´ethodes num´eriques. Si x = 2, alors ξ doit ˆetre situ´e dans l’intervalle
situ´e entre 2 et a.
>
sol := fsolve( eval(err_xi, x=2), xi, 2..a );
sol := 2.446729125
En ce point, l’erreur est
>
eval( err, {x=2, xi=sol});
0.07333000221 (2 −π)
6
Ajoutez maintenant cette valeur ` a l’ensemble des valeurs critiques.
>
critical := critical union {%};
critical := ¦0, 0.07333000221 (2 −π)
6
¦
Si x = 4, alors ξ doit ˆetre situ´e entre a et 4.
>
sol := fsolve( eval(err_xi, x=4), xi, a..4 );
sol := 3.467295314
En ce point, l’erreur est
>
eval( err, {x=4, xi=sol} );
−0.01542298119 (4 −π)
6
>
critical := critical union {%};
critical :=
¦0, 0.07333000221 (2 −π)
6
, −0.01542298119 (4 −π)
6
¦
`
A la fronti`ere ξ = a, l’erreur est
>
B := eval( err, xi=a );
222 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
B := −
1
240
(x −π)
6
La d´eriv´ee B1 de B est nulle en un point critique.
>
B1 := diff( B, x );
B1 := −
1
40
(x −π)
5
>
sol := { solve( B1=0, x ) };
sol := ¦π¦
En ce point critique, l’erreur est
>
eval( B, x=sol[1] );
0
>
critical := critical union { % };
critical :=
¦0, 0.07333000221 (2 −π)
6
, −0.01542298119 (4 −π)
6
¦
`
A la derni`ere fronti`ere, ξ = x, l’erreur est
>
B := eval( err, xi=x );
B :=
1
720
(−sin(x) e
sin(x)
+ 16 cos(x)
2
e
sin(x)
−15 sin(x)
2
e
sin(x)
+ 75 sin(x) cos(x)
2
e
sin(x)
−20 cos(x)
4
e
sin(x)
−15 sin(x)
3
e
sin(x)
+ 45 sin(x)
2
cos(x)
2
e
sin(x)
−15 sin(x) cos(x)
4
e
sin(x)
+ cos(x)
6
e
sin(x)
)(x −π)
6
Encore une fois, vous devez trouver le point o` u la d´eriv´ee s’annule.
>
B1 := diff( B, x );
6.1 Calcul diff´erentiel ´el´ementaire • 223
B1 :=
1
720
(−cos(x) e
sin(x)
−63 sin(x) cos(x) e
sin(x)
+ 91 cos(x)
3
e
sin(x)
−210 sin(x)
2
cos(x) e
sin(x)
+ 245 sin(x) cos(x)
3
e
sin(x)
−35 cos(x)
5
e
sin(x)
−105 sin(x)
3
cos(x) e
sin(x)
+ 105 sin(x)
2
cos(x)
3
e
sin(x)
−21 sin(x) cos(x)
5
e
sin(x)
+ cos(x)
7
e
sin(x)
)(x −π)
6
+
1
120
(
−sin(x) e
sin(x)
+ 16 cos(x)
2
e
sin(x)
−15 sin(x)
2
e
sin(x)
+ 75 sin(x) cos(x)
2
e
sin(x)
−20 cos(x)
4
e
sin(x)
−15 sin(x)
3
e
sin(x)
+ 45 sin(x)
2
cos(x)
2
e
sin(x)
−15 sin(x) cos(x)
4
e
sin(x)
+ cos(x)
6
e
sin(x)
)(x −π)
5
>
sol := { solve( B1=0, x ) };
sol := ¦π¦
Il est bon de v´erifier la solution en tra¸ cant le graphique.
>
plot( B1, x=2..4 );
0
0.2
0.4
0.6
0.8
2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 4
x
Le graphique de B1 indique qu’une solution existe entre 2.1 et 2.3.
Puisque solve ne peut trouver cette solution, vous devez ` a nouveau re-
courir aux m´ethodes num´eriques.
>
fsolve( B1=0, x, 2.1..2.3 );
2.180293062
Ajoutez cette solution num´erique ` a l’ensemble des solutions symbo-
liques.
224 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
>
sol := sol union { % };
sol := ¦2.180293062, π¦
L’ensemble suivant contient les erreurs extrˆemes ` a la fronti`ere ξ = x.
>
{ seq( B, x=sol ) };
¦0, 0.04005698601 (2.180293062 −π)
6
¦
Agrandissez maintenant l’ensemble des grandes erreurs.
>
critical := critical union %;
critical := ¦0, −0.01542298119 (4 −π)
6
,
0.04005698601 (2.180293062 −π)
6
,
0.07333000221 (2 −π)
6
¦
Enfin, vous devez ajouter l’erreur aux quatre coins de l’ensemble des
valeurs critiques.
>
critical := critical union
>
{ eval( err, {xi=2, x=2} ),
>
eval( err, {xi=2, x=4} ),
>
eval( err, {xi=4, x=2} ),
>
eval( err, {xi=4, x=4} ) };
6.1 Calcul diff´erentiel ´el´ementaire • 225
critical := ¦0, −0.01542298119 (4 −π)
6
,
0.04005698601 (2.180293062 −π)
6
,
0.07333000221 (2 −π)
6
,
1
720
(−sin(2) e
sin(2)
+ 16 cos(2)
2
e
sin(2)
−15 sin(2)
2
e
sin(2)
+ 75 sin(2) cos(2)
2
e
sin(2)
−20 cos(2)
4
e
sin(2)
−15 sin(2)
3
e
sin(2)
+ 45 sin(2)
2
cos(2)
2
e
sin(2)
−15 sin(2) cos(2)
4
e
sin(2)
+ cos(2)
6
e
sin(2)
)(2 −π)
6
,
1
720
(−sin(2) e
sin(2)
+ 16 cos(2)
2
e
sin(2)
−15 sin(2)
2
e
sin(2)
+ 75 sin(2) cos(2)
2
e
sin(2)
−20 cos(2)
4
e
sin(2)
−15 sin(2)
3
e
sin(2)
+ 45 sin(2)
2
cos(2)
2
e
sin(2)
−15 sin(2) cos(2)
4
e
sin(2)
+ cos(2)
6
e
sin(2)
)(4 −π)
6
,
1
720
(−sin(4) e
sin(4)
+ 16 cos(4)
2
e
sin(4)
−15 sin(4)
2
e
sin(4)
+ 75 sin(4) cos(4)
2
e
sin(4)
−20 cos(4)
4
e
sin(4)
−15 sin(4)
3
e
sin(4)
+ 45 sin(4)
2
cos(4)
2
e
sin(4)
−15 sin(4) cos(4)
4
e
sin(4)
+ cos(4)
6
e
sin(4)
)(2 −π)
6
,
1
720
(−sin(4) e
sin(4)
+ 16 cos(4)
2
e
sin(4)
−15 sin(4)
2
e
sin(4)
+ 75 sin(4) cos(4)
2
e
sin(4)
−20 cos(4)
4
e
sin(4)
−15 sin(4)
3
e
sin(4)
+ 45 sin(4)
2
cos(4)
2
e
sin(4)
−15 sin(4) cos(4)
4
e
sin(4)
+ cos(4)
6
e
sin(4)
)(4 −π)
6
¦
Vous devez maintenant d´eterminer le maximum en valeur absolue des
´el´ements de critical. Tout d’abord, appliquez la commande abs aux
´el´ements de critical.
>
map( abs, critical );
226 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
¦0, 0.04005698601 (2.180293062 −π)
6
,
0.07333000221 (2 −π)
6
, 0.01542298119 (4 −π)
6
, −
1
720
(
−sin(2) e
sin(2)
+ 16 cos(2)
2
e
sin(2)
−15 sin(2)
2
e
sin(2)
+ 75 sin(2) cos(2)
2
e
sin(2)
−20 cos(2)
4
e
sin(2)
−15 sin(2)
3
e
sin(2)
+ 45 sin(2)
2
cos(2)
2
e
sin(2)
−15 sin(2) cos(2)
4
e
sin(2)
+ cos(2)
6
e
sin(2)
)(2 −π)
6
, −
1
720
(−sin(2) e
sin(2)
+ 16 cos(2)
2
e
sin(2)
−15 sin(2)
2
e
sin(2)
+ 75 sin(2) cos(2)
2
e
sin(2)
−20 cos(2)
4
e
sin(2)
−15 sin(2)
3
e
sin(2)
+ 45 sin(2)
2
cos(2)
2
e
sin(2)
−15 sin(2) cos(2)
4
e
sin(2)
+ cos(2)
6
e
sin(2)
)(4 −π)
6
, −
1
720
(−sin(4) e
sin(4)
+ 16 cos(4)
2
e
sin(4)
−15 sin(4)
2
e
sin(4)
+ 75 sin(4) cos(4)
2
e
sin(4)
−20 cos(4)
4
e
sin(4)
−15 sin(4)
3
e
sin(4)
+ 45 sin(4)
2
cos(4)
2
e
sin(4)
−15 sin(4) cos(4)
4
e
sin(4)
+ cos(4)
6
e
sin(4)
)(2 −π)
6
, −
1
720
(−sin(4) e
sin(4)
+ 16 cos(4)
2
e
sin(4)
−15 sin(4)
2
e
sin(4)
+ 75 sin(4) cos(4)
2
e
sin(4)
−20 cos(4)
4
e
sin(4)
−15 sin(4)
3
e
sin(4)
+ 45 sin(4)
2
cos(4)
2
e
sin(4)
−15 sin(4) cos(4)
4
e
sin(4)
+ cos(4)
6
e
sin(4)
)(4 −π)
6
¦
Trouvez ensuite l’´el´ement maximal. La commande max requiert une
suite de nombres ; vous devez donc utiliser la commande op pour trans-
former l’ensemble des valeurs en une suite.
>
max_error := max( op(%) );
max_error := 0.07333000221 (2 −π)
6
Ce nombre est approximativement
>
evalf( max_error );
0.1623112756
6.1 Calcul diff´erentiel ´el´ementaire • 227
Vous pouvez maintenant tracer f, son approximation de Taylor et une
paire de courbes indiquant la bande d’erreur.
>
plot( [ f(x), poly, f(x)+max_error, f(x)-max_error ],
>
x=2..4,
>
color=[ red, blue, brown, brown ] );
0.5
1
1.5
2
2.5
2 2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 4
x
Ce graphique montre que l’erreur r´eelle demeure bien en-d´e¸c` a de l’es-
timation de l’erreur.
L’int´egrale
L’int´egrale d’une fonction peut ˆetre consid´er´ee comme une mesure de l’aire
comprise entre l’axe des x et la courbe de cette fonction. La d´efinition
de l’int´egrale de Riemann repose sur cette interpr´etation graphique de
l’int´egrale.
>
f := x -> 1/2 + sin(x);
f := x →
1
2
+ sin(x)
Par exemple, la commande ApproximateInt que l’on trouve dans
le package Student[Calculus1] avec pour param`etres method = left,
partition = 6 et output = plot dessine le graphique de f avec 6 boˆıtes.
La hauteur de chaque boˆıte est la valeur de f ´evalu´ee sur le coin gauche
de chacune d’entre elles.
>
with(Student[Calculus1]):
>
ApproximateInt( f(x), x=0..10, method=left, partition=6,
>
output=plot);
228 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
f(x)

An Approximation of the Integral of
f(x) = 1/2+sin(x)
on the Interval [0, 10]
Using a Left-endpoint Riemann Sum
Approximate Value: 6.839071529
Area: 6.845601763
–1
–0.5
0.5
1
1.5
2 4 6 8 10
x
Changez output = plot pour output = sum pour calculer l’aire des
boˆıtes.
>
ApproximateInt( f(x), x=0..10, method=left, partition=6,
>
output=sum);
5
3

5
¸
i=0
(
1
2
+ sin(
5
3
i))

Ce nombre est approximativement
>
evalf( % );
6.845601766
L’approximation de l’aire s’am´eliore ` a mesure que plus de boˆıtes sont
utilis´ees. Augmentez le nombre de boˆıtes jusqu’` a 12 et calculez la valeur
de ApproximateInt pour chacune de ces boˆıtes.
>
seq( evalf(ApproximateInt( f(x), x=0..10, method=left,
>
partition=n^2)), n=3..14);
6.948089404, 6.948819107, 6.923289158, 6.902789479,
6.888196447, 6.877830054, 6.870316620, 6.864739771,
6.860504866, 6.857222010, 6.854630209, 6.852550665
Utilisez l’option output = animation pour cr´eer une animation de la
somme de Riemann.
6.1 Calcul diff´erentiel ´el´ementaire • 229
>
ApproximateInt( f(x), x=0..4*Pi, method=left, partition=6,
>
output=animation, iterations=7);
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185309
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185308
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185308
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185311
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185308
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185309
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
f(x)

AnApproximationoftheIntegralof
f(x)=1/2+sin(x)
ontheInterval[0,4*Pi]
UsingaLeft-endpointRiemannSum
ApproximateValue:6.283185307
Area:6.283185309
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10 12
x
Dans la limite, ` a mesure que le nombre de boˆıtes augmente, le r´esultat
se rapproche de l’int´egrale d´efinie.
>
Int( f(x), x=0..10 );

10
0
1
2
+ sin(x) dx
La valeur de l’int´egrale est
>
value( % );
6 −cos(10)
en nombres d´ecimaux, cette valeur est approximativement
>
evalf( % );
6.839071529
L’int´egrale ind´efinie de f est
>
Int( f(x), x );

1
2
+ sin(x) dx
230 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
>
value( % );
1
2
x −cos(x)
D´efinissez la fonction F comme ´etant l’inverse de la d´eriv´ee.
>
F := unapply( %, x );
F := x →
1
2
x −cos(x)
Choisissez la constante d’int´egration de telle sorte que F(0) = 0.
>
F(x) - F(0);
1
2
x −cos(x) + 1
>
F := unapply( %, x );
F := x →
1
2
x −cos(x) + 1
Lorsque vous tracez le graphique de F et les boˆıtes ensemble, vous
pouvez remarquer que F augmente davantage lorsque sa boˆıte correspon-
dante est plus grande.
>
with(plots):
>
display( [ plot( F(x), x=0..10, color=blue, legend="F(x)" ),
>
ApproximateInt( f(x), x=0..10, partition=14,
>
method=left, output=plot) ] );
F(x)
f(x)

An Approximation of the Integral of
f(x) = 1/2+sin(x)
on the Interval [0, 10]
Using a Left-endpoint Riemann Sum
Approximate Value: 6.839071529
Area: 6.954499888
–1
–0.5
0
0.5
1
1.5
2 4 6 8 10
x
6.1 Calcul diff´erentiel ´el´ementaire • 231
En sp´ecifiant method = right ou method = midpoint lorsque vous
utilisez la commande ApproximateInt, vous pouvez dessiner et addition-
ner des boˆıtes ´evalu´ees en leur coin droit ou en leur point milieu.
D´eriv´ees partielles mixtes
Cette section d´ecrit l’op´erateur diff´erentiel D et donne un exemple d’une
fonction dont les d´eriv´ees partielles mixtes sont diff´erentes.
Consid´erez la fonction suivante.
>
f := (x,y) -> x * y * (x^2-y^2) / (x^2+y^2);
f := (x, y) →
xy (x
2
−y
2
)
x
2
+y
2
La fonction f n’est pas d´efinie ` a l’origine.
>
f(0,0);
Error, (in f) numeric exception: division by zero
En (x, y) = (r cos(θ), r sin(θ)), la valeur de la fonction est
>
f( r*cos(theta), r*sin(theta) );
r
2
cos(θ) sin(θ) (r
2
cos(θ)
2
−r
2
sin(θ)
2
)
r
2
cos(θ)
2
+r
2
sin(θ)
2
La valeur de f tend vers z´ero lorsque r tend vers z´ero.
>
Limit( %, r=0 );
lim
r→0
r
2
cos(θ) sin(θ) (r
2
cos(θ)
2
−r
2
sin(θ)
2
)
r
2
cos(θ)
2
+r
2
sin(θ)
2
>
value( % );
0
Ainsi, vous pouvez prolonger f par continuit´e `a l’origine en la
d´efinissant ´egale ` a z´ero en ce point.
>
f(0.,0.) := 0;
232 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
f(0., 0.) := 0
L’affectation pr´ec´edente ajoute une entr´ee dans la table de rappels
(en anglais remember table) de Maple. Voici le graphique de f.
>
plot3d( f, -3..3, -3..3 );
La d´eriv´ee partielle de f par rapport ` a son premier param`etre, x, est
>
fx := D[1](f);
fx := (x, y) →
y (x
2
−y
2
)
x
2
+y
2
+ 2
x
2
y
x
2
+y
2
−2
x
2
y (x
2
−y
2
)
(x
2
+y
2
)
2
Cette formule n’est cependant pas valide ` a l’origine.
>
fx(0,0);
Error, (in fx) division by zero
Vous devez donc utiliser la d´efinition de la d´eriv´ee exprim´ee sous forme
d’une limite.
>
fx(0,0) := limit( ( f(h,0) - f(0,0) )/h, h=0 );
fx(0, 0) := 0
En (x, y) = (r cos(θ), r sin(θ)), la valeur de fx est
>
fx( r*cos(theta), r*sin(theta) );
6.1 Calcul diff´erentiel ´el´ementaire • 233
r sin(θ) (r
2
cos(θ)
2
−r
2
sin(θ)
2
)
r
2
cos(θ)
2
+r
2
sin(θ)
2
+ 2
r
3
cos(θ)
2
sin(θ)
r
2
cos(θ)
2
+r
2
sin(θ)
2
−2
r
3
cos(θ)
2
sin(θ) (r
2
cos(θ)
2
−r
2
sin(θ)
2
)
(r
2
cos(θ)
2
+r
2
sin(θ)
2
)
2
>
combine( % );
3
4
r sin(3 θ) −
1
4
r sin(5 θ)
Lorsque la distance r entre (x, y) et (0, 0) tend vers z´ero, [f
x
(x, y) −
f
x
(0, 0)[ tend ´egalement vers z´ero.
>
Limit( abs( % - fx(0,0) ), r=0 );
lim
r→0

3
4
r sin(3 θ) −
1
4
r sin(5 θ)

>
value( % );
0
Ainsi, f
x
est continue en (0, 0).
Sym´etriquement, les mˆemes arguments s’appliquent ` a la d´eriv´ee de f
par rapport ` a son second param`etre, y.
>
fy := D[2](f);
fy := (x, y) →
x(x
2
−y
2
)
x
2
+y
2
−2
xy
2
x
2
+y
2
−2
xy
2
(x
2
−y
2
)
(x
2
+y
2
)
2
>
fy(0,0) := limit( ( f(0,k) - f(0,0) )/k, k=0 );
fy(0, 0) := 0
Voici la d´eriv´ee seconde mixte de f.
>
fxy := D[1,2](f);
234 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
fxy := (x, y) →
x
2
−y
2
x
2
+y
2
+ 2
x
2
x
2
+y
2
−2
x
2
(x
2
−y
2
)
(x
2
+y
2
)
2
−2
y
2
x
2
+y
2
−2
y
2
(x
2
−y
2
)
(x
2
+y
2
)
2
+ 8
x
2
y
2
(x
2
−y
2
)
(x
2
+y
2
)
3
Encore une fois, cette formule n’est pas valide ` a l’origine.
>
fxy(0,0);
Error, (in fxy) numeric exception: division by zero
La d´efinition de la d´eriv´ee sous forme de limite est
>
Limit( ( fx(0,k) - fx(0,0) )/k, k=0 );
lim
k→0
−1
>
fxy(0,0) := value( % );
fxy(0, 0) := −1
L’autre d´eriv´ee seconde mixte est
>
fyx := D[2,1](f);
fyx := (x, y) →
x
2
−y
2
x
2
+y
2
+ 2
x
2
x
2
+y
2
−2
x
2
(x
2
−y
2
)
(x
2
+y
2
)
2
−2
y
2
x
2
+y
2
−2
y
2
(x
2
−y
2
)
(x
2
+y
2
)
2
+ 8
x
2
y
2
(x
2
−y
2
)
(x
2
+y
2
)
3
`
A l’origine, vous devez utiliser la d´efinition de la d´eriv´ee sous forme
de limite.
>
Limit( ( fy(h, 0) - fy(0,0) )/h, h=0 );
lim
h→0
1
>
fyx(0,0) := value( % );
fyx(0, 0) := 1
6.2
´
Equations diff´erentielles ordinaires • 235
Remarquez que les deux d´eriv´ees partielles mixtes sont diff´erentes ` a
l’origine.
>
fxy(0,0) <> fyx(0,0);
−1 = 1
>
evalb( % );
true
Les d´eriv´ees partielles mixtes sont ´egales seulement si elles sont conti-
nues. En tra¸ cant le graphique de fxy, on peut remarquer que cette fonc-
tion n’est pas continue en (0, 0).
>
plot3d( fxy, -3..3, -3..3 );
Maple peut vous aider ` a r´esoudre plusieurs autres probl`emes de calcul
diff´erentiel ´el´ementaire. La rubrique ?Student[Calculus1] est une bonne
source de r´ef´erence.
6.2
´
Equations diff´erentielles ordinaires
Maple dispose de toute une gamme d’outils permettant de r´esoudre, de
manipuler et de tracer le graphique d’´equations diff´erentielles ordinaires
et de syst`emes d’´equations diff´erentielles.
236 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
La commande dsolve
La commande la plus utilis´ee pour ´etudier le comportement des ´equations
diff´erentielles ordinaires (EDO) dans Maple est dsolve. Vous pouvez uti-
liser cet outil polyvalent pour obtenir ` a la fois des solutions exactes et des
solutions num´eriques pour un grand nombre d’EDO. La syntaxe de base
de dsolve est la suivante.
dsolve(eqns, vars)
Ici, eqns repr´esente un ensemble d’´equations diff´erentielles et de valeurs
initiales, et vars repr´esente l’ensemble de variables pour lesquelles on sou-
haite r´esoudre.
Voici une ´equation diff´erentielle et une condition initiale.
>
eq := diff(v(t),t)+2*t = 0;
eq := (
d
dt
v(t)) + 2 t = 0
>
ini := v(1) = 5;
ini := v(1) = 5
Utilisez dsolve pour obtenir la solution.
>
dsolve( {eq, ini}, {v(t)} );
v(t) = −t
2
+ 6
Si vous omettez une ou plusieurs des conditions initiales, dsolve re-
tourne des constantes arbitraires de la forme _Cnumber. _Cnumber.
>
eq := diff(y(x),x$2) - y(x) = 1;
eq := (
d
2
dx
2
y(x)) −y(x) = 1
>
dsolve( {eq}, {y(x)} );
¦y(x) = e
x
_C2 +e
(−x)
_C1 −1¦
6.2
´
Equations diff´erentielles ordinaires • 237
Pour sp´ecifier des conditions initiales pour la d´eriv´ee d’une fonction,
utilisez la notation suivante.
D(fcn)(var_valeur) = valeur
(D@@n)(fcn)(var_valeur) = valeur
La notation D correspond ` a la d´eriv´ee. La notation D@@n repr´esente la
d´eriv´ee d’ordre n. Voici une ´equation diff´erentielle et des conditions ini-
tiales requ´erant la d´eriv´ee.
>
de1 := diff(y(t),t$2) + 5*diff(y(t),t) + 6*y(t) = 0;
de1 := (
d
2
dt
2
y(t)) + 5 (
d
dt
y(t)) + 6 y(t) = 0
>
ini := y(0)=0, D(y)(0)=1;
ini := y(0) = 0, D(y)(0) = 1
Encore une fois, utilisez dsolve pour trouver la solution.
>
dsolve( {de1, ini}, {y(t)} );
y(t) = e
(−2 t)
−e
(−3 t)
De plus, dsolve peut retourner une solution sous forme param´etrique,
[x=f(_T), y(x)=g(_T)], o` u _T est un param`etre.
L’option explicit Maple peut retourner la solution d’une ´equation
diff´erentielle sous forme implicite.
>
de2 := diff(y(x),x$2) = (ln(y(x))+1)*diff(y(x),x);
de2 :=
d
2
dx
2
y(x) = (ln(y(x)) + 1) (
d
dx
y(x))
>
dsolve( {de2}, {y(x)} );
238 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
¦y(x) = _C1¦,

y(x)
1
_a ln(_a) + _C1
d_a −x −_C2 = 0
¸
Utilisez l’option explicit pour indiquer ` a Maple de chercher une
solution explicite du premier r´esultat.
>
dsolve( {de2}, {y(x)}, explicit );
¦y(x) = _C1¦,

y(x) = RootOf

_Z
1
_f ln(_f ) + _C1
d_f +x + _C2

Cependant, dans certains cas, Maple peut ne pas ˆetre en mesure de
trouver une solution explicite.
Il existe ´egalement une option implicit pour forcer Maple ` a donner
ses r´esultats sous forme implicite.
L’option method=laplace Il est souvent possible de r´eduire la com-
plexit´e d’un probl`eme en utilisant les transform´ees de Laplace. Les trans-
form´ees font correspondre ` a une ´equation diff´erentielle une ´equation alg´e-
brique, beaucoup plus simple ` a r´esoudre. La difficult´e de cette m´ethode
r´eside dans la transformation des ´equations au nouveau domaine et par-
ticuli`erement la transformation des solutions sous leur ancienne forme.
La m´ethode des transform´ees de Laplace peut g´erer des EDO lin´eaires
d’ordre arbitraire, de mˆeme que certains cas d’EDO lin´eaires ` a coefficients
non constants, ` a supposer que Maple puisse trouver les transform´ees.
Cette m´ethode fonctionne ´egalement avec les syst`emes d’´equations cou-
pl´ees.
Consid´erons le probl`eme de dynamique classique suivant. Deux poids
de masses m et αm reposent sur un plan sans frottement et sont reli´es par
un ressort dont la constante de rappel est k. Quelles sont les trajectoires
de chaque poids si le premier est sujet ` a une force ponctuelle unitaire u(t)
en t = 1 ?
D´efinissons tout d’abord les ´equations diff´erentielles qui s’appliquent
au probl`eme. La deuxi`eme loi de Newton gouverne le mouvement du pre-
mier poids : la masse m multipli´ee par l’acc´el´eration doit ˆetre ´egale ` a
la somme des forces appliqu´ees sur le premier poids, incluant la force
ext´erieure u(t).
6.2
´
Equations diff´erentielles ordinaires • 239
>
eqn1 :=
>
alpha*m*diff(x[1](t),t$2) = k*(x[2](t) - x[1](t)) + u(t);
eqn1 := αm(
d
2
dt
2
x
1
(t)) = k (x
2
(t) −x
1
(t)) + u(t)
Il en va de mˆeme pour le second poids.
>
eqn2 := m*diff(x[2](t),t$2) = k*(x[1](t) - x[2](t));
eqn2 := m(
d
2
dt
2
x
2
(t)) = k (x
1
(t) −x
2
(t))
Appliquez une force ponctuelle unitaire au premier poids en t = 1.
>
u := t -> Heaviside(t-1);
u := t → Heaviside(t −1)
Au temps t = 0, les deux masses sont au repos ` a leurs emplacements
respectifs.
>
ini := x[1](0) = 2, D(x[1])(0) = 0,
>
x[2](0) = 0, D(x[2])(0) = 0 ;
ini := x
1
(0) = 2, D(x
1
)(0) = 0, x
2
(0) = 0, D(x
2
)(0) = 0
R´esolvez le probl`eme en utilisant la m´ethode de la transform´ee de
Laplace.
>
dsolve( {eqn1, eqn2, ini}, {x[1](t), x[2](t)},
>
method=laplace );
240 • Chapitre 6: Exemples tir´es du calcul diff´erentiel

x
2
(t) =
1
2
(t
2
k α +αk −2 t k α −2 αm
+ 2 αcosh(

%1 (t −1)
αm
) m+t
2
k +k −2 t k)
Heaviside(t −1)

((1 + 2 α +α
2
) k m)
−2
α(−1 + cosh(

%1 t
αm
))
1 +α
, x
1
(t) =

Heaviside(t −1) cosh(

%1 (t −1)
αm
)
k (1 +α)
2
−2
αcosh(

%1 t
αm
)
1 +α
+e
(−

%1 t
αm
)
+e
(

%1 t
αm
)
+ (
1
2
k Heaviside(t −1) (1 +α) t
2
−k Heaviside(t −1) (1 +α) t + 2 α
2
mk
+ Heaviside(t −1) m+
1
2
Heaviside(t −1) αk
+ 2 αmk +
1
2
Heaviside(t −1) k)

((1 +α)
2
k m)
¸
%1 := −αmk (1 +α)
´
Evaluez le r´esultat en fixant des valeurs pour les constantes.
>
ans := eval( %, {alpha=1/10, m=1, k=1} );
6.2
´
Equations diff´erentielles ordinaires • 241
ans := ¦x
2
(t) =
50
121
(
11
10
t
2
+
9
10

11
5
t +
1
5
cosh(
1
10

−11

100 (t −1)))
Heaviside(t −1) +
2
11

2
11
cosh(
1
10

−11

100 t), x
1
(t)
= −
100
121
Heaviside(t −1) cosh(
1
10

−11

100 (t −1))

2
11
cosh(
1
10

−11

100 t) +e
(−1/10

−11

100 t)
+e
(1/10

−11

100 t)
+
5
11
Heaviside(t −1) t
2

10
11
Heaviside(t −1) t +
2
11
+
155
121
Heaviside(t −1)¦
Vous pouvez transformer la solution pr´ec´edente en deux fonctions,
y
1
(t) et y
2
(t), de la mani`ere suivante. Tout d’abord, ´evaluez l’expression
x[1](t) en sa solution pour extraire l’expression x
1
(t).
>
eval( x[1](t), ans );

100
121
Heaviside(t −1) cosh(
1
10

−11

100 (t −1))

2
11
cosh(
1
10

−11

100 t) +e
(−1/10

−11

100 t)
+e
(1/10

−11

100 t)
+
5
11
Heaviside(t −1) t
2

10
11
Heaviside(t −1) t +
2
11
+
155
121
Heaviside(t −1)
Transformez ensuite l’expression en fonction au moyen d’unapply.
>
y[1] := unapply( %, t );
y
1
:= t →

100
121
Heaviside(t −1) cosh(
1
10

−11

100 (t −1))

2
11
cosh(
1
10

−11

100 t) +e
(−1/10

−11

100 t)
+e
(1/10

−11

100 t)
+
5
11
Heaviside(t −1) t
2

10
11
Heaviside(t −1) t +
2
11
+
155
121
Heaviside(t −1)
242 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
Vous pouvez ´egalement effectuer les deux ´etapes en mˆeme temps.
>
y[2] := unapply( eval( x[2](t), ans ), t );
y
2
:= t →
50
121
(
11
10
t
2
+
9
10

11
5
t +
1
5
cosh(
1
10

−11

100 (t −1)))
Heaviside(t −1) +
2
11

2
11
cosh(
1
10

−11

100 t)
Tracez maintenant les deux fonctions.
>
plot( [ y[1](t), y[2](t) ], t=-3..6 );
2
4
6
8
10
12
14
–2 2 4 6
t
Plutˆ ot que d’appliquer dsolve(..., method=laplace), vous pouvez
utiliser la transform´ee de Laplace ` a la main. Le package inttrans d´efinit
la transform´ee de Laplace et son inverse (de mˆeme que plusieurs autres
transform´ees int´egrales).
>
with(inttrans);
[addtable, fourier, fouriercos, fouriersin, hankel , hilbert,
invfourier, invhilbert, invlaplace, invmellin, laplace,
mellin, savetable]
Les transform´ees de Laplace des ´equations diff´erentielles eqn1 et eqn2
sont :
>
laplace( eqn1, t, s );
αm(s (s laplace(x
1
(t), t, s) −x
1
(0)) −D(x
1
)(0)) =
k (laplace(x
2
(t), t, s) −laplace(x
1
(t), t, s)) +
e
(−s)
s
6.2
´
Equations diff´erentielles ordinaires • 243
et
>
laplace( eqn2, t, s );
m(s (s laplace(x
2
(t), t, s) −x
2
(0)) −D(x
2
)(0)) =
k (laplace(x
1
(t), t, s) −laplace(x
2
(t), t, s))
´
Evaluez l’ensemble form´e des deux transform´ees en leurs conditions
initiales.
>
eval( {%, %%}, {ini} );
¦ms
2
laplace(x
2
(t), t, s) =
k (laplace(x
1
(t), t, s) −laplace(x
2
(t), t, s)),
αms (s laplace(x
1
(t), t, s) −2) =
k (laplace(x
2
(t), t, s) −laplace(x
1
(t), t, s)) +
e
(−s)
s
¦
Vous devez maintenant r´esoudre cet ensemble d’´equations alg´ebriques
pour les transform´ees de Laplace des deux fonctions x
1
(t) et x
2
(t).
>
sol := solve( %, { laplace(x[1](t),t,s),
>
laplace(x[2](t),t,s) } );
sol := ¦laplace(x
2
(t), t, s) =
k (2 αms
2
e
s
+ 1)
e
s
s
3
m(k +αms
2
+αk)
,
laplace(x
1
(t), t, s) =
(ms
2
+k) (2 αms
2
e
s
+ 1)
e
s
s
3
m(k +αms
2
+αk)
¦
Maple a r´esolu le probl`eme alg´ebrique ; vous devez maintenant prendre
la transform´ee inverse de Laplace pour en extraire les fonctions x
1
(t) et
x
2
(t) .
>
invlaplace( %, s, t );
244 • Chapitre 6: Exemples tir´es du calcul diff´erentiel

x
2
(t) = k

1
2
(t
2
k α +αk −2 t k α −2 αm
+ 2 αcosh(

%1 (t −1)
αm
) m+t
2
k +k −2 t k)
Heaviside(t −1)

((1 +α)
2
k
2
)
−2
αm(−1 + cosh(

%1 t
αm
))
k (1 +α)

/m, x
1
(t) =

Heaviside(t −1) cosh(

%1 (t −1)
αm
)
k (1 +α)
2
−2
αcosh(

%1 t
αm
)
1 +α
+e
(−

%1 t
αm
)
+e
(

%1 t
αm
)
+ (
1
2
k Heaviside(t −1) (1 +α) t
2
−k Heaviside(t −1) (1 +α) t + 2 α
2
mk
+ Heaviside(t −1) m+
1
2
Heaviside(t −1) αk
+ 2 αmk +
1
2
Heaviside(t −1) k)

((1 +α)
2
k m)
¸
%1 := −αmk (1 +α)
´
Evaluez-les en fixant des valeurs pour les constantes.
>
eval( %, {alpha=1/10, m=1, k=1} );
6.2
´
Equations diff´erentielles ordinaires • 245
¦x
2
(t) =
50
121
(
11
10
t
2
+
9
10

11
5
t +
1
5
cosh(
1
10

−11

100 (t −1)))
Heaviside(t −1) +
2
11

2
11
cosh(
1
10

−11

100 t), x
1
(t)
= −
100
121
Heaviside(t −1) cosh(
1
10

−11

100 (t −1))

2
11
cosh(
1
10

−11

100 t) +e
(−1/10

−11

100 t)
+e
(1/10

−11

100 t)
+
5
11
Heaviside(t −1) t
2

10
11
Heaviside(t −1) t +
2
11
+
155
121
Heaviside(t −1)¦
Comme on devait s’y attendre, on obtient la mˆeme solution que par
la m´ethode pr´ec´edente.
L’option type=series La m´ethode des s´eries pour r´esoudre des ´equa-
tions diff´erentielles consiste ` a trouver une fonction symbolique approxim´ee
des ´equations de la mani`ere suivante. Maple trouve d’abord une ap-
proximation des ´equations sous forme de s´erie. Il r´esout ensuite cette
approximation de mani`ere symbolique au moyen de m´ethodes exactes.
Cette technique s’av`ere utile lorsque les algorithmes standard de Maple
ne suffisent pas ` a la tˆ ache et qu’une solution symbolique est tout de mˆeme
pr´ef´erable ` a une solution purement num´erique. La m´ethode des s´eries est
souvent d’un grand secours avec les EDO non lin´eaires ou de grand ordre.
Lorsque Maple applique la m´ethode des s´eries, il assume qu’il existe
une solution de la forme
x
c


¸
i=0
a
i
x
i

o` u c est un nombre rationnel.
Consid´erez l’´equation diff´erentielle suivante.
>
eq := 2*x*diff(y(x),x,x) + diff(y(x),x) + y(x) = 0;
eq := 2 x(
d
2
dx
2
y(x)) + (
d
dx
y(x)) + y(x) = 0
Demandez ` a Maple de r´esoudre l’´equation.
246 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
>
dsolve( {eq}, {y(x)}, type=series );
y(x) = _C1

x(1 −
1
3
x +
1
30
x
2

1
630
x
3
+
1
22680
x
4

1
1247400
x
5
+ O(x
6
)) + _C2
(1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
+ O(x
6
))
Utilisez rhs pour extraire la solution ; convertissez-la ensuite en po-
lynˆ ome.
>
rhs(%);
_C1

x(1 −
1
3
x +
1
30
x
2

1
630
x
3
+
1
22680
x
4

1
1247400
x
5
+ O(x
6
)) + _C2
(1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
+ O(x
6
))
>
poly := convert(%, polynom);
poly := _C1

x
(1 −
1
3
x +
1
30
x
2

1
630
x
3
+
1
22680
x
4

1
1247400
x
5
)
+ _C2 (1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
)
Vous pouvez maintenant tracer le graphique de la solution pour
diff´erentes valeurs des constantes arbitraires _C1 et _C2.
>
[ seq( _C1=i, i=0..5 ) ];
[_C1 = 0, _C1 = 1, _C1 = 2, _C1 = 3, _C1 = 4, _C1 = 5]
>
map(subs, %, _C2=1, poly);
6.2
´
Equations diff´erentielles ordinaires • 247
[1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
,
%1 + 1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
,
2 %1 + 1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
,
3 %1 + 1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
,
4 %1 + 1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
,
5 %1 + 1 −x +
1
6
x
2

1
90
x
3
+
1
2520
x
4

1
113400
x
5
]
%1 :=

x(1 −
1
3
x +
1
30
x
2

1
630
x
3
+
1
22680
x
4

1
1247400
x
5
)
>
plot( %, x=1..10 );
–4
–3
–2
–1
0
1
2
3
2 4 6 8 10
x
L’option type=numeric Bien que les m´ethodes des s´eries pour la r´e-
solution des EDO soient bien comprises et ad´equates pour trouver des
approximations justes de la variable d´ependante, elles pr´esentent cepen-
dant certaines limitations. Pour produire un r´esultat, la s´erie r´esultante
doit converger ; de plus, Maple doit calculer plusieurs d´eriv´ees dans le pro-
cessus de recherche de la solution, ce qui peut s’av´erer coˆ uteux en temps
comme en m´emoire. Pour ces raisons, des solveurs num´eriques alternatifs
ont ´et´e con¸ cus.
Voici une ´equation diff´erentielle et une condition initiale.
>
eq := x(t) * diff(x(t), t) = t^2;
eq := x(t) (
d
dt
x(t)) = t
2
248 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
>
ini := x(1) = 2;
ini := x(1) = 2
Le r´esultat de la commande dsolve avec l’option numeric est une proc´e-
dure qui retourne une liste d’´equations.
>
sol := dsolve( {eq, ini}, {x(t)}, type=numeric );
sol := proc(rkf45_x) . . . end proc
La solution satisfait ` a la condition initiale.
>
sol(1);
[t = 1, x(t) = 2.]
>
sol(0);
[t = 0, x(t) = 1.82574790049820024]
Utilisez la commande eval pour choisir une valeur particuli`ere de la
liste des ´equations.
>
eval( x(t), sol(1) );
2.
Vous pouvez ´egalement cr´eer une paire ordonn´ee.
>
eval( [t, x(t)], sol(0) );
[0, 1.82574790049820024]
Le package plots contient une commande, odeplot, permettant de
tracer le r´esultat de dsolve( ..., type=numeric).
>
with(plots):
>
odeplot( sol, [t, x(t)], -1..2 );
6.2
´
Equations diff´erentielles ordinaires • 249
1.8
2
2.2
2.4
2.6
2.8
x
–1 –0.5 0 0.5 1 1.5 2
t
Consultez la rubrique ?plots,odeplot pour obtenir la syntaxe de
odeplot.
Voici un syst`eme de deux EDO.
>
eq1 := diff(x(t),t) = y(t);
eq1 :=

∂t
x(t) = y(t)
>
eq2 := diff(y(t),t) = x(t)+y(t);
eq2 :=

∂t
y(t) = x(t) + y(t)
>
ini := x(0)=2, y(0)=1;
ini := x(0) = 2, y(0) = 1
Dans ce cas particulier, la proc´edure de solution retourne une liste de
trois ´equations.
>
sol1 := dsolve( {eq1, eq2, ini}, {x(t),y(t)},
>
type=numeric );
sol1 := proc(rkf45_x) . . . end proc
>
sol1(0);
[t = 0, x(t) = 2., y(t) = 1.]
>
sol1(1);
250 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
[t = 1, x(t) = 5.58216755967155986,
y(t) = 7.82688931187210190]
La commande odeplot peut maintenant tracer y(t) en fonction de
x(t),
>
odeplot( sol1, [x(t), y(t)], -3..1, labels=["x","y"] );
–4
–2
0
2
4
6
8
y
2 3 4 5 6
x
x(t) et y(t) en fonction de t,
>
odeplot( sol1, [t, x(t), y(t)], -3..1,
>
labels=["t","x","y"], axes=boxed );
–3
1
t
2
6
x
–4
8
y
ou toute autre combinaison.
Soyez prudent lorsque vous utilisez des m´ethodes num´eriques. Il
n’existe pas de r`egles universelles permettant de pr´evenir ces effets ; ainsi,
aucun logiciel ne peut anticiper toutes les conditions. La solution consiste
`a utiliser l’option startinit pour indiquer ` a la commande dsolve (ou
plutˆ ot `a la proc´edure retourn´ee par dsolve) de commencer ` a la valeur
initiale pour chaque calcul en un point (x, y(x)).
Vous pouvez sp´ecifier l’algorithme que dsolve(..., type=numeric)
doit utiliser en r´esolvant une ´equation diff´erentielle. Reportez-vous ` a la
rubrique ?dsolve,numeric.
6.2
´
Equations diff´erentielles ordinaires • 251
Un exemple : les s´eries de Taylor
Dans sa forme g´en´erale, une solution d’une EDO g´en´er´ee par une m´ethode
de s´eries demande la formation d’une s´erie de Taylor autour de t = 0
pour une certaine fonction f(t). Vous devez ainsi obtenir et manipuler
les d´eriv´ees d’ordre sup´erieur de cette fonction, soit f

(t), f

(t), f

(t) et
ainsi de suite.
Une fois les d´eriv´ees ainsi obtenues, vous pouvez les remplacer dans
la repr´esentation de f(t) en s´erie de Taylor.
>
taylor(f(t), t);
f(0) + D(f)(0) t +
1
2
(D
(2)
)(f)(0) t
2
+
1
6
(D
(3)
)(f)(0) t
3
+
1
24
(D
(4)
)(f)(0) t
4
+
1
120
(D
(5)
)(f)(0) t
5
+ O(t
6
)
Comme exemple, consid´erez la loi du refroidissement de Newton :

dt
= −
1
10
(θ −20), θ(0) = 100.
En utilisant l’op´erateur D, vous pouvez facilement introduire l’´equa-
tion ci-dessus dans Maple.
>
eq := D(theta) = -1/10*(theta-20);
eq := D(θ) = −
1
10
θ + 2
>
ini := theta(0)=100;
ini := θ(0) = 100
La premi`ere ´etape consiste ` a obtenir le nombre requis de d´eriv´ees
d’ordre sup´erieur. D´eterminez ce nombre en fonction de l’ordre de la s´erie
de Taylor. Si vous utilisez la valeur par d´efaut de la variable Order fournie
par Maple,
>
Order;
6
vous devez g´en´erer des d´eriv´ees jusqu’` a l’ordre
252 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
>
dev_order := Order - 1;
dev_order := 5
Vous pouvez maintenant utiliser seq pour g´en´erer une suite des d´eri-
v´ees d’ordre sup´erieur de theta(t).
>
S := seq( (D@@(dev_order-n))(eq), n=1..dev_order );
S := (D
(5)
)(θ) = −
1
10
(D
(4)
)(θ), (D
(4)
)(θ) = −
1
10
(D
(3)
)(θ),
(D
(3)
)(θ) = −
1
10
(D
(2)
)(θ), (D
(2)
)(θ) = −
1
10
D(θ),
D(θ) = −
1
10
θ + 2
La d´eriv´ee cinqui`eme est une fonction de la d´eriv´ee quatri`eme, la
d´eriv´ee quatri`eme est une fonction de la d´eriv´ee troisi`eme, et ainsi de
suite. Ainsi, si vous effectuez des substitutions par rapport ` a S, vous
pouvez exprimer toutes les d´eriv´ees comme des fonctions de theta. Par
exemple, le troisi`eme ´el´ement de S est le suivant :
>
S[3];
(D
(3)
)(θ) = −
1
10
(D
(2)
)(θ)
En rempla¸ cant par rapport ` a S sur le cˆ ot´e droit de l’´egalit´e, on ob-
tient :
>
lhs(%) = subs( S, rhs(%) );
(D
(3)
)(θ) = −
1
1000
θ +
1
50
Pour effectuer cette substitution sur toutes les d´eriv´ees ` a la fois, uti-
lisez la commande map.
>
L := map( z -> lhs(z) = eval(rhs(z), {S}), [S] );
6.2
´
Equations diff´erentielles ordinaires • 253
L := [(D
(5)
)(θ) =
1
100
(D
(3)
)(θ), (D
(4)
)(θ) =
1
100
(D
(2)
)(θ),
(D
(3)
)(θ) =
1
100
D(θ), (D
(2)
)(θ) =
1
100
θ −
1
5
,
D(θ) = −
1
10
θ + 2]
Vous devez ´evaluer les d´eriv´ees en t = 0.
>
L(0);
[(D
(5)
)(θ)(0) =
1
100
(D
(3)
)(θ)(0),
(D
(4)
)(θ)(0) =
1
100
(D
(2)
)(θ)(0),
(D
(3)
)(θ)(0) =
1
100
D(θ)(0), (D
(2)
)(θ)(0) =
1
100
θ(0) −
1
5
,
D(θ)(0) = −
1
10
θ(0) + 2]
G´en´erez maintenant la s´erie de Taylor.
>
T := taylor(theta(t), t);
T := θ(0) + D(θ)(0) t +
1
2
(D
(2)
)(θ)(0) t
2
+
1
6
(D
(3)
)(θ)(0)
t
3
+
1
24
(D
(4)
)(θ)(0) t
4
+
1
120
(D
(5)
)(θ)(0) t
5
+ O(t
6
)
Remplacez les d´eriv´ees dans la s´erie.
>
subs( op(L(0)), T );
θ(0) + (−
1
10
θ(0) + 2) t + (
1
200
θ(0) −
1
10
) t
2
+
(−
1
6000
θ(0) +
1
300
) t
3
+ (
1
240000
θ(0) −
1
12000
) t
4
+
(−
1
12000000
θ(0) +
1
600000
) t
5
+ O(t
6
)
´
Evaluez maintenant les s´eries aux conditions initiales et convertissez-
les en polynˆ ome.
>
eval( %, ini );
254 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
100 −8 t +
2
5
t
2

1
75
t
3
+
1
3000
t
4

1
150000
t
5
+ O(t
6
)
>
p := convert(%, polynom);
p := 100 −8 t +
2
5
t
2

1
75
t
3
+
1
3000
t
4

1
150000
t
5
Vous pouvez maintenant tracer le graphique de la r´eponse.
>
plot(p, t=0..30);
–20
0
20
40
60
80
100
5 10 15 20 25 30
t
Cet exemple particulier poss`ede la solution analytique suivante.
>
dsolve( {eq(t), ini}, {theta(t)} );
θ(t) = 20 + 80 e
(−1/10 t)
>
q := rhs(%);
q := 20 + 80 e
(−1/10 t)
Vous pouvez maintenant comparer la s´erie obtenue ` a la solution
exacte.
>
plot( [p, q], t=0..30 );
6.2
´
Equations diff´erentielles ordinaires • 255
–20
0
20
40
60
80
100
5 10 15 20 25 30
t
Plutˆ ot que de calculer la s´erie de Taylor manuellement, vous pouvez
utiliser l’option series de la commande dsolve.
>
dsolve( {eq(t), ini}, {theta(t)}, ’series’ );
θ(t) =
100 −8 t +
2
5
t
2

1
75
t
3
+
1
3000
t
4

1
150000
t
5
+ O(t
6
)
Lorsqu’une solution explicite est impossible `a trouver
Dans certains cas, il peut ˆetre impossible d’exprimer la solution d’une
EDO lin´eaire explicitement. Dans ce cas, la commande dsolve peut re-
tourner des solutions contenant la structure de donn´ees DESol. DESol
est une expression repr´esentant la solution d’une ´equation diff´erentielle
sans la calculer explicitement. Ainsi, DESol est similaire ` a RootOf, qui
repr´esente les racines d’une expression. Cela vous permet de manipuler
l’expression r´esultante de mani`ere symbolique avant d’utiliser toute autre
approche.
>
de := (x^7+x^3-3)*diff(y(x),x,x) + x^4*diff(y(x),x)
>
+ (23*x-17)*y(x);
de :=
(x
7
+x
3
−3) (
d
2
dx
2
y(x)) +x
4
(
d
dx
y(x)) + (23 x −17) y(x)
dsolve ne peut trouver une solution exacte de de.
>
dsolve( {de}, {y(x)} );
256 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
y(x) = DESol

(
d
2
dx
2
_Y(x)) +
x
4
(
d
dx
_Y(x))
x
7
+x
3
−3
+
(23 x −17) _Y(x)
x
7
+x
3
−3
¸
,
¦_Y(x)¦

Vous pouvez maintenant essayer une autre m´ethode sur l’´el´ement DESol
lui-mˆeme. Par exemple, trouvez une approximation sous forme de s´erie.
>
series(rhs(%), x);
_Y(0) + D(_Y)(0) x −
17
6
_Y(0) x
2
+
(−
17
18
D(_Y)(0) +
23
18
_Y(0)) x
3
+
(
289
216
_Y(0) +
23
36
D(_Y)(0)) x
4
+
(
289
1080
D(_Y)(0) −
833
540
_Y(0)) x
5
+ O(x
6
)
diff et int fonctionnent ´egalement avec DESol.
Tracer le graphique d’´equations diff´erentielles ordinaires
Plusieurs ´equations diff´erentielles ne peuvent ˆetre r´esolues analytique-
ment. Dans ces cas, il peut ˆetre avantageux d’en tracer le graphique.
>
ode1 :=
>
diff(y(t), t$2) + sin(t)^2*diff(y(t),t) + y(t) = cos(t)^2;
ode1 := (
d
2
dt
2
y(t)) + sin(t)
2
(
d
dt
y(t)) + y(t) = cos(t)
2
>
ic1 := y(0) = 1, D(y)(0) = 0;
ic1 := y(0) = 1, D(y)(0) = 0
Essayez tout d’abord de r´esoudre cette EDO analytiquement au
moyen de dsolve.
6.2
´
Equations diff´erentielles ordinaires • 257
>
dsolve({ode1, ic1}, {y(t)} );
La commande dsolve n’a rien retourn´e, indiquant ainsi qu’elle ne pouvait
trouver de solution. Essayez alors les m´ethodes de Laplace.
>
dsolve( {ode1, ic1}, {y(t)}, method=laplace );
Encore une fois, dsolve n’a pas trouv´e de solution. Puisque l’usage de
dsolve s’est av´er´e infructueux, essayez la commande DEplot qui se trouve
dans le package DEtools.
>
with(DEtools):
DEplot est un traceur g´en´eral d’EDO que vous pouvez utiliser en suivant
la syntaxe ci-dessous :
DEplot( ode, dep-var, intervalle, [ini-conds] )
Ici, ode est l’´equation diff´erentielle que vous souhaitez tracer, dep-var est
la variable d´ependante, intervalle est le domaine de la variable ind´epen-
dante et ini-conds repr´esente la liste des conditions initiales.
Voici un graphique de la fonction satisfaisant ` a la fois ` a l’´equation
diff´erentielle ode1 et aux conditions initiales ic1 ci-dessus.
>
DEplot( ode1, y(t), 0..20, [ [ ic1 ] ] );
0.2
0.4
0.6
0.8
1
y(t)
0 5 10 15 20
t
Vous pouvez raffiner le graphique en sp´ecifiant une ´echelle (stepsize)
plus fine.
>
DEplot( ode1, y(t), 0..20, [ [ ic1 ] ], stepsize=0.2 );
258 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
0.2
0.4
0.6
0.8
1
y(t)
0 5 10 15 20
t
Si vous sp´ecifiez plus qu’une liste de conditions initiales, DEplot trace
une solution pour chacune.
>
ic2 := y(0)=0, D(y)(0)=1;
ic2 := y(0) = 0, D(y)(0) = 1
>
DEplot( ode1, y(t), 0..20, [ [ic1], [ic2] ], stepsize=0.2 );
0.2
0.4
0.6
0.8
1
1.2
1.4
y(t)
5 10 15 20
t
DEplot peut ´egalement tracer les solutions d’un ensemble d’´equations
diff´erentielles.
>
eq1 := diff(y(t),t) + y(t) + x(t) = 0;
eq1 := (
d
dt
y(t)) + y(t) + x(t) = 0
>
eq2 := y(t) = diff(x(t), t);
eq2 := y(t) =
d
dt
x(t)
6.2
´
Equations diff´erentielles ordinaires • 259
>
ini1 := x(0)=0, y(0)=5;
ini1 := x(0) = 0, y(0) = 5
>
ini2 := x(0)=0, y(0)=-5;
ini2 := x(0) = 0, y(0) = −5
Le syst`eme {eq1, eq2} poss`ede deux variables d´ependantes, x(t) et
y(t) ; vous devez donc donner une liste de variables d´ependantes.
>
DEplot( {eq1, eq2}, [x(t), y(t)], -5..5,
>
[ [ini1], [ini2] ] );
–60
–40
–20
0
20
40
60
y
–60 –40 –20 20 40 60
x
Remarquez que DEplot g´en`ere ´egalement un champ de vecteurs (ainsi
qu’illustr´e ci-dessus) d`es qu’il est utile de le faire. Consultez la rubrique
?DEtools,DEplot pour obtenir davantage de d´etails sur la mani`ere de
tracer des EDO.
DEplot3d est la version tridimensionnelle de DEplot. La syntaxe de
base de DEplot3d est similaire ` a celle de DEplot. Consultez la rubrique
?DEtools,DEplot3d pour obtenir plus de d´etails. Voici un graphique tri-
dimensionnel du syst`eme trac´e en deux dimensions pr´ec´edemment.
>
DEplot3d( {eq1, eq2}, [x(t), y(t)], -5..5,
>
[ [ini1], [ini2] ] );
260 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
–4
–2
0
2
4
t
–60
–40
–20
0
20
40
60
x(t)
–40
–20
0
20
40
y(t)
Voici un exemple d’un graphique d’un syst`eme de trois ´equations
diff´erentielles.
>
eq1 := diff(x(t),t) = y(t)+z(t);
eq1 :=
d
dt
x(t) = y(t) + z(t)
>
eq2 := diff(y(t),t) = -x(t)-y(t);
eq2 :=
d
dt
y(t) = −y(t) −x(t)
>
eq3 := diff(z(t),t) = x(t)+y(t)-z(t);
eq3 :=
d
dt
z(t) = x(t) + y(t) −z(t)
Voici deux listes de conditions initiales.
>
ini1 := [x(0)=1, y(0)=0, z(0)=2];
ini1 := [x(0) = 1, y(0) = 0, z(0) = 2]
>
ini2 := [x(0)=0, y(0)=2, z(0)=-1];
ini2 := [x(0) = 0, y(0) = 2, z(0) = −1]
La commande DEplot3d trace deux solutions au syst`eme d’´equations
diff´erentielles {eq1, eq2, eq3}, une solution pour chaque liste de valeurs
initiales.
6.2
´
Equations diff´erentielles ordinaires • 261
>
DEplot3d( {eq1, eq2, eq3}, [x(t), y(t), z(t)], t=0..10,
>
[ini1, ini2], stepsize=0.1, orientation=[-171, 58] );
–1
2
x
–1
2
y
–1
2
z
Coefficients discontinus d’une ´equation
Dans plusieurs situations pratiques, les coefficients d’une solution ` a un
syst`eme sont discontinus. Maple propose plusieurs mani`eres par lesquelles
il est possible de d´ecrire un syst`eme en termes d’EDO et d’inclure, de
mani`ere significative, des descriptions de ces coefficients discontinus.
La fonction de Heaviside La fonction de Heaviside permet de mod´eliser
des coefficients retard´es ou d´efinis par morceaux. Vous pouvez utiliser
Heaviside avec dsolve pour trouver les solutions ` a la fois num´eriques et
symboliques.
>
eq := diff(y(t),t) = -y(t)*Heaviside(t-1);
eq :=

∂t
y(t) = −y(t) Heaviside(t −1)
>
ini := y(0) = 3;
ini := y(0) = 3
>
dsolve({eq, ini}, {y(t)});
y(t) = 3 e
((−t+1) Heaviside(t−1))
Transformez la solution en une fonction que l’on peut tracer.
>
rhs( % );
262 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
3 e
((−t+1) Heaviside(t−1))
>
f := unapply(%, t);
f := t → 3 e
((−t+1) Heaviside(t−1))
>
plot(f, 0..4);
0.5
1
1.5
2
2.5
3
0 1 2 3 4
R´esolvez la mˆeme ´equation num´eriquement.
>
sol1 := dsolve({eq, ini}, {y(t)}, type=numeric);
sol1 := proc(rkf45_x) . . . end proc
Vous pouvez utiliser la commande odeplot du package plots pour
tracer le graphique de la solution.
>
with(plots):
>
odeplot( sol1, [t, y(t)], 0..4 );
0.5
1
1.5
2
2.5
3
y
0 1 2 3 4
t
6.2
´
Equations diff´erentielles ordinaires • 263
La fonction Delta de Dirac De mani`ere similaire, vous pouvez utiliser
la fonction de Dirac pour produire des coefficients d’impulsion.
>
eq := diff(y(t),t) = -y(t)*Dirac(t-1);
eq :=
d
dt
y(t) = −y(t) Dirac(t −1)
>
ini := y(0) = 3;
ini := y(0) = 3
>
dsolve({eq, ini}, {y(t)});
y(t) = 3 e
(−Heaviside(t−1))
Transformez la solution en une fonction que vous pouvez tracer.
>
f := unapply( rhs( % ), t );
f := t → 3 e
(−Heaviside(t−1))
>
plot( f, 0..4 );
1.2
1.4
1.6
1.8
2
2.2
2.4
2.6
2.8
3
0 1 2 3 4
Cependant, la solution num´erique ne consid`ere pas la valeur non nulle
de Dirac(0).
>
sol2 := dsolve({eq, ini}, {y(t)}, type=numeric);
sol2 := proc(rkf45_x) . . . end proc
264 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
Encore une fois, utilisez odeplot du package plots pour tracer la
solution num´erique.
>
with(plots, odeplot);
[odeplot]
>
odeplot( sol2, [t,y(t)], 0..4 );
2
2.5
3
3.5
4
y
0 1 2 3 4
t
Fonctions d´efinies par morceaux La commande piecewise vous permet
de construire des fonctions compliqu´ees par l’approximation de certaines
de ses sections par des fonctions analytiques, puis en regroupant ces mul-
tiples approximations pour repr´esenter la fonction compl`ete. Examinez
tout d’abord le comportement de piecewise.
>
f:= x -> piecewise(1<=x and x<2, 1, 0);
f := x → piecewise(1 ≤ x and x < 2, 1, 0)
>
f(x);

1, if , 1 −x ≤ 0 and x −2 < 0 ;
0, otherwise.
Remarquez que l’ordre des conditions est important. La fonction retourne
la valeur true d`es qu’une condition retourne la valeur true.
>
plot(f, 0..3);
6.2
´
Equations diff´erentielles ordinaires • 265
0
0.2
0.4
0.6
0.8
1
0.5 1 1.5 2 2.5 3
Ainsi, vous pouvez utiliser cette fonction d´efinie par morceaux comme
coefficient.
>
eq := diff(y(t),t) = 1-y(t)*f(t);
eq :=

∂t
y(t) = 1 −y(t)

1, if 1 −t ≤ 0 and t −2 < 0 ;
0, otherwise.

>
ini := y(0)=3;
ini := y(0) = 3
>
sol3 := dsolve({eq, ini}, {y(t)}, type=numeric);
sol3 := proc(rkf45_x) . . . end proc
Encore une fois, utilisez la commande odeplot du package plots pour
tracer le r´esultat.
>
with(plots, odeplot):
>
odeplot( sol3, [t, y(t)], 0..4 );
3
4
5
6
7
y
0 1 2 3 4
t
266 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
Le package DEtools contient plusieurs commandes vous permettant
d’examiner, de manipuler, de tracer et de r´esoudre des ´equations diff´eren-
tielles. Consultez la rubrique ?DEtools pour plus de d´etails.
6.3
´
Equations aux d´eriv´ees partielles
En g´en´eral, les ´equations aux d´eriv´ees partielles (EDP) sont tr`es difficiles ` a
r´esoudre. Maple fournit plusieurs commandes permettant de r´esoudre, de
manipuler et de tracer les EDP. Certaines de ces commandes se trouvent
dans la biblioth`eque standard, mais la plupart d’entre elles sont situ´ees
dans le package PDEtools.
La commande pdsolve
La commande pdsolve permet de r´esoudre plusieurs ´equations aux
d´eriv´ees partielles. La syntaxe de base de la commande pdsolve est la
suivante :
pdsolve( pde, var )
Ici, pde est l’´equation aux d´eriv´ees partielles et var est la variable pour
laquelle on souhaite r´esoudre.
Voici une ´equation ondulatoire unidimensionnelle.
>
wave := diff(u(x,t), t,t) - c^2 * diff(u(x,t), x,x);
wave := (

2
∂t
2
u(x, t)) −c
2
(

2
∂x
2
u(x, t))
On souhaite r´esoudre pour u(x,t). Chargeons d’abord en m´emoire
PDEtools.
>
with(PDEtools):
>
sol := pdsolve( wave, u(x,t) );
sol := u(x, t) = _F1(c t +x) + _F2(c t −x)
Remarquez que la solution est en termes de deux fonctions arbitraires,
_F1 et _F2. Pour tracer la solution, il vous faut un ensemble particulier
de fonctions.
6.3
´
Equations aux d´eriv´ees partielles • 267
>
f1 := xi -> exp(-xi^2);
f1 := ξ → e
(−ξ
2
)
>
f2 := xi -> piecewise(-1/2<xi and xi<1/2, 1, 0);
f2 := ξ → piecewise(
−1
2
< ξ and ξ <
1
2
, 1, 0)
Substituez ces expressions dans la solution.
>
eval( sol, {_F1=f1, _F2=f2, c=1} );
u(x, t) = e
(−(t+x)
2
)
+

1 −t +x <
1
2
and t −x <
1
2
0 otherwise

Vous pouvez utiliser la commande rhs pour extraire la solution.
>
rhs(%);
e
(−(t+x)
2
)
+

1 −t +x <
1
2
and t −x <
1
2
0 otherwise

unapply transforme l’expression en fonction.
>
f := unapply(%, x,t);
f := (x, t) →
e
(−(t+x)
2
)
+ piecewise(−t +x <
1
2
and t −x <
1
2
, 1, 0)
Vous pouvez maintenant tracer la solution.
>
plot3d( f, -8..8, 0..5, grid=[40,40] );
268 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
Changer la variable d´ependante dans une EDP
Voici l’´equation de la chaleur en une dimension.
>
heat := diff(u(x,t),t) - k*diff(u(x,t), x,x) = 0;
heat := (
d
dt
u(x, t)) −k (
d
2
dx
2
u(x, t)) = 0
Essayez de trouver une solution de la forme X(x)T(t). Pour ce faire,
utilisez l’option HINT de pdsolve pour sugg´erer ` a Maple une piste ` a
suivre.
>
pdsolve( heat, u(x,t), HINT=X(x)*T(t));
(u(x, t) = X(x) T(t)) &where

d
dt
T(t) = k _c
1
T(t),
d
2
dx
2
X(x) = _c
1
X(x)¦]
Le r´esultat est correct, mais difficile ` a lire.
De mani`ere alternative, vous pouvez sp´ecifier ` a pdsolve d’utiliser une
s´eparation de variables (sous forme de produit, ‘*‘) et ensuite de r´esoudre
l’EDO r´esultante en utilisant l’option ’build’.
>
sol := pdsolve(heat, u(x,t), HINT=‘*‘, ’build’);
sol := u(x, t) = e
(

_c
1
x)
_C3 e
(k _c
1
t)
_C1 +
_C3 e
(k _c
1
t)
_C2
e
(

_c
1
x)
´
Evaluez la solution en des valeurs sp´ecifiques pour les constantes.
>
S := eval( rhs(sol), {_C3=1, _C1=1, _C2=1, k=1, _c[1]=1} );
6.3
´
Equations aux d´eriv´ees partielles • 269
S := e
x
e
t
+
e
t
e
x
Vous pouvez tracer le graphique de la solution.
>
plot3d( S, x=-5..5, t=0..5 );
Il peut ˆetre avis´e de v´erifier la solution avec l’´equation originale.
>
eval( heat, u(x,t)=rhs(sol) );
%1 _C3 k _c
1
e
(k _c
1
t)
_C1 +
_C3 k _c
1
e
(k _c
1
t)
_C2
%1
−k (_c
1
%1 _C3 e
(k _c
1
t)
_C1 +
_C3 e
(k _c
1
t)
_C2 _c
1
%1
) = 0
%1 := e
(

_c
1
x)
>
simplify(%);
0 = 0
Tracer le graphique d’´equations aux d´eriv´ees partielles
Les solutions de plusieurs EDP peuvent ˆetre trac´ees grˆ ace ` a la com-
mande PDEplot que l’on trouve dans le package PDEtools.
>
with(PDEtools):
Vous pouvez utiliser la commande PDEplot avec la syntaxe suivante.
PDEplot( pde, var, ini, s=intervalle )
Ici, pde est l’EDP, var est la variable ind´ependante, ini est une courbe
param´etrique de l’espace tridimensionnel de param`etre s et intervalle est
le domaine de s.
270 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
Consid´erez cette ´equation aux d´eriv´ees partielles.
>
pde := diff(u(x,y), x) + cos(2*x) * diff(u(x,y), y) = -sin(y);
pde := (

∂x
u(x, y)) + cos(2 x) (

∂y
u(x, y)) = −sin(y)
Utilisez la courbe donn´ee par z = 1 + y
2
comme condition initiale,
c’est-` a-dire x = 0, y = s et z = 1 +s
2
.
>
ini := [0, s, 1+s^2];
ini := [0, s, 1 +s
2
]
PDEplot trace la courbe des conditions initiales et la surface de solu-
tion.
>
PDEplot( pde, u(x,y), ini, s=-2..2 );
–2
2
x
–2
2
y
1
7
u(x,y)
Pour tracer la surface, Maple calcule ces courbes caract´eristiques de
base. La courbe des conditions initiales est ici plus facile ` a distinguer.
>
PDEplot( pde, u(x,y), ini, s=-2..2, basechar=only );
–2
2
x
–2
2
y
1
5
u(x,y)
6.4 Conclusion • 271
L’option basechar=true indique ` a PDEplot de dessiner ` a la fois les
courbes caract´eristiques et la surface, de mˆeme que la courbe des condi-
tions initiales qui est toujours pr´esente.
>
PDEplot( pde, u(x,y), ini, s=-2..2, basechar=true );
–2
2
x
–2
2
y
1
7
u(x,y)
Plusieurs des options usuelles de plot3d sont ´egalement disponibles ;
consultez la rubrique ?plot3d,options. L’option initcolor modifie la
couleur de la courbe des valeurs initiales.
>
PDEplot( pde, u(x,y), ini, s=-2..2,
>
basechar=true, initcolor=white,
>
style=patchcontour, contours=20,
>
orientation=[-43,45] );
–2
2
x
–2
2
y
1
7
u(x,y)
6.4 Conclusion
Ce chapitre vous a d´emontr´e l’utilit´e de Maple lorsque vient le temps
d’´etudier et de r´esoudre des probl`emes faisant usage du calcul diff´erentiel.
Vous avez vu comment Maple peut illustrer des concepts comme la d´eriv´ee
et les int´egrales de Riemann, comment Maple vous aide ` a analyser le
272 • Chapitre 6: Exemples tir´es du calcul diff´erentiel
terme d’erreur d’une approximation de Taylor de mˆeme que sa puissance
dans la r´esolution et la manipulation, tant symbolique que num´erique,
des ´equations diff´erentielles et des ´equations aux d´eriv´ees partielles.
7 Entr´ees et sorties
Vous pouvez effectuer la majeure partie de votre travail ` a l’int´erieur des
feuilles de calcul de Maple : calculer, tracer des fonctions et documenter
les r´esultats. Cependant, il est possible qu’` a un certain moment vous de-
viez importer des donn´ees ou exporter des r´esultats pour interagir avec
une autre personne ou un autre logiciel. Les donn´ees peuvent ˆetre des me-
sures exp´erimentales ou des nombres g´en´er´es par d’autres programmes.
Une fois les donn´ees import´ees dans Maple, vous pouvez utiliser les ca-
pacit´es graphiques du logiciel pour visualiser les r´esultats et les capacit´es
alg´ebriques pour construire ou examiner un mod`ele math´ematique.
Maple propose plusieurs mani`eres d’importer et d’exporter des don-
n´ees num´eriques brutes et des graphiques. Il pr´esente les r´esultats
alg´ebriques et num´eriques dans des formats compatibles ` a leur utilisa-
tion sous FORTRAN ou C, ou le syst`eme de typographie math´ematique
L
A
T
E
X. Vous pouvez mˆeme exporter une feuille de calcul enti`ere en un
fichier texte (pour inclusion dans un courriel) ou sous forme d’un docu-
ment L
A
T
E
X. Vous pouvez couper et coller des r´esultats et exporter des
expressions isol´ees ou des feuilles enti`eres.
Le pr´esent chapitre aborde les aspects les plus courants de l’expor-
tation et de l’importation d’information vers et depuis des fichiers. On y
verra comment Maple interagit avec le syst`eme de fichiers et avec d’autres
logiciels.
7.1 Lire des fichiers
On utilise g´en´eralement la lecture de fichiers dans Maple pour deux rai-
sons : pour obtenir des donn´ees et pour r´ecup´erer une liste de commandes
Maple enregistr´ees dans un fichier.
273
274 • Chapitre 7: Entr´ees et sorties
La premi`ere situation survient g´en´eralement dans le cas de donn´ees
exp´erimentales. Vous pouvez sauvegarder les nombres en les s´eparant par
des espaces et des sauts de ligne dans un fichier texte, puis les faire lire
par Maple pour les ´etudier. Vous pouvez tr`es facilement effectuer ces
op´erations en utilisant respectivement les commandes ExportMatrix et
ImportMatrix.
Dans la seconde situation, on cherche ` a lire des commandes Maple se
trouvant dans un fichier texte. Vous recevez peut-ˆetre une feuille de calcul
sous format texte, ou vous ´ecrivez une proc´edure Maple en utilisant votre
´editeur de texte favori et en le sauvegardant dans un fichier texte avant
de l’ex´ecuter. Pour ce faire, vous pouvez couper et coller des commandes
dans Maple ou encore utiliser la commande read. La pr´esente section
discute de cette seconde option.
Lire des colonnes de nombres depuis un fichier
Maple manipule les donn´ees ais´ement, mais lorsque ces derni`eres sont
g´en´er´ees hors du logiciel, vous devez pr´ealablement les importer avant de
les manipuler. Tr`es souvent, ces donn´ees externes sont stock´ees sous la
forme de colonnes de nombres dans un fichier texte. Le fichier data.txt
ci-dessous en est un exemple.
0 1 0
1 .5403023059 .8414709848
2 -.4161468365 .9092974268
3 -.9899924966 .1411200081
4 -.6536436209 -.7568024953
5 .2836621855 -.9589242747
6 .9601702867 -.2794154982
La commande ImportMatrix permet de lire de telles colonnes de nombres.
Utilisez ImportMatrix de la mani`ere suivante.
ImportMatrix( "nomfichier", delimiter=cha ıne )
Ici, nomfichier est le nom du fichier que vous souhaitez lire au moyen
d’ImportMatrix, et chaˆıne est le caract`ere qui d´elimite les entr´ees. La
valeur par d´efaut de chaˆıne est un caract`ere de tabulation repr´esent´e par
"\t". Dans le fichier data.txt, les entr´ees sont s´epar´ees par des espaces.
La valeur de chaˆıne est donc " ".
>
L := ImportMatrix( "data.txt", delimiter=" " );
7.1 Lire des fichiers • 275
L :=

0 1 0
1 0.5403023059 0.8414709848
2 −0.4161468365 0.9092974268
3 −0.9899924966 0.1411200081
4 −0.6536436209 −0.7568024953
5 0.2836621855 −0.9589242747
6 0.9601702867 −0.2794154982
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
Maintenant, par exemple, vous pouvez tracer le graphique de la troi-
si`eme colonne en fonction de la premi`ere. Utilisez la commande convert
pour choisir les premi`ere et troisi`eme entr´ees dans chaque colonne.
>
convert( L[[1..-1],[1,3]], listlist );
[[0, 0], [1, 0.8414709848], [2, 0.9092974268],
[3, 0.1411200081], [4, −0.7568024953],
[5, −0.9589242747], [6, −0.2794154982]]
La commande plot peut tracer le graphique de telles listes directe-
ment.
>
plot(%);
–0.8
–0.6
–0.4
–0.2
0
0.2
0.4
0.6
0.8
1 2 3 4 5 6
Pour s´electionner la seconde colonne de nombres, vous devez tenir
compte du fait que L[5,2] est le second nombre de la cinqui`eme sous-
liste.
>
L[5,2];
−0.6536436209
Les donn´ees souhait´ees sont donc les suivantes.
276 • Chapitre 7: Entr´ees et sorties
>
L[ 1..-1, 2 ];

1
0.5403023059
−0.4161468365
−0.9899924966
−0.6536436209
0.2836621855
0.9601702867
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
Convertissons ces donn´ees sous forme de liste.
>
convert(L[1..-1,2],list);
[1, 0.5403023059, −0.4161468365, −0.9899924966,
−0.6536436209, 0.2836621855, 0.9601702867]
>
stats[describe,mean](%) ;
0.1034788321
Vous pouvez aussi effectuer des calculs sur la matrice L en utilisant
le package LinearAlgebra.
>
LinearAlgebra[Transpose](L) . L;
[91. , 1.30278930720000119 , −6.41489848119999984]
[1.30278930720000119 , 3.87483111270157598 ,
−0.109078174475632172]
[−6.41489848119999984 , −0.109078174475632172 ,
3.12516888746710864]
Pour plus d’information au sujet des options de commandes telles que
ImportMatrix, consultez la rubrique d’aide ?ImportMatrix.
Lire des commandes depuis un fichier
Certains utilisateurs Maple trouvent utile d’´ecrire des programmes Maple
dans un fichier texte au moyen de leur ´editeur favori, puis de les importer
dans Maple. Vous pouvez coller les commandes du fichier texte dans votre
feuille de calcul ou utiliser la commande read.
7.1 Lire des fichiers • 277
Lorsque vous lisez un fichier au moyen de la commande read, Maple
traite chaque ligne du fichier comme une commande. Il ex´ecute les com-
mandes et affiche les r´esultats dans votre feuille de calcul, mais il ne place
pas, par d´efaut, les commandes du fichier dans votre feuille de calcul.
Utilisez la commande read en suivant cette syntaxe.
read "nomfichier" ;
Voici le fichier de commandes Maple ks.tst.
S := n -> sum( binomial(n, beta)
* ( (2*beta)!/2^beta - beta!*beta ), beta=1..n );
S( 19 );
Lorsque vous lisez le fichier, Maple affiche les r´esultats, mais pas les com-
mandes.
>
read "ks.tst";
S := n →
n
¸
β=1
binomial(n, β) (
(2 β)!
2
β
−β! β)
1024937361666644598071114328769317982974
Lorsque vous fixez la valeur de la variable interface echo `a 2, Maple
ins`ere les commandes du fichier dans votre feuille de calcul.
>
interface( echo=2 );
>
read "ks.tst";
>
S := n -> sum( binomial(n, beta)
>
* ( (2*beta)!/2^beta - beta!*beta ), beta=1..n );
S := n →
n
¸
β=1
binomial(n, β) (
(2 β)!
2
β
−β! β)
>
S( 19 );
1024937361666644598071114328769317982974
La commande read peut ´egalement lire des fichiers dans le format
interne de Maple ; consultez la section 7.2.
278 • Chapitre 7: Entr´ees et sorties
7.2
´
Ecrire des donn´ees dans un fichier
Apr`es avoir utilis´e Maple pour effectuer un calcul, vous pouvez enregistrer
le r´esultat dans un fichier. Vous pouvez traiter le r´esultat ult´erieurement,
avec Maple ou avec un autre programme.
´
Ecrire des colonnes de donn´ees num´eriques dans un fichier
Si le r´esultat d’un calcul Maple est une longue liste ou un grand tableau
de nombres, vous pouvez le convertir en une matrice et ´ecrire les nombres
dans un fichier de mani`ere structur´ee. La commande ExportMatrix ´ecrit
les colonnes de donn´ees num´eriques dans un fichier, vous permettant d’im-
porter les nombres dans un autre programme. Vous pouvez utiliser la
commande ExportMatrix avec la syntaxe suivante.
ExportMatrix( "nomfichier", donn´ ees )
Ici, nomfichier est la chaˆıne contenant le nom du fichier o` u ExportMatrix
doit sauvegarder les donn´ees, et donn´ees est une matrice. Remarquez
que toute liste, tout vecteur, toute liste de listes ou toute matrice cr´e´ee `a
partir d’une table peut ´egalement ˆetre converti en une matrice en utilisant
le constructeur Matrix (consultez la rubrique d’aide ?Matrix).
>
L:=LinearAlgebra[RandomMatrix](5);
L :=

−66 −65 20 −90 30
55 5 −7 −21 62
68 66 16 −56 −79
26 −36 −34 −8 −71
13 −41 −62 −50 28
¸
¸
¸
¸
¸
¸
>
ExportMatrix("matrixdata.txt", L):
Si les donn´ees sont plac´ees dans un vecteur ou dans tout autre ob-
jet qui peut ˆetre converti au type Vector, il est possible d’utiliser la
commande ExportVector. Pour plus d’information, reportez-vous ` a la
rubrique ?Vector.
>
L := [ 3, 3.1415, -65, 0 ];
L := [3, 3.1415, −65, 0]
>
V := Vector(L);
7.2
´
Ecrire des donn´ees dans un fichier • 279
V :=

3
3.1415
−65
0
¸
¸
¸
¸
>
ExportVector( "vectordata.txt", V ):
Vous pouvez ´etendre ces routines de mani`ere qu’elles ´ecrivent des
donn´ees plus complexes, comme des nombres complexes ou des expres-
sions symboliques. Consultez les rubriques d’aide ?ExportMatrix et
?ExportVector pour obtenir plus d’information.
Sauvegarder des expressions au format interne de Maple
Lorsque vous construisez une expression ou une proc´edure compliqu´ee,
vous pouvez avoir besoin de la sauvegarder pour un usage ult´erieur ` a
l’int´erieur de Maple. Si vous sauvegardez cette expression ou cette proc´e-
dure au format interne de maple, ce dernier pourra ensuite la r´ecup´erer
efficacement. Cela s’accomplit en utilisant la commande save pour ´ecrire
l’expression dans un fichier dont le nom se termine par les caract`eres

.m

. Utilisez la commande save avec la syntaxe suivante.
save seqnoms, "nomfichier.m" ;
Ici, seqnoms est une suite de noms. Remarquez que vous ne pouvez
enregistrer que des objets qui ont au pr´ealable ´et´e nomm´es. La commande
save enregistre les objets dans nomfichier.m. Le .m indique que save
´ecrit le fichier en utilisant le format interne de Maple.
Voici quelques expressions.
>
qbinomial := (n,k) -> product(1-q^i, i=n-k+1..n) /
>
product(1-q^i, i=1..k );
qbinomial := (n, k) →
n
¸
i=n−k+1
(1 −q
i
)
k
¸
i=1
(1 −q
i
)
>
expr := qbinomial(10, 4);
280 • Chapitre 7: Entr´ees et sorties
expr :=
(1 −q
7
) (1 −q
8
) (1 −q
9
) (1 −q
10
)
(1 −q) (1 −q
2
) (1 −q
3
) (1 −q
4
)
>
nexpr := normal( expr );
nexpr := (q
6
+q
5
+q
4
+q
3
+q
2
+q + 1) (q
4
+ 1) (q
6
+q
3
+ 1)
(q
8
+q
6
+q
4
+q
2
+ 1)
Vous pouvez maintenant enregistrer ces expressions dans le fichier
qbinom.m.
>
save qbinomial, expr, nexpr, "qbinom.m";
La commande efface les trois expressions de la m´emoire. Ainsi, expr
s’´evalue ` a son propre nom.
>
restart:
>
expr;
expr
Utilisez la commande read pour r´ecup´erer les expressions sauve-
gard´ees dans qbinom.m.
>
read "qbinom.m";
Remarquez que expr a retrouv´e sa valeur originale.
>
expr;
(1 −q
7
) (1 −q
8
) (1 −q
9
) (1 −q
10
)
(1 −q) (1 −q
2
) (1 −q
3
) (1 −q
4
)
Consultez la section 7.1 pour plus d’information sur la commande
read.
Convertir au format L
A
T
E
X
T
E
X est un programme permettant la pr´esentation de textes math´ema-
tiques. De son cˆ ot´e, L
A
T
E
X est un package macro de T
E
X. La commande
latex convertit les expressions Maple au format L
A
T
E
X. Ainsi, vous pouvez
utiliser Maple pour r´esoudre un probl`eme, convertir le r´esultat en code
L
A
T
E
X et l’inclure dans un document L
A
T
E
X. Utilisez la commande latex
de la mani`ere suivante.
7.2
´
Ecrire des donn´ees dans un fichier • 281
latex( expr, "nomfichier" )
L’objet expr peut ˆetre n’importe quelle expression math´ematique. Les
expressions sp´ecifiques ` a Maple, comme les proc´edures, ne peuvent ˆetre
export´ees en format L
A
T
E
X. Le champ nomfichier est optionnel ; il sp´ecifie
`a Maple d’´ecrire le r´esultat de la commande dans le fichier indiqu´e. Si vous
ne sp´ecifiez pas de nom de fichier, Maple ´ecrit le r´esultat directement dans
votre feuille.
La commande latex ´ecrit le code L
A
T
E
X correspondant de l’expression
Maple expr dans le fichier filename. Si filename existe, latex l’´ecrase
pour ´ecrire le nouveau fichier. Vous pouvez omettre filename ; dans ce
cas, latex affiche le code L
A
T
E
X `a l’´ecran et vous pouvez le couper et le
coller dans votre document L
A
T
E
X.
>
latex( a/b );
{\frac {a}{b}}
>
latex( Limit( int(f(x), x=-n..n), n=infinity ) );
\lim _{n\rightarrow \infty }\int _{-n}^{n}\!f
\left( x \right) {dx}
La commande latex produit des commandes lisibles en mode math.
Cependant, elle ne produit pas la commande pour entrer et sortir du mode
math et ne tente aucun saut de ligne ni aucun alignement particulier.
La commande latex peut traduire la plupart des types d’expres-
sions math´ematiques, incluant les int´egrales, les limites, les sommes, les
produits et les matrices. Vous pouvez ´etendre les possibilit´es de la com-
mande latex en d´efinissant des proc´edures portant des noms de la forme
‘latex/nomfonction‘. De telles proc´edures formatent les appels de la
fonction functionname. Il est sugg´er´e de produire le r´esultat de telles
commandes de formatage au moyen de la commande printf. La com-
mande latex se sert de writeto pour rediriger le r´esultat lorsqu’un nom
de fichier est sp´ecifi´e.
La commande latex ne g´en`ere pas les commandes requises par L
A
T
E
X
pour mettre le syst`eme de typographie en mode math´ematique ($...$, par
exemple).
L’exemple suivant montre la g´en´eration de code L
A
T
E
X pour une ´equa-
tion form´ee d’une int´egrale et de sa valeur. Remarquez l’usage de Int,
la forme inerte de int, pour empˆecher l’´evaluation du cˆ ot´e gauche de
l’´equation.
282 • Chapitre 7: Entr´ees et sorties
>
Int(1/(x^4+1),x) = int(1/(x^4+1),x);

1
x
4
+ 1
dx =
1
8

2 ln(
x
2
+x

2 + 1
x
2
−x

2 + 1
) +
1
4

2 arctan(x

2 + 1)
+
1
4

2 arctan(x

2 −1)
>
latex(%);
\int \! \left( {x}^{4}+1 \right) ^{-1}{dx}=1/8
\,\sqrt {2}\ln \left( {\frac {{x}^{2}+x\sqrt
{2}+1}{{x}^{2}-x\sqrt {2}+1}} \right) +1/4\,
\sqrt {2}\arctan \left( x\sqrt {2}+1 \right) +
1/4\,\sqrt {2}\arctan \left( x\sqrt {2}-1
\right)
La section 7.3 explique comment enregistrer une feuille compl`ete en
format L
A
T
E
X.
7.3 Exporter des feuilles compl`etes
Bien entendu, vous pouvez enregistrer vos feuilles de calcul au moyen des
options Save ou Save As du menu File. Vous pouvez ´egalement exporter
une feuille sous six autres formats : texte, texte Maple, L
A
T
E
X, HTML,
HTML avec MathML, RTF et XML au moyen du sous-menu Export As
que l’on trouve ´egalement dans le menu File. Cela vous permet de traiter
une feuille de calcul hors de Maple.
Texte
Vous pouvez enregistrer une feuille de calcul en texte en choisissant l’op-
tion Export As du menu File et Plain Text du sous-menu qui apparaˆıt.
Dans ce cas, Maple fait pr´ec´eder chaque entr´ee du signe > et d’un espace.
Maple reproduit les symboles sp´eciaux comme les int´egrales et les expo-
sants au moyen de caract`eres ; cependant, vous ne pouvez exporter les
graphiques sous forme de texte. L’exemple suivant est une portion de
feuille Maple export´ee en format texte.
An Indefinite Integral
by Jane Maplefan
Calculation
Look at the integral Int(x^2*sin(x-a),x);. Notice that its
7.3 Exporter des feuilles compl`etes • 283
integrand, x^2*sin(x-a);, depends on the parameter a;.
Give the integral a name so that you can refer to it later.
> expr := Int(x^2 * sin(x-a), x);
/
| 2
expr := | x sin(x - a) dx
|
/
The value of the integral is an anti-derivative of the
integrand.
> answer := value( % );
Texte Maple
Le texte Maple n’est que du texte sp´ecialement marqu´e qui conserve la
distinction entre le texte, les entr´ees de Maple et ses sorties. Ainsi, vous
pouvez exporter une feuille de calcul en texte Maple, envoyer le texte par
courriel et votre destinataire peut importer ce texte dans son programme
et r´eg´en´erer une grande part de la structure originale de votre feuille.
En lisant ou en collant du texte, Maple traite chacune des lignes qui
commencent par un prompt Maple suivi d’un espace (> ) comme une
entr´ee Maple, chaque ligne qui commence avec un di`ese (#) comme du
texte, et ignore toutes les autres lignes.
Vous pouvez exporter une feuille enti`ere en texte Maple en choisissant
Export As du menu File et Maple Text dans le sous-menu qui apparaˆıt
alors. Le texte suivant est une portion d’une feuille export´ee en texte
Maple.
# An Indefinite Integral
# by Jane Maplefan
# Calculation
# Look at the integral Int(x^2*sin(x-a),x);. Notice that its
# integrand, x^2*sin(x-a);, depends on the parameter a;.
# Give the integral a name so that you can refer to it later.
> expr := Int(x^2 * sin(x-a), x);
/
| 2
expr := | x sin(x - a) dx
|
/
284 • Chapitre 7: Entr´ees et sorties
# The value of the integral is an anti-derivative of the
# integrand.
> answer := value( % );
Pour ouvrir une feuille en format texte Maple, choisissez Open du
menu File. Dans la bo
ˆ
ite de dialogue qui apparaˆıt alors, choisissez Maple
Text dans la liste d´eroulante des types de fichiers. Double-cliquez sur le
fichier souhait´e et choisissez encore Maple Text dans la boˆıte de dialogue
qui apparaˆıt.
Vous pouvez ´egalement copier et coller du texte Maple grˆ ace au menu
Edit. Si vous copiez une partie de votre feuille en texte Maple et le collez
ensuite dans une autre application, le texte coll´e apparaˆıt sous forme de
texte Maple. De mani`ere similaire, si vous collez du texte Maple dans votre
feuille en utilisant Paste Maple Text du menu Edit, Maple conserve
la structure du texte Maple. Par contre, si vous utilisez l’option Paste
habituelle, Maple ne conserve aucune structure : si vous collez dans une
zone d’entr´ee, il interpr`ete tout le texte coll´e comme une entr´ee, et si
vous le collez dans une zone de texte, Maple interpr`ete tout le texte coll´e
comme du texte standard.
L
A
T
E
X
Vous pouvez exporter une feuille Maple en format L
A
T
E
X en choisissant
Export As du menu File et LaTeX du sous-menu qui apparaˆıt. Le
fichier .tex que Maple g´en`ere est prˆet `a ˆetre compil´e par L
A
T
E
X. Toutes
les distributions de Maple incluent les fichiers de style n´ecessaires.
Si votre feuille contient des graphiques incorpor´es, Maple g´en`ere les
fichiers PostScript correspondant aux graphiques de mˆeme que le code
L
A
T
E
X permettant d’inclure ces fichiers PostScript dans votre document
L
A
T
E
X.
L’exemple suivant est une portion d’une feuille Maple export´ee en
format L
A
T
E
X.
%% Created by Maple 8.00 (IBM INTEL NT)
%% Source Worksheet: tut1.mws
%% Generated: Thu Apr 18 9:47:33 2002
\documentclass{article}
\usepackage{maple2e}
\DefineParaStyle{Author}
\DefineParaStyle{Heading 1}
\DefineParaStyle{Maple Output}
\DefineParaStyle{Maple Plot}
\DefineParaStyle{Title}
7.3 Exporter des feuilles compl`etes • 285
\DefineCharStyle{2D Comment}
\DefineCharStyle{2D Math}
\DefineCharStyle{2D Output}
\DefineCharStyle{Hyperlink}
\begin{document}
\begin{maplegroup}
\begin{Title}
An Indefinite Integral
\end{Title}
\begin{Author}
by Jane Maplefan
\end{Author}
\end{maplegroup}
\section{Calculation}
Look at the integral
\mapleinline{inert}{2d}{Int(x^2*sin(x-a),x);}{%
$\int x^{2}\,\mathrm{sin}(x - a)\,dx$%
}. Notice that its integrand,
\mapleinline{inert}{2d}{x^2*sin(x-a);}{%
$x^{2}\,\mathrm{sin}(x - a)$%
}, depends on the parameter
\mapleinline{inert}{2d}{a;}{%
$a$%
}.
Les fichiers de style L
A
T
E
X supposent que vous imprimez le fichier .tex
en utilisant le pilote d’imprimante dvips. Vous pouvez changer ce d´efaut
en sp´ecifiant une option ` a la commande L
A
T
E
X \usepackage dans l’en-tˆete
de votre fichier .tex.
La section Imprimer des graphiques de la page 288 explique com-
ment enregistrer des graphiques directement. Vous pouvez inclure ces fi-
chiers graphiques dans votre document L
A
T
E
X `a l’aide de la commande
L
A
T
E
X \mapleplot.
HTML et HTML avec MathML
Vous pouvez exporter une feuille Maple en format HTML (HyperText
Markup Language) en choisissant Export As du menu File et HTML
du sous-menu qui apparaˆıt. Le fichier .html g´en´er´e par Maple peut ˆetre
286 • Chapitre 7: Entr´ees et sorties
charg´e dans n’importe quel navigateur HTML. Vous pouvez ´egalement
exporter une feuille Maple en format HTML avec MathML (Mathema-
tical Markup Language) en choisissant Export As du menu File, puis
HTML with MathML. MathML est la norme Internet sanctionn´ee par
le World Wide Web Consortium (W3C) pour la communication de for-
mules math´ematiques structur´ees entre des applications math´ematiques.
Pour plus d’information ` a propos de MathML, consultez la rubrique
?MathML.
Maple g´en`ere des fichiers .gif pour repr´esenter les ´equations et les
graphiques de votre feuille de calcul. Il convertit les formules math´ema-
tiques et les graphiques en format MathML ou .gif, selon que vous ayiez
choisi l’exportation en format HTML avec MathML ou HTML seul.
L’exemple suivant est une feuille Maple export´ee en HTML. Remar-
quez que les autres documents HTML (incluant une table des mati`eres),
qui ont ´et´e cr´e´es lors de l’exportation de la feuille originale, sont appel´es
par cette portion de code.
<html>
<head>
<title>tut1.htm</title>
<!-- Created by Maple 8.00, IBM INTEL NT -->
</head>
<frameset cols="25%,*">
<frame src="tut1TOC.htm" name="TableOfContents">
<frame src="tut11.htm" name="Content">
<noframes>
Sorry, this document requires that your browser support
frames.
<a href="tut11.htm" target="Content">This link</a>
will take you to a non-frames presentation of the document.
</noframes>
</frameset>
</html>
L’exemple suivant est une portion du fichier tut11.htm mentionn´e
dans le fichier pr´ec´edent.
<b><font color=#000000 size=5>Calculation</font></b>
</p>
<p align=left>
<font color=#000000>Look at the integral </font>
<img src="tut11.gif" width=120 height=60 alt="[Maple Math]"
align=middle>
7.3 Exporter des feuilles compl`etes • 287
<font color=#000000>. Notice that its integrand, </font>
<img src="tut12.gif" width=89 height=50 alt="[Maple Math]"
align=middle>
<font color=#000000>, depends on the parameter </font>
<img src="tut13.gif" width=13 height=32 alt="[Maple Math]"
align=middle>
<font color=#000000>.</font>
</p>
<p align=left>
<font color=#000000>Give the integral a name so that you
can refer to it later.</font>
</p>
<p align=left><a name="expr command">
<tt>&gt; </tt>
<b><font color=#FF0000>expr := Int(x^2 * sin(x-a),
x);</font></b>
</p>
<p align=center>
<img src="tut14.gif" width=169 height=49 alt="[Maple Math]">
</p>
<p align=left>
<font color=#000000>The value of the integral is </font>
<a href="tut4.html" target="_top">an anti-derivative</a>
<font color=#000000> of the integrand.</font>
</p>
RTF
Vous pouvez exporter une feuille Maple en format RTF (Rich Text For-
mat) en choisissant Export As du menu File et RTF du sous-menu
qui apparaˆıt. Le fichier .rtf g´en´er´e par Maple peut ˆetre charg´e dans
n’importe quel traitement de texte qui supporte le format RTF. Maple
incorpore les graphiques et les ´el´ements math´ematiques format´es sous la
forme de bitmaps inclus dans des m´etafichiers Windows. Les feuilles de
calcul (spreadsheets) ne sont pas pleinement export´ees, mais les cellules
visibles de mˆeme que les en-tˆetes de colonnes et de lignes sont export´es.
L’exemple suivant est le d´ebut d’une feuille Maple export´ee en format
RTF.
{\rtf1\ansi\ansicpg1252\deff0\deflang1033
{\fonttbl
{\f0 Times New Roman}
{\f1 Symbol}
288 • Chapitre 7: Entr´ees et sorties
{\f2 Courier New}
}
{\colortbl
\red205\green205\blue205;
\red255\green0\blue0;
\red0\green0\blue0;
\red0\green0\blue255;
}
{\stylesheet
{\s0 \widctlpar}
{\s1\qr footer_header}
{\*\cs12\f2\fs24\cf1\i0 \b \ul0 \additive Maple Input}
{\*\cs13\f0\fs24\cf2\i0 \b0 \ul0 \additive 2D Comment}
{\*\cs14\f0\fs24\cf1\i0 \b0 \ul0 \additive 2D Input}
{\*\cs15\f0\fs24\cf3\i0 \b0 \ul0 \additive 2D Output}
XML
Pour exporter une feuille Maple en format XML (Extensible Markup
Language), choisissez Export As du menu File, puis XML. Le fichier
.xml g´en´er´e par Maple peut ˆetre charg´e comme une feuille Maple tradi-
tionnelle. Les documents XML sont charg´es en choisissant Open du menu
File.
Le texte suivant est un extrait d’une feuille Maple export´ee en XML.
<section><exchange><para pstyle=’Normal’ prompt=’> ’><mapletext
maple-input=’true’ cstyle=’Maple Input’>a;</mapletext></para>
</exchange></section>
7.4 Imprimer des graphiques
Sur la plupart des plateformes, Maple affiche par d´efaut les graphiques di-
rectement dans la feuille (on parle de graphiques ins´er´es). Vous pouvez
utiliser la commande plotsetup pour changer ce comportement. La com-
mande suivante indique ` a Maple d’afficher le graphique dans une fenˆetre
s´epar´ee de votre ´ecran.
>
plotsetup(window);
Lorsque votre graphique s’affiche dans une fenˆetre s´epar´ee, vous pou-
vez l’imprimer par le menu File comme toute autre feuille Maple.
7.4 Imprimer des graphiques • 289
On appelle la commande plotsetup en appliquant la syntaxe sui-
vante.
plotsetup( TypePilote, plotoutput="nomfichier",
plotoption="options" )
Ici, TypePilote est le pilote graphique que Maple doit utiliser, nomfichier
est le nom du fichier de sortie et options est une chaˆıne d’options reconnues
par le pilote sp´ecifi´e.
La commande suivante indique ` a Maple d’envoyer le graphique en
format PostScript dans le fichier myplot.ps.
>
plotsetup( postscript, plotoutput="myplot.ps" );
Le graphique g´en´er´e par la commande plot ci-dessous n’apparaˆıt pas
`a l’´ecran ; il est envoy´e dans le fichier myplot.ps.
>
plot( sin(x^2), x=-4..4 );
Maple peut ´egalement g´en´erer des graphiques au format HP Laser-
jet. Il envoie le graphique g´en´er´e par la commande plot3d au fichier
myplot.hp.
>
plotsetup( hpgl, plotoutput="myplot.hp",
>
plotoptions=laserjet );
>
plot3d( tan(x*sin(y)), x=-Pi/3..Pi/3, y=-Pi..Pi);
Si vous souhaitez imprimer plus d’un graphique, vous devez modi-
fier l’option plotoutput entre chaque graphique ; sinon, chaque nouveau
graphique ´ecrasera le pr´ec´edent.
>
plotsetup( plotoutput="myplot2.hp" );
>
plot( exp@sin, 0..10 );
Une fois les graphiques export´es, vous devez sp´ecifier ` a Maple que les
graphiques doivent de nouveau ˆetre ins´er´es ` a travers les feuilles.
>
plotsetup( inline );
Consultez la rubrique ?plot,device pour une description des pilotes
graphiques reconnus par Maple.
290 • Chapitre 7: Entr´ees et sorties
7.5 Conclusion
Dans ce chapitre, nous avons vu un grand nombre de possibilit´es d’entr´ees
et de sorties de Maple : comment imprimer des graphiques, comment
enregistrer et r´ecup´erer des expressions Maple individuellement, comment
lire et ´ecrire des donn´ees num´eriques et comment exporter une feuille
Maple en document L
A
T
E
X ou HTML.
De plus, Maple poss`ede plusieurs commandes d’entr´ees et de sorties
de bas niveau comme fprintf, fscanf, writeline, readbytes, fopen et
fclose. Consultez les pages d’aide pour plus de d´etails.
Les pages d’aide sont en quelque sorte un manuel de r´ef´erence inter-
actif. Elles sont toujours au bout des doigts lorsque vous utilisez Maple.
Tout comme un manuel de r´ef´erence traditionnel, utilisez-les en ´etudiant
l’index ou en les cherchant une ` a une. En particulier, l’option de recherche
d’un texte entier est une m´ethode de recherche de l’information sup´erieure
`a un index traditionnel. Les hyperliens rendent ais´ee la recherche de sujets
connexes.
Le but de ce livre est de donner au lecteur une bonne base de connais-
sances ` a partir de laquelle il pourra explorer Maple. Il se concentre donc
sur l’usage interactif du logiciel. Bien entendu, Maple est un langage com-
plet et fournit plusieurs outils de programmation. En fait, la majorit´e des
commandes de Maple sont enregistr´ees dans le langage Maple, puisque
ce langage de haut niveau est de loin sup´erieur aux langages de pro-
grammation traditionnels pour des tˆ aches math´ematiques. Le Guide de
programmation de Maple 8 vous introduit ` a la programmation sous
Maple.
8 Les maplets
En utilisant le package Maplets, vous pouvez cr´eer des fenˆetres, des boˆıtes
de dialogue et d’autres interfaces visuelles qui interagissent avec l’utilisa-
teur.
Les utilisateurs peuvent effectuer des calculs ou tracer des graphiques
de fonctions sans utiliser l’interface de la feuille de travail.
Le pr´esent chapitre est destin´e en priorit´e aux utilisateurs des maplets.
Son contenu peut ´egalement s’av´erer utile aux programmeurs de maplets.
8.1 Exemple de maplet
Vous pouvez cr´eer une interface qui demande l’entr´ee d’information de
la part de l’utilisateur. Par exemple, une maplet d’int´egration pourrait
ressembler ` a l’exemple suivant.
291
292 • Chapitre 8: Les maplets
8.2 Terminologie
maplet Une maplet est une collection d’´el´ements incluant, sans s’y limi-
ter, des fenˆetres et leur disposition, des boˆıtes de dialogue et des actions.
Une mapplet diff`ere des autres fenˆetres et boˆıtes de dialogue en ce qu’elle
contient elle-mˆeme des fenˆetres et des boˆıtes de dialogue.
auteur de maplet Un auteur de maplet est un programmeur qui utilise
du code Maple pour cr´eer une maplet.
utilisateur de maplet Un utilisateur de maplet est quelqu’un qui inter-
agit avec une maplet.
disposition La disposition d´efinit comment les ´el´ements d’une maplet
sont affich´es.
fenetre Une fenˆetre est un ´el´ement d’une maplet. Une fenˆetre ne doit pas
ˆetre vue comme une maplet, mais plutˆ ot comme un ´el´ement de maplet.
Une maplet peut contenir plus d’une fenˆetre, et chaque fenˆetre, ` a son tour,
peut contenir plusieurs ´el´ements r´egissant la disposition et la fonction de
cette fenˆetre.
8.3 Comment d´emarrer le package Maplets • 293
boıte de dialogue Une boˆıte de dialogue est un ´el´ement d’une maplet.
Contrairement ` a une fenˆetre, qui peut contenir d’autres ´el´ements comme
des boutons, une boˆıte de dialogue poss`ede une structure pr´ed´efinie : un
auteur peut sp´ecifier les options d’une boˆıte de dialogue, mais ne peut lui
ajouter d’´el´ements.
8.3 Comment d´emarrer le package Maplets
Si vous recevez une feuille Maple contenant du code provenant du package
Maplets, vous devez d’abord charger ce dernier en m´emoire. Appuyez sur
Enter apr`es ces deux groupes d’ex´ecution possibles.
>
restart:
>
with(maplets[Elements]);
Important : Vous devez poss´eder la version 1.2.2 du Java
TM
Runtime
Environment Version (ou la version 1.3 si vous travaillez sous Red Hat
Linux 7.0) sur votre syst`eme local. Si cet environnement n’est pas install´e,
communiquez avec votre administrateur de syst`eme.
8.4 Comment appeler une maplet `a partir d’une
feuille Maple
Pour d´emarrer une maplet, appuyez sur Enter apr`es les derniers deux-
points (:) ou le dernier point-virgule (;), ou n’importe o` u dans un groupe
d’ex´ecution pour lancer l’ex´ecution du code Maplets. Dans l’exemple sui-
vant, la maplet est ´ecrite en un seul groupe d’ex´ecution. Vous pouvez ap-
puyer sur Enter n’importe o` u dans le groupe d’ex´ecution pour d´emarrer
la maplet.
>
mymaplet := Maplet ([
>
["Hello World", Button("OK", Shutdown())]
>
]):
>
maplets[Display](mymaplet);
Dans l’exemple suivant, la maplet est ´ecrite comme deux groupes
d’ex´ecution. Elle doit ˆetre d´efinie avant d’utiliser la commande Display.
294 • Chapitre 8: Les maplets
>
with(maplets[Elements]):
>
my2maplet := Maplet ([
>
["Hello World #2", Button("OK", Shutdown())]
>
]):
>
maplets[Display](my2maplet);
8.5 Comment fermer une maplet
Si la maplet contient un bouton Cancel, cliquez sur ce bouton. Sinon,
cliquez sur le bouton de fermeture appropri´e pour votre plateforme. Par
exemple :
Sous UNIX :
1. Cliquez sur l’icˆ one – situ´ee dans le coin sup´erieur gauche de la fenˆetre
de la maplet. Un menu d´eroulant apparaˆıt.
Note : Cette icˆ one varie selon votre gestionnaire de th`emes.
2. Choisissez Close.
Sous Windows :
– Cliquez sur l’icˆ one X situ´ee dans le coin sup´erieur droit de la barre
de titre de votre maplet. Cette derni`ere se ferme.
8.6 Comment utiliser les Maplets et la fenetre
Maple (modalit´e)
Lorsqu’une maplet est en cours d’ex´ecution, la feuille Maple est inac-
cessible. Si vous d´eplacez le curseur au-dessus de cette feuille, une icˆ one
(horloge sous UNIX, sablier sous Windows) apparaˆıt, indiquant que la
feuille de travail est inaccessible. La maplet doit ˆetre ferm´ee ou auto-
ris´ee `a compl´eter une action avant que la feuille Maple soit de nouveau
accessible.
8.7 Comment activer la fenetre d’une maplet
1. Cliquez sur un champ de saisie de la maplet. Ce champ apparaˆıt en
surbrillance.
8.8 Comment arreter puis red´emarrer une maplet • 295
2. Entrez l’expression, les nombres ou le texte appropri´es.
8.8 Comment arreter puis red´emarrer une maplet
Lorsque les calculs ` a effectuer par une maplet sont longs, il vous est tou-
jours possible d’interrompre le processus en cours.
1. Pour arrˆeter la maplet en cours, cliquez sur le bouton X (ou l’icˆ one de
fermeture appropri´ee pour votre plateforme) qui figure dans sa barre
de titre.
2. Pour red´emarrer la maplet, ex´ecutez-la ` a nouveau au moyen de l’outil
lastmaplet.
>
maplets[Display](lastmaplet);
8.9 Comment utiliser les raccourcis de l’interface
graphique
Listes d´eroulantes
Certaines maplets contiennent des listes d´eroulantes. Voici comment les
utiliser efficacement.
1. Entrez le premier caract`ere de l’´el´ement de la liste que vous souhaitez
atteindre. La liste se d´eplace automatiquement jusqu’` a un ´el´ement
commen¸ cant par la lettre saisie.
2. Continuez ` a ajouter des caract`eres du nom de l’´el´ement voulu jusqu’` a
ce que la s´election d´esir´ee soit affich´ee en surbrillance.
Remarquez que cette m´ethode ne s’applique pas aux listes d´eroulantes
cr´e´ees avec l’´el´ement ComboBox.
La barre d’espacement et la touche TAB
Vous pouvez utiliser la souris pour cliquer sur un bouton comme Can-
cel ou OK. Vous pouvez ´egalement utiliser les touches Tab et la barre
d’espacement de la mani`ere suivante.
1. Utilisez la touche Tab pour positionner le curseur sur le bouton de
votre choix.
2. Appuyez sur la barre d’espacement. La commande choisie est
ex´ecut´ee.
296 • Chapitre 8: Les maplets
8.10 Conclusion
Pour obtenir plus d’information sur les maplets, reportez-vous ` a la ru-
brique ?maplets ou au Guide d’introduction ` a la programmation (Maple
Introductory Programming Guide), au chapitre 9.
Index
!, 8
π, 12
%, 8
->, 19
:, 28
:=, 18
;, 28
_C, 78
_Z, 55
\, 8
about, 168
add, 176
additionally, 168
affectation multiple, 94
affectations
invalides, 20
nommer, 18
noms valides, 19
affichage du r´esultat
supprimer, 28
afficher
proc´edures, 198
alg`ebre lin´eaire, 91
algsubs, 192
algsubs, 41
animate, 125
coords, 127
frames, 126
animate3d, 128
coords, 129
frames, 128
animations, 211
afficher, 126, 133
en coordonn´ees sph´eriques,
129
en deux dimensions, 125
images des, 126, 128, 133
param´etriques, 3-D, 128
param´etriques, 2-D, 127
tridimensionnelles, 128
annotations, 129, 134
ApproximateInt, 89–91, 227–
229
approximation de fonctions en
s´eries, 68–70
approximations
`a virgule flottante, 9
d´ecimales, 9
arbre des expressions, 186
arithm´etique ´el´ementaire, 6
arrow, 140
assign, 53
assignations
d’ensembles d’´equations, 53
multiples, 21
assigned, 200
assume, 172
additionally, 168
integer, 169
nonnegative, 168
assuming, 172
axes, 131
boˆıte de dialogue, see ma-
plets,boˆıte de dialogue
bordure (bounding box), 116
cˆot´e droit, 182
cˆot´e gauche, 182
cˆones, tracer le graphique, 122
cˆot´e droit d’une ´egalit´e, 39
cˆot´e gauche d’une ´egalit´e, 39
calcul diff´erentiel, 209
297
298 • Index
calcul diff´erentiel, 66–72, 86
Calculus1
ApproximateInt, 89–91,
227–229
Hint, 87–89
Roots, 89
Rule, 86–89
Tangent, 89
Understand, 87
chaˆınes, 31
concat´ener, 194
champ de vecteurs, 138
coeff, 65
coefficients, 65
collect
distributed, 154
coloriage, 124
combine, 37, 158
combiner des listes, 178
commandes, see noms de com-
mandes sp´ecifiques
compter, 40
concat´enation, 194, 205–207
concat´enation
chaˆınes, 32
suites d’expressions, 21
conditions
initiales, 237, 270
cone, 142
conformal, 137
constantes, 12
d’int´egration, 230
continuit´e, prolonger par, 231
contourplot, 137
conversion
sous forme de listes, 276
convert, 35, 275
binary, 14
exp, 35, 166
factorial, 166
hex, 14
list, 35, 195, 276
ln, 166
parfrac, 167
polynom, 194, 216
rational, 167
set, 35, 195
sincos, 166
string, 194
convertir, 35
des expressions en fonctions,
51
en cha
ˆ
ines, 194
en listes et en ensembles, 195
s´eries en polynˆ omes, 194, 216
s´eries en polynˆ omes, 68
coordonn´ees
cylindriques, 121
polaires, 105, 127
et fonctions explicites, 106
et fonctions param´e-
triques, 107
sph´eriques, 119
coordonn´ees polaires, 127
coordonn´ees sph´eriques, 119
correspondance
sur des ensembles, 174
sur des expressions, 187
sur des listes, 174
courbes dans l’espace, 138
cutout, 144
cylinderplot, 121
D, 231, 237, 251
d´enominateurs, 183
d´eriv´ees, 70, 209
d´efinition, 210
partielles, 218, 232
d´eriv´ees partielles, 218
d´efinition, 232
mixtes, 233
d´esaffectation, 203
Index • 299
d´enominateurs, 39
commun, 37, 159
d´evelopper
des expressions, 34
modulo m, 152
degr´e d’un polynˆ ome, 65
degree, 65
denom, 39, 183
densityplot, 137
DEplot, 257
DEplot3d, 259
DESol, 255
deux-points, 28
Diff, 86
diff, 190
differentiation, 86
Digits, 13
Dirac, 75, 263
display, 140
display, 132, 211
divide, 64
dodecahedron, 140
dsolve, 73, 236
explicit, 238
implicit, 238
method=laplace, 239
startinit, 250
type=numeric, 248
type=series, 245
dynamique classique, 238
´ecart type, 95
echo, 277
EDO, 73
conditions initiales, 237
dsolve, 236
m´ethode des transform´ees de
Laplace, 238
num´eriques, 247
s´eries, 245
tracer le graphique, 256
EDP, 266
conditions initiales, 270
tracer le graphique, 269
empty_set, 25
ensembles, 23
convertir en, 195
correspondances, 38
diff´erence, 26
intersection, 24
minus, 26
op´erandes des, 186
op´erations sur les, 25–26
s´electionner dans, 176
union, 24
vides, 25
entiers, 7
calculs sur, 7
commandes pour, 8–9
pr´ecision arbitraire, 8
solutions enti`eres, 60
entiers gaussiens, 15
´equation
d’onde, 266
de la chaleur, 268
´equations
aux d´eriv´ees partielles, 266
cˆ ot´e droit d’une ´egalit´e, 39
cˆ ot´e gauche d’une ´egalit´e, 39
´equations diff´erentielles
syst`emes d’, 78
ordinaires, 73, 236
erreurs d’arrondi, 250
eval, 64, 73, 190, 196
evalf, 10, 210
evaln, 200
´evaluation, 196–207
`a un niveau, 200
`a un nom, 200
assigned, 200
compl`ete, 196
du dernier nom, 197
300 • Index
en un point, 47
et les guillemets, 201
et substitution, 193
evaln, 200
forcer l’´evaluation compl`ete,
198
niveaux, 197
num´erique, 10, 12, 13
retard´ee, 201
´evaluer
des variables locales, 200
matrices, 197
proc´edures, 197
tableaux, 30, 197
tables, 197
exp, 11
Expand, 152
expand, 34, 150
exporter
en HTML, 285
en HTML avec MathML, 286
en L
A
T
E
X, 284
en RTF, 287
en texte, 282
en texte Maple, 283
XML, 288
ExportMatrix, 278
ExportVector, 278
expressions
convertir en fonctions, 51
identification de, 184
ind´etermin´ees des, 188
non ´evalu´ees, 15, 201
op´erandes des, 184
requˆete sur le contenu des,
187
types des, 188
Factor, 157
factor, 34
vs. solve, 65
factorielle, 8
factorisation, 157
modulo p, 157
factoriser, 34, 154
feuilles
sauvegarder, 282
fichiers
´ecrire des colonnes dans, 278
lecture de colonnes depuis,
274
lecture de commandes de-
puis, 276
lecture de donn´ees depuis,
274
fieldplot, 138
fonction de Heaviside, 261
fonction delta de Dirac, 263
fonctions
`a partir d’expressions, 51
affectation, 19
arguments, 20
d´efinies par morceaux, 264
de coloriage, 124
discontinues
tracer le graphique, 108
math´ematiques, 15–16
prolongement par continuit´e,
231
rationnelles
factoriser, 154
forme normale factoris´ee, 159
frac, 169
fractions
d´enominateurs de, 39, 183
num´erateurs de, 39, 183
partielles, 167
sur le mˆeme d´enominateur,
37, 159
fsolve, 56, 221
graphiques, 101–148
Index • 301
graphiques
´echelle de type
constrained, 104
root loci, 139
afficher, 132
afficher les coordonn´ees, 101
algorithme adaptatif pour,
115
animations, see animations,
211
annotations, 129, 134
bordure (bounding box),
116
cartes topographiques, 137
champs de vecteurs, 138
coloriage, 124
conformes, 137
contours, 137
coordonn´ees polaires, 105
coordonn´ees sph´eriques, 119
couleurs, sp´ecifier, 113
courbes dans l’espace, 138
courbes dans l’espace tridi-
mensionnel, 138
courbes param´etriques, 103
cylinderplot, 121
cylindres, 121, 122
dans des fenˆetres s´epar´ees,
288
de densit´e, 137
domaine, 117
EDO, 256
EDP, 269
exporter vers un fichier, 288
fonctions de coloriage, 124
fonctions discontinues, 108
fonctions explicites, 101, 116
fonctions implicites, 135
imprimer, 288
in´egalit´es, 135
ins´er´es, 288
listes de nombres, 275
Matrices, 139
mod`eles d’´eclairage, 124
niveaux de gris, 124
objets, 140
pilotes, 288
plusieurs, 132
raffiner, 115, 123
s´eries, 194
singularit´es, 109
sph`eres, 120
sphereplot, 119
styles de lignes, 112
styles de lignes, sp´ecifier, 112
styles de points, sp´ecifier,
114
sur un axe logarithmique,
136
surface color´ee, 117
surfaces, 116
surfaces param´etriques, 118,
120
tangente, 89
texte, 134
titres, 129, 194, 207
tourner, 116, 142
tracer des points, 113
tracer plusieurs courbes, 111
translater, 142
tridimensionnels, 116
tubes, 138
graphiques param´etriques
2-D, 103
3-D, 118
cylindres, 122
en coordonn´ees polaires, 107
sph`eres, 120
guillemets, 201
guillemets anglais, 31
hastype, 188
302 • Index
Heaviside, 239, 261
hemisphere, 143
Hint, 87–89
histogrammes, 97, 139
HP Laserjet, 289
HTML, 285
hypoth`eses
poser, 168
retirer, 72, 171
voir, 168
implicitplot, 135
ImportMatrix, 274
imprimer
des graphiques, 288
ind´etermin´ees, 188
indets, 188
inequal, 135
infolevel, 158, 169
int´egrales, 70, 227, 230
constantes des, 230
d´efinies, 71, 229
de Riemann, 227
ind´efinies, 70, 229
int´egrales, 91
interface
echo, 277
verboseproc, 199
inttrans package, 242
invlaplace, 243
is, 170, 180
isolate, 211
isolve, 60
Java Runtime Environment, 293
laplace, 242
L
A
T
E
X, 280, 284
lecture
de code, 276
de colonnes, 274
de commandes, 276
de fichiers, 276
length, 32, 181
lhs, 39, 182
lightmode, 124
Limit, 66, 87, 91
limites, 66, 87, 212
LinearAlgebra, 91
listes, 22
´el´ements de, 22
combiner, 178
convertir en, 195
correspondances, 38
d´esordonn´es, 23
op´erandes des, 186
op´erations sur les, 25–26
ordonn´ees, 22
s´electionner dans, 176
trier, 179
vides, 25
loglogplot, 136
logplot, 136
Loi du refroidissement de New-
ton, 251
majuscules-minuscules, 12
map, 24, 38, 174
map2, 174
Maple Animation Gallery, 145
Maple Application Center, 145
Maple Graphics Gallery, 145
Maple Introductory Program-
ming Guide, 296
Maplets, 291–296
maplets
activer, 294
arrˆeter, 295
auteur, 292
boˆıte de dialogue, 292
champ de saisie, 294
ComboBox, 295
Display, 293
Index • 303
disposition, 292
Elements, 293
exemple de l’int´egration, 291
fenˆetre, 292
fermer, 294
listes d´eroulantes, 295
raccourcis, 295
red´emarrer, 295
travailler avec, 294
utilisateur, 292
MathML, 286
Matlab, 93
matrices
´evaluer, 197
Transpose, 276
matrixplot, 139
max, 226
mise en page, 280
mod, 14
d´evelopper, 152
factorisation, 157
mod`eles d’´eclairage, 124
modp, 15
mods, 15
modulo, 14–15
moyenne, 95
msolve, 60
mul, 176
niveaux d’´evaluation, 197
nombre d’op´erandes, 40
nombres ` a virgule flottante, 12–
14
pr´ecision par d´efaut, 12
vs. nombres rationnels, 9–11
nombres complexes, 14
nombres d´ecimaux, 12–14
nombres imaginaires, 14
nombres rationnels, 7–10
vs. nombres ` a virgule flot-
tante, 9–11
nommer, 18
nops, 23, 40, 184
normal, 37
expanded, 160
notation fl`eche, 19
notation indic´ee, 25
noyau, 79
num´erateurs, 183
num´erateurs, 39
numer, 39, 183
objet
graphique, 140
objets graphiques, 140
odeplot, 248, 264
oleplot, 262
op, 40, 184
op, 226
op´erandes
de listes et d’ensembles, 186
des expressions, 184
nombre de, 40, 184
s´electionner, 184
op´erateur idem, 8
optimisation
lin´eaire, 97
Order, 68, 251
packages
charger, 80
liste des, 81
utiliser des commandes dans
les, 79
PDEplot, 270–271
pi, 12
piecewise, 264
graphiques, 108
plex, 62
color
color, 113
plot
304 • Index
color, 112
discont, 109, 111
labels, 130
labelsfont, 130
legend, 131
linestyle, 112
numpoints, 115
style=hidden, 117
style=line, 114
symbol, 114
symbolsize, 114
title, 129, 194
plot3d, 116
axes, 131
grid, 123
lightmodel, 124
shading, 124
plots
animate, 125
animate3d, 128
arrow, 140
plotsetup, 288
plottools, 140
plusieurs assignations, 21
plusieurs courbes dans un gra-
phique, 111
plusieurs graphiques, 132
point-virgule, 28
pointplot, 113
polynˆ omes, 61–66
coefficients de, 63, 65
d´evelopper, 150
degr´e de, 65
division de, 63
factoriser, 154
regrouper les termes, 152
reste, 63
trier les ´el´ements, 164–166
PostScript, 289
pr´ecision
entiers, 8
print, 27
proc´edures
´evaluer, 197
afficher, 198
prolonger par continuit´e, 231
quo, 63
quotient
polynˆ omes, 63
remember tables, 232
r´esultats, exacts vs. approxima-
tifs, 9
r´esoudre
ensembles d’´equations, 45
ensembles de variables, 45
et v´erifier, 47–49
in´egalit´es, 49
modulo m, 60
num´eriquement, 56
r´ecurrences, 61
solutions enti`eres, 60
syst`emes d’´equations, 46, 49
rationalize, 157
read, 277
relations accessoires, 33, 41, 192
relations de r´ecurrence, 61
rem, 63
remove, 177
restart, 280
reste de polynˆ omes, 63
retarder l’´evaluation, 201
retirer des hypoth`eses, 171
rhs, 39, 182
rootlocus, 139
RootOf, 55, 187
supprimer les occurrences
de, 55
Roots, 89
rotate, 142
Index • 305
RowSpace, 92
rsolve, 61
RTF, 287
Rule, 86–89
s´electionner
dans des listes et des en-
sembles, 176
des constantes r´eelles, 214
des sous-expressions, 184,
187
op´erandes, 184
s´eries, 245
convertir en polynˆ omes, 194
s´eries de Taylor, 193, 215, 227,
251, 253
s´eparateurs de commandes, 28
sauvegarder
listes de nombres, 278
matrices, 278
tableaux de nombres, 278
save, 279
select, 176
has, 188
hastype, 188
realcons, 214
type, 188
selectremove, 177
semilogplot, 136
seq, 201, 252
seq, 175
series, 68
simplex, 97
simplifications, 32–35
au moyen des relations acces-
soires, 33, 41
sp´ecifier les r`egles, 33
simplify, 33, 41, 161–164
au moyen des relations acces-
soires, 163, 192
avec hypoth`eses, 163
singularit´es, graphiques, 109
NewtonQuotient, 210
solutions
multiples, 49
param´etriques, 46
solve, 219
vs. factor, 65
sommes de Riemann, 89, 228
sort, 62, 164–166, 179
sous-expressions, 40
spacecurve, 138
specfunc, 189
sph`eres, 120
sphere, 141
sphereplot, 119
spirales, 107, 123
sqrt, 11
startinit, 250
stats, 94
stellate, 143
Student
Calculus1, 86–91
subs, 29, 191, 192
subsop, 193
substitutions, 29, 190
suites d’expressions, 20
sum, 201
supprimer l’affichage du r´esultat,
28
tableaux, 26
´evaluer, 30, 197
choisir les ´el´ements, 28
correspondances, 38
imprimer, 27
tables, 30
´evaluer, 197
tables de rappel, 232
Tangent, 89
tangente
tracer le graphique, 89
306 • Index
tests de primalit´e, 8
T
E
X, 280
texte Maple, 283
texte, exporter, 282
textplot, 134
textplot3d, 134
titres
de graphiques, 129, 194, 207
tourner des graphiques tridimen-
sionnels, 116
trac´e adaptatif de graphiques,
115
transform´ees de Laplace, 238,
242
inverse, 243
translate, 142
Transpose, 276
triangle de Pascal, 175
trier
d´efinir une relation d’ordre,
180
des listes, 179
des polynˆ omes, 62
en ordre lexicographique, 62,
166, 179
en ordre num´erique, 179
les ´el´ements d’une expres-
sion, 164–166
par degr´e total, 165
par longueur, 181
tubeplot, 138
type, 177, 188
specfunc, 189
types de donn´ees, 20
unapply, 51, 211
Understand, 87
variables locales, ´evaluer, 200
vecteurs, 92
transpos´ee de, 92
verboseproc, 199
whattype, 184
XML, 288
zip, 178

ii •

Waterloo Maple Inc. 57 Erb Street West Waterloo, ON N2L 6C2 Canada

Maple et Maple 8 sont des marques d´pos´es de Waterloo Maple Inc. e e c 2002, 2001, 2000, 1998, 1996 Waterloo Maple Inc. Tous droits r´serv´s. La reproduction ou la traduction, mˆme partielle, e e e e e e par quelque proc´d´ que ce soit, est interdite sans l’autorisation ´crite du e ` d´tenteur des droits d’auteur, a l’exception de courts extraits en rapport avec un compte rendu ou une analyse savante. L’utilisation en relation avec quelque forme de stockage et de recherche d’information, d’adaptae e tion ´lectronique, de logiciel d’ordinateur, ou avec toute autre m´thode e e semblable ou diff´rente, connue ou conue ult´rieurement, est interdite. L’utilisation de noms descriptifs g´n´raux, de noms d´pos´s, de e e e e marques de commerce, etc., dans la pr´sente publication, mˆme s’ils ne e e sont pas express´ment d´sign´s, n’est pas une indication que de tels noms, e e e e en vertu de la Loi sur les marques de commerce, peuvent cons´quemment ˆtre librement employ´s par quiconque. e e Imprim´ au Canada e ISBN 1-894511-33-6

Table des mati`res e

1 Introduction ` Maple a 1.1 Les autres manuels . . . . . . . . . . . . . . . . . . . . . . 2 Math´matiques de base avec Maple e 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Calculs num´riques . . . . . . . . . . . . . . . . . . . . . . e Calculs sur des entiers . . . . . . . . . . . . . . . . . . . . Arithm´tique exacte – Rationnels, irrationnels et constantes e Approximations a virgule flottante . . . . . . . . . . . . . ` Arithm´tique avec des nombres sp´ciaux . . . . . . . . . . e e Fonctions math´matiques . . . . . . . . . . . . . . . . . . e 2.3 Calculs symboliques de base . . . . . . . . . . . . . . . . . 2.4 Affecter des noms a des expressions . . . . . . . . . . . . . ` 2.5 Les principaux types d’objets Maple . . . . . . . . . . . . Les suites d’expressions . . . . . . . . . . . . . . . . . . . Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . Les op´rations sur les ensembles et les listes . . . . . . . . e Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . Les tables . . . . . . . . . . . . . . . . . . . . . . . . . . . Les chaˆ ınes . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 La manipulation d’expressions . . . . . . . . . . . . . . . . La commande simplify . . . . . . . . . . . . . . . . . . . La commande factor . . . . . . . . . . . . . . . . . . . . La commande expand . . . . . . . . . . . . . . . . . . . . La commande convert . . . . . . . . . . . . . . . . . . . . La commande normal . . . . . . . . . . . . . . . . . . . . La commande combine . . . . . . . . . . . . . . . . . . . . La commande map . . . . . . . . . . . . . . . . . . . . . . Les commandes lhs et rhs . . . . . . . . . . . . . . . . . iii

1 3 5 5 7 7 9 12 14 15 16 18 20 20 22 23 25 26 30 31 32 33 34 34 35 37 37 38 39

iv

Table des mati`res e

2.7

Les commandes numer et denom . . . . . . . . . . . . . Les commandes nops et op . . . . . . . . . . . . . . . Questions courantes sur la manipulation d’expressions Conclusion . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

39 40 41 43 45 45 47 49 50 51 53 55 56 57 60 60 60 61 61 62 64 65 65 67 73 79 81 81 86 91 93 94 97 99 101 101 103 105 108

3 Trouver des solutions 3.1 R´solution au moyen de solve . . . . . . . . e V´rifier les solutions . . . . . . . . . . . . . . e Restreindre les solutions . . . . . . . . . . . . Explorer les solutions . . . . . . . . . . . . . . La commande unapply . . . . . . . . . . . . . La commande assign . . . . . . . . . . . . . La commande RootOf . . . . . . . . . . . . . 3.2 R´soudre num´riquement : fsolve . . . . . . e e Les limites de solve . . . . . . . . . . . . . . 3.3 D’autres solveurs . . . . . . . . . . . . . . . . Trouver des solutions enti`res . . . . . . . . . e Trouver des solutions modulo m . . . . . . . R´soudre des relations de r´currence . . . . . e e 3.4 Les polynˆmes . . . . . . . . . . . . . . . . . o Tri et regroupement . . . . . . . . . . . . . . Op´rations math´matiques . . . . . . . . . . e e Coefficients et degr´s . . . . . . . . . . . . . . e Recherche de racines et factorisation . . . . . 3.5 Le calcul diff´rentiel . . . . . . . . . . . . . . e 3.6 Les ´quations diff´rentielles : dsolve . . . . . e e 3.7 L’organisation de Maple . . . . . . . . . . . . 3.8 Les packages Maple . . . . . . . . . . . . . . . Liste des packages . . . . . . . . . . . . . . . Le package Student Calculus1 (une variable) . Le package LinearAlgebra . . . . . . . . . . . Le package Matlab . . . . . . . . . . . . . . . Le package Statistics . . . . . . . . . . . . . . Le package d’optimisation lin´aire . . . . . . e 3.9 Conclusion . . . . . . . . . . . . . . . . . . . 4 Tracer des graphiques 4.1 Graphiques en deux dimensions Les graphiques param´triques . e Les coordonn´es polaires . . . . e Les fonctions discontinues . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Table des mati`res e

• v

4.2

4.3

4.4 4.5 4.6 4.7 4.8 4.9

Graphiques multiples . . . . . . . . . . . . . . Tracer des points . . . . . . . . . . . . . . . . Raffiner des graphiques . . . . . . . . . . . . Graphiques en trois dimensions . . . . . . . . Les graphiques param´triques . . . . . . . . . e Les coordonn´es sph´riques . . . . . . . . . . e e Les coordonn´es cylindriques . . . . . . . . . e Raffiner des graphiques . . . . . . . . . . . . Mod`les de coloriage et d’´clairage . . . . . . e e L’animation . . . . . . . . . . . . . . . . . . . L’animation en deux dimensions . . . . . . . L’animation en trois dimensions . . . . . . . . Annoter des graphiques . . . . . . . . . . . . Les graphiques composites . . . . . . . . . . . Placer du texte dans les graphiques . . . . . . Quelques graphiques particuliers . . . . . . . Manipuler des objets graphiques . . . . . . . Code des graphiques des planches en couleurs Conclusion . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

111 113 115 116 118 119 121 123 124 125 125 128 129 132 134 135 140 145 147 149 149 150 152 154 157 158 159 161 163 163 164 166 168 168 172 173 174 176 178 179

5 L’´valuation et la simplification e 5.1 Manipulations math´matiques . . . . . . . . . . . . . . e D´velopper des polynˆmes en sommes . . . . . . . . . e o Regrouper les coefficients de mˆme degr´ . . . . . . . . e e Factoriser des polynˆmes et des fonctions rationnelles o Supprimer des exposants rationnels . . . . . . . . . . . Combiner des termes . . . . . . . . . . . . . . . . . . . e Forme normale factoris´e . . . . . . . . . . . . . . . . Simplifier des expressions . . . . . . . . . . . . . . . . Simplification avec des hypoth`ses . . . . . . . . . . . e Simplification au moyen des relations accessoires . . . Trier des expressions alg´briques . . . . . . . . . . . . e Conversion entre diff´rentes formes . . . . . . . . . . . e 5.2 Les hypoth`ses . . . . . . . . . . . . . . . . . . . . . . e La commande assume . . . . . . . . . . . . . . . . . . La commande assuming . . . . . . . . . . . . . . . . . 5.3 Manipulations structurelles . . . . . . . . . . . . . . . Appliquer une fonction a une liste ou un ensemble . . ` Choisir des ´l´ments dans une liste ou un ensemble . . ee Combiner deux listes . . . . . . . . . . . . . . . . . . . Trier des listes . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

vi

Table des mati`res e

5.4

5.5

Les parties d’une expression . . . . . . . . . . . . . . . . . La substitution . . . . . . . . . . . . . . . . . . . . . . . . Changer le type d’une expression . . . . . . . . . . . . . . Les r`gles d’´valuation . . . . . . . . . . . . . . . . . . . . e e Niveaux d’´valuation . . . . . . . . . . . . . . . . . . . . . e ´ Evaluation du dernier nom . . . . . . . . . . . . . . . . . ´ Evaluation a un niveau . . . . . . . . . . . . . . . . . . . . ` Commandes avec des r`gles sp´ciales d’´valuation . . . . . e e e Empˆcher l’´valuation d’une expression . . . . . . . . . . e e Utiliser les variables entour´es de guillemets comme argue ments de fonctions . . . . . . . . . . . . . . . . . . Concat´nation de noms . . . . . . . . . . . . . . . . . . . e Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . .

182 190 193 196 196 197 200 200 201 204 205 207 209 209 209 215 227 231 235 236 251 255 256 261 266 266 268 269 271 273 273 274 276 278 278 279 280 282

6 Exemples tir´s du calcul diff´rentiel e e 6.1 Calcul diff´rentiel ´l´mentaire . . . . . . . . . . . . . . . e ee La d´riv´e . . . . . . . . . . . . . . . . . . . . . . . . . . e e Une approximation de Taylor . . . . . . . . . . . . . . . L’int´grale . . . . . . . . . . . . . . . . . . . . . . . . . . e D´riv´es partielles mixtes . . . . . . . . . . . . . . . . . e e ´ 6.2 Equations diff´rentielles ordinaires . . . . . . . . . . . . e La commande dsolve . . . . . . . . . . . . . . . . . . . Un exemple : les s´ries de Taylor . . . . . . . . . . . . . e Lorsqu’une solution explicite est impossible a trouver . . ` Tracer le graphique d’´quations diff´rentielles ordinaires e e Coefficients discontinus d’une ´quation . . . . . . . . . . e ´ e e 6.3 Equations aux d´riv´es partielles . . . . . . . . . . . . . La commande pdsolve . . . . . . . . . . . . . . . . . . . e Changer la variable d´pendante dans une EDP . . . . . Tracer le graphique d’´quations aux d´riv´es partielles . e e e 6.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

7 Entr´es et sorties e 7.1 Lire des fichiers . . . . . . . . . . . . . . . . . . . . . . . . Lire des colonnes de nombres depuis un fichier . . . . . . Lire des commandes depuis un fichier . . . . . . . . . . . . ´ 7.2 Ecrire des donn´es dans un fichier . . . . . . . . . . . . . e ´ Ecrire des colonnes de donn´es num´riques dans un fichier e e Sauvegarder des expressions au format interne de Maple . A Convertir au format L TEX . . . . . . . . . . . . . . . . . . 7.3 Exporter des feuilles compl`tes . . . . . . . . . . . . . . . e

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 e Comment appeler une maplet a partir d’une feuille Maple 293 ` Comment fermer une maplet . . . . . . . . . . . . . . . . . 296 . . . . . . . Texte Maple . . . A L TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Conclusion . . . . . . . . . . . . . . . . . . . . 294 Comment utiliser les Maplets et la fenˆtre Maple (modalit´)294 e e Comment activer la fenˆtre d’une maplet . . . . . . . .9 Texte . . . . Imprimer des graphiques . . . . . . . 295 Listes d´roulantes . . . . . . . . . .5 8 Les 8. . .6 8. . . . . . . . . . . . . . . . .Table des mati`res e • vii 7. . .4 8. . . 282 283 284 285 287 288 288 290 maplets 291 Exemple de maplet . . . . . . . . . . . . . . . . .3 8. . Conclusion . 292 Comment d´marrer le package Maplets .5 8. . . . . . . . . . . . . . . . . . . . . 294 e Comment arrˆter puis red´marrer une maplet . . . . . . XML .7 8. . . . . .4 7. . . . .2 8. . . . . . HTML et HTML avec MathML RTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 e La barre d’espacement et la touche Tab . . . . . . . . . . . . . 295 8. . . . . . . . . . . . . . . . . . . 291 Terminologie . . . . . .8 8. 295 e e Comment utiliser les raccourcis de l’interface graphique . . . . . . . . . . . . . . . . . . . . . . .1 8. . . . . . . . . . . .

´quations diff´rentielles et probl`mes e e e e e e d’alg`bre lin´aire. Une feuille est un document flexible permettant d’explorer des id´es math´matiques et de cr´er des rapports complexes. qui requi`rent des valeurs num´riques pour toutes leurs variables. En compl´ment a ces op´rations symboliques. On acc`de facilement a l’´tendue des fonctions math´matiques de e ` e e Maple par son interface graphique prenant la forme de feuilles (worksheets ). Les chercheurs de plusieurs domaines consid`rent ´galement Maple e e comme un outil essentiel a leur travail. des algorithmes num´riques fournissent des r´ponses e e approxim´es aux probl`mes ne poss´dant pas de solution exacte. En effet. e Cette capacit´ symbolique permet a Maple de calculer des solutions e ` analytiques exactes a de nombreux probl`mes math´matiques incluant ` e e syst`mes d’´quations. une vaste e e e ` e gamme de routines graphiques facilite la visualisation de donn´es math´e e matiques complexes . e e sait ´galement manipuler les expressions et les symboles sous-jacents. Ces e utilisateurs gagnent en rapidit´ dans la r´solution de probl`mes math´e e e e matiques courants et consignent les r´sultats de leurs calculs dans des e rapports techniques professionnels. contrairement aux logiciels math´matiques stane e dard.1 Introduction ` Maple a On appelle le logiciel Maple un syst`me de calcul symbolique. et un lane e e gage de programmation complet et accessible permet le d´veloppement sur e mesure de nouvelles fonctions et applications. ´voquant e e ainsi sa capacit´ ` manipuler l’information de mani`re symbolique ou e a e alg´brique. Maple est en effet tout indiqu´ pour ` e 1 . leurs c a ee chiffriers et mˆme leurs langages de programmation tel FORTRAN. Les ing´nieurs et les professionnels dans des industries aussi vari´es e e que l’agriculture et l’a´rospatiale utilisent Maple comme un outil puissant e rempla¸ant ` la fois leurs manuels de r´f´rence. leurs calculatrices. int´grales. tout en demeurant capable d’´valuer des expressions num´riques. e e e Les utilisateurs de Maple ont trouv´ plusieurs mani`res d’utiliser son e e langage et ses feuilles. e e Maple.

Chacun utilise Maple d’une mani`re toute personnelle selon ses bee soins . structur´s et dynamiques ou de modifier une ´quation et d’ace e tualiser sa solution automatiquement. Traditionnellement. Le langage math´matique naturel e de Maple facilite l’entr´e des ´quations. facilement et efficacement. et permet le calcul et le trac´ e e e de graphiques sur demande. leurs ´tudiants ` e e peuvent ainsi se concentrer sur les concepts fondamentaux. il est possible d’en apprendre beaucoup sur e e un probl`me.2 • Chapitre 1: Introduction ` Maple a la formulation. Que ce soit pour le e e e d´veloppement d’un nouveau mod`le math´matique ou pour l’analyse e e e d’une strat´gie financi`re. e e lorsqu’on travaille sur un probl`me. Ces caract´ristiques facilitent la r´daction de rapports e e ou mˆme d’ouvrages math´matiques et sont aussi appropri´es pour la e e e cr´ation et la pr´sentation d’expos´s. Il est en effet possible de cr´er des documents e interactifs. e e e Son caract`re symbolique ´largit grandement l’´ventail des probl`mes e e e e qu’ils peuvent ainsi traiter. les styles font clairement ressortir e e ee les mots cl´s et les titres . Maple permet a son e ` utilisateur de se concentrer sur de beaucoup plus grands probl`mes en e le lib´rant d’erreurs m´caniques . Plusieurs types de documents peuvent profiter des caract´ristiques e des feuilles Maple. son interface documente les ´tapes de e e e sa recherche d’une solution. ` e e ` ` Puisque les composantes des feuilles sont directement associ´es a la struce ` ture du document. e La seconde cat´gorie utilise Maple en tant que syst`me de cr´ation e e e de documents techniques. Les professeurs emploient Maple en classe. deux grandes cat´gories d’utilisation dominent. cependant. ravivant l’enseignement traditionnel au coll`ge et a l’universit´ en introduisant des probl`mes e ` e e et des exercices qui exploitent l’interactivit´ du logiciel. RTF ou HTML. De plus. e La premi`re cat´gorie consiste en l’utilisation de Maple comme d’un e e environnement interactif de r´solution de probl`mes. la r´solution et l’exploration de mod`les math´matiques. la division en souse e e sections cache des sections arides et riches en d´tails qui peuvent ˆtre e e distrayantes aux yeux de l’observateur . la division en e sous-sections et les hyperliens. Par exemple. les hyperliens autorisent la cr´ation de r´f´rences dynamiques qui am`nent le lecteur aux pages renfermant de l’information e . l’essai d’une m´thode de r´solution e e e n´cessite parfois plusieurs heures et plusieurs pages. les documents Maple peuvent ˆtre e structur´s en utilisant des outils modernes tels les styles. ou mˆme d’en ins´rer une nouvelle. cr´ant ainsi des feuilles qui sont non seulee ment claires et faciles a cr´er. mais ´galement faciles a mettre a jour. il est facile de les traduire en d’autres formats comme A L TEX. Elle permet aussi de modifier ais´ment l’une e de ces ´tapes. Plutˆt que de e o s’astreindre a des manipulations alg´briques fastidieuses.

En effet. et introduisant les obe e jets Maple. l’aide en ligne constie tuera votre manuel de r´f´rence. la cr´ation d’animations e e e et l’exportation de feuilles en d’autres formats. Ces guides e peuvent toutefois etre achet´s chez des libraires sp´cialis´s ou directement aupr`s de e e e e Waterloo Maple Inc. ` Consid´rez ce livre d’abord comme un guide .1 Les autres manuels • 3 compl´mentaire. la nature interactive de Maple permet de calcue ler et de r´pondre a des questions durant une pr´sentation. Ce livre constitue votre introduction a Maple. mais ´galement sur le trac´ de graphiques. Plus important encore. Ces quelques concepts simples vous permettront e d’utiliser Maple a son meilleur. Programming Guide) Le Guide de prise en main (Getting Started Guide) contient une introduction a l’interface graphique et un tutoriel r´sumant l’utilisation ` e La version ´tudiante n’inclut pas les deux guides de programmation. le Guide d’introduction a la programmation (Maple 8 Introductory Program` ming Guide) et le Guide de programmation avanc´e (Maple 8 Advanced e 1. Vous trouverez ´galement des exemples que vous poue vez copier. Une e ` attention particuli`re est plac´e non seulement sur la recherche de solue e tions. le syst`me d’aide de Maple se r´v`le plus pratique que tout autre e e e texte traditionnel. Ce manuel vous donnera un aper¸u des fonctionnalit´s de Maple. 1 . Enfin. puisque l’on peut y rechercher ee de l’information de plusieurs mani`res et qu’il se trouve toujours accese sible. coller et ex´cuter imm´diatement. d´crivant a c e e ` la fois ses capacit´s symboliques et num´riques. On peut ainsi e ` e clairement et efficacement d´montrer pourquoi une m´thode de r´solution e e e a priori acceptable s’av`re en fait inappropri´e. Il discute syst´mati` e quement des concepts cl´s et construit un cadre d’apprentissage qui vous e guidera dans votre utilisation de l’interface et du langage Maple. e e 1.1 Les autres manuels Trois autres manuels (en anglais) d´crivent le fonctionnement de Maple : e le Guide de prise en main (Maple 8 Getting Started Guide). il pr´sente la philosophie et les m´thodes d’utilisation sugg´r´es par les e e ee concepteurs du syst`me.1. ou pourquoi une modifie e cation a un processus de manufacturation entraˆ des pertes ou engendre ` ıne des profits. les commandes et les m´thodes mises a votre disposition.

les entr´es-sorties. A l’int´rieur. les proc´dures. le d´bogage et e e e e e les Maplets. e . les structures de donn´es. sur e les exemples de feuilles de travail ainsi que sur le site Web de Waterloo Maple. Enfin. les graphiques et le code e e compil´. le Guide de programmation avanc´e (Advanced Programming e Guide) couvre des concepts de programmation comme les modules.4 • Chapitre 1: Introduction ` Maple a de Maple pour r´soudre des probl`mes math´matiques et cr´er des doe e e e ` cuments techniques. sur le tour guid´ du logiciel (New User’s Tour ). vous y trouverez de l’information supe pl´mentaire a l’intention des nouveaux utilisateurs au sujet du syst`me e ` e d’aide en ligne. la programmation num´rique. les boucles et les e m´canismes de d´cision. Le Guide d’introduction a la programmation (Introductory Program` ming Guide) pr´sente les concepts fondamentaux de la programmation e sous Maple : les expressions. les entr´es-sorties.

dans d’autres cas. Ce chapitre explique les commandes n´cessaires pour commencer e a ` travailler. Pour obtenir de e l’aide a propos d’une commande. du sujet sur lequel vous souhaitez obtenir plus d’information. qui diff`rent l´g`rement de ceux effectu´s par d’autres e e e e applications. ?commande 2. Maple peut e fonctionner comme une calculatrice traditionnelle avec les entiers et les 5 . Les chapitres subs´quents donneront a ces commandes ainsi e ` qu’` d’autres un traitement plus approfondi. tapez simplement a l’invite Maple un ` ` point d’interrogation (?) suivi du nom de la commande ou. a Si vous souhaitez comprendre davantage les rouages du syst`me e Maple.2 Math´matiques de base e avec Maple Ce chapitre commence par une discussion a propos des calculs num´riques ` e exacts avec Maple. Les deux derni`res sections ´noncent les e e principaux types d’objets de base et donnent des instructions concernant la manipulation d’objets et les commandes les plus utiles a cet ´gard. vous pouvez utiliser le syst`me d’aide en ligne. Des renseignements sur les calculs symboliques de base et les commandes d’affectation suivent. ` e Vous tirerez le meilleur parti de ce livre en utilisant votre ordinateur pour esssayer les diff´rents exemples que vous rencontrerez au fil de votre e lecture.1 Introduction Les calculs les plus simples dans Maple sont num´riques.

3 > 1 + 3/2.6 • Chapitre 2: Math´matiques de base avec Maple e nombres a virgule flottante. Le r´sultat de 1 + 1/2 est 3/2.d. e > 1 + 1/2. 3 2 Remarquez que Maple effectue des calculs exacts avec des nombres e rationnels. 100 13 > 2. l’origine et la structure d’un nombre comme N. et non 1. le nombre rationnel 3/2 et son approximation d´cimale 1. 1 . 1. Pour Maple. Entrez l’expression en utilisant la syntaxe ` naturelle1 . et non la virgule.437700000 Bien entendu. 5 2 > 2*(3+1/3)/(5/3-4/5). Un point-virgule indique la fin de chaque calcul. Maple peut faire beaucoup plus.5 sont deux objets e compl`tement diff´rents. : Le logiciel Maple utilise la syntaxe anglo-saxonne pour la repr´sentation e des nombres d´cimaux. e e La possibilit´ de repr´senter des expressions de mani`re exacte permet e e e a ` Maple de pr´server beaucoup plus d’information a propos de leur origine e ` et de leur structure. > 1 + 2.t. comme vous pourrez le voir bientˆt. consid´rez cet exemple simple.8754/2. C’est donc le point. o Pour le moment.5. qu’il faut utiliser pour e saisir de tels nombres. Par exemple.

Il peut manipuler les e entiers. e 2.3.2. 60 . Maple peut travailler non seulement avec des nombres rationnels.2 Calculs num´riques e • 7 0. les polynˆmes sur un anneau ainsi que plusieurs autres constructions math´matiques. 15 > 120/2. > 1 + 2. l’avantage en sera d’autant plus grand. les variables. les nombres a virgule flottante. les ` o suites.2 Calculs num´riques e Calculs sur des entiers Les calculs sur des entiers sont directs. les ensembles. De plus.5235987758 est beaucoup moins ´vidente que pour une quantit´ exacte comme e e 1 π 6 Lorsque vous commencerez a travailler avec des expressions plus com` plexes. 3 > 75 . Maple est un langage de programmation e complet contenant des proc´dures. des tableaux et d’autres structures de e donn´es. 72 > 5*3. mais ´galement avec des expressions arbitraires. N’oubliez pas de terminer chaque commande par un point-virgule.

8 •

Chapitre 2: Math´matiques de base avec Maple e

Maple peut ´galement travailler avec des nombres entiers arbitrairee ment grands. La limite pratique sur les entiers est d’environ 228 chiffres, en fonction principalement de la vitesse et des ressources de votre ordinateur. Maple n’´prouve aucun probl`me a calculer de grands entiers, e e ` compter le nombre de chiffres d’un nombre ou factoriser des entiers. Pour des nombres et d’autres types de donn´es qui s’´tendent sur plus d’une e e ligne a l’´cran, Maple utilise le caract`re (\) pour indiquer que le r´sultat ` e e e est continu. La barre oblique et la coupure de ligne doivent ˆtre ignor´es. e e
> 100!;

933262154439441526816992388562667004907\ 15968264381621468592963895217599993229\ 91560894146397615651828625369792082722\ 37582511852109168640000000000000000000\ 00000
> length(%);

158 La r´ponse indique le nombre de chiffres contenus dans le dernier e exemple. L’op´rateur idem (%) est tout simplement une notation abr´g´e e e e affichant le r´sultat pr´c´dent. Pour rappeler le deuxi`me ou le troisi`me e e e e e r´sultat pr´c´dent, utilisez respectivement %% et %%%. e e e
> ifactor(60);

(2)2 (3) (5) En plus de ifactor, Maple poss`de plusieurs commandes pour trae vailler avec des entiers permettant le calcul du plus grand commun diviseur (PGCD) de deux entiers, la division euclidienne et les tests de primalit´. Consultez les exemples ci-dessous ainsi que la table 2.1. e
> igcd(123, 45);

3
> iquo(25,3);

2.2 Calculs num´riques e

• 9

Tab. 2.1 – Commandes op´rant sur des entiers e Fonction abs factorial iquo irem iroot isqrt max, min mod surd Description valeur absolue d’une expression factorielle d’un entier quotient d’une division enti`re e reste d’une division enti`re e racine enti`re approxim´e d’un entier e e racine carr´e enti`re approxim´e d’un entier e e e maximum et minimum d’un ensemble d’entr´es e arithm´tique modulo e racine r´elle d’un entier e

8
> isprime(18002676583);

true

Arithm´tique exacte – Rationnels, irrationnels et constantes e
Une propri´t´ importante de Maple est sa capacit´ ` effectuer l’arithm´ee ea e tique rationnelle exacte, et ainsi de travailler avec des nombres rationnels (fractions) sans avoir a les r´duire a leurs approximations d´cimales. ` e ` e
> 1/2 + 1/3;

5 6 Maple g`re les nombres rationnels et produit un r´sultat exact. La e e e distinction entre des r´sultats exacts et approximatifs est importante. La facult´ d’effectuer des calculs exacts au moyen d’ordinateurs vous permet e de r´soudre une toute nouvelle gamme de probl`mes. e e Maple peut effecter des approximations en virgule flottante si n´cese saire. En fait, le logiciel peut travailler avec des nombres a virgule flottante ` de plusieurs milliers de chiffres pour des estimations pr´cises d’expressions e exactes.
> Pi;

10

Chapitre 2: Math´matiques de base avec Maple e

π
> evalf(Pi, 100);

3.1415926535897932384626433832795028841\ 97169399375105820974944592307816406286\ 208998628034825342117068 Il est important d’apprendre comment Maple distingue les repr´sene tations exactes des valeurs de leurs approximations d´cimales. e Voici un exemple de nombre rationnel (exact).
> 1/3;

1 3 Le nombre suivant est son approximation d´cimale (avec une pr´cision e e par d´faut de dix chiffres). e
> evalf(%);

0.3333333333 Ces r´sultats ne sont pas les mˆmes math´matiquement, et ne sont e e e pas non plus les mˆmes pour Maple. e Chaque fois que vous entrez un nombre sous forme d´cimale, e Maple le consid`re comme une approximation a virgule flottante. En e ` fait, la pr´sence d’un nombre d´cimal dans une expression force Maple a e e ` produire un r´sultat en virgule flottante, puisqu’il ne peut ˆtre certain e e de produire une solution exacte, mˆme a partir de donn´es partiellement e ` e exactes.
> 3/2*5;

15 2
> 1.5*5;

7.5

2.2 Calculs num´riques e

• 11

e Ainsi, il est recommand´ de n’utiliser des nombres d´cimaux que e lorsque vous souhaitez forcer Maple a travailler avec des expressions ` non exactes. Vous pouvez saisir des quantit´s exactes en utilisant la repr´sentation e e symbolique, comme π, comparativement a 3.14. Maple traite les nombres ` irrationnels comme des quantit´s exactes. Voici comment repr´senter la e e racine carr´e de 2 dans Maple. e
> sqrt(2);

2

Voici un autre exemple de racine carr´e. e
> sqrt(3)^2;

3 Maple connaˆ les constantes arithm´tiques standard comme π et la ıt e base des logarithmes naturels, e. Il travaille avec ces nombres comme avec des quantit´s exactes. e
> Pi;

π
> sin(Pi);

0 La fonction exponentielle est repr´sent´e par la fonction Maple exp. e e
> exp(1);

e
> ln(exp(5));

5 Le deuxi`me exemple peut paraˆ e ıtre ´trange. Souvenez-vous que e lorsque Maple produit une notation math´matique typographique , e il essaie de repr´senter les expressions math´matiques de la mani`re dont e e e

12

Chapitre 2: Math´matiques de base avec Maple e

vous les ´cririez vous-mˆme. Ainsi, vous entrez π comme Pi et Maple e e l’affiche comme π. Maple tient compte des majuscules et des minuscules ; soyez donc certain de les respecter en faisant r´f´rence a ces constantes. Les noms ee ` Pi, pi et PI ne sont pas ´quivalents ! Les noms Pi et PI sont employ´s e e pour afficher respectivement les lettres grecques minuscule et majuscule π et Π. Pour obtenir davantage d’information sur les constantes de Maple, tapez ?constants ` l’invite. a

Approximations ` virgule flottante a
Mˆme si Maple pr´f`re travailler avec des valeurs exactes, il peut retoure ee ner une approximation d´cimale d’une longueur maximale de 238 chiffres e lorsque cela lui est demand´. e Dix ou vingt chiffres exacts semblent ad´quats pour la plupart des e situations ; cependant, deux probl`mes particuliers limitent s´rieusement e e l’utilit´ d’un tel syst`me. e e Tout d’abord, en soustrayant deux nombres d´cimaux d’ordres de e grandeur presque identiques, l’erreur relative de la diff´rence peut ˆtre e e tr`s grande : si chacun des deux nombres originaux sont identiques pour e leurs dix-sept premiers chiffres (sur vingt), leur diff´rence est un nombre e de vingt chiffres dont on ne connaˆ que trois chiffres significatifs ! Dans ıt ce cas, une pr´cision de quarante chiffres serait n´cessaire pour obtenir en e e fin de calcul un r´sultat pr´cis a environ vingt chiffres significatifs. e e ` Ensuite, la forme math´matique d’un r´sultat est plus concise, come e pacte et utile que sa valeur num´rique. Par exemple, une fonction expoe nentielle fournit plus d’information sur la nature d’un ph´nom`ne qu’un e e grand ensemble de nombres de vingt chiffres significatifs. Une description analytique exacte peut ´galement d´terminer le comportement d’une e e fonction en extrapolant a des r´gions pour lesquelles aucune donn´e n’est ` e e disponible. La commande evalf convertit une expression num´rique exacte en un e nombre d´cimal. e
> evalf(Pi);

3.141592654 Par d´faut, Maple calcule le r´sultat a l’aide de dix chiffres de pr´cie e ` e sion ; vous pouvez cependant sp´cifier un nombre arbitraire de chiffres. Il e suffit de le sp´cifier apr`s l’expression num´rique en utilisant la notation e e e suivante.

2.2 Calculs num´riques e > evalf(Pi, 200);

• 13

3.1415926535897932384626433832795028841\ 97169399375105820974944592307816406286\ 20899862803482534211706798214808651328\ 23066470938446095505822317253594081284\ 81117450284102701938521105559644622948\ 9549303820 Vous pouvez ´galement forcer Maple a effectuer tous ses calculs avec e ` e e des approximations d´cimales en incluant au moins un nombre d´cimal dans chaque expression. Les nombres a virgule flottante sont conta` e gieux : si une expression contient ne serait-ce qu’un seul nombre d´cimal, Maple ´value l’expression enti`re en arithm´tique a virgule flottante. e e e `
> 1/3 + 1/4 + 1/5.3;

0.7720125786
> sin(0.2);

.1986693308 Alors que le second argument optionnel de la commande evalf d´termine le nombre de chiffres a afficher pour ce calcul en particulier, la e ` variable sp´ciale Digits fixe le nombre de chiffres d´cimaux pour tous les e e calculs subs´quents. e
> Digits := 20;

Digits := 20
> sin(0.2);

0.19866933079506121546 Digits est maintenant fix´ ` vingt, le nombre de chiffres que Maple ea utilisera maintenant pour chaque ´tape d’un calcul. Sur ce plan, Maple e fonctionne comme une calculatrice ou un ordinateur classique. Souvenezvous que, lorsque vous ´valuez une expression num´rique compliqu´e, des e e e erreurs peuvent s’accumuler et rendre le r´sultat final moins pr´cis que e e

il est en g´n´ral de e e e e e mise d’en augmenter la valeur pour obtenir plus de pr´cision. Cependant. hex). du plus significatif au moins significatif. une ligne de nombres comme 221 peut devenir ambigu¨. . 2. 5 1 + I 13 13 Vous pouvez aussi travailler sous d’autres bases avec d’autres syst`mes e de nombres. a > (2 + 5*I) + (1 . 3FF > convert(17.2*I). En g´n´ral. 1] Maple retourne une conversion en base enti`re comme une liste de e nombres . Remarquez que Maple liste e e les chiffres dans l’ordre. Par exe emple. Arithm´tique avec des nombres sp´ciaux e e Maple peut ´galement travailler avec des nombres complexes. d´terminer la valeur que doit e e e prendre Digits pour obtenir une pr´cision donn´e n’est pas chose facile. sp´cialement pour de grandes bases. e e le r´sultat final d´pendant du probl`me. Maple est e tr`s flexible si une grande pr´cision d´cimale est importante dans votre e e e travail. 3 + 4I > (1 + I)/(3 . Maple effectue ´galement l’arithm´tique dans des anneaux finis et des e e corps. autrement. base. [2. I est le symbole par d´faut de Maple pour la racine carr´e de e √ e moins un. > convert(247.I). 11110111 > convert(1023. 3). c’est-`-dire I = −1. binary).14 • Chapitre 2: Math´matiques de base avec Maple e les vingt chiffres qu’il contient.

0 Lorsque Maple ne peut trouver une forme plus simple. Tapez ?GaussInt pour plus d’information sur e ces commandes. o > ln(Pi). −1 > modp(27.2 pour une liste partielle). Fonctions math´matiques e Maple connaˆ toutes les fonctions math´matiques standard (consultez la ıt e table 2. mais vous pouvez changer cette option (consultez l’´cran d’aide ?mod e pour plus de d´tails). Le package e GaussInt contient une trentaine de commandes permettant de travailler avec ces nombres sp´ciaux. 3 La valeur par d´faut de la commande mod est la repr´sentation posie e tive.2. e Maple peut ´galement travailler avec les entiers gaussiens.4). ln(π) .2 Calculs num´riques e > 27 mod 4. 1√ 2 2 > ln(1). il laisse l’expression telle quelle plutˆt que de la convertir en une forme inexacte.4). > sin(Pi/4). > mods(27. • 15 3 Les repr´sentations sym´triques et positives sont ´galement dispoe e e nibles.

sinh. arcsin. tanh. . cosh. cos. LegendreEc. BesselK. etc.3 Calculs symboliques de base Maple sait comment travailler avec des inconnues et des expressions les contenant. arccos. exp ln log[10] sqrt round trunc frac BesselI. BesselJ. LegendrePic. BesselY binomial erf. > (1 + x)^2. LegendreKc1.2 – Quelques fonctions math´matiques connues de Maple e Fonction sin.16 • Chapitre 2: Math´matiques de base avec Maple e Tab. arctan. 2. LegendreEc1. etc. erfc Heaviside Dirac MeijerG Zeta LegendreKc. LegendrePic1 hypergeom Description fonctions trigonom´triques e fonctions trigonom´triques e hyperboliques fonctions trigonom´triques e inverses fonction exponentielle logarithme naturel logarithme en base 10 racine carr´e alg´brique e e arrondir a l’entier le plus pr`s ` e tronquer a la partie enti`re ` e partie fractionnaire fonctions de Bessel fonction binomiale fonctions d’erreur et d’erreur compl´mentaire e fonction de Heaviside fonction delta de Dirac fonction G de Meijer fonction zeta de Riemann int´grales elliptiques de Legendre e fonction hyperg´om´trique e e 2. tan. etc.

Maple poss`de des centaines de commandes pour travailler avec des e expressions symboliques. 1 + 2 x + x2 > factor(%).2. (1 + x)2 e Comme il est mentionn´ ` la section Calculs num´riques de la page 7.3 Calculs symboliques de base • 17 (1 + x)2 > (1 + x) + (3 . d sin(x) dx > value(%).2*x). est une notation abr´g´e de la commande pr´c´dente. 1 3 1 2 1 n − n + n 3 2 6 . > expand((1 + x)^2). n). cos(x) > Sum(n^2. e e e e e > Diff(sin(x). n2 n > value(%). x). 4−x Remarquez que Maple simplifie automatiquement la seconde expression. %. ea l’op´rateur idem.

o > rem(x^3+x+1. Vous pouvez affecter un nom a n’importe quelle expression Maple. var := x > terme := x*y. x). e ` e > eqs := x = y + 2.18 • Chapitre 2: Math´matiques de base avec Maple e Divisez un polynˆme en x par un autre. e e > series(sin(x). x=0. Appliquez la syntaxe suivante. terme := x y Vous pouvez mˆme donner des noms a des ´quations. e e e 2. nom := expression . 10). eqs := x = y + 2 . x^2+x+1. ` > var := x. x− 1 5 1 1 1 3 x + x − x7 + x9 + O(x10 ) 6 120 5040 362880 Toutes les fonctions math´matiques mentionn´es dans la section e e pr´c´dente acceptent ´galement les inconnues comme arguments.4 Affecter des noms ` des expressions a Utiliser l’op´rateur idem ou taper une expression chaque fois que vous e souhaitez l’employer peut s’av´rer fastidieux. C’est pourquoi Maple vous e permet de nommer des objets. 2+x Cr´ez une s´rie.

5). A ıt lecture. RoOt_lOcUs_pLoT et value2 sont des noms Maple valides. Maple utilise ces noms e e a ` des fins de classification interne. e e e mais ils ne peuvent pas commencer par un nombre. 70 60 50 40 30 20 10 –4 –2 0 2 x 4 Vous en apprendrez davantage sur la commande plot au chapitre 4. > f := x -> x^2.4 Affecter des noms ` des expressions a • 19 Sous Maple. f := x → x2 . tandis que sa d´finition de la fonction (utilisant la e notation fl`che) est a droite.. ´vitez e de commencer un nom par le caract`re soulign´ . L’op´ration d’affectation (:=) peut ensuite associer le nom d’une fonce tion a la d´finition de cette fonction. x= -5. les noms peuvent contenir n’importe quel caract`re ale phanum´rique en plus du caract`re soulign´ (underscore en anglais). Cela indique a Maple comment ´valuer la fonce ` e ` ce point de votre tion lorsqu’elle apparaˆ dans les expressions Maple. e e Vous pouvez d´finir vos propres fonctions a l’aide de la notation e ` fl`che (->) de Maple. test_data. tandis que 2ndphase (parce qu’il commence par un nombre) et x&y (parce que & n’est pas un caract`re alphanum´rique) sont des noms invalides. Le nom de la fonction se place a ` e ` gauche du signe :=. Les noms polynomial.2. De plus. L’expression suivante d´finit f comme ´tant e ` e e e la fonction mettre au carr´ . f := x → 2 x2 − 3 x + 4 > plot (f(x).. > f := x -> 2*x^2 -3*x +4. vous pouvez dessiner des graphiques simples au moyen de la commande plot.

3. e C’est un groupe d’expressions Maple s´par´es par des virgules.14.20 • Chapitre 2: Math´matiques de base avec Maple e Puis. 2. les ensembles (sets ). e e > Pi := 3. Error. 3}. 1. Les suites d’expressions La structure de donn´es de base de Maple est la suite d’expressions . 2. 4. les listes. Maple affiche un message vous informant e e e e que le nom choisi est prot´g´. en ´valuant f en un argument. e e > 1. attempting to assign to ‘Pi‘ which is protected > set := {1. on obtient le carr´ de l’argument e e de f. 25 > f(y+1). 2. (y + 1)2 Tous les noms ne sont pas disponibles comme variables : Maple en a pr´d´fini et r´serv´ quelques-uns. Si vous tentez d’assigner un objet a un e e e e ` nom qui est pr´d´fini ou r´serv´. incluant e les suites d’expressions.5 Les principaux types d’objets Maple La pr´sente section examine les principaux types d’objets Maple. 4 . Error. les tableaux (arrays ). les tables (tables ) et les chaˆ ınes (strings ). 3. attempting to assign to ‘set‘ which is protected 2. > f(5).

z. les deux copies demeurent dans la suite. S := 1. et vous pouvez l’utiliser de la mani`re suivante. vous pouvez ` ee ajouter a un nom a des suffixes form´s de chaque ´l´ment de S en ` e ee concat´nant a et S : e > S := 1. a1 .5 Les principaux types d’objets Maple > x. h := 3. Les objets e e e ee respectent l’ordre dans lequel ils ont ´t´ entr´s et si un objet est entr´ deux ee e e fois. ab Lorsque vous appliquez la concat´nation a une s´quence. Les suites ee ` sont souvent utilis´es pour construire d’autres objets complexes par des e op´rations comme la concat´nation. Par exemple : > f. y. Ainsi.h := 3. 3. 2. a3 . pour une suite S. L’op´rateur de concat´nation sous e e e Maple est le || . y. w Une suite d’expressions n’est ni une liste. l’op´ration e ` e e touche a chacun de ses ´l´ments. Par exemple. 4 > a||S. ni un ensemble. C’est une structure de donn´es particuli`re qui poss`de ses caract´ristiques propres. a2 . 2. > a||b. 1. w. 1 . 6. z. 4.2.g. g. 6. Vous remarquerez d’autres propri´t´s des suites a mesure que vous parcourrez ce manuel. la concat´nation est une op´ration de e e base permettant de former des noms. f. elle pr´serve l’ordre et la r´p´tition des ´l´ments. • 21 x. 3. a4 Vous pouvez aussi effectuer plusieurs assignations en utilisant des suites d’expressions. e e e e Par exemple. e e Les suites permettent d’´tendre les capacit´s de plusieurs op´rations e e e de base de Maple.

a. [b. une liste est une suite d’expressions encadr´e par des crochets.c].a]. Martin.a.c]. c. [a. 5] > polynomes := [x^2+3. 5]. c]. [b.c.22 • Chapitre 2: Math´matiques de base avec Maple e > f. Francois . 3. e e ee Ainsi. 3. a]. data_list := [1. e > [a.b. Kim. Sylvain] Ainsi. c. Martin.c]. [a.b. 2 x] > participants := [Simon. Francois. Sylvain]. [a. lettres := [a. 4. 4. [b.a]. 2*x]. b. > lettres := [a. polynomes := [x2 + 3. 3 > h.c. b.a] sont trois listes diff´rentes.c. [a. b.a] et [a. 1 Les listes e Une liste est form´e en encadrant un nombre quelconque d’objets Maple (s´par´s par des virgules) par des crochets.c. Kim. 2. 2. participants := [Simon.b. x^2+3*x-1. x2 + 3 x − 1.a. e e > data_list := [1.b.b. e Maple conserve l’ordre et la r´p´tition des ´l´ments dans une liste. c] . a] La conservation de l’ordre vous permet de retrouver un ´l´ment paree ticulier d’une liste sans avoir a vous soucier d’un possible d´placement de ` e celui-ci.

1. cependant. y. des virgules s´parent les e objets . 0.b.c. Les ensembles Maple permet la gestion d’ensembles au sens math´matique du terme. Ainsi. L’ensemble suivant contient donc trois ´l´ments. b.2.c}. {c. un ensemble est une suite d’expressions encadr´e par des accoe lades. inconnues := {x.b. Maple ne conserve ni l’ordre.a}.5 Les principaux types d’objets Maple > lettres[2]. l’entier 2 est distinct de son approximation num´rique 2. 2. -1. {a.a.a}. • 23 b Utilisez la commande nops pour d´terminer le nombre total d’´l´e ee ments d’une liste. 0. pour Maple. c}. les accolades d´signent l’objet en tant qu’ensemble.0. e Tout comme dans une suite ou dans une liste. 2}. e > data_set := {1. > nops(lettres). b. 3 La section Les commandes nops et op de la page 40 traite en profondeur de cette commande et de ses usages. c} Rappelez-vous que. {a. e ee et non deux. 10. z}. les trois ensembles suivants sont idene e tiques : > {a. b. y. data_set := {−1. . 10} > inconnues := {x. {a.b. ni la r´p´tition des ´l´ments dans les e e ee ensembles : ces derniers poss`dent ainsi les mˆmes propri´t´s que leurs e e ee ´quivalents math´matiques. z} Ainsi. {a. c}.

g(π). consultez la section Les commandes nops et op de la page 40. Souvent utilis´e. d.e}. Pi}. tout ee comme pour une liste. e e Maple fournit plusieurs op´rateurs ensemblistes. 2. π.c} union {c.0}. g( π)} 3 2 . g( π).d. nombres).3. > nops(%). 2. Pi/3.a.c} intersect {0. e} > {1.2. {1.0} Les propri´t´s que revˆtent les ensembles font de ceux-ci des outils paree e ticuli`rement utiles dans Maple. Pi/2. > {a.1. 2 Pour plus d’information. L’op´ration de correspondance (mapping ) vous permet d’applie quer une fonction simultan´ment a tous les ´l´ments de n’importe quelle e ` ee structure. incluant les op´rateurs e e de base de l’intersection et de l’union en utilisant la notation intersect et union.b. {a. 1 1 π.y. > nombres := {0. > map(g.b. c. b.24 • Chapitre 2: Math´matiques de base avec Maple e > {1. nombres := {0. la commande map s’av`re tr`s utile pour les ene e e sembles.a}. 2. {1. a} La commande nops compte le nombre d’´l´ments d’un ensemble. 2. tout comme ils le sont en math´matiques. π} 3 2 1 1 {g(0).

6. data_set := {3. Sophie Maple reconnaˆ les ensembles et les listes vides (qui ne contiennent ıt aucun ´l´ment). utilisez la notation indic´e ee e [n ] . participants := [JeanSebastien. true > data_set := {5. . Sophie. Josee]. 1√ 3} 2 D’autres exemples d´montrant l’utilisation de map figurent dans la e ` section La commande map de la page 38 et Appliquer une fonction a une liste ou un ensemble ` la page 174. nombres). o` n d´signe la position de l’´l´ment d´sir´ dans la liste. 7}. 5. data_set). participants). 1. a Les op´rations sur les ensembles et les listes e La commande member permet de v´rifier l’appartenance d’un objet a un e ` ensemble ou a une liste. ` > participants := [JeanSebastien. 3. 6. Josee] > member(Sophie.5 Les principaux types d’objets Maple > map(sin. ee > empty_set := {}. Sophie. false Pour choisir des ´l´ments depuis une liste. u e ee e e > participants[2]. 7} > member(2. • 25 {0.2.

3). 5}.. 3. 4. de la commande union.. 5}. La structure de tableau (array) est une g´n´ralisation de cette id´e. empty _list := [] Vous pouvez cr´er un nouvel ensemble a partir d’autres ensembles a e ` ` l’aide. 5} > third_set := old_set minus {2. Supprimez des ´l´ments d’un ee ensemble par la commande minus. 4} > new_set := old_set union {2. mais cet indice n’est pas forc´ment unidimensionnel. []) . Imaginez une liste comme un groupe d’´l´ments o` e ee u chacun est associ´ ` un nombre entier positif. e > carres := array(1. les e indices peuvent ˆtre nuls ou n´gatifs. carres := array(1. > old_set := {2. De plus. new _set := {2. Chaque ´l´ment est toujours associ´ ` un e e e ee e a indice. par exemple. 3. 3. son indice.3. third _set := {3. qui repr´sente ea e sa position dans la liste.26 • Chapitre 2: Math´matiques de base avec Maple e empty _set := {} > empty_list := []. old _set := {2. Vous pouvez ´galement d´finir ou e e e e modifier individuellement chacun des ´l´ments d’un tableau sans pour ee autant red´finir ce dernier enti`rement. e e On doit d´clarer le tableau de mani`re que Maple connaisse le nombre e e de dimensions souhait´. 4} Les tableaux Les tableaux (arrays en anglais) sont une extension d’une autre structure de donn´es : la liste. 4} union {}.

8. 1. 4 Vous devez d´clarer les tableaux a l’avance. Plusieurs commandes peuvent ˆtre ee e entr´es a la mˆme invite en autant que chacune d’entre elles se termine e ` e par le deux-points ou le point-virgule.2. vous devez utiliser une commande comme print. carres[3] := 3^2. carres > print(carres).. Pour afficher le contenu e ` du tableau.8.. carres 1 := 1 carres 2 := 4 carres 3 := 9 Ou.27] ). pwrs := array(1.3).3.. si vous pr´f´rez.1. [1.. cubes := [1. 4. D´finissez un tableau e e e de dimensions 3 × 3. les tableaux peuvent en avoir plus d’une.3. [1. > carres[1] := 1.3. > carres[2]. []) . effectuez toutes ces op´rations en mˆme temps. 27] Vous pouvez choisir un seul ´l´ment en utilisant la notation appliqu´e ee e aux listes.3.. en e e e g´n´ral. carres[2] := 2^2. 9] Le tableau pr´c´dent ne poss`de qu’une dimension. ee e e > cubes := array( 1.5 Les principaux types d’objets Maple • 27 Assignez des ´l´ments au tableau. > pwrs := array(1. > carres. Cependant.

pwrs[1.3].3] := 8: pwrs[3. [[1. tout comme le point-virgule.2] := 9: pwrs[2.4.28 • Chapitre 2: Math´matiques de base avec Maple e Ce tableau est de dimension deux (deux ensembles d’indices).3. vous ee pouvez terminer chaque commande par le deux-points (:) plutˆt que par o le point-virgule habituel (. vous pouvez d´finir le tableau pwrs de la mani`re suie e vante : > pwrs2 := array( 1. ee e e > pwrs[1. Ainsi.1] := 1.8]. > pwrs[2. 1 := 1 pwrs 1. [3. utilisez e e e des listes imbriqu´es dans d’autres listes : cr´ez une liste dans laquelle e e chaque ´l´ment est une autre liste qui contient les ´l´ments d’une rang´e ee ee e du tableau.3] := 27:   1 1 1 2 4 8 3 9 27 Vous pouvez s´lectionner un ´l´ment en sp´cifiant a la fois sa rang´e e ee e ` e et sa colonne. ..1] := 3: > print(pwrs). Pour ce faire. > pwrs[2. pwrs 1.27]] ).2] := 4: pwrs[3.1] := 2: > pwrs[3. pwrs[2. 2 := 1 pwrs 1.3. 3 := 1 Poursuivez maintenant avec le reste du tableau. 1.9.1]. pour supprimer l’affichage du r´sultat.2] := 1. est un s´parateur de come mandes. 8 Vous pouvez d´finir un tableau bidimensionnel et ses ´l´ments tout a e ee ` e ` ee e la fois en appliquant une m´thode similaire a celle qui a ´t´ employ´e pour l’exemple unidimensionnel montr´ pr´c´demment..). Assignez d’abord les ´l´ments de la premi`re rang´e. Si vous pr´f´rez. pwrs[1. [2.1. Le e deux-points.3] := 1.

2. Sa syntaxe de base est la suivante : subs( x =expr1. supposons que vous souhaitez remplacer z par x + y dans une ´quation.2.. 1.. 1) = 7 (2. e > expr := z^2 + 3. cependant.. > [[[1. 1) = 3 (1. 1. vous pouvez ´galement d´clarer les ´l´ments du tableau en e e ee mˆme temps que vous d´clarez le tableau lui-mˆme.2.6]. utilisez la commande subs.4]].5 Les principaux types d’objets Maple • 29 1 1 1 2 4 8 pwrs2 := 3 9 27 Les tableaux ne sont pas limit´s ` deux dimensions . 2. e e e > tableau3 := array( 1.[7. 2) = 6 (2. 1. Si vous ` le souhaitez. pour certaines commandes. y =expr2..[3. [[5. Pour effectuer des substitutions de ce genre. ee Supposons que vous souhaitez remplacer chaque apparition du nombre 2 dans pwrs par le nombre 9.2.. expr_principale ) Par exemple. 1. 2) = 8 ]) Maple n’´tend pas automatiquement le nom d’un tableau a la e ` repr´sentation de tous ses ´l´ments. 1) = 5 (2. 1. Ainsi. . e ee vous devez sp´cifier que vous souhaitez effectuer une op´ration sur les e e ´l´ments. 2. 2. ceux e a qui contiennent plus de deux dimensions sont difficiles a afficher.2. 2) = 2 (1. expr := z 2 + 3 . 2. 2) = 4 (2.2.2].   tableau3 := array(1. 1. [ (1. 1. 1.. . 1) = 1 (1.2..8]]] )..

> subs( {2=9}.   1 1 1 9 4 8 3 9 27 Non seulement cette commande permet la substitution des ´l´ments ee comme il est souhait´. > traduit := table([one=un. > evalm(pwrs). et non seulement limit´s ` e e a des nombres entiers. mais encore l’´valuation compl`te affiche ´galement e e e e les ´l´ments du tableau. pwrs En effet. vous pourriez ˆtre d´¸u de d´couvrir que la commande e ec e suivante ne fonctionne pas. one = un]) . de la mˆme mani`re que grˆce ` la commande ee e e a a print.30 • Chapitre 2: Math´matiques de base avec Maple e > subs( {z=x+y}. vous devez forcer Maple a ´valuer compl`tement le nom du `e e tableau tant pour ce qui est de ses composantes que pour ce qui regarde son nom. les indices d’une table peuvent ˆtre quelconques. evalm(pwrs) ). (x + y)2 + 3 Cependant.three=trois]).two=deux.   1 1 1 2 4 8 3 9 27 Les tables ` e Une table est une extension de tableau. A la diff´rence d’un tableau. en utilisant la commande d’´valuation de matrices evalm. e > subs( {2=9}. traduit := table([two = deux . three = trois . pwrs ). expr).

2.5 Les principaux types d’objets Maple > traduit[two];

• 31

deux Mˆme si les tables semblent a premi`re vue revˆtir peu d’int´rˆt, e ` e e ee elles sont en fait des structures puissantes. Les tables vous permettent de travailler avec des notations naturelles dans vos structures de donn´es. e Par exemple, vous pouvez afficher les propri´t´s physiques de certains ee mat´riaux en utilisant une table Maple. e
> earth_data := table( [ mass=[5.976*10^24,kg], > radius=[6.378164*10^6,m], > circumference=[4.00752*10^7,m] ] );

earth_data := table([radius = [.6378164000 107 , m], circumference = [.4007520000 108 , m], mass = [.5976000000 1025 , kg ] ])
> earth_data[mass];

[.5976000000 1025 , kg ] Dans cet exemple, chacun des indices est un nom et chaque entr´e est e une liste. Ce n’est en fait qu’un exemple tr`s simple ; la plupart du temps, e des indices beaucoup plus g´n´raux sont pr´f´rables. Ainsi, vous pourriez e e ee construire une table dont les indices sont des formules alg´briques et dont e les valeurs sont les d´riv´es de ces formules. e e

Les chaınes
ee Une chaıne est un autre objet Maple cr´´ en encadrant un nombre quelconque de caract`res par des guillemets anglais. e
> "Ceci est une chaine.";

“Ceci est une chaine.” Les chaˆ ınes sont des unit´s indivisibles que l’on peut consid´rer comme e e des constantes : on ne peut leur assigner une valeur.
> "mon age" := 22; Error, invalid left hand side of assignment

32

Chapitre 2: Math´matiques de base avec Maple e

Comme les ´l´ments des listes ou des tableaux, on peut acc´der indiviee e duellement aux diff´rents caract`res d’une chaˆ en utilisant la notation e e ıne des crochets.
> mystr := "I ate the whole thing.";

mystr := “I ate the whole thing.”
> mystr[11..-2];

“whole thing” L’op´rateur de concat´nation (“||”) ou la commande cat sont utilis´s e e e pour joindre deux chaˆ ınes ensemble. La commande length, de son cˆt´, oe est employ´e pour d´terminer le nombre de caract`res dans une chaˆ e e e ıne.
> newstr := cat("I can’t believe ", mystr);

newstr := “I can’t believe I ate the whole thing.”
> length(newstr);

38 Il existe plusieurs autres commandes qui agissent sur des chaˆ ınes et ınes comme arguments. Pour d’autres d’autres encore qui prennent des chaˆ exemples, reportez-vous a l’´cran d’aide ?StringTools. ` e

2.6

La manipulation d’expressions

De nombreuses commandes Maple permettent la manipulation d’expressions. Il vous est ainsi possible de transformer les r´sultats de commandes e Maple en des formes famili`res, ou encore de manipuler vos propres exe pressions en des formes que Maple peut reconnaˆ ıtre. Dans cette section, vous apprendrez les commandes les plus couramment utilis´es ` cet effet. e a

2.6 La manipulation d’expressions

• 33

La commande simplify
Vous pouvez choisir cette commande pour appliquer des r`gles de simplie fication a une expression. Maple connaˆ certaines r`gles de simplification ` ıt e pour divers types d’expressions et de formes comme les fonctions trigonom´triques, les radicaux, les fonctions logarithmiques, les fonctions exe ponentielles, les puissances ainsi que plusieurs autres fonctions sp´ciales. e
> expr := cos(x)^5 + sin(x)^4 + 2*cos(x)^2 > - 2*sin(x)^2 - cos(2*x);

expr := cos(x)5 + sin(x)4 + 2 cos(x)2 − 2 sin(x)2 − cos(2 x)
> simplify(expr);

cos(x)5 + cos(x)4 Pour effectuer seulement un certain type de simplification, sp´cifiez le e type souhait´. e
> simplify(sin(x)^2 + ln(2*y) + cos(x)^2);

1 + ln(2) + ln(y)
> simplify(sin(x)^2 + ln(2*y) + cos(x)^2, ’trig’);

1 + ln(2 y)
> simplify(sin(x)^2 + ln(2*y) + cos(x)^2, ’ln’);

sin(x)2 + ln(2) + ln(y) + cos(x)2 Avec les relations accessoires (side relations ), vous pouvez ´galement appliquer vos propres r`gles de simplification. e e
> siderel := {sin(x)^2 + cos(x)^2 = 1};

siderel := {sin(x)2 + cos(x)2 = 1}
> trig_expr := sin(x)^3 - sin(x)*cos(x)^2 + 3*cos(x)^3;

34

Chapitre 2: Math´matiques de base avec Maple e

trig _expr := sin(x)3 − sin(x) cos(x)2 + 3 cos(x)3
> simplify(trig_expr, siderel);

2 sin(x)3 − 3 cos(x) sin(x)2 + 3 cos(x) − sin(x)

La commande factor
La commande factor factorise les expressions polynomiales.
> big_poly := x^5 - x^4 - 7*x^3 + x^2 + 6*x;

big _poly := x5 − x4 − 7 x3 + x2 + 6 x
> factor(big_poly);

x (x − 1) (x − 3) (x + 2) (x + 1)
> rat_expr := (x^3 - y^3)/(x^4 - y^4);

rat _expr :=

x3 − y 3 x4 − y 4

Le num´rateur et le d´nominateur contiennent tous les deux le facteur e e commun x − y ; ainsi, la factorisation annule ces termes.
> factor(rat_expr);

x2 + x y + y 2 (y + x) (x2 + y 2 ) Maple peut factoriser les polynˆmes univari´s et multivari´s sur le o e e domaine de coefficients sp´cifi´. Vous pouvez ´galement factoriser les e e e polynˆmes sur des extensions alg´briques. Voyez ?factor pour plus de o e d´tails a ce sujet. e `

La commande expand
Essentiellement, la commande expand est l’inverse de la commande factor. Elle permet l’expansion de termes multipli´s de mˆme que plue e sieurs autres expansions. Pour cette raison, expand figure parmi les commandes de manipulation les plus utiles. Bien que l’on puisse imaginer par

2.6 La manipulation d’expressions

• 35

son nom que le r´sultat qu’elle produit soit plus long et plus complexe que e l’expression originale, il n’en est pas toujours ainsi. En fait, l’expansion de certaines expressions permet de grandes simplifications.
> expand((x+1)*(x+2));

x2 + 3 x + 2
> expand(sin(x+y));

sin(y) cos(x) + cos(y) sin(x)
> expand(exp(a+ln(b)));

ea b La commande expand est tr`s flexible ; non seulement il est pose sible de pr´ciser que certaines sous-expressions doivent ˆtre laiss´es telles e e e quelles au cours de l’expansion, mais des r`gles d’expansion personnalis´es e e peuvent ´galement ˆtre programm´es. e e e Lorsqu’on utilise Maple pour la premi`re fois, on est port´ a croire que e e` la commande simplify est la commande la plus utile. Malheureusement, o le mot simplify est plutˆt vague. Lorsqu’on lui demande de simplifier une expression, Maple examine cette derni`re, essaie plusieurs techniques, puis e tente d’appliquer la r`gle de simplification la plus appropri´e. Cela peut e e prendre du temps. De plus, Maple peut ne pas ˆtre en mesure de devie ner ce que vous souhaitez accomplir, puisque aucune r`gle math´matique e e universelle ne d´finit ce qui est plus simple . e Lorsque vous connaissez quelles manipulations rendront votre expression plus simple a vos yeux, sp´cifiez-les directement. En particulier, la ` e commande expand figure parmi les plus utiles. Elle permet souvent une simplification substantielle des expressions et reformule ces derni`res sous e une forme pratique pour plusieurs autres commandes.

La commande convert
Cette commande convertit les expressions entre diff´rentes formes. e
> convert(cos(x),exp);

1 (I x) 1 1 + e 2 2 e(I x)

36

Chapitre 2: Math´matiques de base avec Maple e

Tab. 2.3 – Conversions courantes Argument Description polynom d’une s´rie a un polynˆme e ` o exp, expln, expsincos d’une expression trigonom´trique a une e ` forme exponentielle parfrac d’une expression rationnelle a une ` fraction partielle rational d’un nombre a virgule flottante a une ` ` forme rationnelle radians, degrees des degr´s aux radians e set, list, listlist entre diff´rentes structures de donn´es e e
> convert(1/2*exp(x) + 1/2*exp(-x),trig);

cosh(x)
> A := Matrix([[a,b],[c,d]]);

A :=

a b c d

> convert(A, ’listlist’);

[[a, b], [c, d]]
> convert(A, ’set’);

{a, b, c, d}
> convert(%, ’list’);

[a, b, c, d]

dans plusieurs cas. rat _expr _2 := x2 − y 2 (−y + x)3 > normal(rat_expr_2). e num´rateur e d´nominateur e o` num´rateur et d´nominateur sont deux polynˆmes relativement preu e e o miers a coefficients entiers. e La commande combine Cette commande combine les termes de sommes. x(2 a) .2.6 La manipulation d’expressions • 37 La commande normal Cette commande transforme les expressions rationnelles en forme normale factoris´e (factored normal form). e(2 x+y) > combine((x^a)^2. y+x (−y + x)2 > normal(rat_expr_2.y)^3 .exp). Ces transformations sont. e > combine(exp(x)^2*exp(y). Ainsi. la commande normal met les fractions ` au mˆme d´nominateur. de produits et de puissances en un seul terme. l’inverse des transformations appliqu´es par la commande expand. y+x y 2 − 2 x y + x2 L’option expanded transforme les expressions rationnelles en forme normale factoris´e. power).y^2)/(x . e e > rat_expr_2 := (x^2 . ’expanded’).

pour d´river chaque ´l´ment d’une liste par rapport a e ee ` x. x ] dx dx dx . Pi/2. La e ` ee commande map applique une commande a chaque ´l´ment de la structure ` ee de donn´es ou de l’expression fournie. y ). ` > map( f. f(c.x^2]. vous pouvez utiliser les commandes suivantes : > fcn_list := [sin(x). l’utilit´ et la puisa e sance de la commande map ne devraient pas ˆtre sous-estim´es. 1. x. des ene sembles et des tableaux. Prenez le e e temps n´cessaire pour vous assurer que vous connaissez bien l’utilisation e de map. y). > map( f. l’une des plus puissantes fonctions de Maple. y). > map(sin. x. [f(a.c] ). x). x2 ] > map(Diff. Elle fournit un moyen commode de g´rer plusieurs e solutions ou d’appliquer une op´ration a chaque ´l´ment d’un tableau.b. ln(x).c]. f(b. Mˆme s’il est possible d’´crire des e e e boucles dans un programme pour accomplir ces tˆches. y)] Par exemple. ln(x). 2*Pi]. 2 π] 2 2 [0. fcn_list. [a. π. −1. Maple ` passe les derniers a la commande initiale. [f(a). data_list). fcn_list := [sin(x). 1 3 π. 3*Pi/2.38 • Chapitre 2: Math´matiques de base avec Maple e La commande map Cette commande est tr`s utile lorsque vous travaillez sur des listes. 0] Si vous donnez a la commande map plus de deux arguments.ln(x). x. f(b). data_list := [0.b. f(c)] > data_list := [0. [a. x. [ d d d 2 sin(x).

2.6 La manipulation d’expressions > map(value, %);

• 39

[cos(x),

1 , 2 x] x

Non seulement la proc´dure peut ˆtre une commande existante, mais e e vous pouvez ´galement cr´er une op´ration a appliquer sur une liste. Par e e e ` exemple, supposons que vous voulez mettre au carr´ chaque ´l´ment d’une e ee liste.
> map(x->x^2, [-1,0,1,2,3]);

[1, 0, 1, 4, 9]

Les commandes lhs et rhs
Ces deux commandes vous permettent de prendre respectivement le cˆt´ oe oe gauche (left-hand side) et le cˆt´ droit (right-hand side) d’une expression.
> eqn1 := x+y=z+3;

eqn1 := y + x = z + 3
> lhs(eqn1);

y+x
> rhs(eqn1);

z+3

Les commandes numer et denom
Ces deux commandes servent a extraire respectivement le num´rateur et ` e le d´nominateur d’une expression rationnelle. e
> numer(3/4);

3
> denom(1/(1 + x));

40

Chapitre 2: Math´matiques de base avec Maple e

x+1

Les commandes nops et op
Ces deux commandes s’av`rent utiles pour diviser des expressions en plue sieurs parties et en extraire les sous-expressions. La commande nops vous indique combien de parties contient une expression.
> nops(x^2);

2
> nops(x + y + z);

3 La commande op vous permet d’acc´der aux diff´rentes parties d’une e e expression, qu’elle retourne sous forme de suite d’expressions.
> op(x^2);

x, 2 Vous pouvez ´galement acc´der a des ´l´ments en particulier en e e ` ee sp´cifiant leur indice, ou une plage d’indices. e
> op(1, x^2);

x
> op(2, x^2);

2
> op(2..-2, x+y+z+w);

y, z

2.6 La manipulation d’expressions

• 41

Questions courantes sur la manipulation d’expressions
Comment substituer un produit de deux inconnues ? Utilisez les relae tions accessoires pour sp´cifier une identit´ . La substituion directe ne e fonctionne g´n´ralement pas, puisque Maple cherche une correspondance e e exacte avant de remplacer.
> expr := a^3*b^2;

expr := a3 b2
> subs(a*b=5, expr);

a3 b2 Ici, la commande subs a ´chou´ dans sa tentative de substitution. e e Utilisez la commande simplify pour obtenir la r´ponse souhait´e. e e
> simplify(expr, {a*b=5});

25 a Vous pouvez ´galement essayer la commande algsubs, qui effectue e une substitution alg´brique. e
> algsubs(a*b=5, expr);

25 a Pourquoi le r´sultat de simplify n’est-il pas sous sa forme la plus e simple ? Par exemple :
> expr2 := cos(x)*(sec(x)-cos(x));

expr2 := cos(x) (sec(x) − cos(x))
> simplify(expr2);

1 − cos(x)2 La forme attendue ´tait sin(x)2 . e

42

Chapitre 2: Math´matiques de base avec Maple e

Encore une fois, utilisez les relations accessoires pour sp´cifier l’idene tit´. e
> simplify(%, {1-cos(x)^2=sin(x)^2});

sin(x)2 La question de la simplification est compliqu´e en raison de la dife ficult´ ` d´finir ce qu’est une forme simple pour une expression. La ea e conception d’une forme simple pour un utilisateur peut ˆtre tr`s diff´rente e e e de celle d’un autre utilisateur ; de plus, l’id´e d’une forme la plus simple e peut varier d’une situation a l’autre. ` Comment mettre en ´vidence la constante dans 2x + 2y ? Actuele lement, cette op´ration n’est pas possible dans Maple puisque son sime plificateur distribue automatiquement le nombre sur le produit, croyant qu’une somme est plus simple qu’un produit. Dans la plupart des cas, cela est vrai. Si vous entrez l’expression
> 2*(x + y);

2x + 2y vous remarquez que Maple multiplie automatiquement la constante dans l’expression. Comment peut-on alors g´rer de telles expressions, lorsque l’on doit e mettre des constantes ou des signes n´gatifs en ´vidence ? Advenant le e e besoin de factoriser ces expressions, utilisez la prochaine substitution.
> expr3 := 2*(x + y);

expr3 := 2 x + 2 y
> subs( 2=deux, expr3 );

x deux + y deux
> factor(%);

deux (x + y)

2.7 Conclusion

• 43

2.7

Conclusion

Dans ce chapitre, vous avez vu plusieurs des types d’objets que Maple peut manipuler : les suites, les ensembles et les listes. Vous avez ´galement e vu plusieurs commandes, dont expand, factor et simplify, qui figurent parmi les plus utiles pour manipuler et simplifier des expressions alg´e briques. D’autres, comme map, sont utiles pour les ensembles, les listes et les tableaux. De son cˆt´, la commande subs sert dans presque toutes les oe situations. Dans le prochain chapitre, vous apprendrez a manipuler ces concepts ` pour aborder un des probl`mes fondamentaux des math´matiques : la e e ` mesure que vous apprendrez de r´solution des syst`mes d’´quations. A e e e nouvelles commandes, observez comment les concepts de ce chapitre sont utilis´s pour poser les probl`mes et manipuler leurs solutions. e e

44

Chapitre 2: Math´matiques de base avec Maple e

e ee > solve({x^2=4}. e 3. {x = 2}. solve tente de e r´soudre le syst`me de mani`re exacte pour l’ensemble d’inconnues e e e sp´cifi´.1 R´solution au moyen de solve e La commande solve de Maple est un solveur d’´quations tout usage. De plus. Puisque les deux ´quations pr´c´dentes poss`dent deux solutions.3 Trouver des solutions Ce chapitre introduit les concepts cl´s n´cessaires a une r´solution de e e ` e probl`mes rapide et efficace dans Maple. le pr´sent chapitre examine e e l’interaction entre ces diff´rentes commandes. 1 −b + {x = 2 √ b2 − 4 a c 1 −b − }. {x}). map. (Souvenez-vous que.) Dans ee les exemples suivants. e Dans un ensemble d’une ou de plusieurs ´quations. {x = −2} > solve({a*x^2+b*x+c=0}. dans la section Les ensembles de la page 23. et e e chaque ensemble contient cons´quemment un seul ´l´ment. e e on utilisait les accolades pour encadrer les ´l´ments d’un ensemble. {x}). vous r´solvez une ´quation pour une inconnue. Maple e e e e 45 . subs et unapply. {x = a 2 √ b2 − 4 a c } a Maple retourne chaque solution possible sous forme d’un ensemble. vous gagnerez du temps et ´conomiserez de nombreux efforts. En apprenant comment utiliser e des outils comme solve.

y+1/x=1}. tandis que x e est l’oppos´ de y. Ce e r´sultat signifie que y peut prendre n’importe quelle valeur. e e e e > solve({x+2*y=3. y+1/x=1}. Si aucune inconnue n’est sp´cifi´e dans l’´quation. eqns := {x + 2 y = 3. ni autour de la variable. Vous pouvez d’abord donner un nom a l’ensemble ` d’´quations. e e e e > solve({x+y=0}). {x = 1}. {x = −y. {x}). la solution est une forme id´ale pour e e la commande subs. e ´ Etant un ensemble d’´quations. {x = 3}. e > eqns := {x+2*y=3. {x.46 • Chapitre 3: Trouver des solutions retourne une suite d’ensembles solutions. y = y} Ici. par exemple eqns. En effet. Maple r´sout pour toutes celles-ci. e e e ` Si vous donnez une expression plutˆt qu’une ´quation. Cette solution est param´tris´e par rapport a y. contenant deux ´quations. une seule solution est obtenue. y + 1 = 1} x Puis. y = } 2 Mˆme si les accolades (d´notant un ensemble) ne sont obligatoires ni e e autour de l’´quation. L’exemple suivant montre cette e proc´dure. {x = −4} La commande solve peut ´galement g´rer les syst`mes d’´quations. r´solvez. y = 2}. la premi`re chose a e e e e ` faire avec une solution est g´n´ralement de la v´rifier en la substituant e e e a ` nouveau dans les ´quations originales. Maple assume o e e e ` e automatiquement que l’´quation est ´gale a z´ro. ce qui repr´sente ` e g´n´ralement la mani`re la plus commode. {x. 1 {x = −1.y} ).y}). . > solve({x^3-13*x+12}. leur utilisation force Maple e a retourner la solution sous la forme d’un ensemble. {x = 2. e > soln := solve( eqns.

Encore une fois. x1 := −1 Vous pouvez ´galement extraire la premi`re solution pour y. . 1 {x = 2.3. y = } 2 V´rifier les solutions e Pour v´rifier les solutions ainsi produites. y = 2}. {3 = 3. il suffit de les substituer a noue ` veau dans l’ensemble d’´quations original en utilisant la commande eval. 1 = 1} Vous d´couvrirez que cette m´thode de v´rification est g´n´ralement e e e e e la plus commode. la commande eval s’av`re le meilleur e e outil. y = } 2 Cela produit deux solutions : d’abord. 1 = 1} > eval( eqns. soln[1] ). > soln[2]. e e > y1 := eval(y. Supposons que vous voulez extraire la valeur de x de la premi`re solution. Remarquez que cette application de la commande eval se prˆte ` e a d’autres usages. soln[1] ). > soln[1].1 R´solution au moyen de solve e • 47 1 soln := {x = −1. e > eval( eqns. {3 = 3. y = 2} et ensuite. soln[2] ). soln[1]). {x = 2. {x = −1. > x1 := eval( x.

2] La premi`re solution est maintenant une liste. [f(a. y. e ` e > eval([x. vous permet d’appliquer une op´rae tion a toutes les solutions. Par exemple. y] Puis. −1] Puisque.c]. Par exemple. vous pouvez construire une liste (list) a partir de la premi`re solution. ´valuez simplement cette liste a la premi`re solution. ` e > map(f. f(b. y.y]. z). [x. [−1. soln[1]). > [x. a > eval([y. y. D’abord. [2. ´valuez ee e [y. map. z). essayez de substituer les deux ` solutions. y.y]. o` x sera ` e u le premier ´l´ment et y le second.x] ` la solution. e Si vous pr´f´rez obtenir d’abord la solution pour y dans la liste. soln[1]). il est utile de se souvenir de cette m´thode d’extraction des solutions.48 • Chapitre 3: Trouver des solutions y1 := 2 Vous pouvez mˆme appliquer ce truc d’´valuation pour convertir e e des ensembles solutions sous d’autres formes. e Une autre commande utile. typiquement.x]. z)] .b. Maple retourne ses solutions sous la forme d’ensembles (dans lesquels l’ordre des objets est incertain). La commande map applique l’op´ration sp´cifi´e comme premier are e e gument a son deuxi`me argument. construisez une liste dont ee les variables sont dans le mˆme ordre que souhait´ dans les solutions e e correspondantes. [a. z). f(c.

eqns).y}). {x = −y.y}).3. > [soln]. > solve({x^2=y^2}. {x = −y.1 R´solution au moyen de solve e • 49 En raison de la syntaxe de map. 1 {y = 2.{x. x = 2} 2 Encadrez soln par des crochets pour la convertir en liste (list). eqns. cette derni`re ne peut appliquer en e mˆme temps plusieurs fonctions a des suites. {y = . e e > soln. y = y}. x<>y}. {x = y. 1 = 1}. {3 = 3. e e e ` . utilisez la commande suivante pour substituer chacune des solutions simultan´ment dans les ´quations originales. y = y} > solve({x^2=y^2. x = −1}. 1 = 1}] Cette m´thode peut s’av´rer pr´cieuse si votre ´quation poss`de plue e e e e sieurs solutions. e e > map(subs. 1 [{y = 2. ou si vous n’ˆtes pas certain du nombre de solutions e qu’une certaine commande produira.{x. consid´rez la e ` e suite de solutions pr´c´dente. y = y} Consid´rez ce syst`me de cinq ´quations a cinq inconnues. x = 2}] 2 Maintenant. [{3 = 3. {y = . Par exemple. x = −1}. Restreindre les solutions Vous pouvez limiter les solutions en sp´cifiant les in´galit´s au moyen de e e e la commande solve. [soln].

z= . z.50 • > > > > > Chapitre 3: Trouver des solutions eqn1 eqn2 eqn3 eqn4 eqn5 := := := := := x+2*y+3*z+4*t+5*u=41: 5*x+5*y+4*z+3*t+2*u=20: 3*y+4*z-8*t+2*u=125: x+y+z+t+u=9: 8*x+4*z+3*t+2*u=11: R´solvez maintenant le syst`me pour toutes ses variables. z = − − 7 t − u. y. e e Puisqu’il est impossible de fixer l’ordre des ´l´ments dans un ensemble.t. ainsi. essayez e ee la commande suivante.eqn2.eqn2.t=1} ). z}).eqn3. s1 := {x = 2. ee solve ne retournera pas n´cessairement les solutions dans l’ordre x. supposons que vous n´cessitiez que les cinq solutions trouv´es par solve soient plac´es dans un ordre particulier. u = 16} Vous pouvez ´galement choisir de r´soudre pour un sous-ensemble des e e inconnues . − − 7 t − u] 13 13 13 13 13 13 .y. s2 ).u}). [− 28 635 70 70 59 527 − 7t − u. Par exemple. e e > s1 := solve({eqn1. t = −11. {x = −646 −220 861 . Maple retourne ensuite les solutions en fonction des autres inconnues. les listes pr´servent l’ordre de leurs ´l´ments . {x.z].z. y = 3.eqn5}. e Cependant. + 12 t + u. e e e > eval( s2. ´valuez la solution en u = 1 et t = 1. 527 28 70 59 − 7t − u. { x.eqn4. y. z = −1. 13 13 13 13 635 70 y= + 12 t + u} 13 13 s2 := {x = − Explorer les solutions Vous pouvez explorer les solutions param´triques calcul´es ` la fin de la e e a section pr´c´dente.eqn3}. {u=1.y. > eval( [x.y= } 13 13 13 ` e Tout comme a la page 47. > s2 := solve({eqn1.

Pour ce faire. il suffit de fournir a e ` ` unapply l’expression et les variables a partir desquelles Maple doit faire une fonction. t) (c. t). s2 ). > eval( x. il faut utiliser une autre commande tr`s importante. t) et z = z(u. –5 –10 –15 –20 –25 50 55 60 65 –58 –56 –54 –52 –50 –48 –46 –44 –42 70 75 80 La commande unapply Supposez que vous souhaitez explorer encore davantage. x. Ainsi. 1) Pour transformer l’expression en une fonction. d´finissez x = x(u. mais elle e en a ´galement extrait le cˆt´ droit de l’´galit´ (puisque vous connaise oe e e sez toujours quelle solution s’applique a quelle variable en raison de leur ` ordre). axes=BOXED). et non une fonction.-`-d.1). Souvenez-vous que vous pouvez facilement choisir l’expression d’une solution pour une variable particuli`re en utie lisant eval. y = y(u.1 R´solution au moyen de solve e • 51 Non seulement cette commande a fix´ l’ordre des solutions. unapply. par exemple. t=0. Par souci de commodit´. x(1.3. > f := unapply(x^2 + y^2 + 4. y).2.. u=0.. > x(1.2. Cette possibilit´ est particuli`rement utile lorsque vous souhaitez e e tracer la surface qui repr´sente la solution. . convertise e a sez les solutions en fonctions). − 28 527 − 7t − u 13 13 Cependant. cela est une expression pour x. e > plot3d(%.

s2). 28 527 − 7t − u 13 13 −646 13 On cr´e les fonctions y et z de la mˆme mani`re. on doit utiliser unapply pour transformer cette expression en une fonction de u et de t. > x := unapply(%. − 28 527 − 7t − u 13 13 Puis. comme e e ` il a ´t´ mentionn´ pr´c´dement. e e e > eval(y.s2). la premi`re ´tape consiste a obtenir l’expression pour x. t). x := (u.u. u. a2 + b2 + 4 Ainsi. y) → x2 + y 2 + 4 produit la fonction f de x et y. y := (u. ee e e e > eval(x.b). pour transformer la solution pour x en une fonction a la fois de ` u et de t.t). t) → − > x(1.52 • Chapitre 3: Trouver des solutions f := (x. t) → 70 635 + 12 t + u 13 13 . Cette nouvelle fonction est facile a utiliser. y) le ` ` polynˆme x2 + y 2 + 4. o > f(a.1). qui fait correspondre a un couple (x. 635 70 + 12 t + u 13 13 > y := unapply(%.

s2). rappelez-vous que meme si cette commande est utile pour rapidement assigner des noms aux solutions. + 12 t + u. 70 59 − 7t − u 13 13 861 −220 . elle ne peut cr´er de fonctions. ` > s3 := dsolve( {diff(f(x). t) → − > y(1. Par exemple.x)=6*x^2+1. dont la section 3. f(0)=0}. • 53 − 59 70 − 7t − u 13 13 > z := unapply(%. La commande assign est utile pour assigner des noms aux expressions. {f(x)} ). z. e > assign( s2 ). Cependant. e Le prochain exemple comprend la r´solution d’´quations diff´rene e e tielles.1). . t). assignez e un nom a la solution. z := (u.3.6 discute plus en d´tail.1 R´solution au moyen de solve e > eval(z. z(1. − 28 635 70 70 59 527 − 7t − u. > x. u. y et z en tant que fonco e tions. Pour commencer. plutˆt que de d´finir x. − − 7 t − u 13 13 13 13 13 13 Souvenez-vous de assign comme ´tant la commande permettant de e transformer le signe = de la solution en un signe := .1). 13 13 La commande assign La commande assign permet ´galement d’affecter des valeurs a des ine ` connues. assignez chacune d’elles a l’expression du cˆt´ droit de l’´galit´ de ` oe e e l’´quation correspondante. y.

2 x3 + x produit la r´ponse attendue . f (y) ou f (1). malgr´ les apparences. e > eval(f(x). utilisez unapply. f (x) est e e simplement le nom de l’expression 2x3 + x. que l’on ´crive f (x). 2 x3 + x . f := x → 2 x3 + x La premi`re d´finit seulement la valeur de la fonction f pour l’argue e e ment sp´cial x . la seconde d´finit la fonction f : x → 2x3 + x de mani`re e e ` fonctionner. f(1) La raison de ce comportement en apparence ´trange vient du fait que e assign demande a Maple l’affectation ` > f(x) := 2*x^3 + x. > f(1). Appelez la fonction f en utilisant un argument autre que x.54 • Chapitre 3: Trouver des solutions s3 := f(x) = 2 x3 + x > assign( s3 ).s3). Il vous reste cependant a cr´er une fonction. a e Pour d´finir la solution f comme une fonction de x. f(x) := 2 x3 + x qui n’est pas du tout semblable a l’affectation ` > f := x -> 2*x^3 + x. cependant. ` e > f(x). et non une fonction.

index = 5)} RootOf(expr ) est un nom g´n´rique pour toutes les racines de expr. e vous obtenez une forme explicite des racines complexes. x). {x = . {x = RootOf(_Z 5 − 2 _Z + 3.320816347 I}. {x = RootOf(_Z 5 − 2 _Z + 3.2467292569 − 1. {x = −. {x = RootOf(_Z 5 − 2 _Z + 3. Maple retourne ses solutions a l’aide de la commande ` RootOf. Cela signifie que x est une racine e e du polynˆme z 5 − 2z + 3. 3 La commande RootOf ` A l’occasion. • 55 f := x → 2 x3 + x > f(1).320816347 I}. o` le param`tre index num´rote et ordonne les o u e e solutions.3. {x = −1.9585321812 + . {x = . En utilisant la commande evalf. e e et _Z est un nom g´n´rique pour x. e > solve({x^5 . index = 4)}.9585321812 − .2467292569 + 1. index = 1)}.1 R´solution au moyen de solve e > f := unapply(%. index = 3)}.4984277790 I} Une expression g´n´rale pour d´signer les racines des polynˆmes de e e e o degr´ cinq sous forme de radicaux n’existe pas. Cela peut s’av´rer fort utile lorsqu’on fait de l’alg`bre sur un e e corps diff´rent des nombres complexes. {x = RootOf(_Z 5 − 2 _Z + 3. {x = −.{x}).4984277790 I}.423605849}. Consid´rons l’exemple suivant. e . {x = RootOf(_Z 5 − 2 _Z + 3.2*x + 3 = 0}. > evalf(%). index = 2)}.

324717957}. {x}. > fsolve({poly}. avoid={x=0}).56 • Chapitre 3: Trouver des solutions 3. e . {x = −3. {x = 5.{x}). > fsolve({sin(x)=0}. utilisez l’ope e e tion avoid. {x = . utilisez e e o l’option maxsols. {x}).7390851332} Pour une ´quation g´n´rale.3*x^2 + 13*x + 16.141592654} Pour chercher un nombre d´termin´ de racines d’un polynˆme. fsolve cherche une racine r´elle simple.16*x^3 . poly := 3 x4 − 16 x3 − 3 x2 + 13 x + 16 > fsolve({poly}. cependant.} > fsolve({sin(x)=0}. maxsols=1). la commande cherche toutes les racines o r´elles. {x}). {x = 0. {x}.333333333} Pour chercher plus d’une racine d’une ´quation g´n´rale. e e e e Pour un polynˆme. Elle trouve e e les racines d’une ou de plusieurs ´quations en utilisant une variante de la e m´thode de Newton. e > poly :=3*x^4 . e e e > fsolve({cos(x)-x = 0}.324717957} L’option complex force Maple a chercher des racines complexes en ` plus des racines r´elles. {x = 1. {x = 1.2 R´soudre num´riquement : fsolve e e La commande fsolve est l’´quivalent num´rique de solve. et produit des solutions num´riques approxim´es.

57079632679489661923132169164} Les limites de solve La commande solve ne s’applique pas a toutes les situations. {x = 4. Pi. e > Digits := 30.. > fsolve({cos(x)=0}.3. la solution trouv´e ne garantit pas une pr´cision de trente d´cimales .712388980} Dans plusieurs cas. Souvenez` vous que l’approche employ´e par Maple est algorithmique et que ce dere nier ne poss`de pas n´cessairement la capacit´ de faire appel aux trucs e e e que vous pouvez utiliser lorsque vous r´solvez un probl`me a la main.5622795121 I}. Pour am´liorer la pr´cision de solutions. {x = 5. {x}.6623589786 + .333333333} Vous pouvez ´galement sp´cifier l’intervalle dans lequel chercher une e e racine en particulier. Digits. sp´cifier un e e intervalle peut aider Maple. {x}). {x = −. Dans ces situations.5622795121 I}. fsolve peut ´chouer dans sa recherche d’une rae cine. e e ` Math´matiquement parlant.2*Pi). cependant. Maple effectue toutes les ´tapes e e e de ses calculs a une pr´cision d’au moins trente chiffres significatifs au lieu ` e des dix chiffres par d´faut. Maple e e e tente de les r´soudre symboliquement le mieux possible. {x = 1. {x = 1.324717957}. complex). • 57 {x = −. mais il est fort e possible que vous deviez avoir recours a une solution num´rique en cas ` e d’´chec. Remare e quez que dans l’exemple suivant. {x}.6623589786 − . e e vous pouvez augmenter la valeur de la variable sp´ciale.2 R´soudre num´riquement : fsolve e e > fsolve({poly}. Digits := 30 > fsolve({cos(x)=0}. mˆme si une telle racine existe. les polynˆmes de degr´ sup´rieur ou ´gal e o e e e a ` cinq ne poss`dent pas de solution g´n´rale sous forme de radicaux. e .

si vous fixez la valeur de la variable _EnvAllSolutions e a ` true (vrai). _EnvAllSolutions := true > solve({sin(x)=0}. {x = π _Z1 ~} Le pr´fixe _Z de la variable indique que cette derni`re poss`de des e e e valeurs enti`res. .58 • Chapitre 3: Trouver des solutions La r´solution d’´quations trigonom´triques peut ´galement ˆtre dife e e e e ficile. {x}). Maple retourne alors l’ensemble complet des solutions.4). Cependant.. on suppose qu’il s’agit d’une variable e enti`re. {x = 0} Remarquez que Maple retourne seulement une solution parmi une infinit´. le travail avec toutes les ´quations transcendantes s’av`re e e plutˆt difficile. ` e e Lorsque vous utilisez solve. la commande fsolve vous permet de sp´cifier l’intervalle e e dans lequel Maple cherchera une solution. dans le cas pr´sent. De plus. > _EnvAllSolutions := true. Le tilde (~) indique qu’une hypoth`se a ´t´ plac´e sur e e ee e cette variable . o e > fsolve({sin(x)=0}. {x}. rappelez-vous de bien v´rifier vos r´sule e tats. Ainsi. vous pouvez obtenir plus de contrˆle sur les solutions calcul´es. {x = 3. Le prochain exemple met en ´vidence une incompr´hension qui peut e e survenir en raison de la gestion des singularit´s par Maple.14159265358979323846264338328} Ces types de probl`mes sont communs a tous les syt`mes de calcul e ` e symbolique et t´moignent des limites naturelles d’une approche algorithe mique a la r´solution d’´quations. En fait. e > expr := (x-1)^2/(x^2-1). o > solve({sin(x)=0}. 3. {x}).

Fort heureusement. soln).2 R´soudre num´riquement : fsolve e e • 59 expr := (x − 1)2 x2 − 1 Maple trouve bien une solution > soln := solve({expr=0}.5. on obtient 0/0.{x}).3. x=1). 10 8 6 y 4 2 –4 –2 0 –2 –4 –6 –8 –10 2 x 4 Maple enl`ve la singularit´ x = 1 de l’expression avant de la r´soudre. division by zero La limite montre pourtant que x = 1 est presque une solution. 0 Maple affiche une ligne verticale a l’endroit de l’asymptote. > Limit(expr. (x − 1)2 x→1 x2 − 1 lim > value (%). e e > eval(expr. y=-10. > plot(expr. ces e e v´rifications sont faciles au moyen de Maple. e . a moins de ` ` e sp´cifier discont=true. e e e e il est crucial de v´rifier les r´sultats obtenus. soln := {x = 1} mais lorsqu’elle est ´valu´e en x = 1. x=-5.. Error. e e e Peu importe la m´thode ou les outils utilis´s pour r´soudre les ´quations.10)..

. > msolve({3*x-4*y=1. > about( _Z1 ). . {x = 5 + 4 _Z1 . que _Z1 soit entier.3 D’autres solveurs Maple contient plusieurs commandes solve sp´cialis´es. ea Trouver des solutions enti`res e La commande isolve trouve des solutions enti`res aux ´quations en r´e e e solvant pour toutes les inconnues dans l’expression ou les expressions. {y = 6. e > msolve({2^n=3}.19). utilisez le e e ` syst`me d’aide en ligne en entrant ? suivi du nom de commande soue hait´ ` l’invite de Maple.7*x+y=2}._Zn pour d´noter les pae ram`tres entiers de la solution. x = 14} Maple utilise les variables globales _Z1.60 • Chapitre 3: Trouver des solutions 3. . y = 2 + 3 _Z1 } Trouver des solutions modulo m La commande msolve r´sout des ´quations enti`res modulo m (la repr´e e e e sentation positive pour les entiers) en r´solvant pour toutes les inconnues e dans l’expression ou les expressions. cette section n’en signale que quelques-unes. . Puisque vous rise e quez de ne pas les trouver aussi utiles que les fonctions plus g´n´rales e e solve et fsolve. > isolve({3*x-4*y=7}). Si vous d´sirez obtenir plus de d´tail a propos de ces commandes. dans ce cas-ci.17). {n = 13 + 18 _Z1 ~} Le tilde (~) sur _Z1 indique que msolve a plac´ une hypoth`se a propos e e ` de _Z1 .

4 Les polynomes • 61 Originally _Z1. rae e e tionnels. si le polynˆme contient seulement une inconnue.3. e ` R´soudre des relations de r´currence e e La commande rsolve r´sout des relations de r´currence.{f(n)}). complexes ou mˆme faire appel a d’autres e e ` variables. Les o coefficients peuvent ˆtre entiers (comme dans les exemples pr´c´dents).1.f(0)=1.   √ √ 2 2  n n  √ ) 5 (− 5 (− √ )    2 2 1− 5 5+1 √ √ + f(n) = −   5 5 1− 5 5+1     Consultez ´galement la rubrique d’aide ?LREtools. chaque terme du polynˆme contient un produit des inconnues. les termes o o peuvent contenir x3 . Si plus d’une inconnue existe. d´cimaux. comme dans le polynˆme x3 +3x2 y +y 2 . x1 = x et x0 = 1. irrationnels. > x^2 . x. un terme peut ´galement contee x nir un produit des inconnues. x2 − 1 > x + y + z. . renamed _Z1~: is assumed to be: integer La section 5. Par o exemple. un polynome est une expression contenant des inconnues .2 d´crit comment vous pouvez placer vous-mˆme des e e hypoth`ses a propos d’inconnues. e 3.4 Les polynomes Pour Maple. e e > rsolve({f(n)=f(n-1)+f(n-2).f(1)=1}. comme dans le cas du polynˆme 3 − 2x + 1. retournant une e e expression correspondant au terme g´n´ral de la fonction.

−x4 − x3 + x2 + x + 1 . sort _poly := x + x2 − x3 + 1 − x4 > sort(sort_poly).62 • Chapitre 3: Trouver des solutions x+y+z > 1/2*x^2 . a x4 + b x3 + c x2 + d x + f Maple poss`de des commandes permettant plusieurs types de manie pulations et de calculs math´matiques sur les polynˆmes .sqrt(3)*x . les prochaines e o sections en examinent quelques-uns. (1 − I) x + 3 + 4 I > a*x^4 + b*x^3 + c*x^2 + d*x + f. −x4 − x3 + x2 + x + 1 > sort_poly. 1 1 2 √ x − 3x − 2 3 > (1 . Plutˆt que de conserver une e e o deuxi`me copie du polynˆme original dont les termes ont ´t´ tri´s. sort e o ee e modifie directement la mani`re dont les termes sont emmagasin´s dans e e le polynˆme de d´part.x^4.1/3. Ainsi. vous remarquerez qu’il demeure tri´ : ea e > sort_poly := x + x^2 .x^3 + 1 . si vous affichez le polynˆme apr`s l’avoir o e o e pass´ ` sort.I)*x + 3 + 4*I. Tri et regroupement La commande sort arrange les termes d’un polynˆme dans l’ordre o d´croissant des degr´s de leurs inconnues.

z*y*x^2 + x + z*x. lorsque les termes ax et bx se trouvent dans o le mˆme polynˆme.y]. Selon l’autre option. [x.4 Les polynomes • 63 Maple classe les polynˆmes multivari´s de deux mani`res. c > mul_var_poly := y^3 + x^2*y^2 + x^3. ’plex’). big _poly := x y + z x y + y x2 − z y x2 + x + z x > collect(big_poly. x2 y 2 + x3 + y 3 > sort(mul_var_poly. x2 y 2 sera plac´ e e 3 et y 3 . mul _var _poly := y 3 + x2 y 2 + x3 > sort(mul_var_poly.y]). z). x3 + x2 y 2 + y 3 La commande collect regroupe les coefficients de mˆme degr´ dans e e un polynˆme. les termes sont class´s selon l’ordre e avant x lexicographique pur (plex). [x. La diff´rence entre ces deux types e de tri se con¸oit clairement au moyen d’un exemple. (y − z y) x2 + (y + z y + 1 + z) x > collect(big_poly. Maple les regroupe en (a + b)x. La m´thode o e e e e par d´faut classe les termes selon leur degr´ total. Par exemple. (x y − y x2 + x) z + x y + y x2 + x . Lorsque vous choisissez cette option. le tri examine d’abord les puissances de la premi`re variable de la liste des e variables (cette liste est le second argument de la commande sort). e o > big_poly:=x*y + z*x*y + y*x^2 . x). puis les puissances de la seconde variable.3. Ainsi.

x . x). > poly := x^2 + 3*x . x). x^2+x+1.y^3. 6 . Parmi les op´rations les plus fondamentales. true > rem(x^3 . x=2). q := x − 1 > collect( (x^2+x+1) * q + r.64 • Chapitre 3: Trouver des solutions Op´rations math´matiques e e Vous pouvez effectuer plusieurs op´rations math´matiques sur les poe e lynˆmes. > divide(x^3 .y. x).y). poly := x2 + 3 x − 4 > eval(poly. Maple fournit les commandes rem et quo pour d´terminer le e reste (remainder en anglais) et le quotient d’une division polynomiale.y^3. x3 + x + 1 Dans certaines situations. x . > r := rem(x^3+x+1.4. x ). r := 2 + x > q := quo(x^3+x+1. La commande divide v´rifie la o e division polynomiale exacte. on trouve la division o e (c’est-`-dire diviser un polynˆme par un autre et en d´terminer le quotient a o e et le reste). 0 Vous ´valuez les polynˆmes en des valeurs comme avec n’importe e o quelle expression en utilisant la commande eval. x^2+x+1. il peut suffire de d´terminer si un polynˆme e o divise exactement un autre polynˆme.

o e e .z).1 – Commandes servant a d´terminer les coefficients polynomiaux ` e Commande coeff lcoeff tcoeff coeffs degree ldegree Description extraire un coefficient trouver le coefficient du terme de plus haut degr´ e trouver le coefficient du terme de plus faible degr´ e retourner une suite de tous les coefficients d´terminer le degr´ (sup´rieur) du polynˆme e e e o d´terminer le degr´ inf´rieur du polynˆme e e e o > mul_var_poly := y^2*x . z^2).3*z + 1. 3 Recherche de racines et factorisation La commande solve d´termine les racines d’un polynˆme tandis que e o factor exprime le polynˆme sous une forme compl`tement factoris´e. e > poly := 3*z^3 . poly := 3 z 3 − z 2 − z + 1 > coeff(poly. 3.3. −1 Coefficients et degr´s e Les commandes degree et coeff d´terminent le degr´ d’un polynˆme et e e o fournissent un m´canisme d’extraction des coefficients. {y=1.x=-1}).z^2 + 2*z .2*y + x^2*y + 1. −1 > degree(poly. mul _var _poly := y 2 x − 2 y + y x2 + 1 > eval(mul_var_poly.4 Les polynomes • 65 Tab.

).x^5 . {x = −3}. e e o Consultez la rubrique d’aide ?factor pour obtenir plus de renseignements. La commande factor vous permet ´galement de e sp´cifier un corps alg´brique de nombres sur lequel factoriser le polynˆme. (x + y) (x2 − x y + y 2 ) Maple factorise le polynˆme sur l’anneau contenant les coefficients o (entiers.66 • Chapitre 3: Trouver des solutions > poly1 := x^6 . poly3 := x6 + 18 x5 + 135 x4 + 540 x3 + 1215 x2 + 1458 x + 729 > factor(poly3). poly1 := x6 − x5 − 9 x4 + x3 + 20 x2 + 12 x > factor(poly1). {x = −3} > factor(x^3 + y^3). (x + 3)6 > solve({poly3=0}. etc. x (x − 2) (x − 3) (x + 2) (x + 1)2 > poly2 := (x + 3).9*x^4 + x^3 + 20*x^2 + 12*x. {x = −3}. . {x = −3}. poly2 := x + 3 > poly3 := expand(poly2^6). rationnels. {x = −3}. {x}). {x = −3}.

Calculez la limite d’une fonction rationnelle lorsque x tend vers 1. > f := x -> (x^2-2*x+1)/(x^4 + 3*x^3 . x=1).3. Par exemple.2 – D’autres fonctions agissant sur des polynˆmes o Fonction content compoly discrim gcd gcdex interp lcm norm prem primpart randpoly recipoly resultant roots sqrfree Description contenu d’un polynˆme multivari´ o e d´composition polynomiale e discriminant d’un polynˆme o plus grand commun diviseur algorithme ´tendu de division euclidienne e interpolation polynomiale plus petit commun multiple norme d’un polynˆme o pseudo-reste partie primitive d’un polynˆme multivari´ o e polynˆme al´atoire o e polynˆme r´ciproque o e r´sultante de deux polynˆmes e o racines sur un corps alg´brique de nombres e factorisation libre de carr´s e 3.5 Le calcul diff´rentiel e Maple offre plusieurs outils puissants permettant la r´solution de e probl`mes de calcul diff´rentiel. 1 8 . f := x → > Limit(f(x). x2 − 2 x + 1 x4 + 3 x3 − 7 x2 + x + 2 x2 − 2 x + 1 x→1 x4 + 3 x3 − 7 x2 + x + 2 lim > value(%).5 Le calcul diff´rentiel e • 67 Tab.7*x^2 + x+2). il est utile pour calculer les e e limites des fonctions. 3.

par d´faut. polynom) supprime le terme d’ordre de la s´rie de mani`re que Maple puisse en tracer le graphique. ∞ Faites de mˆme pour la limite a droite. x=0). e e . Par exemple. utilisez la fonction e > f := x -> sin(4*x)*cos(x). x→(1/2 π)+ lim tan(x) > value(%). e ` > Limit(tan(x). f := x → sin(4 x) cos(x) > fs1 := series(f(x). left). Calculez la limite a gauche en utilisant l’option left. En modifiant la valeur de la variable sp´ciale Order. x→(1/2 π)− lim tan(x) > value(%). x=Pi/2.68 • Chapitre 3: Trouver des solutions Il est ´galement possible de calculer les limites a gauche et a droite e ` ` d’une fonction. la commande series produit un poe lynˆme d’ordre 6. fs1 := 4 x − 38 3 421 5 x + x + O(x6 ) 3 30 Remarquez que. il o e est possible d’augmenter ou de diminuer l’ordre d’une s´rie polynomiale. ` > Limit(tan(x). e L’utilisation de convert(fs1. consid´rez la limite de tan(x) lorsque x tend e vers π/2. −∞ Une autre op´ration facile a effectuer est la cr´ation d’une s´rie ape ` e e proximant une fonction donn´e. Par exemple. x=Pi/2. right).

..8–0. fs1 := 4 x − 38 3 421 5 10039 7 246601 9 x + x − x + x − 3 30 1260 90720 6125659 11 x + O(x12 ) 9979200 > p := convert(fs1.polynom).2 0.4 0. on remarque l’am´lioration escompt´e de e e e e e la pr´cision de l’approximation..5 Le calcul diff´rentiel e > p := convert(fs1.1. 2 1 –1 –0.6–0. • 69 p := 4 x − 38 3 421 5 x + x 3 30 > plot({f(x). .4–0. p := 4 x − 38 3 421 5 10039 7 246601 9 x + x − x + x 3 30 1260 90720 6125659 11 − x 9979200 > plot({f(x).2). x=0).8 1 x En augmentant l’ordre de troncation de la s´rie a 12 et en recommene ` ant les op´rations pr´c´dentes. Order := 12 > fs1 := series(f(x). p}. e > Order := 12.x=-1.3. -2.polynom). x=-1.6 0. p}.20 –1 –2 0.2)..1. -2.

4 0. ∂ (x sin(a x) + b x2 ) ∂x > df := value(%). sin(a x) + x cos(a x) a + 2 b x dx > value(%).8–0. x).70 • Chapitre 3: Trouver des solutions 2 1 –1 –0. int´grez son r´sultat et comparez celui-ci e e e a ` l’expression originale.2 0.8 1 x Maple peut calculer symboliquement les d´riv´es et les int´grales. − cos(a x) cos(a x) + a x sin(a x) + + b x2 a a > simplify(%). Par e e e exemple. > f := x -> x*sin(a*x) + b*x^2. d´rivez une expression.20 –1 –2 0. df := sin(a x) + x cos(a x) a + 2 b x > Int(df.6 0. f := x → x sin(a x) + b x2 > Diff(f(x).6–0. x (sin(a x) + b x) .4–0.x).

e e e > Int(exp(-x^2). e e > g := t -> exp(-a*t)*ln(t). t=0.x=1. e e e recalculez l’int´grale pr´c´dente sur l’intervalle de x = 1 ` x = 2. e(−x ) dx > value(%).3. x). Par exemple. g := t → e(−a t) ln(t) > Int (g(t).5 Le calcul diff´rentiel e • 71 Il n’est pas n´cessaire d’utiliser les formes inertes Diff et Int en cone jonction avec la commande value pour calculer symboliquement la d´riv´e e e et l’int´grale.2). ∞ 0 e(−a t) ln(t) dt > value(%). Maple ne peut d´terminer si une variable est e r´elle ou complexe. et retourne donc un r´sultat inattendu. 2 1√ π erf(x) 2 ` A quelques occasions.infinity)... 2 sin(2 a) + 3 b − sin(a) Consid´rez une int´grale plus compliqu´e. 2 sin(a x) + x cos(a x) a + 2 b x dx 1 > value(%). e e e a > Int(df. Vous pouvez ´galement effectuer des int´grales d´finies. Les r´sultats peuvent ˆtre calcul´s en une seule commande e e e e en utilisant respectivement diff et int. .

72

Chapitre 3: Trouver des solutions

t→∞

lim −

e(−a t) ln(t) + Ei(1, a t) + γ + ln(a) a

Ici, Maple assume que le param`tre est un nombre complexe. Il ree tourne donc une r´ponse plus g´n´rale. e e e Dans les situations o` vous savez que a est un nombre positif r´el, u e sp´cifiez-le a Maple en utilisant la commande assume. e `
> assume(a > 0): > ans := Int(g(t), t=0..infinity);

ans :=
0

e(−a~ t) ln(t) dt

> value(%);

ln(a~) γ − a~ a~

Le r´sultat est beaucoup plus simple. Le seul terme non ´l´mentaire est e ee la constante gamma. Le tilde (~) indique que a porte une hypoth`se. Vous e devez maintenant supprimer cette hypoth`se pour parcourir les exemples e ult´rieurs. Deux ´tapes sont n´cessaires. La r´ponse, ans, contient a avec e e e e des hypoth`ses. Si vous souhaitez repartir de z´ro et continuer a utiliser e e ` ans, vous devez remplacer toutes les occurrences de a~ par a.
> ans := subs(a =’a’, ans );

ans :=
0

e(−a t) ln(t) dt

Le premier argument, a = ’a’, m´rite une attention particuli`re. Si e e vous tapez a apr`s avoir plac´ une hypoth`se sur a, Maple assume autoe e e matiquement que vous parlez de la variable a~. En Maple, les guillemets simples retardent l’´valuation. Dans ce cas, ils assurent que Maple ine terpr`te le deuxi`me a comme a et non a~. e e Maintenant que vous avez supprim´ l’hypoth`se sur a dans ans, vous e e pouvez supprimer l’hypoth`se sur a elle-mˆme en lui affectant son propre e e nom.
> a := ’a’:

Utilisez les guillemets simples pour la mˆme raison que pr´c´demment. e e e Pour plus de renseignements, consultez la section 5.2.

3.6 Les ´quations diff´rentielles : dsolve e e

• 73

3.6

Les ´quations diff´rentielles : dsolve e e

Maple peut r´soudre symboliquement plusieurs ´quations diff´rentielles e e e ordinaires (EDO), incluant les probl`mes de conditions initiales et de e conditions aux limites. D´finissez une EDO. e
> ode1 := {diff(y(t),t,t) + 5*diff(y(t),t) + 6*y(t) = 0};

ode1 := {(

d2 d y(t)) + 5 ( y(t)) + 6 y(t) = 0} 2 dt dt

D´finissez les conditions initiales. e
> ic := {y(0)=0, D(y)(0)=1};

ic := {y(0) = 0, D(y)(0) = 1} R´solvez au moyen de dsolve, en utilisant l’op´rateur union pour e e former l’union des deux ensembles.
> soln := dsolve(ode1 union ic, {y(t)});

soln := y(t) = −e(−3 t) + e(−2 t) Si vous souhaitez utiliser cette solution pour l’´valuer en certains e points ou pour en tracer le graphique, rappelez-vous d’utiliser la commande unapply pour d´finir correctement une fonction Maple. La sece tion 3.1 discute davantage de cette question. Vous pouvez extraire une valeur d’un ensemble solution au moyen de la commande eval.
> eval( y(t), soln );

−e(−3 t) + e(−2 t) Utilisez maintenant ce fait pour d´finir y comme une fonction de t en e utilisant unapply :
> y1:= unapply(%, t );

y1 := t → −e(−3 t) + e(−2 t)

74

Chapitre 3: Trouver des solutions

> y1(a);

−e(−3 a) + e(−2 a) V´rifiez maintenant que y1 est bien une solution de l’EDO : e
> eval(ode1, y=y1);

{0 = 0} et que y1 satisfait bien aux conditions initiales.
> eval(ic, y=y1);

{1 = 1, 0 = 0} Une autre m´thode de v´rification des solutions est ´galement dispoe e e nible, bien qu’elle puisse sembler d´routante au premier abord. Donnez a e ` la nouvelle solution le nom y plutˆt que y1. o
> y := unapply( eval(y(t), soln), t );

y := t → −e(−3 t) + e(−2 t) Maintenant, lorsque vous entrez une ´quation contenant y, Maple utie lise cette fonction et en ´value le r´sultat, en une seule ´tape. e e e
> ode1;

{0 = 0}
> ic;

{1 = 1, 0 = 0} Si vous souhaitez modifier l’´quation diff´rentielle, vous ne voudrez e e plus de cette d´finition pour y(x) ; vous devrez donc supprimer cette e d´finition au moyen de la commande suivante : e
> y := ’y’;

3.6 Les ´quations diff´rentielles : dsolve e e

• 75

y := y Maple reconnaˆ ´galement les fonctions sp´ciales, comme la fonction ıt e e de Dirac utilis´e en physique. e
> ode2 := 10^6*diff(y(x),x,x,x,x) = Dirac(x-2) > Dirac(x-4);

ode2 := 1000000 (

d4 y(x)) = Dirac(x − 2) − Dirac(x − 4) dx4

Sp´cifiez des conditions aux limites : e
> bc := {y(0)=0, D(D(y))(0)=0, y(5)=0};

bc := {(D(2) )(y)(0) = 0, y(0) = 0, y(5) = 0} sp´cifiez ´galement une valeur initiale. e e
> iv := {D(D(y))(5)=0};

iv := {(D(2) )(y)(5) = 0}
> soln := dsolve({ode2} union bc union iv, {y(x)});

soln := y(x) = − − − + + +

1 Heaviside(x − 2) x3 6000000 1 1 Heaviside(x − 2) + Heaviside(x − 2) x 750000 500000 1 Heaviside(x − 2) x2 1000000 1 Heaviside(x − 4) x3 6000000 1 1 Heaviside(x − 4) − Heaviside(x − 4) x 93750 125000 1 1 Heaviside(x − 4) x2 − x3 500000 15000000 1 x 1250000

> eval(y(x), soln);

76

Chapitre 3: Trouver des solutions

1 1 Heaviside(x − 2) x3 − Heaviside(x − 2) 6000000 750000 1 + Heaviside(x − 2) x 500000 1 − Heaviside(x − 2) x2 1000000 1 − Heaviside(x − 4) x3 6000000 1 1 + Heaviside(x − 4) − Heaviside(x − 4) x 93750 125000 1 1 + Heaviside(x − 4) x2 − x3 500000 15000000 1 + x 1250000
> y := unapply(%, x);

1 Heaviside(x − 2) x3 6000000 1 1 − Heaviside(x − 2) + Heaviside(x − 2) x 750000 500000 1 − Heaviside(x − 2) x2 1000000 1 − Heaviside(x − 4) x3 6000000 1 1 + Heaviside(x − 4) − Heaviside(x − 4) x 93750 125000 1 1 + Heaviside(x − 4) x2 − x3 500000 15000000 1 + x 1250000 Cette valeur de y satisfait a l’´quation diff´rentielle, a la condition ` e e ` aux limites et a la valeur initiale. ` y := x →
> ode2;

3.6 Les ´quations diff´rentielles : dsolve e e

• 77

24 Dirac(1, x − 4) − 12 Dirac(1, x − 2) + 6 Dirac(1, x − 2) x − 6 Dirac(1, x − 4) x + 8 Dirac(2, x − 2) − 8 Dirac(2, x − 2) x + 2 Dirac(2, x − 2) x2 + 16 Dirac(2, x − 4) x 1 − 2 Dirac(2, x − 4) x2 + Dirac(3, x − 2) x3 6 + 2 Dirac(3, x − 2) x − Dirac(3, x − 2) x2 1 − Dirac(3, x − 4) x3 − 8 Dirac(3, x − 4) x 6 + 2 Dirac(3, x − 4) x2 − 32 Dirac(2, x − 4) 4 32 − Dirac(3, x − 2) + Dirac(3, x − 4) + 4 Dirac(x − 2) 3 3 − 4 Dirac(x − 4) = Dirac(x − 2) − Dirac(x − 4)
> simplify(%);

Dirac(x − 2) − Dirac(x − 4) = Dirac(x − 2) − Dirac(x − 4)
> bc;

{0 = 0}
> iv;

{0 = 0}
> plot(y(x), x=0..5, axes=BOXED);
1e–06 8e–07 6e–07 4e–07 2e–07 0 0 1 2 3 4 5

x

Maintenant que vous n’utilisez plus y, vous devriez y enlever toute r´f´rence. ee

_C4. x ). Observez encore qu’il est possible d’extraire et de d´finir les solutions e a ` l’aide des commandes eval et unapply : > y := unapply(eval(y(x). soln := { y(x) = −_C1 sin(x) + _C2 ex − _C3 cos(x) + _C4 e(−x) . y := y Maple peut ´galement r´soudre des syst`mes d’´quations diff´rene e e e e tielles . de_sys := { d2 d2 y(x) = z(x). par exemple. y := x → −_C1 e(−x) + _C2 ex − _C3 sin(x) + _C4 cos(x) > y(1).x. z(x) = _C1 sin(x) + _C2 ex + _C3 cos(x) + _C4 e(−x) } Si vous r´solvez le syst`me sans sp´cifier de conditions suppl´mene e e e taires.. −_C1 e(−1) + _C2 e − _C3 sin(1) + _C4 cos(1) Vous pouvez d´r´f´rencer les solutions lorsque vous en avez termin´. soln). Maple produit automatiquement les constantes appropri´es _C1. {z(x).x)=z(x).y(x)}). e . . e > de_sys := { diff(y(x). . eee e > y := ’y’.78 • Chapitre 3: Trouver des solutions > y := ’y’. diff(z(x). le syst`me suivant form´ de deux ´quations simule e e tan´es du second ordre. y := y . z(x) = y(x)} dx2 dx2 > soln := dsolve(de_sys.x)=y(x) }.x.

entrez le nom abr´g´ de la commande. ces groupes de fonctions se situent au-dessus du noyau. Vous pouvez utiliser une commande d’un package de trois mani`res. e Les derni`res commandes de la biblioth`que sont les packages. ) Si le package poss`de un sous-package. le nom complet du sous-package.7 L’organisation de Maple • 79 3.. suivi de la commande d´sir´e. le package LinearAlgebra e contient des commandes pour la manipulation des matrices. Chacun e e des nombreux packages de Maple contient un groupe de commandes effectuant des calculs apparent´s. Les programmeurs de Maple ont d´lib´r´ment e e ee conserv´ sa taille petite pour en pr´server la rapidit´ d’ex´cution.. e e ea Ces commandes sont charg´es lorsqu’elles sont appel´es — il n’est pas e e n´cessaire de les charger explicitement. e e package [cmd ]( . e o Les 90% restants du savoir math´matique de Maple sont ´crits dans e e le langage Maple et r´sident dans sa biblioth`que (library en anglais). e e . La e e biblioth`que se divise en deux groupes : la biblioth`que principale (main e e e library ) et les packages. La biblioth`que principale contient les commandes Maple les plus e fr´quemment utilis´es (excluant celles d´j` contenues dans le noyau).) Puis. Le e e e e noyau de Maple ex´cute les routines les plus fr´quentes en arithm´tique e e e enti`re et rationnelle et dans la manipulation des polynˆmes. utilisez le nom complet du pace kage. car e il contient les commandes fondamentales et primitives : l’interpr´teur du e langage Maple (qui convertit les commandes saisies en instructions machine que le microprocesseur de votre ordinateur peut comprendre). Par exemple. Hi´rarchiquement.. des algorithmes de calcul num´rique ´l´mentaire ainsi que des routines d’afe ee fichage des r´sultats et d’op´rations d’entr´e-sortie. suivi de la commande d´sir´e. Maple ne charge en m´moire que le noyau (en anglais e e kernel ) de son programme.7 L’organisation de Maple Au d´marrage. Utilisez le nom complet du package. e 1. e e e Le noyau est form´ de code C hautement optimis´ et totalise environ e e 10% de la taille du syst`me. Le langage Maple produit des e proc´dures tr`s compactes qui n’affichent pas de d´lai observable : vous e e e ne remarquerez probablement pas la diff´rence entre ces derni`res et les e e commandes du noyau ´crites en C. e e package[souspackage][cmd] (. Ce noyau constitue la base du syst`me..3.

) 3. . e e with(package. with(package ) Si le package poss`de un sous-package. e with(package[souspackage].) 2. cmd ) Puis. utilisez la commande with de e la mani`re suivante. > with(Student[Calculus1]). Activez le nom abr´g´ d’une seule commande d’un package... entrez le nom abr´g´ de la commande. cmd ) Si le package poss`de un sous-package. e e cmd (. e with(package[souspackage] ) Puis.. e e cmd (....80 • Chapitre 3: Trouver des solutions cmd (.) Le prochain exemple utilise la commande Tangent du package Student pour calculer la pente de la tangente de l’expression sin(x) au point x = 0. entrez le nom abr´g´ de la commande. utilisez la commande with de e la mani`re suivante. Activez les noms abr´g´s pour toutes les commandes d’un package en e e utilisant la commande with.

ArcLength. ShowIncomplete. ApproximateInt . NewtonsMethod . VolumeOfRevolution. Ce package permet la diff´rentiation e . GetNumProblems . Show .3. Tangent . Asymptotes . GetMessage. FunctionAverage. Rule. consultez la page d’aide ?nomdupackage . Maple vous e e avertit lorsqu’il red´finit des noms d´j` existants. Integrand . ExtremePoints . Understand . CriticalPoints . e Liste des packages Vous trouverez la liste de packages suivante dans la page d’aide ?packages. Clear . e ea 3. TaylorApproximation. Undo.8 Les packages Maple • 81 [AntiderivativePlot . De plus. FunctionChart . InflectionPoints . MeanValueTheorem. PointInterpolation. RiemannSum. algcurves Outils pour l’´tude des vari´t´s (courbes) alg´briques unidie ee e mensionnelles d´finies par des polynˆmes multivari´s. Hint . DerivativePlot . RollesTheorem. Summand . ShowSteps. e o e codegen Outils de cr´ation. vous voyez apparaˆ une liste ıtre de tous les noms abr´g´s des commandes du package. NewtonQuotient . SurfaceOfRevolution. x Lorsque vous utilisez with(package ). Pour obtenir une liste compl`te des commandes d’un package e en particulier. Roots . GetProblem. de manipulation et de traduction de proc´e e dures Maple en d’autres langages. Les exemples de cette section ne se veulent pas e e e d´taill´s et complets : ils ne sont que des illustrations de quelques come e mandes dans des packages particuliers qui vous donneront un aper¸u des c capacit´s de Maple. WhatProblem] > Tangent(sin(x). InversePlot . du calcul diff´rentiel ´l´mentaire a la th´orie e ee ` e g´n´rale de la relativit´. x = 0).8 Les packages Maple Les packages inclus dans Maple permettent d’effectuer des tˆches dans a de nombreuses disciplines.

de factorisation et de e tests de primalit´. CurveFitting Commandes qui permettent de tracer des courbes de tendances. e e . par exemple. supporte le calcul sur les polynˆmes. e sph`res. en cliquant e sur une expression avec le bouton de droite de la souris). genfunc Commandes de manipulation des fonctions g´n´ratrices ratione e nelles. d´di´ aux e e e probl`mes de g´om´trie diff´rentielle. DEtools Outils de manipulation. lignes. triangles.) combstruct Commandes qui permettent de g´n´rer et de compter les e e structures combinatoires ainsi que de d´terminer les ´quations des e e fonctions g´n´ratrices permettant ce comptage. (Utilisez plutˆt le package combstruct lorsque cela est e o possible. de mˆme que les partie tions enti`res. plans. les anneaux de polynˆmes et les anneaux o de matrices.82 • Chapitre 3: Trouver des solutions automatique. etc. e e e e Domains Commandes qui permettent de cr´er des domaines de calcul e (domains of computation en anglais) . etc. difforms Commandes de gestion des formes diff´rentielles . CodeGeneration Fonctions qui traduisent un programme Maple en d’autres langages de programmation. e e context Outils de construction et de modification des menus contextuels de l’interface graphique de Maple (affich´s. les matrices de mˆme que les s´ries sur des anneaux de o e e nombres. espaces de phases et graphiques de champs. l’optimisation de code. combinat Fonctions combinatoires incluant des commandes pour calculer les permutations et les combinaisons de listes. geom3d Commandes de g´om´trie euclidienne tridimensionnelle pour e e d´finir et manipuler en trois dimensions points. GaussInt Commandes qui permettent de travailler sur les nombres de la forme a + bI (o` a et b sont entiers) que l’on appelle les entiers u gaussiens . e e diffalg Commandes de manipulation de syst`mes d’´quations diff´rene e e tielles polynomiales (EDO ou EDP). ExternalCalling Commandes effectuant des liens vers des fonctions externes. finance Commandes de calcul financier. la traduction en C et en FORTRAN. commandes de calcul du PGCD. poly`dres. les anneaux finis. de r´solution et d’affichage des syst`mes e e d’´quations diff´rentielles .

d’affichage et de r´solution de e relations de r´currence lin´aire. e e d´terminent le d´nominateur universel d’une solution rationnelle et e e transforment un syst`me de r´currence matriciel en un syst`me e e e ´quivalent avec une matrice de tˆte ou de queue non singuli`re. calculer avec de grandes matrices nue m´riques et effectuer des op´rations d’alg`bre matricielle. les e d´terminants et la d´composition LU. triangles ` et cercles. Matlab Commandes qui exploitent plusieurs des fonctions matricielles num´riques de Matlab. (Ce package est accessible seulee e ment si Matlab est install´ sur votre syst`me. e group Commandes permettant de travailler avec les groupes de permutations et les groupes finiment pr´sent´s. LREtools Commandes de manipulation. de l’addition de matrices aux vecteurs et valeurs propres. MathML Commandes qui importent et exportent des expressions Maple en texte MathML. e e inttrans Commandes qui permettent de travailler avec les transformations d’int´grales et leurs inverses. incluant les valeurs et les vecteurs propres. des boˆ de diae e ıtes logue et d’autres interfaces visuelles qui interagissent avec l’utilisateur. outils de calcul pour les alg`bres de Ore et les D-modules. e e e e linalg Plus de 100 commandes de manipulation matricielle et vectorielle . o . Groebner Commandes pour les calculs en base de Gr¨bner . e e Maplets Commandes permettant de cr´er des fenˆtres. e e e ListTools Commandes de manipulation de listes. e e e LinearFunctionalSystems Commandes qui permettent de r´soudre des e syst`mes lin´aires de fonctions avec des coefficients polynomiaux. en particuo lier.) e e MatrixPolynomialAlgebra Ensemble d’outils de manipulation alg´e brique des polynˆmes matriciels.8 Les packages Maple • 83 geometry Commandes de g´om´trie euclidienne bidimensionnelle servant e e a e ` d´finir et a manipuler en deux dimensions points. LinearAlgebra Commandes d’alg`bre lin´aire am´lior´es servant a cr´er e e e e ` e des types sp´ciaux de matrices. lignes. e LibraryTools Commandes de manipulation et de traitement de biblioth`ques.3. e liesymm Commandes servant a caract´riser les sym´tries de contact des ` e e syst`mes d’´quations aux d´riv´es partielles.

l’affichage de texte et de graphiques dans diff´rents syst`mes de coordonn´es. ce package s’av`re utile pour la r´solution d’´quations e e e diff´rentielles. e e e e process Commandes permettant d’´crire des programmes Maple multie processus sous UNIX. e e orthopoly Commandes servant a g´n´rer diff´rents types de polynˆmes ` e e e o orthogonaux . polytools Commandes de manipulation d’objets polynomiaux. Ore_algebra Routines de calcul de base dans les alg`bres d’op´rateurs e e lin´aires. tests de prie malit´. de r´solution et d’affichage d’´quations e e aux d´riv´es partielles. RandomTools Commandes permettant de travailler avec des objets al´ae toires.84 • Chapitre 3: Trouver des solutions networks Outils de construction. e . e numapprox Commandes de calcul d’approximations polynomiales de fonctions sur un intervalle donn´. RationalNormalForms Commandes permettant de construire la forme normale polynomiale ou les formes rationnelles canoniques d’une fonction rationnelle. e PDEtools Outils de manipulation. e padic Commandes de calcul des approximations p-adiques de nombres r´els. calcul du n-i`me nombre premier. powseries Commandes servant a cr´er et manipuler des s´ries enti`res ` e e e formelles repr´sent´es par leur terme g´n´ral. de mani`re plus g´n´rale. de tra¸age et d’analyse des r´seaux c e combinatoires. e e e ` e e ` plottools Commandes servant a g´n´rer et a manipuler des objets graphiques. e OrthogonalSeries Commandes de manipulation de s´ries de polynˆmes e o orthogonaux classiques ou. e numtheory Commandes de th´orie des nombres classique. Ce package contient ´galement des come e mandes de gestion des convergents. Outils de gestion des graphes orient´s et d’expressions e arbitraires pour les poids des nœuds et des arˆtes. les graphiques bidimensionnels et tridimensionnels de fonctions implicites. de polynˆmes e e e o hyperg´om´triques. g´n´ration de polynˆmes e e e e o d’unit´s cyclotomiques. PolynomialTools Commandes de manipulation d’objets polynomiaux. ine e e cluant les graphiques d’isovaleurs. ou la repr´sentation minimale d’un terme hyperg´oe e m´trique. e e plots Commandes pour diff´rents types de graphiques sp´cialis´s.

Sumtools Outils permettant de calculer des formes ferm´es de sommes e d´finies et ind´finies. Come e prend les algorithmes de Gosper et de Zeilberger. sumtools Commandes de calcul de sommes d´finies et ind´finies. Le premier de ceux-ci est Calculus1. Ce package donne aux utilisateurs exp´rie e e ment´s l’acc`s aux routines appliqu´es par la commande solve pour e e e un meilleur contrˆle du processus de r´solution. ce package sera ´largi pour inclure d’autres souse packages li´s ` l’enseignement. et non le syst`me des nombres e e e e complexes. stats Manipulation statistique de donn´es . de mˆme que des routines pour trouver les points critiques d’une expression. les coefficients de corr´lation. simplex Commandes d’optimisation lin´aire utilisant la m´thode du sime e plexe. e a Calculus1 Commandes permettant de d´cortiquer les ´tapes de la e e e e diff´rentiation. e e e e . Dans des versions e ` futures de Maple. les sommes de Riemann. de l’int´gration et du calcul des limites. e Les routines de ce package vous permettent de vous connecter a des ` processus situ´s sur des hˆtes distants (par Internet ou Intranet) et e o ´changer des donn´es avec ces processus. o e Spread Outils permettant de travailler avec les feuilles de calcul dans Maple. les volumes de r´volution. la e e variance et l’analyse de r´gression. l’´cart type. e StringTools Commandes optimis´es de manipulation des chaˆ e ınes de caract`res. e e Sockets Commandes permettant les communications r´seau avec Maple. inclut des commandes pour e le calcul de la moyenne. e e tensor Commandes permettant le calcul tensoriel et ses applications a ` la th´orie g´n´rale de la relativit´. la visuae lisation de la m´thode de Newton. e Student Sous-packages sp´cifiques a certains cours. ScientificConstants Commandes donnant acc`s aux valeurs de diff´e e rentes quantit´s physiques utilis´es couramment en physique ou en e e chimie.8 Les packages Maple • 85 RealDomain Fournit un environnement dans lequel le syst`me de nombres e assum´ est le syst`me des nombres r´els. Slode Commandes servant a trouver des solutions a des EDO lin´aires ` ` e sous forme de s´ries enti`res. la e e longueur d’arc.3. e e SolveTools Commandes qui permettent de r´soudre des syst`mes e e d’´quations alg´briques.

d (4 x2 ) dx Utilisez la r`gle constantmultiple. Consid´rez le probl`me suie e e e vant : trouvez la d´riv´e de la fonction 4 ∗ x2 .86 • Chapitre 3: Trouver des solutions Le package Student Calculus1 (une variable) Le package Student[Calculus1] vous aide a effectuer les calculs de ` diff´rentiation. e > Rule[sum](%). Creating problem #2 . remplacez e les deux points par le point-virgule a la fin de la commande. d (4 x2 ) = 8 x dx Consid´rez maintenant cet exemple d’int´gration. e > Rule[constantmultiple](%). d’int´gration et de limites. ` > Diff(4*x^2. x=0. e > Rule[power](%). Creating problem #1 d d (4 x2 ) = 4 ( (x2 )) dx dx Utilisez la r`gle power. Int´grez x∗cos(x)+ e e e x entre x = 0 et x = π. π x cos(x) + x dx 0 Utilisez la r`gle sum. > Int(x*cos(x) + x.. x).Pi). e e > with(Student[Calculus1]): > infolevel[Student] := 1: Pour voir la liste de toutes les commandes charg´es par Maple.

8 Les packages Maple π π π • 87 x cos(x) + x dx = 0 0 x cos(x) dx + 0 x dx Utilisez la r`gle power. de la e ` e constante multiplicative. π π x cos(x) + x dx = 0 0 x cos(x) dx + 1 2 π 2 Employez la commande Hint pour obtenir un indice sur la prochaine ´tape de r´solution du probl`me. π 0 x cos(x) + x dx = −2 + 1 2 π 2 Employez le package Student[Calculus1] pour calculer la limite de (1 + 1/x)x . x. Utilisez la commande Understand pour sp´cifier des r`gles qui servie e ront au calcul d’une limite par la commande Limit sans les appliquer directement. . de la puissance et de la somme pour le prochain exemple. ‘c*‘. Sp´cifiez a Understand les r`gles de la constante. constant. e > Rule[power](%). > Rule[%](%%). e e e > Hint(%). e > Rule[sin](%). > Understand(Limit. power. sin(x)] Utilisez cet indice avec la commande Rule. sum).3. π 0 π x cos(x) + x dx = − 0 sin(x) dx + 1 2 π 2 Servez-vous de la r`gle sin pour terminer le calcul. [parts .

ln(1 + > Rule[%](%%). (1 + 1 1 x ) = e(x ln(1+ x )) ] x Utilisez la r`gle donn´e par Hint.88 • Chapitre 3: Trouver des solutions Limit = [constant . power . x→∞ lim (1 + 1 x ) x Demandez un indice a propos de la prochaine ´tape a effectuer. x→∞ lim (1 + 1 x ) = e(limx→∞ x 1 x ln(1+ x )) > Hint(%). [exp] > Rule[%](%%). constantmultiple. 1 )] x . ` e ` > Hint(%). x=infinity). sum] > Limit((1 + 1/x)^x. e e > Rule[%](%%). x→∞ lim (1 + 1 1 x ) = lim e(x ln(1+ x )) x→∞ x > Hint(%). [lhopital . Creating problem #3 Rewrite the expression as an exponential to prepare for using l‘Hopital’s rule [rewrite.

x=0. x→∞ lim (1 + 1 x ) =e x Consid´rez la fonction −2/3 ∗ x2 + x. Tracez-en le graphique. > showtangent=true). de mˆme e e que la pente de sa tangente en x = 0. x = x+1  1  1 1+ x > Rule[%](%%).2.   rewrite. output=plot. 3 ] 2 Vous pouvez calculer l’aire sous la courbe entre ces deux points au moyen de sommes de Riemann.8 Les packages Maple • 89 x→∞ lim (1 + 1 x ) = e(limx→∞ x x ) x+1 > Hint(%). .f(0)) 2 1 –2 –1 x 1 2 –1 –2 –3 –4 –5 f(x) Thetangentatx=0 En quel endroit cette courbe traverse-t-elle l’axe des x ? > Roots(-2/3*x^2+x).. -2.3. [0. > Tangent(-2/3*x^2+x. TheTangenttotheGraphof f(x)=–2/3*x^2+x atthePoint(0.

1 0 –0.1 0.15.6 –0.3/2] UsingaMidpointRiemannSum ApproximateValue:.8 x 1 1. -0.2 Area:.. partition=n).2 0.90 • Chapitre 3: Trouver des solutions > ApproximateInt(-2/3*x^2+x.2 Area:.6 0.4 0.3 0.  n−1 i=0 3 2  1 1 (i + )2 3 i +  3 2 + 2 −  2 2 n 2 n n . x=0.2 1.4]). method=midpoint. -0.2 0. x=0.4 0. > ApproximateInt(-2/3*x^2+x.1 0 –0..3/2. method=midpoint.6.4 1. augmentez e a ` 40 le nombre de boˆ utilis´es..3/2.3/2.15.6.1.6 0.3 0..4].1 0.0..0.4 0.2 1. AnApproximationoftheIntegralof f(x)=–2/3*x^2+x ontheInterval[0.1. ıtes e > ApproximateInt(-2/3*x^2+x.6 –0.3/2] UsingaMidpointRiemannSum ApproximateValue:. view=[0.2 0. > output=sum.3751171867 f(x) Quelle est la valeur exacte ? Utilisez d’abord n boˆ ıtes et calculez la formule de la somme..8 x 1 1. view=[0. x=0.3750000000 0. > partition=40).. > output=plot. AnApproximationoftheIntegralof f(x)=–2/3*x^2+x ontheInterval[0.2 0.3750000000 0. > output=plot.4 0.4 1. method=midpoint.3768750000 f(x) Puisque le r´sultat n’est pas une bonne approximation.

Il est possible d’exprimer n’importe quel ´l´ment de l’espace vectoriel comme une combinaiee son lin´aire des ´l´ments de la base. 3/2 0 − 2 2 x + x dx 3 > value(%). 3 8 Pour plus d’information sur le calcul diff´rentiel avec Maple. v3 . > Limit( %. Le package LinearAlgebra En alg`bre lin´aire. v2 . vn } est lin´airement ind´pendant si et seulement si.  n−1 i=0 3 n→∞ 2 lim > value(%). .. un ensemble de vecteurs lin´airement ind´pendants e e e e qui engendrent l’espace vectoriel se nomme une base. . n=infinity ).8 Les packages Maple • 91 Prenez ensuite la limite lorsque n tend vers ∞.3/2 ).3. . reporteze vous au chapitre 6. lorsque c1 v1 + c2 v2 + c3 v3 + · · · + cn vn = 0 alors c1 = c2 = c3 = · · · = cn = 0. . e > Int(-2/3*x^2+x. e ee e e Un ensemble de vecteurs {v1 . .  1 1 (i + )2 3 i +  3 2 + 2 −  2 n2 2 n n 3 8 Remarquez maintenant que vous pouvez obtenir le mˆme r´sultat au e e moyen d’une int´grale. x=0.

−3. 3. > > > > > with(LinearAlgebra): v1:=<1|-1|0|1>: v2:=<5|-2|3|-1>: v3:=<6|-3|3|0>: vector_space:=<v1. e > b:=RowSpace(vector_space).0. 0]. 0. Exprimer le vecteur [1.v2. [0. −1] + c3 [6.  −_t3 3  −_t3 3  _t3 3  Les vecteurs sont lin´airement d´pendants puisque chacun est un proe e duit lin´aire d’une variable. <0. −2]] . La e commande RowSpace retourne une base pour un espace vectoriel donn´. 0] Cette ´quation est ´quivalente a e e ` c1 + 5c2 + 6c3 = 0 −c1 − 2c2 − 3c3 = 0 3c2 + 3c3 = 0 c1 − c2 = 0  > LinearSolve( Transpose(vector_space). 0. ` Solution : Entrer les vecteurs. 1. −5] par rapport a cette base. 3.0> ). 3. 3. 1. −1]. c1 [1. −3. 0. 0] = [0. −1] et [6. il forment une base. 2.  1 −1 0 1 vector _space :=  5 −2 3 −1  6 −3 3 0 Si les vecteurs sont lin´airement ind´pendants. 1] + c2 [5.0.92 • Chapitre 3: Trouver des solutions Probl`me : D´terminer une base de l’espace vectoriel g´n´r´ par les e e e ee vecteurs [1. −2. b := [[1. 0. −1.v3>. −1. 3. [5. 1]. 1. e e Pour v´rifier l’ind´pendance lin´aire. Ils ne peuvent donc pas former une base. ´crivez l’´quation c1 v1 +c2 v2 +c3 v3 = e e e e e 0. 0. −2.

3. en supposant que Matlab soit install´ sur votre e e syst`me 1 . on d´finit d’abord la matrice souhait´e avec la syntaxe de Maple.5.[2.3]. 1. 0. 2. utilis´ e e par des ing´nieurs et d’autres professionnels.2.8 Les packages Maple > b1:=b[1]. −2] > basis:=<b1. Le package Matlab Le package Matlab vous permet d’appeler certaines fonctions de Matlab a ` partir d’une session Maple.3]. 1. −1] b2 := [0. 1. 1 .6]]): On appelle ensuite la commande eig de Matlab. Il existe ´galement un Symbolic Computation Toolbox disponible pour Matlab qui e vous permet d’appeler des commandes Maple depuis Matlab.[1.2. e On doit d’abord ´tablir une connexion entre les deux produits avec e > Matlab[openlink](). <1|2|3|-5> ). ex´cu` e tez la commande ?LinearAlgebra. Pour d´terminer les valeurs et les vecteurs propres d’une matrice d’ene tiers. Matlab est une abr´viation de matrix laboratory (laboratoire e de matrices) et est un package de calcul num´rique fort populaire. • 93 b1 := [1. 1 2 Pour obtenir davantage d’information a propos de ce package.3. e ` > LinearSolve( Transpose(basis). −5] en coordonn´es par rapport a cette base. basis := 1 0 1 −1 0 1 1 −2 Exprimer [1.b2>. b2:=b[2]. e e > A := Matrix([1.

0. transform] .W) sp´cifie que deux objets seront g´n´r´s et assign´s aux variables e e ee e — les valeurs propres. 0.321825 0.3218253      > P. ` e Le (P. statplots .W := Matlab[eig](A.8303435030540421 . stats est un exemple de package renfermant des sous-packages (sub` packages en anglais). a W. 0. 0.3940365889964673 −. et les vecteurs propres. cette fonctionnalit´ est peu utilis´e. Il contient ´galement un grand ´ventail de distributions e e statistiques. −. Consultez l’aide sous la rubrique e e Matlab pour obtenir plus d’information sur les donn´es Matlab accept´es e e par Maple. a P. de mˆme que plusieurs types de graphiques utilis´s e e e en statistique. L’affectation ` ` multiple est ´galement possible avec les commandes Maple.5612673 10−15 0.3940365889964672 −2.     9. random. puisque e les commandes Maple existantes sont con¸ues pour ne retourner qu’un c seul r´sultat.    −. mais. fit . e > W. A l’int´rieur de chaque sous-package se trouvent e plusieurs commandes group´es par fonctionnalit´.3162277660168383 . statevalf . e e > with(stats). −.9486832980505138 −. describe. e e e Examinons les r´sultats. −.758331802155925 10−16 −.94 • Chapitre 3: Trouver des solutions > P.5567547110202655    −. importdata.5567547110202646  Le package Statistics Le package stats poss`de plusieurs commandes d’analyse et de manie pulation de donn´es. [anova. eigenvectors=true): Remarquez ce qui se trouve a la gauche de l’op´rateur d’affectation.6164806432593667 Les commandes de ce package peuvent ´galement prendre comme pae ram`tres des donn´es en format Matlab.

76.01. . .04. 2). . . > readings := [ Weight(.45.002 ].874.75. 1. > .04. 1. .82.8 Les packages Maple • 95 Le package stats traite les donn´es sous la forme de listes statise tiques . Weight(1. 01 sont suffisamment petites pour e ˆtre n´gligeables.0. .002. .83. .72. . readings := [Weight(. marks := [64. 1. . . 2).75. .83.874. 68. .874.76.01.9125..73]. e > describe[mean](marks). Weight(. Une liste statistique peut e ´galement contenir des intervalles et des valeurs auxquelles des poids ont e ´t´ assign´s. 1.002] L’expression Weight(x. . . 2). Weight(1.003.83. .874. . 2).003.9125.”). > . 75.81. 2)] Le sous-package describe contient des commandes servant a l’analyse ` de donn´es.04.003. readings := [.002] qui sont ´quivalentes a cette liste statistique.01.83.01.01.75. . . 81..9125.874. Weight(1.75. .01.n ) indique que la valeur x apparaˆ n fois dans ıt la liste. . 2). .003.04.93. readings := [Weight(.9125.3.75.75.003. Si des diff´rences de moins de 0. 0.75. .83. il est possible de les regrouper et de ne sp´cifier qu’un e e e intervalle (en utilisant “. e ` > readings := [ Weight(. . 45.9125. 2) ].75. 73] tout comme readings. . . Weight(1. . . qui peuvent ˆtre de simples listes Maple.04. > readings := [ 0. marks est une liste standard. . . La diff´rence se comprend plus facilement au moyen d’un ee e e exemple.04.. > .01.01. 2). 82.83.874.9125. 72.003. Weight(0. 2).002. 2).002 ].68. 93. .75.. > marks := > [64.

4908898750. −.140005385.4386378394.1529160443. 1. groupez-les en e e classes et tracez un histogramme de ces classes.1238893314. .4038750456 Ce package contient plusieurs distributions statistiques. .7487697029. −1. −.0. −. −1. 1.6917100232. −. −.3045008349. . random_data := [1.1729739933. −1.2.162605068. −.8670709448. .7648245898.283733823. . −. −. .93 > describe[range](readings).. .01 > describe[standarddeviation](readings).253885017.5]. −1.407989130. . .5872984199..463572278.583279600.1.9886372087.0. .4470293004. 2.005183053789.002.3758638317.6819890237.6707087107.7765483851. .. −.3876183720.. .-2.7304597374.2620109124.095665255.8364873682.4996033128.. 1.1093403084. −.-1. .1. −.6341448687. . . > random_data:=[random[normald](50)]. −.858250470.96 • Chapitre 3: Trouver des solutions 729 10 > describe[range](marks).. 1.03801888006. G´n´rez des e e donn´es al´atoires en utilisant la distribution normale. 45.04721150696.7709242575. . −. 2..1231141571. . . .01231563388.09467224460.08547526754. .342701867.599692668.4128440679] > ranges:=[-5. . −.452138520. −.-2.2068680316.8181350112.625165927. −.2. −. . 1..1.6385850228. −1.8876933468. .-1.

Vous devez ´galement vous rendre aux quatre endroits en moins de vingt minutes. Weight(0. 0. − 1.. 2. Les e contraintes de ce syst`me particulier sont que vous devez avoir livr´ toutes e e les quatre pizzas vingt minutes apr`s avoir quitt´ le restaurant. 6). e de mani`re que les pizzas demeurent chaudes. −2.0. 20).. Weight(−2.2.. Si vous cr´ez des ´quations e e e math´matiques repr´sentant les routes menant aux quatre endroits ainsi e e que leurs distances respectives. 20 15 10 5 –6 –4 –2 0 2 4 6 Le package d’optimisation lin´aire e Le package simplex contient des commandes d’optimisation lin´aire grˆce e a a ` l’utilisation de l’algorithme du simplexe.3.. Un exemple classique d’optimisation est le probl`me de la livraison de e pizza..ranges)..0. Weight(−1. − 1. e > with(simplex). .2. c’est-`-dire la solution qui vous fera utiliser le moins de carburant tout a en atteignant toutes les adresses dans le plus court d´lai possible... −1..8 Les packages Maple • 97 ranges := [−5. vous pouvez trouver la solution optimale. 2). e e Voici un petit syst`me en guise d’exemple. data_list := [Weight(1. Weight(2. 1. Weight(−5. 0). Imaginez-vous en livreur de pizza : vous devez livrer quatre pizzas en quatre endroits diff´rents dispers´s dans la ville. 5)..1. L’optimisation lin´aire permet e de trouver des solutions optimales a des ´quations soumises a certaines ` e ` contraintes..5] > data_list:=transform[tallyinto](random_data.. − 2. 17)] > statplots[histogram](data_list). − 2.1. Vous souhaitez livrer e e toutes les quatre en utilisant le moins de carburant possible.5.

` ` > maximize(w. ratio.c3}).c2. true Essayez a nouveau. Vous pouvez utiliser la commande feasible pour v´rifier que e l’ensemble des contraintes est valide. display . > c1 := 3*x+4*y-3*z <= 23. dual . NONNEGATIVE).c2. minimize. the protected names maximize and minimize have been redefined and unprotected Warning.c3}. c2 := 5 x − 4 y − 3 z ≤ 10 > c3 := 7*x +4*y+11*z <= 30. . c2 et c3. pivoteqn.c2. setup. en ajoutant une restriction a la solution. define_zero. standardize] Supposons que vous souhaitez maximiser l’expression w > w := -x+y+2*z. feasible. Dans ce cas. maximize. pivot . pivotvar . > feasible({c1. the name basis has been redefined [basis . l’absence de r´ponse signifie que Maple ne peut trouver de e solution. c1 := 3 x + 4 y − 3 z ≤ 23 > c2 := 5*x-4*y-3*z <= 10. w := −x + y + 2 z soumise aux contraintes c1. {c1. cterm. convexhull .98 • Chapitre 3: Trouver des solutions Warning.c3}). {c1. c3 := 7 x + 4 y + 11 z ≤ 30 > maximize(w.

e ` A votre guise. la commande solve et l’organisation de Maple et de ses bi` blioth`ques de mani`re a vous donner un avant-goˆt de son potentiel. Vous en savez cependant suffisamment pour commencer a utiliser ` Maple de mani`re efficace. e ` Les derni`res sections du pr´sent chapitre ont introduit les manie e pulations.1 vous e e e a introduit aux commandes solve et fsolve de mˆme qu’` leur utilisation e a ad´quate. vous ne connaissez pas encore tout a fait ce ` logiciel. . Que vous utilisiez ou non les commandes solve. A e e ` u ce point de votre lecture. La section 3.9 Conclusion Ce chapitre vous a pr´sent´ des caract´ristiques fondamentales de Maple e e e qui vous aideront grandement a mesure que vous apprendrez de nouvelles ` m´thodes de r´solution de probl`mes plus complexes. vous pouvez interrompre ici votre ´tude pour travailler e (ou jouer !) avec Maple. y = } 2 8 3.3.9 Conclusion • 99 1 49 {x = 0. ces m´thodes e e s’av`reront utiles a de nombreuses reprises. z = .

100 • Chapitre 3: Trouver des solutions .

anim´s ou e non.1 Graphiques en deux dimensions Lorsqu’on lui demande de tracer une fonction donn´e explicitement y = e f (x). Maple peut g´rer les formes e explicites. x=-2*Pi.4 Tracer des graphiques Quelquefois.2*Pi ). 4.5 –6 –4 –2 0 –0.. La flexibilit´ de Maple vous permet de manipuler ais´ment e e e des graphiques dans de nombreuses situations. Maple peut produire e ` plusieurs formes de graphiques : en deux ou trois dimensions. Les menus (que l’on retrouve sur la e barre de menu ou en cliquant avec le bouton droit de la souris sur le graphique lui-mˆme) vous permettent de modifier plusieurs caract´ristiques e e 101 .5 –1 2 x 4 6 Cliquer sur n’importe quel point de la fenˆtre du graphique fait afe ficher les coordonn´es de ce point. ıtre > plot( sin(x). affichables selon n’importe quel angle. Maple doit connaˆ la fonction et son domaine. 1 0. la meilleure mani`re de mieux comprendre une structure e math´matique consiste a en tracer le graphique. implicites et param´triques et exploiter plusieurs syst`mes de e e coordonn´es.

10. e e > plot( sin(x)/x. 8 7 y6 5 40 2 4 x 6 8 10 Maple peut mˆme g´rer des domaines infinis..102 • Chapitre 4: Tracer des graphiques des graphiques et d’utiliser des options d’affichage r´sum´es sous la rue e brique ?plot.options. x=0.. f := x → 7 sin(x) + sin(7 x) > plot(f(x).8). . x=0. x=0..10). a la fois e ` en x et en y. > f := x -> 7*sin(x) + sin(7*x). 6 4 2 0 –2 –4 –6 2 4 x 6 8 10 Maple vous permet d’examiner plus en d´tail des intervalles. Maple peut ´galement tracer le graphe de fonctions d´finies par l’utie e lisateur.. > plot(f(x).infinity). y=4.

e plot( [ x-expr.2*Pi ] ).5 0 –0.. Une solution consiste a rendre a la fois ` ` x et y d´pendantes d’un autre param`tre. Sur un cercle.6 0. par exemple t. t=-1. parametre =intervalle ] ) Vous tracez ainsi une liste contenant x-expr. . t=0. > plot( [ cos(t). par exemple.4. la plupart des valeurs de x correspondent deux valeurs de y. le nom et l’intervalle du param`tre. y-expr. il est impossible d’exprimer la variable d´pendante sous forme de e fonction y = f (x).5 –1 0. 1 0.1 ] ). Le graphique e e g´n´r´ ` partir de ces fonctions se nomme un graphique param´trique. e eea e Utilisez la syntaxe suivante pour utiliser les graphiques param´triques.4 0. en d’autres e e e mots.8 1 Les points (cos t. y-expr. Par exemple : e > plot( [ t^2. sin(t).. t^3. sin t) forment un cercle.1 Graphiques en deux dimensions • 103 0 x infinity Les graphiques param´triques e Certains graphiques ne peuvent ˆtre sp´cifi´s explicitement .2 0.

par d´faut.5 1 Plutˆt que de produire un cercle. t=0.2*Pi ]. e > plot( exp(x). 1 0. sin(t). x=0.3 )..5 –1 0.104 • Chapitre 4: Tracer des graphiques 1 0.5 –0. Il e e e est possible de changer l’´chelle des axes en utilisant les menus ou l’option e scaling.5 1 Le d´savantage de constrained r´side dans le fait que cette option e e peut cacher d’importants d´tails lorsque les caract´ristiques d’une dimene e sion apparaissent a une ´chelle beaucoup plus petite que les autres.5 –0. le graphique ci-dessus ressemble dao vantage a une ellipse puisque Maple. > plot( [ cos(t). scaling=constrained ).. Le ` e graphique suivant est trac´ sans l’option constrained (unconstrained).5 –1 –0. Voici le mˆme grae e phique pour lequel on a sp´cifi´ le param`tre scaling=constrained.5 –1 –0. . d´forme le graphique ` e e pour lui faire prendre les dimensions de la fenˆtre.5 –1 0.

r est la distance du point a l’origine.5 x 2 2.. trac´ e avec l’option > plot( exp(x). > with(plots): .1 Graphiques en deux dimensions • 105 20 18 16 14 12 10 8 6 4 2 0 0. scaling=constrained). vous devez d’abord appeler la commande with(plots). les coordonn´es polaires. et θ e ` repr´sente l’angle entre l’axe des x et la ligne passant par le point donn´ e e et l’origine.3. e e En coordonn´es polaires. Pour acc´der a la forme abr´g´e de cette come ` e e mande. 20 18 16 14 12 10 8 6 4 2 012 3 x Les coordonn´es polaires e Les coordonn´es cart´siennes (ordinaires) sont les coordonn´es par d´faut e e e e de Maple et ne repr´sentent qu’une des multiples mani`res de sp´cifier un e e e point dans l’espace . θ).5 1 1.4. x=0. (r.5 3 Voici maintenant constrained. le mˆme e graphique. Maple peut tracer une fonction en coordonn´es polaires a l’aide de e ` la commande polarplot. peuvent ´galement e e ˆtre utilis´es.

polarplot( r-expr.5 –1 0. theta=0.5 –0. . angle =intervalle ) En coordonn´es polaires.106 • Chapitre 4: Tracer des graphiques Figure 4. scaling=constrained ).. theta=0..5 –1 –0.2*Pi ). > polarplot( 1. 1 0.1 Le syst`me de coordonn´es polaires e e r y θ 0 x Utilisez la syntaxe suivante pour tracer les graphiques en coordonn´es e polaires. > polarplot( sin(3*theta). le param`tre ` e scaling=constrained fait apparaˆ ıtre le cercle rond.5 1 Tout comme dans cette section a la page 103. vous pouvez sp´cifier le cercle explicitement en e e entrant r = 1.2*Pi. Voici le graphique de r = sin(3θ).

theta=0. angle-expr.2 –0.1 Graphiques en deux dimensions • 107 0. polarplot( [ r-expr.2 0 –0.6 0.4 0.2*Pi ] ). > polarplot(theta.8–0... e e > polarplot( [ sin(t).6–0.4–0.2 –0.6 –0. .4 0.4*Pi). page 103.4. param`tre =intervalle ] ) e Les ´quations r = sin(t) et θ = cos(t) d´finissent le graphique suivant. La syntaxe est similaire aux grae phiques param´triques en coordonn´es cart´siennes.8 –1 0. par exemple t. 8 6 4 2 –2 –4 –6 –8 –10 –5 5 10 La commande polarplot accepte ´galement les graphiques param´trie e s´s .8 Le graphique de r = θ est une spirale.4 –0. vous pouvez donc exprimer le rayon et les coordonn´es angulaires en e e fonction d’un param`tre. t=0. cos(t).2 0. Consultez la pr´sente e e e e section.

4 0. x<2.4 0.2 –1 –0. 1. Consid´rez par exemple la fonction suivante. 1 si 1 ≤ x < 2. r=0. 1... 3) > plot(f(x). 4 2 0 –2 –4 1 2 3 4 5 6 Les fonctions discontinues Les fonctions poss´dant des discontinuit´s demandent davantage d’ate e tention. > polarplot( [ r. sin(3*r). -1. Voici comment d´finir f (x) dans Maple. f (x) =  3 sinon.5 1 Voici le graphique de θ = sin(3r). e   −1 si x < 1. qui poss`de deux e e discontinuit´s en x = 1 et x = 2. −1. f := x → piecewise(x < 1. 3 ). e > f := x -> piecewise( x<1. x < 2.108 • Chapitre 4: Tracer des graphiques 0.7 ] ).2 –0. x=0. .3).5 –0.

3. x=-5.5 3 Les fonctions qui poss`dent des singularit´s (qui deviennent arbitraie e rement grandes en un certain point) forment un autre cas particulier. 250000 200000 150000 100000 50000 –4 –2 0 2 4 6 x . e > plot(f(x).1 Graphiques en deux dimensions • 109 3 2 1 0 –1 0..6 ). > plot( 1/(x-1)^2.5 3 Maple dessine des lignes presque verticales pr`s d’un point de discone tinuit´. L’option discont=true indique qu’il peut y avoir des discontie nuit´s.5 x 2 2. discont=true)..4.5 1 1.5 1 1. 3 2 1 0 –1 0.5 x 2 2. x=0. La e e fonction x → 1/(x − 1)2 poss`de une singularit´ en x = 1.

2*Pi. 4 3 y 2 1 –6 –4 –2 0 –1 –2 –3 –4 2 x 4 6 . y=-1.110 • Chapitre 4: Tracer des graphiques Dans le graphique pr´c´dent. e e par exemple. x=-2*Pi. 7 6 5 y 4 3 2 1 –4 –2 0 –1 2 x 4 6 La fonction tangente poss`de plusieurs singularit´s en x = e e n est un entier. > plot( tan(x).7 ). x=-5. on r´duit l’intervalle entre y = −4 et y = 4. y=-4.2*Pi ). tous les d´tails int´ressants du graphique e e e e sont perdus en raison du pic en x = 1.. > plot( 1/(x-1)^2. o` u 3000 2000 1000 –6 –4 –2 2 x 4 6 Pour en voir les d´tails..4 ).. par exemple entre y = −1 et y = 7. x=-2*Pi.6.. > plot( tan(x). La solution consiste a visualiser la ` fonction sur un intervalle restreint.. π 2 + πn.

x).. x=-10.. y=-10. discont=true ). x.10 ). 4 3 y 2 1 –6 –4 –2 0 –1 –2 –3 –4 2 x 4 6 Graphiques multiples Pour tracer plus d’une fonction dans un mˆme graphique. x^3. 1 + x2 ) > plot( [ f(x).4. f := x → piecewise(x < 0.2. .2*Pi. cos(x).. vous e e devez donc utiliser l’option discont=true. > x=-2. x) ]. 1+x^2 ).1 Graphiques en deux dimensions • 111 Maple dessine des lignes presque verticales pr`s des singularit´s . ` > plot( [ x. x^4 ]. x=-2*Pi.. discont=true ). 0 ≤ x.10. diff(f(x). > plot( tan(x).4. diff(f(x). y=-4. x>=0. cos(x).. 10 8 6 y 4 2 –10 –8 –6 –4 –2 0 –2 –4 –6 –8 –10 2 4 x 6 8 10 > f := x -> piecewise( x<0. x^2. il suffit de e donner a la commande plot une liste de fonctions.

cos(x)/x. x=0.1 ] ].5.8*Pi.2*Pi ].4] ). > [ t^2. t=-1. scaling=constrained )... Dans l’exemple suivant. 1 0. .5 –2 –1 –0. e e Maple utilise linestyle=SOLID pour la premi`re fonction.. il est ais´ de distinguer diff´rentes fonctions dans un mˆme grae e e e phique en sp´cifiant le param`tre linestyle. > plot( [ [ 2*cos(t). cos(x)/x ].. > linestyle=[1. > plot( [ sin(x)/x. sin(t).5 –1 1 2 En utilisant diff´rents styles de ligne (par exemple continue ou poine till´e). sin(x)/x et e linestyle=DOT pour la seconde fonction. t=0.5. y=-0. t^3.112 • Chapitre 4: Tracer des graphiques 5 4 3 2 1 –2 –1 0 –1 1 x 2 Cette technique fonctionne ´galement pour les graphiques param´e e triques.1.

y2 ]..color pour obtenir plus de d´tails sur e les couleurs dans Maple. [x2 .[0.) e > plot( [ [f(x).2 0 –0.2 –0. yn ]]. x=-2. plum] ).2].1].2 1 y0.4. 4 3 2 1 0 –1 1 2 3 4 5 Consultez la rubrique ?plot.1 Graphiques en deux dimensions • 113 1.4 1.2] ]. . .4 5 10 x 15 20 25 Vous pouvez ´galement changer le style de ligne en utilisant les menus e standard et contextuels.[-1. vous pouvez sp´cifier les e e couleurs des graphiques au moyen de l’option color.[4. donnez-lui un nom. > data_list:=[[-2.4]. (Vous pouvez en voir l’effet sur un affichage en couleurs. > [D(f)(x).1]. . contrairement au pr´sent livre qui e n’affiche les lignes que selon diff´rentes teintes de gris. appelez la fonction pointplot en e e sp´cifiant les donn´es dans une liste de listes de la forme e e [[x1 . (D@@2)(f)(x). [xn .[3. Si la liste est longue.6 0.4].4 0. > color=[gold. 0]. .9]. De mani`re similaire. x=-2. D(f)(x)..16]]. .8 0. Tracer des points Pour tracer des donn´es num´riques.[1. y1 ].[2.

[1. l’option e style=line oblige a tracer ces lignes. 4]. [0. [2.4]]. 4]. 9]. [3. [2. Vous pouvez ´galement utiliser les ` e menus pour indiquer a Maple de tracer les lignes. style=line ).3]. 4]] > pointplot(data_list_2.2]. 0]. 16 14 12 10 8 6 4 2 –2 –1 0 1 2 3 4 Vous pouvez changer l’apparence des points eux-mˆmes a l’aide des e ` menus ou des options symbol et symbolsize. 1]. data_list _2 := [[1. [4. [3. 1]. 16 14 12 10 8 6 4 2 –2 –1 0 1 2 3 4 Par d´faut. [−1. 3]. . 2]. [2. Maple ne relie pas les points par des lignes droites .1]. ` > pointplot( data_list. 16]] > pointplot(data_list). style=point. [3. 1]. > symbolsize=16). symbol=cross. > data_list_2:=[[1. [4.114 • Chapitre 4: Tracer des graphiques data_list := [[−2. [4.

` Raffiner des graphiques Maple comporte un algorithme de trac´ adaptatif.5 2 2.5 4 Utilisez le package CurveFitting pour lisser une courbe passant par une suite de points et appelez la commande plot pour en voir le r´sultat.1 Graphiques en deux dimensions • 115 4 3. Il d´cide ensuite de calculer plus de e e e points dans les intervalles o` les valeurs fluctuent davantage. reportez-vous a la rubrique ?CurveFitting.4 3. > plot(sum((-1)^(i)*abs(x-i/10)..4.30). u il peut arriver que cet algorithme adaptatif ne donne pas de r´sultats e satisfaisants. 3.4)...5 3 2. i=0.5 1 1 1.5 2 1. > plot(sum((-1)^(i)*abs(x-i/10).6 –1 0 1 2 3 x 4 5 6 Pour raffiner ce graphique..5 3 3. e Pour plus d’information. i=0.8 2. > numpoints=500). x=-1.30). . Cependant. x=-1.2 3 2.4. Il calcule la valeur de e la fonction en un nombre raisonnable de points approximativement ´e quidistants dans l’intervalle sp´cifi´. on peut indiquer a Maple de calculer da` vantage de points.

est la plus facile e a ` tracer.. Les ıte e menus vous permettent de modifier plusieurs caract´ristiques d’un grae phique.2 Graphiques en trois dimensions Vous pouvez tracer le graphique d’une fonction de deux variables comme une surface dans l’espace tridimensionnel. plot3d peut tracer des fonctions d´finies par l’utie lisateur.2 ).8 2. Tout comme plot. y).options pour en connaˆ davantage.4 3. . Vous pouvez faire tourner le graphique en cliquant sur la fenˆtre avec e votre souris et en faisant bouger la boˆ qui en d´finit le contour. x=-2. y=-2. > plot3d( sin(x*y). Encore e ` une fois.6 –1 0 1 2 3 x 4 5 6 Consultez ?plot et ?plot. une fonction donn´e explicitement.2.. La syntaxe de plot3d est similaire a celle de plot. z = f (x. ıtre 4.116 • Chapitre 4: Tracer des graphiques 3. Cela vous permet de visualiser cette derni`re.2 3 2.

... Consultez ?plot3d. y=-x. style=hidden ).. x=0. y=0.y). x=0.y). > plot3d( f(x.2*Pi. Par d´faut. e > plot3d( sqrt(x-y). .x ).2*Pi ). • 117 f := (x. y) → sin(x) cos(y) > plot3d( f(x.options pour obtenir une liste des options de style.y) -> sin(x) * cos(y).9.4.. e e mais il est possible de modifier cette option en utilisant les menus ou le param`tre style. y=0.2 Graphiques en trois dimensions > f := (x.2*Pi. Maple affiche le graphique comme une surface color´e.. Le domaine du deuxi`me param`tre peut d´pendre du premier pae e e ram`tre.2*Pi. Par exemple. x=0. style=hidden dessine le graphique e comme une structure en fil de fer.

z-expr ].Pi ).. paramtre2 =intervalle ) En voici deux exemples.. > s=-Pi. > plot3d( [ sin(s).. y). cos(s)*sin(t). s*sin(t) ].. t=0. Utilisez la syntaxe suivante pour sp´cifier les graphiques e e param´triques. sin(t) ]. y et z d´pendantes de deux autres param`tres. t=-Pi. une solution consiste a rendre a la fois e ` ` x. > plot3d( [ s*sin(s)*cos(t). paramtre1 =intervalle. y-expr. s*cos(s)*cos(t). .2*Pi. en d’autres e e e mots. Comme pour les e graphiques bidimensionnels (consultez la section Les graphiques param´triques de la page 103). La sph`re en est un exemple.Pi ). > s=0. e e Le graphique produit a partir de ces fonctions se nomme un graphique ` param´trique. il est impossible d’exprimer la variable d´pendante sous forme de e fonction z = f (x. par exemple s et t. e plot3d( [ x-expr.118 • Chapitre 4: Tracer des graphiques Les graphiques param´triques e Certains graphiques ne peuvent ˆtre sp´cifi´s explicitement .Pi.

En coordonn´es sph´riques. tapez les deux-points plutˆt que le point-virgule. o > with(plots): Vous pouvez utiliser la commande sphereplot de la mani`re suivante. la distance e e e du point a l’origine. vous devez d’abord appeler la commande e e with(plots). les coordonn´es sph´riques sont e e une autre option. les trois coordonn´es sont r.2 Graphiques en trois dimensions • 119 Les coordonn´es sph´riques e e Les coordonn´es cart´siennes (ordinaires) sont les coordonn´es par d´faut e e e e de Maple et ne repr´sentent qu’une des multiples mani`res de sp´cifier un e e e point dans l’espace en trois dimensions . l’angle θ dans le plan xy depuis l’axe des x et l’angle ` φ depuis l’axe des z. Figure 4. e .4. Pour ´viter d’afficher la liste de toutes les commandes de e plots.2 Le syst`me de coordonn´es sph´riques e e e z φ 0 x r y θ Maple peut tracer une fonction en coordonn´es sph´riques en utilisant e e la commande sphereplot du package plots. Pour acc´der a la forme e ` abr´g´e de cette commande.

et de laisser θ tourner tout le long de e l’´quateur et φ tourner du pˆle nord (φ = 0) au pˆle sud (φ = π). consultez la pr´sente section a e e e ` la page 118. par exemple s e e et t. . Le trac´ d’une sph`re en coordonn´es sph´riques est simple : il suffit e e e e de sp´cifier le rayon.Pi...2*Pi. phi =intervalle ) Le graphique de r = (4/3)θ sin φ ressemble a ceci : ` > sphereplot( (4/3)^theta * sin(phi). > scaling=constrained ). phi=0.120 • Chapitre 4: Tracer des graphiques sphereplot( r-expr. (Consultez la section 4. theta=0.. par exemple 1.. c’est-`-dire les graphiques qui sp´cifient le rayon et les deux e e a e coordonn´es d’angle en fonction de deux autres param`tres. theta =intervalle.2*Pi.) La commande sphereplot accepte ´galement les graphiques parae m´tris´s. e o o > sphereplot( 1. La syntaxe est similaire a celle d’un graphique param´trique en deux ` e dimensions en coordonn´es cart´siennes . phi=0.Pi ). > theta=-1.1 pour une explication de l’option constrained.

r et θ sont les cooronn´es polaires e e e (voir la section 4. phi-expr ]. > sphereplot( [ exp(s)+t.1) dans le plan xy et z est la coordonn´e cart´sienne e e usuelle en z. cos(s+t). Figure 4. theta-expr. Les coordonn´es cylindriques e On peut ´galement sp´cifier un point dans le syst`me cylindrique en e e e sp´cifiant les coordonn´es r. r = exp(s) + t.2 Graphiques en trois dimensions • 121 sphereplot([ r-expr. t^2 ].. t=-2.3 Le syst`me de coordonn´es cylindriques e e z 0 x y θ r Maple trace les fonctions en coordonn´es cylindriques au moyen de la e commande cylinderplot du package plots. θ = cos(s + t) et φ = t2 . > with(plots): Vous pouvez tracer les graphiques en coordonn´es cylindriques en applie quant la syntaxe suivante : . param1 =intervalle. > s=0. Ici. param2 =intervalle ) Ici.2*Pi.2 ).4. θ et z..

param`tre1 =intervalle. theta=0. . z =intervalle ) Voici une version tridimensionnelle de la spirale montr´e dans la sece tion 4.. Les cˆnes sont facilement trac´s en coordonn´es cylindriques : il suffit o e e de sp´cifier r = z et de faire varier θ de 0 ` 2π. z=0. e a > cylinderplot( z. cylinderplot( [ r-expr. θ = s et z = cos(t2 ). theta=0.1 ).2*Pi. theta-expr. z=-1. Leur e e syntaxe est similaire a celle des graphiques param´triques en coordonn´es ` e e cart´siennes.4*Pi. angle =intervalle...122 • Chapitre 4: Tracer des graphiques cylinderplot( r-expr. Consultez la section Les graphiques param´triques de la e e page 118.1. > cylinderplot( theta.1 ). z-expr ]. e param`tre2 =intervalle ) e L’image suivante est un graphique de la fonction r = st. cylinderplot accepte ´galement les graphiques param´triques..

Pi.3*Pi. e vous pouvez indiquer a Maple d’en calculer plus de points.3*Pi. z=-1.5] ).4. > cylinderplot( theta..4*Pi. y=0. t=-2. s. s=0..50] ).1. n ] o` m est le nombre de points a utiliser pour la premi`re coordonn´e. theta=0. cos(t^2)].. un nombre faible de points (5) est donc suffisant. x=0.2 ). • 123 Raffiner des graphiques Si votre graphique n’est pas aussi lisse ou pr´cis que vous le souhaitez. . et n u ` e e le nombre de points a utiliser pour la seconde coordonn´e. un grand nombre de points (100) pour la premi`re coordonn´e (theta) rend la spirale lisse. Cependant. ` e > plot3d( sin(x)*cos(y).... la fonction e e ne varie pas selon l’axe des z . grid=[100. grid=[50. L’option le ` permettant est grid=[m.2 Graphiques en trois dimensions > cylinderplot( [s*t. Dans le prochain exemple.

Dans e la premi`re.. x=-5. une ou plusieurs sources lumineuses color´es illuminent la e e surface. L’usage simultan´ de sources lumineuses et de coloriage direct peut e compliquer le rendu des couleurs.5.y=-5.124 • Chapitre 4: Tracer des graphiques La valeur par d´faut de grid est d’environ 25 points sur 25. Utilisez des sources lumineuses ou un e coloriage direct. e > plot3d( x*y^2/(x^2+y^4). la couleur de chaque point est fonction directe de ses coordonn´es. e Mod`les de coloriage et d’´clairage e e Deux m´thodes permettent colorier une surface en trois dimensions. . e Maple poss`de un grand nombre de configurations de sources lumie neuses donnant des r´sultats esth´tiquement satisfaisants. Vous pouvez e e choisir ces sources lumineuses par les menus ou au moyen de l’option lightmodel. un certain nombre de fonctions de coloriage pr´d´finies est ´galement disponible par les menus e e e ou au moyen de l’option shading. Dans la seconde. > shading=zgrayscale.5. lightmodel=none ). Voici une surface colori´e avec un shading zgrayscale sans ´clairage.. Pour colorier la surface directement.

.5. e e L’animation en deux dimensions Vous pouvez sp´cifier une animation bidimensionnelle selon la syntaxe qui e suit. Les deux e commandes utilis´es pour les animations. animate et animate3d. les graphiques apparaissent en noir et blanc.5. Souvenez-vous qu’il vous faut d’abord e entrer la commande with(plots) pour exploiter ensuite ces fonctions sous leur forme abr´g´e. lightmodel=light1 ). des images statiques ne mettent pas toujours en ´vidence certains comportements graphiques. e 4. sont e d´finies dans le package plots. animate( y-expr.y=-5. e Essayez-les vous-mˆme pour voir les effets de la couleur. Dans le pr´sent manuel. cependant. x=-5.3 L’animation • 125 Voici la mˆme surface illumin´e par le mod`le d’´clairage light1 sans e e e e coloriage (shading). comme la d´formation e e d’une balle qui rebondit. > shading=none. > with(plots): . Une animation Maple ressemble a une s´quence d’images d’un film : ` e une suite de graphiques s’affichent rapidement l’un apr`s l’autre.3 L’animation Tracer des graphiques constitue une excellente mani`re de repr´senter e e l’information .4. x =intervalle.. temps =intervalle ) Les images suivantes sont un exemple d’animation. > plot3d( x*y^2/(x^2+y^4).

126 • Chapitre 4: Tracer des graphiques Warning. > animate( sin(x*t).. choisissez Play dans le menu Animation. x=-10. x=-10. > orientation=[135.100].. > frames=50.10.. t=1.10. t=1.45]. Par d´faut. style=HIDDEN ). Les options standard des commandes plot sont ´galement disponibles. frames=50). une animation en deux dimensions est form´e de seize e e graphiques (frames). Par exemple. t=1. axes=boxed . numpoints=100 ). Notez cependant que le calcul d’un grand nombre d’images demande beaucoup de temps et accapare beaucoup de m´moire. essayez de tracer l’animation de sin(xt) ci-dessus comme une surface. > plot3d( sin(x*t)..2.10. Puis.2. .. vous pouvez e augmenter le nombre d’images..2.. t=1. grid=[50. x=-10. La commande suivante peut ˆtre coll´e dans Maple pour proe e e duire une animation de 50 images. Si le mouvement vous semble saccad´. > animate( sin(x*t). the name changecoords has been redefined > animate( sin(x*t).. e Entrez l’exemple suivant dans Maple pour en voir l’animation.10. Vous pouvez afficher n’importe quelle animation bidimensionnelle sous la forme d’un graphique tridimensionnel statique. x x x x x x x x x x x x x x x x Pour faire d´filer une animation. x=-10. vous devez d’abord la s´lectionner e e en cliquant dessus.2 ).

L’option coords indique a la commande animate d’utiliser un syst`me ` e de coordonn´es autre que les coordonn´es cart´siennes.1 de la page 103).3 L’animation • 127 1 0 –1 10 x –10 2 t 1 Que vous pr´f´riez une animation ou un graphique est une question de ee goˆt et d´pend des concepts que l’animation ou le graphique doit mettre u e en ´vidence.2 ). sin(u). > animate( [ a*cos(u). e e e > animate( theta*t.. e L’animation de graphiques param´triques est ´galement possible (cone e sultez la section 4.4. theta=0. coords=polar ). a=0. u=0..2*Pi ]. ... t=1.8*Pi.4.

2 explique le fonctionnement des graphiques tridimensionnels param´triques. e e . que vous pouvez ´galement animer.. Par d´faut.128 • Chapitre 4: Tracer des graphiques Pour voir les animations. y=-Pi. x=-Pi. x =intervalle. temps =intervalle ) Les images qui suivent sont un exemple d’une animation en trois dimensions. La section 4. De la mˆme mani`re que pour les animations en deux dimensions.2. y =intervalle.... > frames=16 ). e e vous pouvez indiquer a Maple le nombre de graphiques a tracer au moyen ` ` du param`tre frames..2 ). L’animation en trois dimensions Utilisez la commande animate3d pour animer des surfaces en trois dimensions. e > animate3d( cos(t*x)*sin(t*y).Pi.. y=-Pi. > x=-Pi. t=1. une animation tridimensionnelle est form´e de huit grae e phiques. entrez ces commandes dans Maple. animate3d( z-expr. > animate3d( cos(t*x)*sin(t*y). t=1.Pi.Pi. Vous pouvez utiliser la commande animate3d de la mani`re e suivante.Pi.

utilisez coords=spherical. e e > plot( sin(x). utilisez l’option coords.4... utilisez coords=cylindrical.8.3.Pi.4. • 129 2 2 2 2 2 2 2 2 –3 12 2 Pour animer une fonction dans un syst`me de coordonn´es diff´rent e e e des coordonn´es cart´siennes.4 Annoter des graphiques Il est possible d’ajouter plusieurs types d’annotations textuelles aux graphiques. z=1. theta=1.. time=2..2*Pi. title="Plot of Sine" ). t-time.3.. coords=spherical ). e e > animate3d( (1. > phi=0. t=1. centr´ et pr`s du haut. > t=1/4.4. > s=1.4. e > animate3d( sin(theta)*cos(z*t). coords=cylindrical ). t=1. . x=-2*Pi.changecoords.2*Pi.7/2. axes=boxed). s*cos(t*time)].. consultez ?plots. 4. Pour les coordonn´es cylindriques. Pour obtenir une liste des syst`mes de coordonn´es accept´s par e e e Maple..3)^theta * sin(t*phi). Pour les coore e donn´es sph´riques..4 Annoter des graphiques > animate3d( [s*time. L’option title imprime le titre choisi dans la fenˆtre du grae phique. theta=-1... par exemple.

phi=0. > titlefont=[HELVETICA. e e e e Maple utilise des guillemets doubles pour d´limiter les chaˆ e ınes de caract`res : il consid`re tout ce qui apparaˆ entre les guillemets doubles e e ıt comme du texte qu’il doit prendre tel quel. 24] ).2*Pi. TheSphere L’option labels vous permet de cr´er des ´tiquettes aux axes.5 0 –6 –4 –2 2 x 4 6 –0. the name changecoords has been redefined > sphereplot( 1. > scaling=constrained.. > with(plots): Warning.130 • Chapitre 4: Tracer des graphiques PlotofSine 1 0. le style et la taille du titre au moyen de l’option titlefont. Remarquez que les ´tiquettes ne doivent pas e .options.. l’ope e tion labelsfont d´finit la police et le style des ´tiquettes et l’option e e labeldirections permet de placer les ´tiquettes des axes verticalee ment ou horizontalement. Consultez ?plot. vous devez placer des guillemets e doubles (") aux deux extr´mit´s du texte.5 –1 Prenez note qu’en sp´cifiant le titre. title="The Sphere".options ou ?plot3d.Pi. Ce d´tail est tr`s important. Vous pouvez sp´cifier la poe lice. theta=0. BOLD.

"width". labels=["time". les axes ne sont pas affich´s e par d´faut .1. x=0.4 Annoter des graphiques • 131 forc´ment ˆtre identiques au nom des variables de l’expression dont vous e e tracez le graphique. 0. > labeldirections=[horizontal..8 –1 width 1 1 length –1 L’option legend vous permet d’ajouter une l´gende de texte a votre e ` graphique. e e > plot3d( sin(x*y). "The Cosine Function"] ). cos(x)].3. x=-1.4].5 3 Les ´tiquettes s’affichent seulement si les axes sont ´galement affich´s. 2 8 6 2 2.4. e e e Dans le cas des graphiques tridimensionnels. > plot( x^2. y=-1..5 .. vous devez donc les sp´cifier. x=-3*Pi/2. "velocity"]..5 velocity 1 time 1. axes=FRAMED ).1.8 height –0.vertical] ). linestyle=[1. > legend=["The Sine Function". 4 0 0. "height"]. > labels=["length".3*Pi/2. > plot( [sin(x).

Puisque la structure e interne des graphiques est g´n´ralement tr`s longue a afficher. x=-10.5 Les graphiques composites Maple vous permet d’afficher plusieurs graphiques simultan´ment.132 • Chapitre 4: Tracer des graphiques 1 0. > mon_graphique := plot( sin(x).5 –1 2 4 x 6 8 10 La commande display permet de tracer plus d’un graphique a la fois. 1 0. comme toute e autre expression.5 –4 –2 –0.5 –10 –8 –6 –4 –2 0 –0.10 ): Vous pouvez conserver le graphique pour un usage ult´rieur. e . apr`s e e avoir donn´ des noms aux graphiques individuels. Affichez-le en utilisant la commande display d´finie e dans le package plots. e ` 4. > with(plots): > display( mon_graphique ). terminez e e e ` vos commandes d’affectation par deux points plutˆt que par un pointo virgule.5 –1 TheSineFunction TheCosineFunction 2x 4 Voyez ´galement la section 4. ` Il suffit de lui sp´cifier une liste de graphiques..5 a la page 134.

... phi=0...5 –1 • 133 –1 –0.2 ): > display( [c.Pi ] ): > display( [a. > frames=20 ): > g := animate3d( t.. .d].5. t=0. y=0. assurez-vous que ces derni`res poss`dent toutes le mˆme nombre d’images. t=-Pi. z=-2. x=0.Pi ] ): > b := polarplot( [ sin(t). t=-Pi.e] ).1 ): > display( [b.5 0.5 1 Cette technique vous permet d’afficher plusieurs graphiques de diff´rents types sur les mˆmes axes.2*Pi. > frames=20): > display( [f.2*Pi.Pi ): > d := cylinderplot( 0.. x=0.1.. Vous pouvez ´galement afficher des e e e graphiques tridimensionnels et mˆme des animations. Si vous affichez deux animations ou plus ensemble. x=-1. Entrez la d´finition pr´c´dente de b et les commandes suivantes dans e e e Maple pour voir une animation et un graphique avec les mˆmes axes.5.5 Les graphiques composites > a := plot( [ sin(t).1. e > e := animate( m*x. 1 0.5. theta=0. m=-1... t=-1.b] ).5. scaling=constrained ). e > c := sphereplot( 1. y=0.2*Pi... exp(t)..4.g] ).. Entrez l’exemple e e e suivant dans Maple pour voir deux animations simultan´ment. theta=0. exp(t)/20.5 0 –0.2*Pi. e > f := animate3d( sin(x+y+t).2*Pi.2*Pi.

textplot3d( [ x-coord. Le pae ee ckage plots contient ces deux commandes.. color=white ): > display( [d. -1. x=-Pi.5 –3 –2 –1 –0. > with(plots): Vous pouvez utiliser textplot and textplot3d de la mani`re suivante. est indiqu´e par la e lettre P .. 0. y=-1.Pi ): b := textplot( [ Pi/2. "Local Maximum" ] ): c := textplot( [ -Pi/2. "texte "] ) . "Local Minimum" ] ): display( [a.b. Utilisez l’ope ee e tion font pour sp´cifier la police de caract`res employ´e pour l’affichage. y-coord. e textplot( [ x-coord. "texte " ] ) . 0. .. > font=[HELVETICA. orientation=[68. e e e Dans le graphique suivant. 22]. 1 LocalMaximum 0. 1. OBLIQUE.5 1 x 2 3 LocalMinimum –1 Consultez la rubrique ?plots.1. Par exemple : > > > > a := plot( sin(x). Les commandes e textplot et textplot3d vous donnent encore plus de flexibilit´ en vous e permettant de sp´cifier la position exacte des ´l´ments de texte.e].45] ). un point de selle.c] ). y-coord.134 • Chapitre 4: Tracer des graphiques Placer du texte dans les graphiques Les options title et labels des commandes graphiques vous permettent de placer des titres et des ´tiquettes dans vos graphiques. l’origine.textplot pour obtenir plus de d´tails e sur la mani`re de placer les ´l´ments de texte avec pr´cision. > d := plot3d( x^2-y^2.1 ): > e := textplot3d( [0. z-coord. "P"]. x=-1.

x=-1.5 x 1 –0.. consultez la rubrique ?plots. y=-1. > optionsexcluded=(color=yellow) ). . e e > inequal( {x+y<5.5 –1 –0. x<=4}. e > implicitplot( x^2+y^2=1..6 Quelques graphiques particuliers Le package plots contient plusieurs routines permettant de produire des types de graphiques particuliers. x=-1. 0<x.6 Quelques graphiques particuliers • 135 P 4.1. scaling= > constrained ).4. En voici quelques exemples.1.5 –1 L’image ci-dessous est un graphique de la r´gion satisfaisant aux e in´galit´s x + y < 5. 1 y 0. e > with(plots): Tracez des fonctions d´finies implicitement au moyen de implicitplot. Pour obtenir davantage d’information sur une commande particuli`re..commande .. y=-10.5.10.5 0 0. 0 < x et x ≤ 4.

1e+10 1e+09 1e+08 1e+07 1e+06 1e+05 . 2 1. .6 1.7 ).1e5 . e e > loglogplot( x^17. l’axe vertical est trac´ ` une ´chelle logarithea e mique. e > semilogplot( 2^(sin(x)).10 ).6 1.8 1.1e3 . .10 ).8 0. 2 4 x 6 8 10 Un graphique semilogplot poss`de un axe horizontal logarithmique. x=0.1e2 Maple peut ´galement tracer des graphiques o` les deux axes pose u s`dent des ´chelles logarithmiques. x=1.1e4 .. > logplot( 10^x. x 4. 2.1e2 1.2 1 0..4 1. x=1. 7.136 • Chapitre 4: Tracer des graphiques 10 5 –1 –5 –10 1 2 3 4 5 Dans l’exemple suivant..

. des teintes plus claires indiquent une plus grande valeur de la fonction.2+2*I ). > densityplot( sin(x*y).1e3 . Dans un densityplot..1e4 . 7.. y=-1.1. .6 Quelques graphiques particuliers • 137 1e+14 1e+13 1e+12 1e+11 1e+10 1e+09 1e+08 1e+07 1e+06 1e+05 .1e5 ..10.10).5 –1 0.y=-10.4.1 ).5 –1 –0.1e2 1. 1 y 0. > conformal( z^2. 2. la fonction sin(xy) est constante.5 –0. 10 y 5 –10 –5 0 –5 –10 5 x 10 Une grille rectangulaire dans le plan complexe devient le graphique suivant par la relation z → z 2 . z=0. comme dans une carte topographique.5 x 1 Le long des courbes suivantes. x 4. x=-1..x=-10. > contourplot(sin(x*y).

. le graphique ainsi form´ est un champ de vecteurs de e mˆme type qu’un champ magn´tique.12 ).5 –1 0. y=-1. 1 y 0. e e > fieldplot( [y*cos(x*y). t=0.t]. radius=0.. Ici..5 ).t].5 –1 –0.sin(t). Maple gonfle la courbe pr´c´dente pour en faire un tube. x*cos(x*y)].1).sin(t).4*Pi.5 x 1 Maple peut dessiner des courbes dans l’espace a trois dimensions.. t=0.1. e e > tubeplot( [cos(t). x=-1.5 –0. ` > spacecurve( [cos(t)..138 • Chapitre 4: Tracer des graphiques 8 6 4 2 –4 –2 0 2 4 La commande fieldplot dessine un vecteur donn´ pour plusieurs e valeurs de x et y .

3.5 –1 –1.25. s. style=point. > gap=0. > adaptive=false ). 4 2 0 –2 –4 2 4 column 6 8 8 6 4 row 2 L’image suivante est une d´monstration d’un graphique root locus .5 ..5 0 0. > A := LinearAlgebra[HilbertMatrix](8): > B := LinearAlgebra[ToeplitzMatrix]([1. > symmetric): > matrixplot( A+B.5 1 1. heights=histogram. axes=frame. 1 0. e > rootlocus( (s^5-1)/(s^2+1).2. -5. style=patch).5 –1 –0.4.-3.4.6 Quelques graphiques particuliers • 139 La commande matrixplot affiche les valeurs d’un objet de type Matrix.-4.5 0 –0.5.-1].-2.

2>]. on doit y acc´der par la commande display d´finie dans le e e e package plots ` l’aide de la commande with. vous obtiendrez une liste de tous les types a de graphiques possibles dans Maple.5 3 En tapant ?plots ` l’invite. [<2. scaling=constrained. difference. 5 4 3 2 1 1 1. <1.5 2 2. 4>]. > plots[arrow]( [<2. <3. e e e > with(plottools): Les objets dans le package plottools ne s’affichent pas par euxmˆmes . 1>. a > with(plots): Consid´rez l’exemple suivant. 5>. e > display( dodecahedron(). > scaling=constrained ). 4. Utilisez with(plottools) pour acc´der aux commandes par leur nom abr´g´.7 Manipuler des objets graphiques Le package plottools contient des commandes permettant de cr´er des e objets graphiques et de manipuler leurs graphiques correspondants.140 • Chapitre 4: Tracer des graphiques La commande arrow affiche des fl`ches ou des vecteurs en deux ou e trois dimensions. . style=patch ).

).-1/4. vous devez utiliser display pour faire afficher le graphique. Placez une seconde sph`re dans l’image et faites afficher les axes. si vous utilisez un point-virgule (.4. color=red): Remarquez que l’affectation se termine par deux points (:) .7 Manipuler des objets graphiques • 141 Donnez un nom a l’objet.1/4. scaling=constrained ). axes=normal.1/2]. Maple affiche une longue structure de graphique. e > s2 := sphere( [3/2. 1/4. 1/4. > display( s1. Encore une fois. ` > s1 := sphere( [3/2.1/2]. scaling=constrained ). color=red): > display( [s1. . s2].

axes=normal ). e e o > c := cone([0. .2 –0.4 –0.3 0.4 0.2 –1. color=khaki): > display( c.0.5 –0.4 2 1.5 1 0.2 0.7 Vous pouvez ´galement cr´er des cˆnes au moyen de plottools. > c3 := translate( c2. e e ` > c2 := rotate( c.4 –0.4 0 1.0].4 –0. axes=normal ). Pi/2.2 1.2 0. 1/4 ): > display( c3. –1 –0.5 –2 Vous pouvez aussi translater les objets.4 0.4 –0. 3. –0. 0 ): > display( c2.6 –0.2 0.4 1.4 0. 0.2 0. 0.6 1.2 0.5 1. axes=normal ).5 0. 2.4 Exp´rimentez la capacit´ de Maple a faire tourner les objets.2 0.142 • Chapitre 4: Tracer des graphiques –0. 1/2.2 –0.4 0.

n’´crivez rien entre les e e parenth`ses pour accepter les valeurs par d´faut. l’objet r´sultant se nomme e .7 Manipuler des objets graphiques • 143 3 2. sinon.4 –0. 0.2 0 0. Vous pouvez sp´cifier e e e e le rayon et les coordonn´es de son centre . Si vous ´levez le point milieu de chaque pentae gone au moyen de la commande stellate.4 –0.5 2 0.2 1. e e > cup := hemisphere(): > display( cup ).4. Les cˆt´s du dod´ca`dre mentionn´ plus tˆt dans cette section sont oe e e e o tous des pentagones. Pi. 0 ): > display( cap ).6 0.5 La commande hemisphere cr´e un h´misph`re.2 1 0.4 –0.20. > cap := rotate( cup.

orientation=[45. vous pouvez supprimer les o e e e e trois quarts de l’int´rieur de chaque pentagone. s2. scaling=constrained. > a := stellate( dodecahedron() ): > display( a. > hedgehog := [s1. e > a := cutout( dodecahedron(). 2): > display( stelhs ). scaling=constrained. stelhs]: > display( hedgehog. > stelhs := stellate(cap. c3. .144 • Chapitre 4: Tracer des graphiques e e e e un dod´ca`dre ´toil´. Plutˆt que de rendre le dod´ca`dre ´toil´. 30] ). 3/4 ): > display( a. style=patch ). scaling=constrained.

cliquez sur Maple 8 Color Plates. Des centaines de graphiques ainsi que des animations sont disponibles dans la Maple Graphics Gallery et la Maple Animation Gallery.com – Dans le menu Help de votre session Maple 8.4. . rendez-vous au Maple Application Center et clie ` quez sur Maple Graphics. Cependant. d’autres graphiques demandent plusieurs e lignes de code. Pour acc´der au code des planches qui n’est pas affich´ dans ce manuel : e e 1. choisissez Maple on the Web. Pour acc´der a ces galeries. puis Application Center. e 2. e Il existe deux mani`res d’acc´der au Maple Application Center. cr´er des graphiques impressionnants ne n´cessite souvent e e que quelques lignes de code.mapleapps. e e – Ouvrez le navigateur Internet de votre choix et entrez http ://www. • 145 4. Les commandes utilis´es pour les planches en couleurs1 qui e ne sont pas indiqu´es ici se trouvent dans le Maple Application Center. 1 La plupart des planches en couleurs ont ´t´ export´es et dessin´es dans POVe e e e e RayTM . Acc´dez au Maple Application Center. La duplication exacte des images peut de ce fait s’av´rer difficile.8 Code des graphiques des planches en couleurs > style=patchnogrid ). Dans la section Maple Tools.8 Code des graphiques des planches en couleurs Dans Maple. Rendez-vous au bas de la page. Le code est disponible en format HTML et sous forme de feuille Maple. ainsi que le montrent les exemples de la pr´sente section.

4. tubepoints=20. 3.4. 5.2.4.2. color=blue.2]. 89].s2} ).Pi)/Pi). k=1. (rho-r*cos(2*Pi*t))*sin(2*Pi/(n+t)). thickness=2. color=[L(r. 0.4. 4. sin(t)): a0 := evalf(Int(f2(t).... -2.146 • Chapitre 4: Tracer des graphiques Note : Sur certains ordinateurs.. p}.5*sin(10*x*y): f2 := t -> f1(cos(t). orientation=[3.. Oiseau en origami L’oiseau en origami peut ˆtre affich´ comme un simple graphique ou e e comme une animation Maple. Transformation de Gauss appliqu´e ` un tore e a > > > > > > > > > > > > sp := [rho*cos(2*Pi*t). style=patchnogrid): f1 := (x.5. f2(t).50): b := seq(evalf(Int(f2(t)*sin(n*t). grid=[29. Le code de ce graphique ainsi que de l’animation sont disponibles dans le Maple Application Center.2].1. 100].2. Probl`me de Dirichlet pour un cercle e > > > > > > > > > > > > > > > > with(plots): setoptions3d(scaling=constrained.4. 2. numpoints=1500): display3d({q.. r*sin(s). L(r.Pi)/Pi). style=PATCHNOGRID. 1..2.. sin(t). -L(r. r. s). s).4. view=[-4.50): L := (r. ’n’=1.1. s)]. -4.4. projection=0. radius=0.2*Pi. t=-Pi. t=0.. -4.50): q := plot3d([r*cos(s).2]): s2 := tubeplot( sp. t=-Pi. Structure concho¨ ıdale Le code de cet objet ainsi que d’autres coquillages est disponible dans le Maple Application Center. t=-Pi.. r=0. s) -> a0/2+sum(’r^n*(a[n]*cos(n*s)+b[n]*sin(n*s))’. t=-Pi.. lightmodel=light2 ): display( {s.Pi. -r*sin(2*Pi*t)]: rho.1.015].. 1. radius=b]: pc := n -> [ (rho-r*cos(2*Pi*t))*cos(2*Pi/(n+t)). Ensemble de Mandelbrot L’ensemble de Mandelbrot est l’un des objets math´matiques les plus e complexes en raison de sa nature cahotique. tubepoints=70. t=0.4. n=1.. -2. 6. rho*sin(2*Pi*t)..4.. s=0. b := 3.4. lightmodel=light2). numpoints=10000): p := tubeplot([cos(t). view=[-4.50)}.. 1: with(plots): s := spacecurve( {seq(pc(k)..Pi)/Pi): a := seq(evalf(Int(f2(t)*cos(n*t). il peut ˆtre n´cessaire de diminuer la e e valeur de l’option numpoints pour dessiner le graphique.4.4. 0. n=1. Ruban de Moebius . y) -> 0. Le code de ce graphique est disponible dans le Maple Application Center..1. color=green.

. 45]. 2*cos(x^3+y^3)}. shading=zhue.. 80].. t=0.60]. orientation=[-107. vous pouvez animer un graphique et le colorier de plusieurs mani`res pour vous assurer d’une bonne compr´hension de sa e e nature. style=patchnogrid. s=0. Icosa`dre e > > > > > > > with(geom3d): icosahedron(p1. 8. x=-3. 0. axes=none.9 Conclusion Ce chapitre a pr´sent´ les capacit´s d’affichage graphique de Maple en e e e deux et trois dimensions pour des fonctions explicites. grid=[80.2*Pi. orientation=[-176. Pour voir d’autres variations. > style=patch. axes=none. 0). orientation=[50.. polaires. scaling=constrained. 4.4.3. lightmodel=light4. scaling=constrained. 4): p := draw(p2): q := plottools[homothety](p.9 Conclusion > > > > > • 147 moebius := plot3d([4+x*cos(1/2*y). Les coordonn´es cart´siennes. point(o. lightmodel=light3. y=-3. > style=patchnogrid. grid=[120. shading=xyz.q]. y. modifiez la valeur de hauteur dans la commande stellate. style=patchnogrid. r2*cos(t). Fonction de deux variables en coordonn´es cart´siennes e e > plot3d({sin(x^2+y^2).. 7. De plus. sph´riques et cyline e e e driques ne sont que quelques-uns des syst`mes de coordonn´es exploit´s e e e par Maple. style=patchnogrid.Pi.2*Pi. 9.30]). Bonhomme de neige Le graphique du bonhomme de neige est une animation. y=-0. Surface de r´volution param´tris´e e e e > > > > > r1 := 2 + sin(7*t): z1 := r1*cos(s): r2 := 8+r1*sin(s): plot3d([r2*sin(t). . 10. shading=zhue. coords=cylindrical. grid=[60. p1. 1): stellate(p2. implicites et param´triques.81]). Le code de cette animation est disponible dans le Maple Application Center.. x=-Pi. z1]. 120]. scaling=constrained): plots[display](moebius). x*sin(1/2*y)].3.3): plots[display]([p.2*Pi. 0. lightmodel=light1).

de contour et de densit´. Quelques-uns des types particuliers de graphiques que vous pouvez cr´er en utilisant ces e commandes sont les graphiques logarithmiques. e Les commandes du package plottools permettent de cr´er et de manie puler des objets. e e e e . et peuvent mˆme les rendre ´toil´s.148 • Chapitre 4: Tracer des graphiques Utilisez les commandes contenues dans le package plots pour afficher plusieurs graphiques de fonctions et d’expressions. Ces commandes rendent possibles la translation et la rotation des entit´s graphiques.

ou a convertir une expression sous une e e e ` forme particuli`re requise par certaines routines Maple. eq := 4 x + 17 = 23 149 . Ce qui est simple dans un contexte peut ne e pas l’ˆtre dans un autre . par exemple la factorisation d’un e polynˆme ou la rationalisation du d´nominateur d’une expression rationo e nelle. Les manipulations math´matiques sont celles correspondant e a ` une forme de processus math´matique.1 Manipulations math´matiques e La r´solution d’´quations a la main demande normalement d’effectuer une e e ` s´quence de manipulations alg´briques.5 L’´valuation et la e simplification Dans Maple. Vous pouvez ´galement effectuer e e e ces ´tapes au moyen de Maple. Maple fournit un jeu d’outils permettant de travailler avec les expressions pour y effectuer a la fois des manipulations math´matiques et ` e structurelles. 5. Les manipulations structurelles sont quant a elles des outils fournis ` par Maple pour acc´der a certaines parties des structures de donn´es du e ` e logiciel qui repr´sentent des expressions et d’autres types d’objets. et les e modifier. Celle-ci sert a convertir des r´sultats sous une forme ` e famili`re et v´rifier une r´ponse. beaucoup de temps et d’efforts sont consacr´s ` la manipue a lation d’expressions. e Le probl`me de la simplification s’av`re ´tonnamment complexe en e e e math´matiques symboliques. chaque situation peut avoir sa propre d´finition e e d’une forme simple . e > eq := 4*x + 17 = 23.

( 17 = 17 ). D´velopper des polynomes en sommes e Les sommes sont g´n´ralement plus faciles a comprendre que les produits . x4 + 13 3 31 x + 5 x2 − x − 15 2 2 e e La commande expand d´veloppe le num´rateur d’une expression rationnelle.150 • Chapitre 5: L’´valuation et la simplification e Ici. x= 3 2 Les sections suivantes pr´sentent plusieurs autres manipulations come plexes. e e > eq . e > % / 4. Assurez-vous de mettre des e parenth`ses autour de l’´quation sans nom. > expand( (x+1)*(y^2-2*y+1) / z / (y-1) ). e e ` vous pouvez donc trouver utile de d´velopper un polynˆme comme somme e o de produits. Remarquez qu’il n’est pas e n´cessaire d’utiliser 4=4 dans ce cas. 4x = 6 Divisez maintenant le r´sultat par 4. Pour ce faire. xy x y2 x y2 −2 + + z (y − 1) z (y − 1) z (y − 1) z (y − 1) y 1 −2 + z (y − 1) z (y − 1) . La commande expand vous permet de le faire. 3 poly := (x + 1) (x + 2) (x + 5) (x − ) 2 > expand( poly ). vous devez soustraire 17 des deux cˆt´s de l’´quation. > poly := (x+1)*(x+2)*(x+5)*(x-3/2). oe e il suffit de soustraire l’´quation 17=17 de eq.

e > expand( (x+1)*(y+z) ). xy + xz + y + z > expand( (x+1)*(y+z).1 Manipulations math´matiques e • 151 Utilisez la commande normal pour annuler les facteurs communs . poly := (x + 2)2 (x − 2) (x + 3) (x − 1)3 > expand( poly ). e > expand( sin(2*x) ). La commande expand applique ´galement les r`gles d’expansion de e e plusieurs fonctions math´matiques standard. ln( |x|2 ) 1 + |x| > expand(%).5. e consultez la section Forme normale factoris´e de la page 159. x+1 ). e e > poly := (x+2)^2*(x-2)*(x+3)*(x-1)^2*(x-1). e e ` Vous pouvez aussi sp´cifier des sous-expressions que vous ne voulez e pas d´velopper comme argument de la commande expand. 2 sin(x) cos(x) > ln( abs(x^2)/(1+abs(x)) ). x7 + 2 x6 − 10 x5 − 12 x4 + 37 x3 + 10 x2 − 52 x + 24 . (x + 1) y + (x + 1) z Vous pouvez d´velopper une expression sur un domaine sp´cifique. 2 ln(|x|) − ln(1 + |x|) La commande combine applique les mˆmes r`gles. mais dans le sens e e oppos´. Consultez la pr´sente section a la page 158.

x7 + 2 x6 + 2 x5 + x3 + x2 + 2 x Cependant. la commande Expand est plus utile.3*y + y^2*x^2. poly := x2 + 2 y x − 3 y + y 2 x2 > collect( poly. > Expand( poly ) mod 3. Maple effectue tous les calculs interm´diaires en arithm´tique modulo. > collect( x^2 + 2*x + 1 . > poly := x^2 + 2*y*x . x7 + 2 x6 + 2 x5 + x3 + x2 + 2 x Lorsque vous utilisez Expand avec mod. x ). x ). consultez la rubrique ?expand pour plus de d´tails.a*x + b .c*x^2. x et les constantes a l’aide de ` lire si vous regroupez les coefficients de x la commande collect. y 2 x2 + (2 x − 3) y + x2 Vous pouvez regrouper les termes sur des variables ou des appels de fonctions non ´valu´s. Vous pouvez ´galement ´crire vos e e e e propres routines pour expand . e e . (1 − c) x2 + (2 − a) x + b + 1 Le deuxi`me argument de la commande collect sp´cifie sur quelle e e variable il doit regrouper les termes.152 • Chapitre 5: L’´valuation et la simplification e > % mod 3. e Regrouper les coefficients de meme degr´ e Une expression comme x2 + 2x + 1 − ax + b − cx2 peut ˆtre plus facile a e ` 2 . (1 + y 2 ) x2 + 2 y x − 3 y > collect( poly. y ).

Error. xyprod ).5. x*y ). e Dans l’exemple pr´c´dent.1 Manipulations math´matiques e > trig_expr := sin(x)*cos(x) + sin(x) + y*sin(x). effectuez d’abord une substitution. • 153 trig _expr := sin(x) cos(x) + sin(x) + y sin(x) > collect( trig_expr.x)*sin(f(x)) > + sin(x)*diff(f(x). (z + 2) xyprod + z . big_expr ). big _expr := z x y + 2 y x + z > collect( big_expr.diff(f(x). z xyprod + 2 xyprod + z > collect( %. > subs( x=xyprod/y. cr´ez une variable rempla¸ant x*y. d (−sin(f(x)) + sin(x)) ( dx f(x)) d + (sin(x) + sin(f(x))) ( dx2 f(x)) 2 Vous ne pouvez regrouper les termes sur des sommes ou des produits. puis ree e e c groupez les termes sur cette nouvelle variable. 2 d d DE := ( dx2 f(x)) sin(x) − ( dx f(x)) sin(f(x)) d d + sin(x) ( dx f(x)) + sin(f(x)) ( dx2 f(x)) 2 > collect( DE.x)*sin(x) . (cos(x) + 1 + y) sin(x) > DE := diff(f(x). diff ).x) + sin(f(x))*diff(f(x).x). sin(x) ).x. > big_expr := z*x*y + 2*x*y + z.x. (in collect) cannot collect y*x Pour contourner ce probl`me.

[x. e > collect( poly. (z + 2) y x + z Dans la section 5. [x. e o > factor( x^2-1 ). Utilisez la commande factor pour factoriser des polynˆmes.3 de la page 190. Si vous regroupez les coefficients de plus d’une variable a la fois. distributed ). La forme r´cursive regroupe d’abord les termes autour de la premi`re variable sp´cifi´e. e > poly := x*y + z*x*y + y*x^2 . pour ce faire. vous devez utiliser la commande sort.y]. e ` Factoriser des polynomes et des fonctions rationnelles Vous pouvez ´crire un polynˆme sous forme d’un produit de termes de plus e o faible degr´.y] ). puis la deuxi`me. poly := y x + z x y + y x2 − z y x2 + x + z x > collect( poly. . deux ` options s’offrent a vous : employer la forme r´cursive ou la forme dis` e e e tribu´e. (x − 1) (x + 1) > factor( x^3+y^3 ). et ainsi de suite.z*y*x^2 + x + z*x. on explique l’usage de la commande subs. % ). (1 + z) x + (1 + z) y x + (1 − z) y x2 La commande collect ne trie pas les termes . C’est la e e e e forme par d´faut.154 • Chapitre 5: L’´valuation et la simplification e > subs( xyprod=x*y. (1 − z) y x2 + ((1 + z) y + 1 + z) x La forme distribu´e regroupe les coefficients de toutes les variables en e mˆme temps. Consultez la pr´sente section a la page 164.

1 Manipulations math´matiques e • 155 (x + y) (x2 − y x + y 2 ) Vous pouvez ´galement factoriser des fonctions rationnelles. rat _expr := > factor( rat_expr ).5. La come mande factor factorise a la fois le num´rateur et le d´nominateur. x16 − y 16 x8 − y 8 x8 + y 8 > rat_expr := (x^16 . Le polynˆme o e o suivant poss`de des coefficients entiers . les coefficients incluent diff´rence dans le r´sultat.y^16) / (x^8 . x16 − y 16 x7 − y 7 (y + x) (x2 + y 2 ) (x4 + y 4 ) (x8 + y 8 ) x6 + y x5 + y 2 x4 + y 3 x3 + y 4 x2 + y 5 x + y 6 Sp´cifier le corps de nombres alg´briques La commande factor face e torise un polynˆme sur l’anneau indiqu´ par les coefficients. > rat_expr := (x^16 .y^16) / (x^7 .2*x + 2. e e √ 2.y^7).y^8). rat _expr := > factor(rat_expr).x^3 + x^2 . (x − 1) (x2 − 2) (x2 + 1) Dans le prochain exemple. poly := x5 − x4 − x3 + x2 − 2 x + 2 > factor( poly ).x^4 . ainsi. Remarquez la . e e e > poly := x^5 . les termes de sa forme face toris´e poss`dent ´galement des coefficients entiers. et ` e e annule ensuite leurs termes communs.

(x2 − 3) (x − √ √ 2) (x + 2) > factor( poly. e . sqrt(2) ). √ 2 x5 − √ 2 x4 − √ 2 x3 + √ 2 x2 − 2 √ √ 2x + 2 2 > factor( % ). { sqrt(2). poly := x4 − 5 x2 + 6 > factor( poly ). (x2 − 3) (x + RootOf(_Z 2 − 2)) (x − RootOf(_Z 2 − 2)) Consultez la rubrique ?evala pour plus d’information sur le calcul dans un corps alg´brique de nombres.156 • Chapitre 5: L’´valuation et la simplification e > expand( sqrt(2)*poly ). (x − √ 3) (x + √ √ √ 3) (x − 2) (x + 2) Vous pouvez ´galement sp´cifier l’extension en utilisant RootOf. Ici. √ 2 (x2 + 1) (x − √ √ 2) (x + 2) (x − 1) Vous pouvez ´tendre explicitement le corps des coefficients en foure nissant un deuxi`me argument a la commande factor. RootOf(x^2-2) ). e ` > poly := x^4 . sqrt(3) } ). e ` > factor( poly. (x2 − 2) (x2 − 3) > factor( poly.5*x^2 + 6. e e √ √ RootOf(x^2-2) repr´sente une solution a x2 − 2 = 0. soit 2 ou − 2.

la factorisation des e e polynˆmes multivari´s ou la factorisation de polynˆmes sur des corps o e o e alg´briques de nombres. (x + 1) (x2 + 4 x + 1) > Factor( x^3+1. il est pr´f´rable de pr´senter les expressions rationnelles sans e e ee e exposant rationnel au d´nominateur. La commande rationalize enl`ve e e les racines du d´nominateur d’une expression rationnelle en multipliant e par un facteur convenable. 1 (2/3) 2 1 (1/3) + − 2 2 5 5 10 > (x^2+5) / (x + x^(5/7)). Supprimer des exposants rationnels En g´n´ral. (x + 6) (x + 4) La commande Factor permet ´galement les extensions alg´briques de e e corps. RootOf(x^2+x+1) ) mod 5. 1 2 + 2(1/3) > rationalize( % ). ` > Factor( x^2+3*x+3 ) mod 7.1 Manipulations math´matiques e • 157 Factoriser dans des domaines sp´ciaux Utilisez la commande Factor e pour factoriser une expression sur les entiers modulo p pour un p premier. > 1 / ( 2 + root[3](2) ). La syntaxe est similaire a celle de la commande Expand. .5. > Factor( x^3+1 ) mod 5. consultez la rubrique ?Factor. (x + 1) (x + 4 RootOf(_Z 2 + _Z + 1) + 4) (x + RootOf(_Z 2 + _Z + 1)) Pour obtenir des d´tails sur l’algorithme utilis´.

(x2 + 5) (x(6/7) − x(12/7) − x(4/7) + x(10/7) + x(2/7) − x(8/7) + x2 ) ( x3 + x) Le r´sultat de rationalize est souvent plus long que l’original. infolevel combine := 1 > expr := Int(1. 1 sin(2 x) 2 > combine( exp(x)^2 * exp(y) ). x(2 a) Pour voir comment combine permet d’obtenir le r´sultat. 1 > combine( sin(x)*cos(x) ). donnez au e param`tre infolevel[combine] une valeur positive. . x) + Int(x^2. e > infolevel[combine] := 1. e(2 x+y) > combine( (x^a)^2 ). e Combiner des termes La commande combine applique certaines r`gles de transformation pour e de nombreuses fonctions math´matiques.158 • Chapitre 5: L’´valuation et la simplification e x2 + 5 x + x(5/7) > rationalize( % ). e > combine( sin(x)^2 + cos(x)^2 ). x).

combine: combine: combine: combine: combine: combine: combine: combine: combine: combine: combine: combine: combine: combining combining combining combining combining combining combining combining combining combining combining combining combining with with with with with with with with with with with with with 1 dx + x2 dx respect respect respect respect respect respect respect respect respect respect respect respect respect to to to to to to to to to to to to to Int linear int linear Int linear int linear Int linear cmbplus cmbpwr power x2 + 1 dx La commande expand applique la plupart de ces r`gles de transformae tion en sens inverse. expr := > normal( expr ). a Forme normale factoris´e e Si une expression contient des fractions. e e qui m`ne g´n´ralement a des expressions plus simples. e e e ` > normal( x + 1/x ). vous pouvez trouver utile de regrouper celles-ci en une seule et d’annuler les facteurs communs du num´rateur et du d´nominateur. Consultez la section D´velopper des polynomes en e sommes ` la page 150. La commande normal effectue ce processus.5. x2 + 1 x > expr := x/(x+1) + 1/x + 1/(1+x).1 Manipulations math´matiques e • 159 expr := > combine( expr ). x 1 1 + + x+1 x x+1 .

x2 +1 x2 − 1 . expanded ). > normal( [ expr. x+y (x − y)2 > expr := (x . expanded. x2 − 1 x (x − 2) Utilisez le deuxi`me argument.1/x) / (x-2). e e e > normal( expr. expr := x2 − y 2 (x − y)3 > normal( expr ). exp(x+1/x) ] ). les ene sembles et les listes. si vous souhaitez que e normal d´veloppe le num´rateur et le d´nominateur. x2 − 1 x2 − 2 x La commande normal agit r´cursivement sur les fonctions. . 1 x expr := x−2 x− > normal( expr ).160 • Chapitre 5: L’´valuation et la simplification e x+1 x > expr := (x^2 .y^2) / (x-y)^3. e( x ) ] x (x − 2) [ > big_expr := sin( (x*(x+1)-x)/(x+2) )^2 > + cos( (x^2)/(-x-2) )^2.

(x4 + x3 + x2 + x + 1) (x20 + x15 + x10 + x5 + 1) Simplifier des expressions Les r´sultats des calculs de simplification de Maple peuvent ˆtre tr`s come e e pliqu´s. (x + 1) x − x 2 x2 ) + cos( )2 x+2 −x − 2 sin( x2 2 x2 2 ) + cos( ) x+2 x+2 Remarquez dans le dernier exemple que la commande normal ne simplifie que les fonctions rationnelles – et non les fonctions trigonom´triques.1 Manipulations math´matiques e • 161 big _expr := sin( > normal( big_expr ). expr := √ 4+3 . utilisez la commande factor. La commande simplify tente de trouver une expression plus e simple en effectuant une s´rie de manipulations. expr := > normal( expr ).1 a la ` page 154. e e > expr := (x^25-1) / (x-1). > factor(expr). Consultez la section 5. e > expr := 4^(1/2) + 3.5. e Un cas particulier La commande normal peut retourner une expression sous forme ´tendue qui n’est pas aussi simple que la forme factoris´e. x25 − 1 x−1 1 + x5 + x4 + x3 + x2 + x18 + x12 + x14 + x19 + x17 + x15 + x9 + x8 + x11 + x10 + x + x16 + x7 + x24 + x22 + x23 + x21 + x20 + x13 + x6 Pour annuler le facteur commun (x − 1) du num´rateur et du d´e e nominateur.

des expressions RootOf ainsi que d’autres fonctions sp´ciales. cos(x)4 (cos(x) + 1) Maple poss`de des r`gles de simplification pour les expressions trigoe e nom´triques.2*sin(x)^2 . des puissances. trig ). ln ).cos(2*x). ln(3) + ln(x) + 1 Consultez la rubrique ?simplify pour obtenir une liste des r`gles de e simplification int´gr´es. 5 > expr := cos(x)^5 + sin(x)^4 + 2*cos(x)^2 > . expr := ln(3 x) + sin(x)2 + cos(x)2 > simplify( expr. seule cette r`gle (ou cette classe de ` e r`gles) sera utilis´e. e e e e Lorsque vous sp´cifiez une r`gle particuli`re de simplification comme argument a la commande simplify. e e . ln(3 x) + 1 > simplify( expr. ln(3) + ln(x) + sin(x)2 + cos(x)2 > simplify( expr ). e e > expr := ln(3*x) + sin(x)^2 + cos(x)^2.162 • Chapitre 5: L’´valuation et la simplification e > simplify( expr ). expr := cos(x)5 + sin(x)4 + 2 cos(x)2 − 2 sin(x)2 − cos(2 x) > simplify( expr ). logarithmiques et exponentielles de mˆme que pour les exe e pressions contenant des radicaux.

Simplification au moyen des relations accessoires Vous pouvez quelquefois simplifier une expression en utilisant votre propre r`gle de transformation.5. xy + yz + y + 1 .1 Manipulations math´matiques e • 163 Simplification avec des hypoth`ses e Il est possible que Maple n’effectue pas une simplification comme vous l’entendez . e ee > simplify( expr. e e e > expr := sqrt( (x*y)^2 ). assume=positive ). Consultez la section e 5.2. expr := > simplify( expr ). cela survient lorsque vous connaissez les propri´t´s sp´ciales ee e d’une variable mais que Maple la traite d’une mani`re plus g´n´rale. xy Vous pouvez ´galement vous servir de la commande assume pour plae cer des hypoth`ses individuellement sur des variables. assume=real ). La commande simplify vous permet de le faire e en utilisant des relations accessoires . > expr := x*y*z + x*y + x*z + y*z. |x y| > simplify( expr. expr := x y z + x y + x z + y z > simplify( expr. x2 y 2 x2 y 2 L’option assume=propri´t´ indique a la commande simplify d’ase e ` sumer que toutes les inconnues de l’expression poss`dent la propri´t´. { x*z=1 } ).

Maple effectue la substitution y 2 = 1 − x2 dans la premi`re expression. e Il est ´galement possible de sp´cifier l’ordre dans lequel simplify e e effectue l’op´ration. La commande simplify consid`re les ´quations e e donn´es comme des simplifications additionnelles. siderel := x2 + y 2 = 1 > simplify( expr. Vous pouvez en trier les termes par ordre d´croissant de e e ee e degr´ ` l’aide de la commande sort.164 • Chapitre 5: L’´valuation et la simplification e Vous pouvez sp´cifier une ou plusieurs relations accessoires dans un e ensemble ou une liste. [x. n’en trouvant aucun. puis tente d’effectuer des substitutions pour les e e ee termes en x2 . n’en trouvant aucun. e > expr := x^3 + y^3.x] ). Maple effectue la substitution x2 = 1−y 2 dans la premi`re expression. puis tente d’effectuer une substituion pour les termes e 2 . y3 − x y2 + x > simplify( expr. x3 − y x2 + y Dans le premier cas. ea > poly := 1 + x^4 .x^2 + x + x^3.y] ).siderels. Pour obtenir davantage d’information sur cette commande. consultez la rubrique ?simplify. [y. l’ex´cution est arrˆt´e. l’ex´cution est arrˆt´e. {siderel}. {siderel}. Trier des expressions alg´briques e Maple affiche les termes d’un polynˆme dans l’ordre o` le polynˆme a o u o d’abord ´t´ cr´´. poly := 1 + x4 − x2 + x + x3 . Les manipulations de polynˆmes en base de Gr¨bner sont a la base du o o ` fonctionnement de simplify. expr := x3 + y 3 > siderel := x^2 + y^2 = 1. e ee en y Dans le second cas.

c o e > poly.y] ). Maple utilise par d´faut le tri e e par degr´ total . w5 + z 4 + x3 + y 2 + x > sort( x^3*y + y^2*x^2. Avec ce tri. y 2 x2 + y x3 . lorsque deux termes ont le mˆme degr´. [x.y] ).1 Manipulations math´matiques e > sort( poly ).x. Maple les trie e e e en ordre lexicographique (de telle sorte que a vienne avant b. les termes sont alors r´arrang´s en ordre d´croissant de e e e e degr´.z] ). et ainsi de suite).y.x] ). x4 + x3 − x2 + x + 1 Vous pouvez trier des polynˆmes multivari´s de deux mani`res : par o e e degr´ total ou en ordre lexicographique.y] ). [x. • 165 x4 + x3 − x2 + x + 1 Remarquez que sort r´organise les expressions alg´briques sur place e e en rempla¸ant le polynˆme original par sa copie tri´e. > sort( x^3*y + y^2*x^2. [w. [y. x4 + x3 y + x2 y 2 Remarquez que l’ordre des variables dans la liste d´termine l’ordone nancement de l’expression.5. x3 y + x2 y 2 > sort( x^3*y + y^2*x^2. x3 y + x2 y 2 > sort( x^3*y + y^2*x^2 + x^4. > sort( x+x^3 + w^5 + y^2 + z^4. [x.

[x.3. ln ). plex ).y. Pour plus d’information.k). ` e > sort( x + x^3 + w^5 + y^2 + z^4. Consultez la sece tion 5. l’ordre dans lequel sont donn´es les inconnues au e moment de l’appel a sort d´termine l’ordonnancement. vous pouvez exprimer sin(x) en termes e de la fonction exponentielle.166 • Chapitre 5: L’´valuation et la simplification e Vous pouvez ´galement trier l’expression enti`re en ordre lexicograe e phique en utilisant l’option plex de la commande sort.z. n! k! (n − k)! . > sort( x + x^3 + w^5 + y^2 + z^4. w5 + x3 + x + y 2 + z 4 Encore une fois. consultez la rubrique ?convert. sincos ). Par exemple.w]. x3 + x + y 2 + z 4 + w5 La commande sort peut ´galement trier des listes. > convert( sin(x). cos(x) sin(x) > convert( arccos(x).y. −I ln(x + I −x2 + 1) > convert( binomial(n. exp ).z].x. [w. La commande convert permet d’effectuer des conversions de ce genre. factorial ). 1 −1 I (e(I x) − (I x) ) 2 e > convert( cot(x). plex ). Conversion entre diff´rentes formes e Vous pouvez ´crire plusieurs fonctions math´matiques selon diverses e e formes ´quivalentes.

19615 59713 Remarquez que les conversions ne sont pas n´cessairement r´cie e proques.3284879342. x+ 1 1 − 2 x−1 x Vous pouvez ´galement utiliser convert pour trouver une approximae tion fractionnelle a un nombre d´cimal.1 Manipulations math´matiques e • 167 L’argument parfrac indique que l’on souhaite obtenir des fractions partielles. −I ((e(I x) )2 − 1) (e(I x) )2 + 1 > convert( %. Consultez la section 5. rational ). e e > simplify( % ). x ).3. −I ((cos(x) + I sin(x))2 − 1) (cos(x) + I sin(x))2 + 1 La commande simplify nous r´v`le que cette expression est tan(x). ` e > convert( . > convert( (x^5+1) / (x^4-x^2). parfrac. exp ). > convert( tan(x). . trig ).5. sin(x) cos(x) Vous pouvez ´galement vous servir de la commande convert pour e effectuer des manipulations structurelles sur des objets Maple.

La commande assume permet une e ee meilleure simplification d’expressions symboliques. √ a2 Maple ne peut simplifier cette expression. e ` > about(a).Open(0)) Utilisez la commande additionally pour poser des hypoth`ses e suppl´mentaires sur une inconnue.168 • Chapitre 5: L’´valuation et la simplification e 5. e ` > assume( a>0 ). a~ Utilisez la commande about pour obtenir de l’information sur les hypoth`ses a propos d’une inconnue. > additionally( m<=0 ). ´tant donn´ que le r´sultat e e e est diff´rent pour les valeurs positives et n´gatives de a. Pour e e modifier globalement les propri´t´s des inconnues. Pour effectuer une seule op´ration avec des hypoth`ses sur des e e inconnues. utilisez la commande ee assume. e La commande assume Le syst`me d’hypoth`ses de Maple est un ensemble de routines permettant e e de g´rer les propri´t´s des inconnues. e > sqrt(a^2).2 Les hypoth`ses e Il existe deux mani`res d’imposer des hypoth`ses sur des inconnues. e > assume(m. Originally m. renamed m~: is assumed to be: 0 . utilisez la commande assuming. Les commandes assume et assuming sont expliqu´es dans les sous-sections suivantes. nonnegative). Originally a. renamed a~: is assumed to be: RealRange(-infinity. > about(m). Fournir une hye e poth`se sur la valeur de a permet a Maple de simplifier l’expression. > sqrt(a^2). particuli`rement avec e les fonctions retournant plusieurs valeurs comme les racines carr´es.

Need to know the sign of --> -c Will now try indefinite integration and then take limits. frac(n) > assume(n. infolevel int := 2 > int( exp(c*x). e > limit(b*x. int/indef1: first-stage indefinite integration int/indef2: second-stage indefinite integration int/indef2: applying derivative-divides . int/cook/nogo1: Given Integral Int(exp(c*x).. 0 La limite suivante d´pend de b. signum(b) ∞ > assume( b>0 ). ∞ Vous pouvez utiliser infolevel pour obtenir de Maple un rapport d´taill´ de l’activit´ d’une commande. x=infinity). e e e > infolevel[int] := 2. x=infinity). integer). La e commande frac retourne la partie fractionnaire d’un nombre.. > frac(n).infinity ).x = 0 . t2) Definite integration: Can’t determine if the integral is convergent. x=0.5.. > frac(n). > limit(b*x. infinity) Fits into this pattern: Int(exp(-Ucplex*x^S1-U2*x^S2)*x^N*ln(B*x^DL)^M*cos(C1*x^R) /((A0+A1*x^D)^P).2 Les hypoth`ses e • 169 Plusieurs fonctions font usage des hypoth`ses sur une inconnue.x = t1 .

x = 0 . real).. x=0. > ln( exp( 3*Pi*I ) ).infinity ). t2) int/cook/IIntd1: --> U must be <= 0 for converging integral --> will use limit to find if integral is +infinity --> or . a moins de la savoir ` e correcte. ln(ex ) > assume(x. par exemple lorsque x est r´el.170 • Chapitre 5: L’´valuation et la simplification e int/indef1: first-stage indefinite integration e(c x) − 1 x→∞ c lim La commande int doit connaˆ le signe de c (ou plutˆt le signe de -c). Maple ne simplifie pas l’expression suivante. > int( exp(c*x). πI Ainsi. ıtre o > assume( c>0 ).. infinity) Fits into this pattern: Int(exp(-Ucplex*x^S1-U2*x^S2)*x^N*ln(B*x^DL)^M*cos(C1*x^R) /((A0+A1*x^D)^P).infinity or undefined ∞ Les logarithmes retournent plusieurs valeurs . x~ Vous pouvez utiliser la commande is pour v´rifier directement les e propri´t´s des inconnues.. > ln(exp(x)). pour des e e e valeurs complexes de x. ln(ex ) est diff´rent de x. int/cook/nogo1: Given Integral Int(exp(x). > ln(exp(x)). ee . g´n´ralement.x = t1 .

Maple croit toujours que la variable a est n´gative. true > is(x.5. il suffit d’en d´saffecter e e le nom. e > eq := subs( a=’a’. • 171 true > is(x. eq := ξ 2 = a~ > solve( eq. e > eq := xi^2 = a. e .2 Les hypoth`ses e > is( c>0 ). d´saffectez a. true Dans le prochain exemple. Tout d’abord. eq ). Cependant. retirez les hypoth`ses sur a ` e e a l’int´rieur de eq. {xi} ). eq := ξ 2 = a Puis. {ξ = √ −a~ I}. ξ 2 = a~ Vous devez retirer l’hypoth`se sur a ` l’int´rieur de eq avant e a e de retirer l’hypoth`se sur a. l’expression eq renvoie toujours a a~. ` > eq. {ξ = −I √ −a~} Pour retirer des hypoth`ses sur une variable. complex). real).

e La commande assuming Pour n’effectuer qu’une seule ´valuation avec des hypoth`ses sur les noms e e d’une expression. e e > about(a). vous pouvez utiliser la commande assuming d´crite e e dans la prochaine sous-section. Son utilisation est ´quivalente a la proc´dure consistant a appeler la commande assume. Lorsque vous vous servez de la commande assuming.172 • Chapitre 5: L’´valuation et la simplification e > a := ’a’. puis a retirer les hypoth`ses sur l’expression et ses ` e composantes. utilisez la commande assuming. a := a Consultez la rubrique ?assume pour obtenir davantage d’information. Cela facilite l’exp´rimentation de l’´valuation d’une exprese e sion sous diff´rentes hypoth`ses. −a > about(a). a Vous pouvez ´valuer une expression avec une hypoth`se sur tous les e e noms dans une expression : . a: nothing known about this object > sqrt(a^2) assuming a<0. vous n’avez pas besoin de retirer par la suite les hypoth`ses e sur les inconnues et les ´quations. e ` e ` ae ` ´valuer l’expression. a: nothing known about this object > sqrt(a^2) assuming a>0. S’il ne vous est n´cessaire de poser une hypoth`se que pour une e e seule ´valuation.

Q. H. Pour plus d’information. R. ce qui rend leur ee manipulation ais´e. • 173 a b~ ou avec des hypoth`ses sur des noms en particulier. O }. x ~ + ln(ey ) Dans cet exemple. les doubles deux-points sont utilis´s pour ee e e e v´rifier le type d’un objet. e e .3 Manipulations structurelles > sqrt((a*b)^2) assuming positive. 5. y::complex.3 Manipulations structurelles Les manipulations structurelles sont des manipulations qui permettent. entre autres choses. d’utiliser la connaissance de la structure ou la repr´sentation interne d’un e objet plutˆt que de travailler avec l’expression comme un objet purement o math´matique. Z Choisir des ´l´ments de listes et d’ensembles est facile. e > ln(exp(x)) + ln(exp(y)) assuming x::real. R. L := {O. Z. Q. Cependant. choisir e un ´l´ment est direct. En g´n´ral. les doubles deux-points (::) indiquent l’affectation d’une propri´t´. H. Dans les cas particuliers des listes et des ensembles. consultez la rubrique ?assuming. C.5. ee > L := { Z. plusieurs des commmandes e e qui manipulent les listes et les ensembles s’appliquent ´galement aux exe pressions g´n´rales. C} > L[3]. Pour en savoir davantage sur la commande assuming. Le concept de ce qui constitue les parties d’une exe pression g´n´rale est plus difficile. de choisir et de modifier des parties d’un objet. r´f´rez-vous a la rue ee ` brique ?type.

map2 remplace le e deuxi`me argument d’une fonction. b. p. [a. p. q. c]. c] ). f(c. {x2 + 2 x. q ). r). e > map2( f. f(p. [f(a). q). [a. r). b.c]. p. b. [f(a. p.b. [a. f(b). x*(x+2) ]. [2 x + 3. c2 ] Lorsque map est appel´e avec plus de deux arguments. [f(p. f(c)] > map( expand. r ). c] ). les arguments e suppl´mentaires sont pass´s ` la fonction. L` o` map remplace e e ` a u s´quentiellement le premier argument d’une fonction. c]) > map( f. q. 2 x + 2] La commande map2 est ´troitement li´e a map. p. b. f(b. [a. La commande map vous ee o a permet d’effectuer cette application multiple. q. > f( [a. x2 + 3 x + 2} > map( x->x^2. a. c. f(p. x*(x+2) } ). q)] > map( diff. e e a > map( f. f([a.174 • Chapitre 5: L’´valuation et la simplification e Appliquer une fonction ` une liste ou un ensemble a Vous pouvez appliquer une fonction ou une commande a chacun des ` ´l´ments plutˆt qu’` un objet en tant que tout. r)] . q). [a2 . b. b. b2 . x ). [ (x+1)*(x+2). { (x+1)*(x+2). q. c] ).

q)]. L := [0. i=[a. q. > L := [ seq( i. 0.c] ). r) Un autre exemple est le triangle de Pascal.b]. 4. q). [e. q). . q. i. [c. 1. 0]. 1. f(b).y. d(p. [x. f(c) > seq( f(p. 0. f(p. 0. b. [1. 1. 0. f(p. 5. . n=L ) ]. m=L ) ]. [e(p. q). 0.5.. x^y/z. − 2] xz z z Vous pouvez utiliser map2 pour obtenir la liste de toutes les d´riv´es e e partielles d’une expression. 0. > map2( map.b. 2. ee > seq( f(i). f(a).5 ) ]. {[a(p. [1. q ). 4. [c(p. % ). q)]. 2. f(p. 0. 3. • 175 [ xy xy y xy ln(x) . 0]. 6. 1. b(p. q. q)]. 1]] > map( print.d]. r).z] ).b. Ici. r). 5] > [ seq( [ seq( binomial(n. [1.c} ). i={a. 1. 4. { [a. } Vous pouvez mˆme utiliser seq conjointement avec map lorsque vous e les appliquez a des sous-´l´ments. 0. f(p.3 Manipulations structurelles > map2( diff. 0. p. c.m). 0. 0]. [1. [[1. 5. 0]. q. r). 10. [1. seq produit une suite en appliquant ` ee la fonction f aux ´l´ments d’un ensemble et d’une liste. 3. a. 10.f] }. 3. 0]. i=0.

95. 5. 0] [1. 50 + y 2 + sin(x)2 Les commandes map. -5] ). 0. 3. 1. add et mul peuvent ´galement agir e sur des expressions g´n´rales.95. 2.176 • Chapitre 5: L’´valuation et la simplification e [1. 4. ee ` ee > L := [ 8. sin(9)] . 5. 1. L := [8. 1. 10. seq. map2. 1. sin(9) ]. e e ee ` e La fonction bool´enne suivante retourne true si son argument est sup´e e rieur a 3. ` > large := x -> is(x > 3). a l’exception ` qu’elles engendrent respectivement des sommes et des produits au lieu de suites. 3. 0] [1. 10. 0. 0] [1. 0. 0] [1. 4. Pi. sin(x). 2. 6. 1] [] Les commandes add et mul fonctionnent comme seq. π. Consultez la section Les parties d’une e e expression de la page 182. y. i=[5. 0. 2. 0. > add( i^2. large := x → is(3 < x) Vous pouvez maintenant utiliser la commande select pour choisir les ´l´ments dans une liste ou un ensemble qui satisfont a la propri´t´ large. 0. 0. 0. 0. Choisir des ´l´ments dans une liste ou un ensemble ee Vous pouvez choisir certains ´l´ments d’une liste ou d’un ensemble en fouree nissant une fonction bool´enne qui d´termine les ´l´ments a s´lectionner. 0. 0] [1.

la syntaxe de select passe le troisi`me argument.95. π] De fa¸on similaire. [8. numeric.95. la commande remove retire les ´l´ments de L qui c ee satisfont a la propri´t´ large et affiche comme r´sultat les ´l´ments res` ee e ee tants.95] Consultez la section Les parties d’une expression ` la page 182 pour a obtenir davantage d’information sur les types de donn´es et sur la mani`re e e d’utiliser select et remove sur des expressions en g´n´ral. • 177 [8. ` la e a commande type. utilisez la come e mande selectremove. L. [2. [2. sin(9)] Pour effectuer les deux op´rations simultan´ment. [8. true > type( cos(1). > remove( large. > select( type. numeric ). > selectremove( large. L ).3 Manipulations structurelles > select( large. > type( 3. L). e e . numeric ).5. π]. 2. sin(9)] Servez-vous de la commande type pour d´terminer le type d’une exe pression. numeric ). false Ici. L ).

. . 7. 13] > Y := [ seq( binomial(6. 6].. 20]. [13. 1] Pour tracer le graphique des valeurs en y en fonction des valeurs en x. 3.. 20. Y := [6. Y ). 1]] > plot( P ).6 ) ]. > P := zip( pair. y] La commande zip peut combiner les listes X et Y selon la fonction binaire pair. 11.6 ) ]. zip retourne une liste e de la longueur de la plus courte. i=1. [5. X := [2. 15. ]. 15. Voici une liste e de valeurs en x et une liste de valeurs en y. X. [11.. [3.178 • Chapitre 5: L’´valuation et la simplification e Combiner deux listes Il est possible de combiner des listes de plusieurs mani`res. 6]. y) → [x. pair := (x.y2 ]. 6. 15]. Pour chaque paire de valeurs.y) -> [x. ee > pair := (x. > X := [ seq( ithprime(i). 5. 20 18 16 14 12 10 8 6 4 2 2 4 6 8 10 12 Si les deux listes sont de longueur diff´rente. [x2. construisez donc une liste de deux ´l´ments. 15]. [7.y1 ]. i). P := [[2. y]. i=1. construisez une liste de listes : [ [x1..

346. 2. "a".5.e.4.5. 3.f]. [7657.6] ). 2 b. “a”.3.213. [a. 3] La commande zip peut ´galement combiner des vecteurs. en utilisant le quatri`me param`tre pour remplacer les valeurs manquantes.2.b.3]. 3.342. 3.c. [a.d. e > sort( [1. 99 e. "little". Les ´l´ments d’une liste demeurent dans le e ee ee mˆme ordre que lorsque la liste a ´t´ cr´´e. Trier des listes Dans Maple.2.3 Manipulations structurelles > zip( (x. "has". 18.y) -> x.876]. [1. "lamb"] ). 2. [a. 3. Consultez e la rubrique ?zip pour obtenir plus d’information sur cette commande. “little”] . Vous pouvez cependant cr´er e e e ee e une copie d’une liste tri´e dans un autre ordre en utilisant la commande e sort. 99 d.3] ).c. 6. 99 f ] > zip( igcd. [34.756.y. 2 b.b. e > sort( ["Mary".f]. • 179 [a.123].d. e e > zip( (x. 3 c. 99 ). Entre autres fonctions.y. 6! ). 4. Elle trie une liste de nombres en ordre num´rique.e. 3 c] Vous pouvez sp´cifier un quatri`me argument a zip qui lui fait retoure e ` ner une liste aussi longue que la plus longue des deux listes. “has”.3. [1.2.3. [“Mary”. [1. 5. une liste est une structure de donn´es fondamentale qui e pr´serve l’ordre des ´l´ments. la commande sort trie les listes en ordre croissant. “lamb”. [1.y) -> x. 6] La commande sort peut ´galement trier une liste chaˆ e ınes de caract`res en ordre lexicographique.6.

x] > sort( [-5.y) -> is( x < y ). 10. Cette fonction bool´enne doit avoir deux arguments et retoure ner true si le premier argument doit ˆtre plac´ avant le second.3. “apple”. bf ). pour Maple.y) -> evalb( x>y ) ). 4. Pi. π. "apple"] ).3] 3 . −5] Notez que. [π. 1. y) → is(x < y) > sort( [4. 1 ] 2 ` La commande is sert a comparer des constantes comme π et sin(5) avec des nombres purs.12. 2 ] 3 Vous pouvez sp´cifier une fonction bool´enne pour d´finir un ordre e e e a ` la liste. Pi. ou lorsqu’une liste contient des expressions autres que des nombres ou des chaˆ ınes. 1/2]. bf := (x. [10. sin(5)]. > sort( [x. la commande sort applique les adresses machine.180 • Chapitre 5: L’´valuation et la simplification e Lorsque vous m´langez des nombres et des chaˆ e ınes. [1. e > sort( [3. sin(34). 2/3. [sin(5). (x. 1. 2 . > sort( [4.3. 4. 2/3] ). π n’est pas un nombre.12.3. [3. sin(34)] ). Vous e e pouvez employer cette m´thode pour trier une liste de nombres en ordre e d´croissant. qui peuvent varier a chaque ` session. 1. > bf := (x.

“b”. “d”. string ). “b”] > list2 := select( type. e > list1 := select( type. “a”. shorter ). y) → evalb(length(x) < length(y)) > sort( ["Mary". list1 := [“a”. “c”. 3. numeric )."b". l’une contenant des nombres. list2 := [1. shorter := (x. “b”. e > list1 := sort(list1). “Mary”. "little".5.3 Manipulations structurelles • 181 Vous pouvez ´galement trier des chaˆ e ınes de caract`res par longueur. e > big_list := [1. list2 := [1. “c”. "lamb"].5."d". “d”] > list2 := sort(list2). Pour e trier une liste mixte de chaˆ ınes et de nombres.2. big_list. 5.9]. “a”. 2. regroupez les deux listes. list1 := [“d”. vous pouvez effectuer les op´rations suivantes. “lamb”. 5. . 2."c". 9] Cr´ez deux listes a partir de l’originale. big_list.3. e > shorter := (x. 2. e ` et l’autre des chaˆ ınes de caract`res. big _list := [1. [“a”. “c”."a". 3.y) -> evalb( length(x) < length(y) ). “has”. 9] Triez maintenant les deux listes ind´pendamment. 9] Finalement. "has". “little”] Maple ne poss`de pas de m´thode int´gr´e pour trier des listes mixtes e e e e de chaˆ ınes de caract`res et de nombres (sauf par adresse machine). 5. 3. "a".

9] La commande sort peut ´galement servir a trier des expressions e ` alg´briques. sorted _list := [“a”. eq := a2 + b2 = c2 > lhs( eq ). 2. donne davantage d’information a e ` ` propos des commandes de cet exemple.1. 3. La commande lhs e s´lectionne le cˆt´ gauche d’une ´quation. e oe e > eq := a^2 + b^ 2 = c^2. > lhs( 2. aux intervalles et aux fractions.5 ). 5.. e La pr´sente section. a2 + b2 La commande rhs. 2 > rhs( 2. op(list2) ]. Les parties d’une expression Pour manipuler les d´tails d’une expression. 5 > eq := x = -2..182 • Chapitre 5: L’´valuation et la simplification e > sorted_list := [ op(list1). a la page 176.5 ). en s´lectionne le cˆt´ droit.infinity. . Trois cas simples pour illustrer cette situation font appel aux ´quations. Consultez la section 5.. de mani`re similaire. 1. c2 Les commandes lhs et rhs fonctionnent ´galement pour les intere valles. vous devez en choisir les e parties individuelles. e e oe > rhs( eq ). “d”. “c”. “b”.

1 + x ). y2 − 1 + x y x x + sin(x)3 x − y > denom( fract ).5.. e > numer( 2/3 ). x > rhs( eq ). 3 > fract := ( 1+sin(x)^3-y/x) / ( y^2 .. ∞ Les commandes numer et denom extraient respectivement le num´rae teur et le d´nominateur d’une fraction. 1 + sin(x)3 − fract := > numer( fract ).∞ > lhs( eq ).∞ > lhs( rhs(eq) ). −2. . −2 > rhs( rhs(eq) ). 2 > denom( 2/3 ).3 Manipulations structurelles • 183 eq := x = −2.

3 Par exemple. vous pouvez choisir le troisi`me terme de la mani`re e e suivante. + Utilisez la commande op pour lister les termes d’une somme ou. Utilisez la commande e ee nops pour compter le nombre d’op´randes d’une expression. sin(x). en g´n´ral. e > nops( expr ). expr). > term3 := op(3. term3 := 2 cos(x)2 sin(x) term3 est un produit de trois facteurs. 2 cos(x)2 sin(x) L’expression expr est form´e de trois ´l´ments. e > whattype( expr ). e e e > op( expr ). expr := 3 + sin(x) + 2 cos(x)2 sin(x) La commande whattype consid`re expr comme une somme.184 • Chapitre 5: L’´valuation et la simplification e x (y 2 − 1 + x) Consid´rez l’expression e > expr := 3 + sin(x) + 2*cos(x)^2*sin(x). . > whattype( term3 ). ∗ > nops( term3 ). 3. les op´randes d’une expression.

cos(x)2 . 2 Le premier op´rande est une fonction et ne contient qu’un seul e op´rande. e > op1 := op(1. factor2). e e > op( factor2 ). e > factor2 := op(2. function > op( op1 ). sin(x) Obtenez le second facteur de term3 de la mani`re suivante. factor2 := cos(x)2 C’est une exponentiation.5. op1 := cos(x) > whattype( op1 ). 2. > whattype( factor2 ).3 Manipulations structurelles • 185 3 > op( term3 ). term3). x x est un symbole. ^ factor2 poss`de deux op´randes. cos(x). .

f} ).b. soit lui-mˆme. d .186 • Chapitre 5: L’´valuation et la simplification e > whattype( op(op1) ). b. e e > nops( x ). e. ` + 3 * sin x sin x cos x ^ 2 2 Les op´randes d’une liste ou d’un ensemble sont ses ´l´ments.e.c] ). symbol Puisque vous n’avez pas assign´ une valeur a x. 1 > op( x ). x Vous pouvez repr´senter le r´sultat de la recherche des op´randes e e e d’une expression par un graphique appel´ arbre des expressions. f. il ne contient qu’un e ` seule op´rande. c > op( {d. e ee > op( [a. L’arbre e des expressions de expr ressemble a ceci. a.

sol := {{y = 0. 5+8*sin(x) . t^2 ).y} ) }. cos ). e e e > large := z -> evalb( is(z>3) = true ). x = 0}. La commande has d´termine si ` e une expression contient une sous-expression sp´cifique. true Quelques-unes des solutions du syst`me d’´quations suivant cone e ee ` tiennent des r´f´rences a RootOf. x^2 ). x^2-y^2 = a*x }. x = a}. on d´crit comment la commande map e e applique une fonction a tous les ´l´ments d’une liste ou d’un ensemble.3 de la e page 176 fonctionnent ´galement pour des expressions en g´n´ral. { b y= .exp(9) ). > {x. comme la fonction bool´e e enne dans un appel a select ou remove. ` ee La fonctionnalit´ de map s’´tend aux expressions en g´n´ral. e > has( x*exp(cos(t^2)). 8 sin(x) − e9 Maple poss`de plusieurs commandes utiles.3 Manipulations structurelles • 187 ` A la pr´sente section (page 174). f(x)f(2) Les commandes select et remove d´crites dans la section 5. > sol := { solve( { x^2*y^2 = b*y. {y = 0. true > has( x*exp(cos(t^2)). e e e e > map( f. 6 RootOf(_Z − b2 − a _Z 5 )2 x = RootOf(_Z 6 − b2 − a _Z 5 )}} . large := z → evalb(is(3 < z) = true) > remove( large.5.

` type. la commande select passe son troisi`me argument. expr := (3 + x) x2 sin(1 + > select( type. true Utilisez la combinaison select(hastype. e e > type( 3+x.. sol. > select( hastype.) pour choisir les op´e randes d’une expression qui contient un certain type. ‘+‘ ). > select( has. {{y = b . RootOf(_Z − b2 − a _Z 5 )2 6 x = RootOf(_Z 6 − b2 − a _Z 5 )}} Vous pouvez ´galement choisir ou retirer des sous-expressions par e type. ‘+‘ ). > hastype( sin( 1+sqrt(Pi) ). expr. RootOf ). a > expr := ( 3+x ) * x^2 * sin( 1+sqrt(Pi) ).188 • Chapitre 5: L’´valuation et la simplification e Utilisez select et has pour choisir ces solutions.. true Dans cet exemple. expr. ‘+‘ ). e . √ π) 3+x La commande hastype d´termine si une expression contient une souse expression d’un certain type. (3 + x) sin(1 + √ π) Si vous ˆtes int´ress´ aux sous-expressions d’un certain type plutˆt e e e o qu’aux op´randes qui les contiennent. La commande type d´termine si une expression est d’un type donn´. e ‘+‘. utilisez la commande indets. ‘+‘ )..

Puisqu’ils sont identiques. {RootOf(_Z 6 − b2 − a _Z 5 )} ` A l’instar de RootOf. specfunc(anything. y(t).3 Manipulations structurelles > indets( expr. • 189 {3 + x. diff) ). ee > indets( sol. t ) ) > + diff(x(t). e nom ). t). true Vous pouvez utiliser ceci pour trouver toutes les d´riv´es d’une e e ´quation diff´rentielle. toutes les commandes n’ont pas leur propre type . Ce type identifie les fonctions appel´es nom avec les arguments de e type type. diff) ). ‘+‘ ).5. 1 + √ π} Les deux RootOf contenus dans sol sont de type RootOf. specfunc(anything. vous pouvez cependant utiliser le type structur´ specfunc(type. z(t)} ∂t ∂t ∂t . x). { ∂ ∂ ∂ x(t). > type( diff(y(x). e e > DE := expand( diff( cos(y(t)+t)*sin(t*z(t)). l’ensemble retourn´ par indets contient seulement un e ´l´ment. RootOf ). d DE := −sin(t z(t)) sin(y(t)) cos(t) ( dt y(t)) − sin(t z(t)) sin(y(t)) cos(t) − sin(t z(t)) cos(y(t)) sin(t) + cos(t z(t)) cos(y(t)) cos(t) z(t) − cos(t z(t)) sin(y(t)) sin(t) z(t) d − sin(t z(t)) cos(y(t)) sin(t) ( dt y(t)) d + cos(t z(t)) cos(y(t)) cos(t) t ( dt z(t)) d d − cos(t z(t)) sin(y(t)) sin(t) t ( dt z(t)) + ( dt x(t)) > indets( DE.

> eval( yprime. d’´valuer une expression en un point). specfunc(anything. Consultez la rubrique ?type pour en ıt obtenir une liste partielle. yprime := cos(x ecos(x) ) (ecos(x) − x sin(x) ecos(x) ) sin(x ecos(x) ) Utilisez maintenant la commande eval pour substituer une valeur a ` x dans yprime. Par exemple. . diff) ). y := ln(sin(x ecos(x) )) > yprime := diff( y. x=2 ). d −sin(t z(t)) sin(y(t)) cos(t) ( dt y(t)) d − sin(t z(t)) cos(y(t)) sin(t) ( dt y(t)) d + cos(t z(t)) cos(y(t)) cos(t) t ( dt z(t)) d d − cos(t z(t)) sin(y(t)) sin(t) t ( dt z(t)) + ( dt x(t)) DE ne poss`de qu’un seul op´rande qui est lui-mˆme une d´riv´e. e e e e e > select( type. DE. d x(t) dt Maple reconnaˆ plusieurs types. specfunc(anything. pour e r´soudre le probl`me Si f (x) = ln(sin(xecos(x) )). DE. e La substitution Il est souvent n´cessaire de substituer une valeur a une variable (en e ` d’autres termes. diff) ). e e e > select( hastype. de mˆme que ?type. e e > y := ln( sin( x * exp(cos(x)) ) ). vous e e devez substituer la valeur 2 a x dans la d´riv´e. trouvez f (2) .structured pour obtenir e davantage d’information sur les types structur´s comme specfunc.190 • Chapitre 5: L’´valuation et la simplification e Les op´randes suivants de DE contiennent les d´riv´es. La commande diff calcule ` e e la d´riv´e. x ).

b. expr ).5. > subs( cos(x)=3. expr ). ab Le produit a*b n’est donc pas un facteur dans expr. Vous pouvez effectuer la substitution a*b=3 de trois mani`res : r´soudre la sous-expression e e pour une des variables : > subs( a=3/b. a.1388047428 La commande effectue des substitutions syntaxiques. a b c ab expr est un produit de quatre facteurs. . c. yprime ).3 Manipulations structurelles • 191 cos(2 ecos(2) ) (ecos(2) − 2 sin(2) ecos(2) ) sin(2 ecos(2) ) La commande evalf retourne une approximation d´cimale du r´sule e tat. cela signifie que vous pouvez effectuer des substitutions pour n’importe quelle sous-expression. expr := a b c ab > subs( a*b=3. cos(x e3 ) (e3 − x sin(x) e3 ) sin(x e3 ) Vous ˆtes cependant limit´ aux sous-expressions telles que Maple les e e reconnaˆ ıt. −0. et non math´e matiques . > evalf( % ). > op( expr ). > expr := a * b * c * a^b.

z=3 }. expr ). ` > expr := z * sin( x^2 ) + w. tandis que. w=Pi. x=sqrt(z).192 • Chapitre 5: L’´valuation et la simplification e 3 3 c ( )b b utiliser une relation accessoire dans simplify : > simplify( expr. dans le premier cas. la commande subs effectue ces substitutions simultan´ment. expr := z sin(x2 ) + w > subs( x=sqrt(z). 3 sin(π) + w . e > subs( { x=sqrt(Pi). 3 c ab Remarquez que. ` > subs( z=x. expr ). z sin(z) + π La commande subs effectue les substitutions de gauche a droite. √ z sin(z) + w Si vous donnez un ensemble ou une liste de substitutions. 3 c ab ou encore utiliser la commande algsubs qui effectue des substitutions alg´briques. e Vous pouvez effectuer plusieurs substitutions a la fois par un seul ` appel a subs. e > algsubs( a*b=3. expr ). toutes les occurrences de a ont ´t´ remplac´es par 3/b. { a*b=3 } ). dans le deuxi`me et le troisi`me cas. ee e e e les variables a et b demeurent dans le r´sultat. expr).

5. x > subsop( 1=t.5.3 Manipulations structurelles • 193 Remarquez que. . tx L’op´rande d’ordre z´ro est g´n´ralement le nom de la fonction. expr ). en g´n´ral. e e > f := sin(x). Consid´rez la s´rie de Taylor de sin(x). expr := 5x > op( expr ). sin(x) La pr´sente section. expr := cos(x) > subsop( 0=sin. e e e e > expr := cos(x). a la page 182. > expr := 5^x. w Utilisez la commande subsop pour remplacer un op´rande sp´cifique e e dans une expression. expr ). vous devez ´valuer explicitement le e e e r´sultat d’un appel a subs. e ` > eval( % ). e Changer le type d’une expression Vous pouvez trouver n´cessaire de convertir une expression dans un autre e type. donne plus de d´tails sur les e ` e op´randes d’une expression.

. t := x − 1 5 1 3 x + x + O(x6 ) 6 120 Puisque vous ne pouvez tracer le graphique d’une s´rie.5 1 0.194 • Chapitre 5: L’´valuation et la simplification e f := sin(x) > t := taylor( f. le titre d’un graphique doit ˆtre une chaˆ e e ıne.4. > p_txt ). > " and its Taylor approximation ". p_txt := “x-1/6*x^3+1/120*x^ 5” > plot( p. string ). p := x − 1 5 1 3 x + x 6 120 De mani`re similaire. polynom) pour la convertir d’abord en approximation polynomiale. x=0 ). . x–1/6*x^3+1/120*x^5 1.5 –4 –3 –2 –1 0 –0.. string ). vous devez e utiliser convert(. et non une expression g´n´rale..5 –1 –1... > p := convert( t.5 1 2 x 3 4 La commande cat concat`ne tous ses arguments pour cr´er une noue e velle chaˆ ine. > ttl := cat( convert( f. string) e e pour convertir une expression en chaˆ ıne. Vous pouvez utiliser convert(.. title=p_txt ). polynom ). > p_txt := convert( p. x=-4..

sin(x)anditsTaylorapproximationx–1/6*x^3+1/120*x^5 1. x=-4. list ). [1.5 –4 –3 –2 –1 0 –0. set ).5 1 0. 5. > L := [1. ` .2. Consultez la rubrique ?convert pour obe tenir davantage d’information a ce sujet.5 –1 –1. 2.4. 5} > convert( S. 1] > S := convert( L.1].2.5. p].3 Manipulations structurelles • 195 ttl := “sin(x) and its Taylor approximation x-1/6*\ x^3+1/120*x^5” > plot( [f. 2. L := [1. 2.. 2. title=ttl ).5.5 1 2 x 3 4 Vous pouvez ´galement convertir une liste en ensemble ou un ensemble e en liste. S := {1. 5] La commande convert peut effectuer plusieurs autres conversions structurelles et math´matiques.

Lorsque vous appelez eval avec un seul argument. la e question de l’´valuation occupe une place importante. 5 Vous pouvez utiliser la commande eval pour contrˆler le niveau d’´o e valuation d’une expression. et ainsi de suite de e mani`re r´cursive jusqu’` ce qu’aucune substitution ne soit possible. Maple effectue une autre substitution. 5 . eval ´value int´gralement son argument. e e > eval(x). Maple reme e e e place le nom par la valeur trouv´e. Si cette valeur poss`de elle-mˆme une e e e valeur assign´e. Le cas ´ch´ant. Lorsque vous ase signez la valeur y ` x. le logiciel v´rifie si ce nom e ou ce symbole poss`de une valeur assign´e.196 • Chapitre 5: L’´valuation et la simplification e 5. comment x doit-il a a ` ˆtre ´valu´ ? e e e Niveaux d’´valuation e Dans la plupart des cas. x := y > y := z. z := 5 Maple ´value maintenant x int´gralement : il remplace x par y. la valeur z ` y et la valeur 5 a z. > x. y par e e z et finalement z par 5.4 Les r`gles d’´valuation e e Dans un programme de math´matiques symboliques comme Maple. e e a > x := y. y := z > z := 5. Maple effectue une ´valuation compl`te des noms : e e lorsque vous utilisez un nom ou un symbole.

4 Les r`gles d’´valuation e e • 197 Un deuxi`me argument a eval sp´cifie jusqu’o` vous souhaitez ´valuer e ` e u e le premier argument. x := y > y := z. 3). [3. z. l’un des quatre e types sp´ciaux de structures. e e ee > x := y.4] ] ). table. e . 5 Les principales exceptions a la r`gle de l’´valuation compl`te sont ` e e e les structures de donn´es sp´ciales comme les tableaux. y := z > z := array( [ [1. e e ´ Evaluation du dernier nom Les structures de donn´es array.2]. y > eval(x. z := 1 2 3 4 Maple remplace x par y et y par z. z > eval(x. mais arrˆte a ce point puisque e ` l’´valuation du dernier nom. > eval(x.5. matrix et proc poss`dent un e e comportement d’´valuation sp´cial appel´ ´valuation du dernier nom. 1). de mˆme que le comportement des variables locales a e e ` l’int´rieur d’une proc´dure. les matrices et e e les proc´dures. produirait un tableau. 2).

y) x + y end proc > add2. . add2 Vous pouvez facilement forcer une ´valuation compl`te en utilisant e e eval ou print. > eval(add2). add2 := proc(x. e les matrices et les proc´dures pour conserver la repr´sentation compacte e e des entr´es de tableaux non assign´es (par exemple T[3]) et les come e mandes non ´valu´es (par exemple sin(x)). end proc. > erfi. . supprime le code de cette proc´dure. proc(x. e e > eval(x). end proc . Vous pouvez forcer une e e ´valuation compl`te en appelant explicitement la commande eval. y) x + y end proc Remarquez qu’une ´valuation compl`te des proc´dures contenues dans e e e la biblioth`que de Maple. 1 2 3 4 > add2 := proc(x. examinez la commande erfi. erfi > eval(erfi). proc(x : :algebraic) . z Maple utilise l’´valuation du dernier nom pour les tableaux. par d´faut.y) x+y. e e e Pour illustrer cette situation.198 • Chapitre 5: L’´valuation et la simplification e > x. les tables.

‘ ∗ ‘) and member(I. ’∞’) then ∞ + ∞ ∗ I else CopySign(I. {op(x)}) then I ∗ erf(−I ∗ x) elif type(x. e . ` > interface( verboseproc=2 ). ’∞’) then if type(x. nargs elif type(x. if nargs = 1 then error “expecting 1 argument. ’complex(numeric)’) and csgn(x) < 0 then − erfi(−x) eliftype(x. (x)) end if elif type(x.5. et essayez a nouveau. ’extended _numeric’) then x elif type( (x). ‘ + ‘) and traperror(sign(x)) = −1 then − erfi(−x) else ’erfi ’(x) end if end proc La valeur par d´faut de verboseproc est 1. ’extended _numeric’) then undefined elif type(x. ’imaginary ’) then undefined ∗ I else undefined + undefined ∗ I end if elif type(x. ’complex(numeric)’) and csgn(op(1. cx _infinity }’) then undefined + undefined ∗ I elif type(x. got %1”. ’complex(float )’) then evalf(’erfi ’(x)) elif x = 0 then 0 elif type(x.\ All rights reserved .4 Les r`gles d’´valuation e e • 199 Assignez a la variable verboseproc de la commande interface la ` valeur 2. ‘ ∗ ‘) and type(op(1. > eval(erfi). x). x)) < 0then − erfi(−x) elif type(x.‘. ’{undefined . proc(x : :algebraic) option‘Copyright (c) 1996 Waterloo Maple Inc. ’undefined ’) then if type(x.

L’´valuation compl`te a l’int´rieur d’une proc´dure est raree e ` e e ment n´cessaire et peut mener a une proc´dure inefficace. y := z > evaln(x). y Comparez cette ´valuation a l’exemple similaire pr´sent´ ` la e ` e e a page 196. La rubrique d’aide ?interface explique les valeurs permises de verboseproc et des autres variables d’interface. utie e e a e e lisez eval. z. y. x .200 • Chapitre 5: L’´valuation et la simplification e > interface( verboseproc=1 ). le r´sultat de l’´valuation est e e la valeur la plus r´cemment assign´e directement a cette variable. ´ Evaluation ` un niveau a Les variables locales d’une proc´dure sont appliqu´es a l’´valuation a un e e ` e ` niveau : si vous assignez une variable locale. > x. e e ` > test:=proc() > local x. Lorsque vous e ` e d´sirez obtenir de l’´valuation compl`te ` l’int´rieur d’une proc´dure. > end proc: > test(). x := y > y := z. > y := z. Commandes avec des r`gles sp´ciales d’´valuation e e e Les commandes assigned et evaln Les fonctions assigned et evaln ´valuent leurs arguments seulement au point o` les arguments deviennent e u des noms pour la premi`re fois. > z := 5. > x := y. e > x := y.

de mani`re que si une valeur a ´t´ assign´e ` e e ee e a une variable. 25 > i..4 Les r`gles d’´valuation e e • 201 La commande assigned v´rifie si une valeur a ´t´ assign´e a un nom. 1. .5. i=1. Entourer un nom de guillemets simples (’) empˆche e Maple d’´valuer celui-ci. i := 4 > i.. 2 Comparez ceci au comportement de sum. > sum( i^2. 16.. i := 2 > seq( i^2. 9. i=1. e > i := 4. la commande seq e n’´value pas ses arguments. Empecher l’´valuation d’une expression e Le langage Maple supporte l’utilisation des guillemets pour retarder l’´vae luation d’un niveau. second argument evaluates to 2 = 1 . true La commande seq Pour cr´er des suites d’expressions. (in sum) summation variable previously assigned.5 ). elle peut toujours l’utiliser comme une variable d’indice. Error. 4.5 ). e ee e ` > assigned( x ). > i := 2. 5 Vous pouvez facilement r´soudre ce probl`me en utilisant les guillee e mets simples.

i Utilisez cette m´thode pour ´viter le probl`me suivant. e e e > i.5 ). > x := 0. 55 > i. ’i’=1.202 • Chapitre 5: L’´valuation et la simplification e 4 > ’i’. 4 > sum( i^2. 4 L’´valuation compl`te d’une expression entour´e de guillemets supe e e prime un niveau de ces guillemets.. 5 > sum( ’i^2’. ’x’ + 1 > %.5 ).. (in sum) summation variable previously assigned. i=1. Error. x := 0 > ’’’x’+1’’. second argument evaluates to 4 = 1 . . ’’x’ + 1’ > %..

1 > x := ’x’. en g´n´ral. vous devez utiliser evaln. e e > i := 4. 4q − i Lorsque vous entourez une simple variable de guillemets simples. le r´sultat retourn´ est le nom de la variable. e e > ’1-1’. mais n’eme pˆche pas les simplifications automatiques ni les calculs arithm´tiques. x := 1 > x. 1 Entourer une expression de guillemets retarde l’´valuation. Vous pouvez employer cette e e m´thode pour d´saffecter une variable. 0 > ’p+q-i-p+3*q’.5. x Cependant. e e > x := 1. . x := x > x.4 Les r`gles d’´valuation e e • 203 x+1 > %.

’q’ ).204 • Chapitre 5: L’´valuation et la simplification e i := 4 > a[i] := 9. a4 > a[i] := evaln( a[i] ). e > evaln( a[i] ). > ’a[i]’. ai Vous devez utilser evaln pour d´saffecter a[i]. Vous pouvez e a e ´viter d’utiliser les guillemets si vous vous assurez que le nom utilis´ n’a e e pas de valeur assign´e. > divide( x^2-1. a4 := 9 Remarquez que ’a[i]’ est a[i] et non a[4]. a4 := a4 Utiliser les variables entour´es de guillemets comme arguments e de fonctions Quelques commandes Maple se servent de noms comme moyen de retourner de l’information en plus de la valeur retourn´e de mani`re standard. x-1. true > q. e e La commande divide assigne le quotient au nom global q. x+1 Rappelez-vous d’utiliser un nom entour´ de guillemets afin de vous e assurer de ne pas passer de variable allou´e ` la proc´dure. e .

. wrong number (or type) of parameters in function divide > q := evaln(q). irem et iquo se comportent de mani`re simie laire. Error. true > q. entraˆ l’´value e ıne e ation du cˆt´ droit de l’op´rateur. x-y. x+y Les commandes rem. e > a||b. || . q ). mais pas celui du cˆt´ gauche.5. a := x > b := 2. oe e oe > a := x. Concat´nation de noms e La concat´nation est une mani`re de former de nouveaux noms de vae e riables bas´s sur d’autres noms. • 205 q := 2 > divide( x^2-y^2. dans un nom. q ). ab L’op´rateur de concat´nation. quo. x-y.4 Les r`gles d’´valuation e e > q := 2. q := q > divide( x^2-y^2.

206 • Chapitre 5: L’´valuation et la simplification e b := 2 > a||b. b := y + 1 > new_name := a||b. a2 > c := 3. a4 Vous pouvez vous servir des noms concat´n´s pour assigner et cr´er e e e des expressions. . y := 3 > new_name. c := 3 > a||b||c. a23 Si un nom issu d’une concat´nation ne forme pas un seul symbole. e e > a := x. new _name := a||(y + 1) > y := 3. a := x > b := y+1. e Maple n’´value pas la concat´nation.

vous avez vu comment effectuer plusieurs types de manipulations sur des expressions. 5.5. Cependant. les guillemets simples sont n´cessaires.5 Conclusion > i := 1. e e e . b1 := 0 Ici. les commandes e e e que vous avez vues ici vous permettent de transformer une expression sous plusieurs formes. k=0. ou encore des hypoth`ses pour sp´cifier e e e des propri´t´s des inconnues. e > sum( ’a||k’ * x^k.8 ). Si tel n’est pas le cas. Maple effectue e l’´valuation compl`te des variables.5 Conclusion Dans ce chapitre. l’´valuation a un seul niveau des variables locales d’une e e ` proc´dure ainsi que l’´valuation retard´e au moyen des guillemets simples. • 207 i := 1 > b||i := 0.. ee Vous avez ´galement vu que. k=0. comme l’´valuation du dernier nom pour certaines grandes struce tures de donn´es.8 ). Il existe cependant quelques excepe e tions.. dans la plupart des cas. vous pouvez utiliser les relations accessoires pour sp´cifier vos e propres r`gles de simplification. depuis l’addition de deux ´quations a la e ` s´lection de parties d’une expression g´n´rale. souvent celles que vous jugez les plus simples. e a > sum( a||k * x^k. Maple ´value a||k ` ak. ak + ak x + ak x2 + ak x3 + ak x4 + ak x5 + ak x6 + ak x7 + ak x8 Vous pouvez ´galement utiliser la concat´nation pour former des titres e e de graphiques. a0 + a1 x + a2 x2 + a3 x3 + a4 x4 + a5 x5 + a6 x6 + a7 x7 + a8 x8 Lorsque vous omettez les guillemets simples.

208 • Chapitre 5: L’´valuation et la simplification e .

La ` e ` e e e premi`re section d´crit les concepts ´l´mentaires de la d´riv´e et de l’ine e ee e e t´grale . e e e e la troisi`me section porte sur les ´quations aux d´riv´es partielles. e La d´riv´e e e La prsente section illustre la signification graphique de la d´riv´e en tant e e que pente de la droite tangente.1 Calcul diff´rentiel ´l´mentaire e ee Vous verrez ici plusieurs exemples montrant la mani`re d’illustrer des e id´es et de r´soudre des probl`mes de calcul diff´rentiel.6 Exemples tir´s du calcul e diff´rentiel e Le pr´sent chapitre illustre par quelques exemples la mani`re dont Maple e e vous aide a pr´senter et a r´soudre des probl`mes de calcul diff´rentiel. f := x → esin(x) Trouvez la d´riv´e de f ´valu´e en x0 = 1. enfin. e e e e 6. la deuxi`me traite des ´quations diff´rentielles ordinaires . Le package e e e e Student[Calculus1] contient plusieurs commandes qui s’av`rent pare ticuli`rement utiles dans ce domaine. puis montre comment d´terminer l’ene semble des points d’inflexion d’une fonction. 209 . e e > f := x -> exp( sin(x) ). e e e e > x0 := 1. D´finissez la fonction f : x → exp(sin(x)) de la mani`re suivante.

esin(2) − esin(1) La commande evalf nous donne une approximation d´cimale de ce e r´sultat. les valeurs de la pente de la s´cante semblent e e converger.0/i^2 ). h=h). m := − esin(1) − esin(1+h) h Si h = 1. . x=1. e > with(Student[Calculus1]): Utilisez NewtonQuotient pour trouver une expression pour la pente. esin(1+h) ] La commande NewtonQuotient du package Student calcule la pente de la s´cante passant par p0 et p1 . > h_values := seq( NewtonQuotient( f(x). p0 := [1.0. > m := NewtonQuotient(f(x). e > p0 := [ x0. h=1. x=x0.162800903 Lorsque h tend vers z´ro. esin(1) ] > p1 := [ x0+h. f(x0) ]. > i=1. la pente est donn´e par e > eval( m. 0.210 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e x0 := 1 p0 et p1 sont deux points situ´s sur le graphique de f . e > evalf( % )..20). p1 := [1 + h. f(x0+h) ]. h=1 ).

1. 1.053234748. 1. x ). 1. x=0.243256512. 1. 1.248921648.4. secant(x)].6. 1. 1.250534250. > isolate( %. y= (esin(1+h) − esin(1) ) (x − 1) + esin(1) h Vous devez faire de cette ´quation une fonction. 1.250111128.4] ).251609743..249585493.. y − esin(1) = (esin(1+h) − esin(1) ) (x − 1) h La commande isolate r´crit l’´quation sous la forme pente-ordonn´e e e e a ` l’origine.251167122. 1. e e > y . Tout d’abord.250880512.210917616. 1.226806975. 1.251782800 Voici l’´quation de la pente de la s´cante. > h=h_values ): La commande display du package plots peut afficher les graphiques de la suite sous forme d’animation. 1.251406908. > view=[0. 1. 0. 1.235154852.1628009030.248066842. y ). > with(plots): Warning. e > secant := unapply( rhs(%). 1. 1. the name changecoords has been redefined . secant := x → (esin(1+h) − esin(1) ) (x − 1) + esin(1) h Vous pouvez maintenant tracer la s´cante et la fonction elle-mˆme e e sur le mˆme graphique pour diff´rentes valeurs de h.4. vous e e devez cr´er une suite de graphiques.p0[2] = m * ( x .245408615.1 Calcul diff´rentiel ´l´mentaire e ee • 211 h_values := 0.p0[1] ).. 1.174305789.246939100.240091510. e > S := seq( plot( [f(x). 1.

L’op´rateur D calcule la d´riv´e e e e d’une fonction.4. h=0 ). Pour vous assurer e de ceci. esin(1) cos(1) .D.212 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > display( S.. d´finissez d’abord la fonction f 1 comme ´tant la d´riv´e premi`re e e e e e de f . esin(1+h) − esin(1) h→0 h lim La valeur de cette limite est > value( % ). esin(1) cos(1) Bien entendu. consultez la rubrique ?operators. utilisez D. vous pouvez voir que f 1(x0 ) est ´gale a la limite cie ` dessus. alors que diff calcule la d´riv´e d’une expression.4] ). > f1 := D(f). Pour e e en savoir plus. Puisque f est une fonction. x x x x x x x x x x x x x x x x x x x x Dans la limite lorsque h tend vers z´ro. cette r´ponse est la valeur de f (x0 ). view=[0. insequence=true. la pente est donn´e par e e > Limit( m.. > f1(x0). 0. f1 := x → cos(x) esin(x) Maintenant.

d´finissez la fonction f 2 comme la d´riv´e seconde e e e de f . ces changements de signe peuvent survenir aux valeurs de x telles que f 2(x) s’annule. −sin(x) esin(x) + cos(x)2 esin(x) Encore une fois. x. x=0.10 ). 2 1 0 –1 –2 2 4 6 8 10 x Le graphique de f poss`de un point d’inflexion l` o` la d´riv´e seconde e a u e e change de signe . la d´riv´e seconde existe. > f2 := unapply( %..1 Calcul diff´rentiel ´l´mentaire e ee • 213 Dans le cas pr´sent. f2 := x → −sin(x) esin(x) + cos(x)2 esin(x) Lorsque vous tracez le graphique de f de mˆme que ses d´riv´es e e e premi`re et seconde. et que la concavit´ de f est tourn´e vers le bas lorsque f 2 e e est n´gative. x ). x ). f1(x). e e e > diff( f(x). > sol := { solve( f2(x)=0. . x ) }. vous pouvez remarquer que f augmente lorsque f 1 e est positive. f2(x)].6. e > plot( [f(x).

475353222. x=infl ) }. .214 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e  sol :=  arctan 2   1 1√ 5−  2 2  √  . −arctan 2 −2 + 2 5   1 1√   5− 2 2 +π √    −2 + 2 5 {0. arctan(− − 2 2 2 √ 1 1√ 1 5. −arctan 2 −2 + 2 5  1 1√ 5− 2 2  √  + π.   1 1√ 5−  2 2  √  . vous pouvez remarquer que f 2 e e e change en effet de signe en ces valeurs de x.061275064 I. 2. {0. Vous poue ee vez utiliser la commande select pour choisir les constantes r´elles dans e l’ensemble solution. −2 − 2 5) arctan(− − 2 2 2 Deux de ces solutions sont complexes. −1. f(x)]. 2.061275064 I.6662394325.570796327 − 1.570796327 + 1.475353222} Du graphique trac´ pr´c´demment. −2 + 2 5 √ 1 1 1√ 5. L’ensemble des points d’inflexion devient donc > { seq( [x. > infl := select( type. seules les solutions r´elles sont d’int´rˆt. > evalf( sol ). realcons ).      infl := arctan 2   > evalf( infl ). } Dans cet exemple. −1. − −2 − 2 5). sol.6662394321.

e > f := x -> exp( sin(x) ).         2 1 1√  √ √ 5− −2+2 5 2 2  + π. elle poss`de une infinit´ de points e e e d’inflexion.475353222. f(a) + D(f )(a) (x − a) + 1 1 (2) (D )(f )(a) (x − a)2 + (D(3) )(f )(a) 2 6 1 1 (x − a)3 + (D(4) )(f )(a) (x − a)4 + (D(5) )(f )(a) (x − a)5 + 24 120 O((x − a)6 ) Vous pouvez utiliser cette formule pour calculer une approximation polynomiale d’une fonction f pr`s de x = a.855276958]. 1. 1. [0. Voici la formule de Taylor. e √ −2 + 2 5   √  (1/2 5−1/2)2 √ 1+4 −2+2 5 √ 1/2 5−1/2     . f := x → esin(x) > a := Pi. e  √ −2 + 2 5 √ 1/2 5−1/2 √  (1/2 5−1/2)2 √ 1+4 −2+2 5      > evalf( % ).6662394325.855276958]} Puisque la fonction f est p´riodique. Vous pouvez les obtenir tous en d´pla¸ant horizontalement les e c deux points d’inflexion ci-dessus par des multiples entiers de 2π. . Une approximation de Taylor Voyons maintenant comment utiliser Maple pour analyser le terme d’erreur d’une approximation par s´rie de Taylor.6. {[2.1 Calcul diff´rentiel ´l´mentaire e ee • 215       arctan 2         −arctan 2      2 1 1√  √ √ 5− −2+2 5  2 2 . x=a ). e > taylor( f(x).

polynom ).5 1 0.. La d´riv´e sixi`me de f u e e e est > diff( f(x).5 0 2 4 6 8 10 x L’expression (1/6!)f (6) (ξ)(x − a)6 nous donne l’erreur de l’approximation. 0.3] ).5 2 1. 1 − (x − π) + O((x − π)6 ) 1 1 1 (x − π)2 − (x − π)4 + (x − π)5 + 2 8 15 Avant de tracer le graphique de l’approximation de Taylor. x=0.10. e o > poly := convert( %. vous devez convertir cette s´rie en un polynˆme. poly]...216 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e a := π > taylor( f(x).10. x=a ). > plot( [f(x). x$6 ). poly := 1 − x + π + 1 1 1 (x − π)2 − (x − π)4 + (x − π)5 2 8 15 Tracez maintenant le graphique de f avec celui de poly. 3 2. o` ξ est un nombre compris entre x et a. −sin(x) esin(x) + 16 cos(x)2 esin(x) − 15 sin(x)2 esin(x) + 75 sin(x) cos(x)2 esin(x) − 20 cos(x)4 esin(x) − 15 sin(x)3 esin(x) + 45 sin(x)2 cos(x)2 esin(x) − 15 sin(x) cos(x)4 esin(x) + cos(x)6 esin(x) . view=[0.

. err := 1 (−sin(ξ) esin(ξ) + 16 cos(ξ)2 esin(ξ) 720 − 15 sin(ξ)2 esin(ξ) + 75 sin(ξ) cos(ξ)2 esin(ξ) − 20 cos(ξ)4 esin(ξ) − 15 sin(ξ)3 esin(ξ) + 45 sin(ξ)2 cos(ξ)2 esin(ξ) − 15 sin(ξ) cos(ξ)4 esin(ξ) + cos(ξ)6 esin(ξ) )(x − π)6 Le graphique pr´c´dent indique que l’erreur (en valeur absolue) est e e faible pour x compris entre 2 et 4. axes=boxed ). f6 := x → −sin(x) esin(x) + 16 cos(x)2 esin(x) − 15 sin(x)2 esin(x) + 75 sin(x) cos(x)2 esin(x) − 20 cos(x)4 esin(x) − 15 sin(x)3 esin(x) + 45 sin(x)2 cos(x)2 esin(x) − 15 sin(x) cos(x)4 esin(x) + cos(x)6 esin(x) Vous pouvez maintenant calculer l’erreur de l’approximation. > style=patch.6.16 0 2 xi 4 4 x 2 . vous dee vriez entrer .1 Calcul diff´rentiel ´l´mentaire e ee • 217 L’usage de l’op´rateur s´quentiel $ dans la commande pr´c´dente vous e e e e permet de raccourcir l’appel de la fonction. > plot3d( abs( err ). Sans cet op´rateur.. x six fois pour calculer la d´riv´e d’ordre 6. 0. x=2. x ). xi=2.a)^6. > err := 1/6! * f6(xi) * (x .4. e e e > f6 := unapply( %. D´finissez la e e e fonction f 6 comme ´tant cette d´riv´e.4.

2] ] ). xi).5 xi 3 2.a].4]. the name changecoords has been redefined Warning.a].5 3 x 3. [4. [2. vous devez effectuer une analyse e compl`te de l’expression err dans les deux r´gions ferm´es par x = 2. xi] ). e > with(plots): with(plottools): Warning. err _x := 1 (−sin(ξ) esin(ξ) + 16 cos(ξ)2 esin(ξ) 120 − 15 sin(ξ)2 esin(ξ) + 75 sin(ξ) cos(ξ)2 esin(ξ) − 20 cos(ξ)4 esin(ξ) − 15 sin(ξ)3 esin(ξ) + 45 sin(ξ)2 cos(ξ)2 esin(ξ) − 15 sin(ξ) cos(ξ)4 esin(ξ) + cos(ξ)6 esin(ξ) )(x − π)5 > err_xi := diff(err. x). Les d´riv´es partielles de err sont e e > err_x := diff(err. e e e x = 4.218 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Pour d´terminer l’erreur exacte. [2. Vous devez alors ´tudier e a e e e err aux bords du domaine. > labels=[x.5 2 2 2. [4. 4 3. La commande curve du package plottools permet d’illustrer ces deux r´gions.5 4 Les d´riv´es partielles de err vous permettent de d´terminer les exe e e tr´mums de err ` l’int´rieur de ces deux r´gions. . ξ = a et ξ = x (soit pour x compris entre 2 et 4 et pour ξ compris entre a et x). the name arrow has been redefined > display( curve( [ [2.2].

xi ) }. 0 Vous devez maintenant regrouper un ensemble de valeurs critiques. {x. e > eval( err. e e > sol := solve( {err_x=0. xi} ). e > sol := { solve( err_xi=0. err_xi=0}. .6. sol ). La plus grande valeur critique borne l’erreur maximale. > critical := { % }. critical := {0} La d´riv´e partielle err_xi est nulle en un point critique situ´ sur e e e l’une des deux fronti`res x = 2 ou x = 4.1 Calcul diff´rentiel ´l´mentaire e ee • 219 err _xi := 1 (−cos(ξ) esin(ξ) − 63 sin(ξ) cos(ξ) esin(ξ) 720 + 91 cos(ξ)3 esin(ξ) − 210 sin(ξ)2 cos(ξ) esin(ξ) + 245 sin(ξ) cos(ξ)3 esin(ξ) − 35 cos(ξ)5 esin(ξ) − 105 sin(ξ)3 cos(ξ) esin(ξ) + 105 sin(ξ)2 cos(ξ)3 esin(ξ) − 21 sin(ξ) cos(ξ)5 esin(ξ) + cos(ξ)7 esin(ξ) )(x − π)6 Les deux d´riv´es partielles sont nulles au point critique. sol := {x = π. ξ = ξ} L’erreur est ´galement nulle en ce point.

RootOf(_Z 2 + RootOf(%1. arctan( RootOf(%1.767486929 I.2 2.6 3.220 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 1 sol := { π.8535664710 I.2 3. arctan(RootOf(%1.473801030 I. 1.570796327 + 0. index = 5). index = 2). RootOf(_Z 2 + RootOf(%1. 2 RootOf(_Z 2 + RootOf(%1.570796327 + 3. 0. arctan( RootOf(%1.083849212 I} Il est recommand´ de v´rifier l’ensemble solution en tra¸ant le grae e c phique de la solution.6948635283.4 ). index = 1).3257026605. index = 3). index = 2)2 − 1)). RootOf(_Z 2 + RootOf(%1.2 0 –0. −1. index = 1)2 − 1)). x=2). index = 6). index = 6)2 − 1)). 0. arctan( RootOf(%1.6 0. {−1.570796327 + 2. −1. index = 3)2 − 1))} %1 := −56 − 161 _Z + 129 _Z 2 + 308 _Z 3 + 137 _Z 4 + 21 _Z 5 + _Z 6 > evalf(sol)..4 2. arctan( RootOf(%1.2 2. RootOf(_Z 2 + RootOf(%1. index = 4)2 − 1)). xi=2.570796327. > plot( eval(err_xi.6 2. −1. −0.8 4 xi . arctan( RootOf(%1. index = 4). index = 5)2 − 1)).8 3 3.4 0.4 3.570796327 + 1. RootOf(_Z 2 + RootOf(%1.

. 2. 0. l’erreur est e > B := eval( err.a ).. Si x = 2. .6. xi=sol}). l’erreur est > eval( err.07333000221 (2 − π)6 Ajoutez maintenant cette valeur a l’ensemble des valeurs critiques. a. {x=4. alors ξ doit ˆtre situ´ entre a et 4. {x=2. sol := 3.01542298119 (4 − π)6 } ` A la fronti`re ξ = a.467295314 En ce point.4 ). −0. xi=sol} ).1 Calcul diff´rentiel ´l´mentaire e ee • 221 Deux solutions de err_xi=0 semblent exister entre 2 et 4 l` o` solve a u n’en a trouv´ aucune : π/2 est inf´rieur a 2.07333000221 (2 − π)6 . 0. 0.07333000221 (2 − π)6 } Si x = 4.446729125 En ce point. critical := {0. −0. xi=a ). l’erreur est > eval( err. alors ξ doit ˆtre situ´ dans l’intervalle e e e e situ´ entre 2 et a. x=2). Vous devez donc utiliser des e e ` m´thodes num´riques. sol := 2. ` > critical := critical union {%}. e > sol := fsolve( eval(err_xi. e e > sol := fsolve( eval(err_xi. xi. xi. x=4). critical := {0.01542298119 (4 − π)6 > critical := critical union {%}.

ξ = x.222 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e B := − 1 (x − π)6 240 La d´riv´e B1 de B est nulle en un point critique.07333000221 (2 − π)6 . xi=x ). e e > B1 := diff( B. x=sol[1] ). vous devez trouver le point o` la d´riv´e s’annule. . critical := {0. x ). B1 := − 1 (x − π)5 40 > sol := { solve( B1=0. B := 1 (−sin(x) esin(x) + 16 cos(x)2 esin(x) − 15 sin(x)2 esin(x) 720 + 75 sin(x) cos(x)2 esin(x) − 20 cos(x)4 esin(x) − 15 sin(x)3 esin(x) + 45 sin(x)2 cos(x)2 esin(x) − 15 sin(x) cos(x)4 esin(x) + cos(x)6 esin(x) )(x − π)6 Encore une fois. 0. l’erreur est > eval( B. x ). u e e > B1 := diff( B. sol := {π} En ce point critique. x ) }. l’erreur est e e > B := eval( err. −0.01542298119 (4 − π)6 } ` A la derni`re fronti`re. 0 > critical := critical union { % }.

.1 et 2. e e > fsolve( B1=0.3.6 0. x=2.2 0 2.3 ). 1 ( 120 sol := {π} Il est bon de v´rifier la solution en tra¸ant le graphique. e c > plot( B1.4 0.180293062 Ajoutez cette solution num´rique a l’ensemble des solutions symboe ` liques.8 3 3.8 4 x Le graphique de B1 indique qu’une solution existe entre 2.2 2. Puisque solve ne peut trouver cette solution..6 2.4 3..6.6 3. 2.1.8 0.4 ). x ) }. 0.2.1 Calcul diff´rentiel ´l´mentaire e ee • 223 B1 := 1 (−cos(x) esin(x) − 63 sin(x) cos(x) esin(x) 720 + 91 cos(x)3 esin(x) − 210 sin(x)2 cos(x) esin(x) + 245 sin(x) cos(x)3 esin(x) − 35 cos(x)5 esin(x) − 105 sin(x)3 cos(x) esin(x) + 105 sin(x)2 cos(x)3 esin(x) − 21 sin(x) cos(x)5 esin(x) + cos(x)7 esin(x) )(x − π)6 + −sin(x) esin(x) + 16 cos(x)2 esin(x) − 15 sin(x)2 esin(x) + 75 sin(x) cos(x)2 esin(x) − 20 cos(x)4 esin(x) − 15 sin(x)3 esin(x) + 45 sin(x)2 cos(x)2 esin(x) − 15 sin(x) cos(x)4 esin(x) + cos(x)6 esin(x) )(x − π)5 > sol := { solve( B1=0.2 3. x. 2.4 2. vous devez a nouveau re` courir aux m´thodes num´riques.

. ) }.01542298119 (4 − π)6 .04005698601 (2. ). vous devez ajouter l’erreur aux quatre coins de l’ensemble des valeurs critiques.224 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > sol := sol union { % }. 0. critical := {0. 0. {0. > critical := critical union %. x=2} > eval( err.180293062 − π)6 } Agrandissez maintenant l’ensemble des grandes erreurs. {xi=4. e ` e > { seq( B. x=4} ).04005698601 (2. x=2} > eval( err. π} L’ensemble suivant contient les erreurs extrˆmes a la fronti`re ξ = x. {xi=2. x=4} > eval( err. {xi=4. 0.07333000221 (2 − π)6 } Enfin. > critical := critical union > { eval( err. sol := {2.180293062 − π)6 . ). x=sol ) }. {xi=2.180293062. −0.

6. appliquez la commande abs aux ee ´l´ments de critical.04005698601 (2. 1 0. (−sin(4) esin(4) 720 + 16 cos(4)2 esin(4) − 15 sin(4)2 esin(4) + 75 sin(4) cos(4)2 esin(4) − 20 cos(4)4 esin(4) − 15 sin(4)3 esin(4) + 45 sin(4)2 cos(4)2 esin(4) − 15 sin(4) cos(4)4 esin(4) 1 + cos(4)6 esin(4) )(2 − π)6 .01542298119 (4 − π)6 . (−sin(4) esin(4) 720 + 16 cos(4)2 esin(4) − 15 sin(4)2 esin(4) + 75 sin(4) cos(4)2 esin(4) − 20 cos(4)4 esin(4) − 15 sin(4)3 esin(4) + 45 sin(4)2 cos(4)2 esin(4) − 15 sin(4) cos(4)4 esin(4) + cos(4)6 esin(4) )(4 − π)6 } Vous devez maintenant d´terminer le maximum en valeur absolue des e ´l´ments de critical.07333000221 (2 − π)6 . .180293062 − π)6 . Tout d’abord. 0. critical ). ee > map( abs. (−sin(2) esin(2) 720 + 16 cos(2)2 esin(2) − 15 sin(2)2 esin(2) + 75 sin(2) cos(2)2 esin(2) − 20 cos(2)4 esin(2) − 15 sin(2)3 esin(2) + 45 sin(2)2 cos(2)2 esin(2) − 15 sin(2) cos(2)4 esin(2) 1 + cos(2)6 esin(2) )(2 − π)6 .1 Calcul diff´rentiel ´l´mentaire e ee • 225 critical := {0. (−sin(2) esin(2) 720 + 16 cos(2)2 esin(2) − 15 sin(2)2 esin(2) + 75 sin(2) cos(2)2 esin(2) − 20 cos(2)4 esin(2) − 15 sin(2)3 esin(2) + 45 sin(2)2 cos(2)2 esin(2) − 15 sin(2) cos(2)4 esin(2) 1 + cos(2)6 esin(2) )(4 − π)6 . −0.

180293062 − π)6 .01542298119 (4 − π)6 .1623112756 . 0. 1 ( 720 max _error := 0. La commande max requiert une ee suite de nombres .04005698601 (2. − (−sin(4) esin(4) 720 + 16 cos(4)2 esin(4) − 15 sin(4)2 esin(4) + 75 sin(4) cos(4)2 esin(4) − 20 cos(4)4 esin(4) − 15 sin(4)3 esin(4) + 45 sin(4)2 cos(4)2 esin(4) − 15 sin(4) cos(4)4 esin(4) 1 + cos(4)6 esin(4) )(2 − π)6 . > max_error := max( op(%) ). 0.226 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e {0. 0.07333000221 (2 − π)6 . − −sin(2) esin(2) + 16 cos(2)2 esin(2) − 15 sin(2)2 esin(2) + 75 sin(2) cos(2)2 esin(2) − 20 cos(2)4 esin(2) − 15 sin(2)3 esin(2) + 45 sin(2)2 cos(2)2 esin(2) − 15 sin(2) cos(2)4 esin(2) 1 + cos(2)6 esin(2) )(2 − π)6 .07333000221 (2 − π)6 Ce nombre est approximativement > evalf( max_error ). − (−sin(2) esin(2) 720 + 16 cos(2)2 esin(2) − 15 sin(2)2 esin(2) + 75 sin(2) cos(2)2 esin(2) − 20 cos(2)4 esin(2) − 15 sin(2)3 esin(2) + 45 sin(2)2 cos(2)2 esin(2) − 15 sin(2) cos(2)4 esin(2) 1 + cos(2)6 esin(2) )(4 − π)6 . 0. − (−sin(4) esin(4) 720 + 16 cos(4)2 esin(4) − 15 sin(4)2 esin(4) + 75 sin(4) cos(4)2 esin(4) − 20 cos(4)4 esin(4) − 15 sin(4)3 esin(4) + 45 sin(4)2 cos(4)2 esin(4) − 15 sin(4) cos(4)4 esin(4) + cos(4)6 esin(4) )(4 − π)6 } Trouvez ensuite l’´l´ment maximal. vous devez donc utiliser la commande op pour transformer l’ensemble des valeurs en une suite.

e > f := x -> 1/2 + sin(x).8 3 3. brown... blue. brown ] ).6. e partition = 6 et output = plot dessine le graphique de f avec 6 boˆ ıtes.1 Calcul diff´rentiel ´l´mentaire e ee • 227 Vous pouvez maintenant tracer f . poly. f(x)+max_error. method=left.4. . partition=6.8 4 x Ce graphique montre que l’erreur r´elle demeure bien en-d´¸a de l’ese ec` timation de l’erreur.2 3. L’int´grale e L’int´grale d’une fonction peut ˆtre consid´r´e comme une mesure de l’aire e e ee comprise entre l’axe des x et la courbe de cette fonction. x=0. > with(Student[Calculus1]): > ApproximateInt( f(x). > color=[ red. La hauteur de chaque boˆ est la valeur de f ´valu´e sur le coin gauche ıte e e de chacune d’entre elles. > x=2.4 2.6 2. f := x → 1 + sin(x) 2 Par exemple. f(x)-max_error ].5 2 1. > plot( [ f(x).5 1 0.5 2 2.2 2.6 3. son approximation de Taylor et une paire de courbes indiquant la bande d’erreur.10. > output=plot). La d´finition e de l’int´grale de Riemann repose sur cette interpr´tation graphique de e e l’int´grale. 2. la commande ApproximateInt que l’on trouve dans le package Student[Calculus1] avec pour param`tres method = left.4 3.

method=left.948089404. > seq( evalf(ApproximateInt( f(x).845601766 L’approximation de l’aire s’am´liore a mesure que plus de boˆ sont e ` ıtes utilis´es. > partition=n^2)). method=left.902789479. 6.839071529 1.948819107.870316620.852550665 Utilisez l’option output = animation pour cr´er une animation de la e somme de Riemann. 6.857222010. 6. 6.10. 6.877830054. partition=6. 6. 6.860504866.923289158. 6.. 5 3 5 i=0 1 5 ( + sin( i)) 2 3 Ce nombre est approximativement > evalf( % ).10.228 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0. 6.. > output=sum). 6. 6.. 6.10] UsingaLeft-endpointRiemannSum ApproximateValue:6. > ApproximateInt( f(x). 6. .854630209.5 4 x 6 8 10 –1 Area:6.845601763 f(x) Changez output = plot pour output = sum pour calculer l’aire des boˆ ıtes. x=0. x=0. Augmentez le nombre de boˆ jusqu’` 12 et calculez la valeur e ıtes a de ApproximateInt pour chacune de ces boˆ ıtes.864739771. n=3.14).5 1 0.888196447.5 2 –0.

283185307 1. x=0.4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6.6.5 –0. iterations=7). e e > Int( f(x).10 ). 6..4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6. x=0.5 AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0.5 AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0. 10 0 1 + sin(x) dx 2 La valeur de l’int´grale est e > value( % )..1 Calcul diff´rentiel ´l´mentaire e ee • 229 > ApproximateInt( f(x).5 –0.5 AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0.4*Pi.283185308 –1 Area:6.4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6.5 1. x ).283185307 1 1 1 1 0. > output=animation. method=left.5 0 2 4 6 x 8 10 12 0 2 4 6 x 8 10 12 0 2 4 6 x 8 10 12 0 2 4 6 x 8 10 12 –0.283185311 f(x) f(x) f(x) f(x) AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0.283185309 –1 Area:6.283185307 1.283185307 1.839071529 L’int´grale ind´finie de f est e e > Int( f(x).5 AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0. le r´sultat ` ıtes e se rapproche de l’int´grale d´finie.283185309 f(x) f(x) f(x) Dans la limite.283185309 –1 Area:6.283185307 1.5 0. AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0.5 0.5 AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0.5 –0. cette valeur est approximativement e > evalf( % ).5 –1 Area:6.283185308 –1 Area:6.4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6. 1 + sin(x) dx 2 .283185307 1 1 1 0.5 1.5 0.5 –0.4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6.5 –1 Area:6.5 0.4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6.5 0 2 4 6 x 8 10 12 0 2 4 6 x 8 10 12 0 2 4 6 x 8 10 12 –0.5 –0.283185308 –1 Area:6. a mesure que le nombre de boˆ augmente.283185307 1. partition=6. 6 − cos(10) en nombres d´cimaux.4*Pi] UsingaLeft-endpointRiemannSum ApproximateValue:6.5 0.

e e e e > F := unapply( %. output=plot) ] ). x ). 1 x − cos(x) 2 D´finissez la fonction F comme ´tant l’inverse de la d´riv´e. > with(plots): > display( [ plot( F(x).839071529 1..954499888 F(x) f(x) . > method=left..5 1 0.5 0 –0. 1 x − cos(x) + 1 2 > F := unapply( %. x=0.5 2 4 x 6 8 10 –1 Area:6.10] UsingaLeft-endpointRiemannSum ApproximateValue:6.F(0). color=blue. partition=14.230 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > value( % ).10. vous pouvez remarquer que F augmente davantage lorsque sa boˆ corresponıte dante est plus grande. e > F(x) . legend="F(x)" ).10. AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0. > ApproximateInt( f(x). F := x → 1 x − cos(x) 2 Choisissez la constante d’int´gration de telle sorte que F (0) = 0. x=0. F := x → 1 x − cos(x) + 1 2 Lorsque vous tracez le graphique de F et les boˆ ıtes ensemble. x ).

r2 cos(θ) sin(θ) (r2 cos(θ)2 − r2 sin(θ)2 ) r→0 r2 cos(θ)2 + r2 sin(θ)2 lim > value( % ).) := 0. y) = (r cos(θ). . r*sin(theta) ). vous pouvez prolonger f par continuit´ ` l’origine en la e a d´finissant ´gale a z´ro en ce point. (in f) numeric exception: division by zero En (x. Error. la valeur de la fonction est > f( r*cos(theta). r sin(θ)). y) → x y (x2 − y 2 ) x2 + y 2 La fonction f n’est pas d´finie a l’origine.. r=0 ).y) -> x * y * (x^2-y^2) / (x^2+y^2).1 Calcul diff´rentiel ´l´mentaire e ee • 231 En sp´cifiant method = right ou method = midpoint lorsque vous e utilisez la commande ApproximateInt. r2 cos(θ) sin(θ) (r2 cos(θ)2 − r2 sin(θ)2 ) r2 cos(θ)2 + r2 sin(θ)2 La valeur de f tend vers z´ro lorsque r tend vers z´ro. e e e Consid´rez la fonction suivante.0. e e > Limit( %. 0 Ainsi. e > f := (x. f := (x. ıtes e e D´riv´es partielles mixtes e e Cette section d´crit l’op´rateur diff´rentiel D et donne un exemple d’une e e e fonction dont les d´riv´es partielles mixtes sont diff´rentes.0). e ` > f(0. e e ` e > f(0.6. vous pouvez dessiner et additionner des boˆ ´valu´es en leur coin droit ou en leur point milieu.

h=0 ).0). y) = (r cos(θ). y) → y (x2 − y 2 ) x2 y x2 y (x2 − y 2 ) +2 2 −2 x2 + y 2 x + y2 (x2 + y 2 )2 Cette formule n’est cependant pas valide a l’origine. .3.232 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e f(0. (in fx) division by zero Vous devez donc utiliser la d´finition de la d´riv´e exprim´e sous forme e e e e d’une limite. Error. r sin(θ)). fx := (x. Voici le graphique de f .. -3. la valeur de fx est > fx( r*cos(theta). -3. r*sin(theta) ). 0. est e e ` e > fx := D[1](f).0) )/h. > plot3d( f. ` > fx(0. x.0) . 0) := 0 En (x.f(0..3 ). La d´riv´e partielle de f par rapport a son premier param`tre. > fx(0.) := 0 L’affectation pr´c´dente ajoute une entr´e dans la table de rappels e e e (en anglais remember table) de Maple.. fx(0.0) := limit( ( f(h.

0) ). y) − e e e fx (0. |fx (x. r→0 lim 1 3 r sin(3 θ) − r sin(5 θ) 4 4 > value( % ). y) → x (x2 − y 2 ) x y2 x y 2 (x2 − y 2 ) −2 2 −2 x2 + y 2 x + y2 (x2 + y 2 )2 > fy(0. .6.1 Calcul diff´rentiel ´l´mentaire e ee • 233 r sin(θ) (r2 cos(θ)2 − r2 sin(θ)2 ) r3 cos(θ)2 sin(θ) +2 2 r2 cos(θ)2 + r2 sin(θ)2 r cos(θ)2 + r2 sin(θ)2 −2 r3 cos(θ)2 sin(θ) (r2 cos(θ)2 − r2 sin(θ)2 ) (r2 cos(θ)2 + r2 sin(θ)2 )2 > combine( % ).0) := limit( ( f(0.2](f).f(0. 0). Sym´triquement.k) . fy(0. les mˆmes arguments s’appliquent a la d´riv´e de f e e ` e e par rapport a son second param`tre. > Limit( abs( % . 0 Ainsi.0) )/k.fx(0. y. ` e > fy := D[2](f). fx est continue en (0. 0)| tend ´galement vers z´ro. k=0 ). 3 1 r sin(3 θ) − r sin(5 θ) 4 4 Lorsque la distance r entre (x. r=0 ). fy := (x. y) et (0. e e > fxy := D[1. 0) tend vers z´ro. 0) := 0 Voici la d´riv´e seconde mixte de f .

fxy(0. h=0 ). Error. k=0 ). > Limit( ( fy(h. h→0 lim 1 > fyx(0.0) := value( % ). y) → −2 x2 − y 2 x2 x2 (x2 − y 2 ) +2 2 −2 x2 + y 2 x + y2 (x2 + y 2 )2 y2 y 2 (x2 − y 2 ) x2 y 2 (x2 − y 2 ) −2 +8 x2 + y 2 (x2 + y 2 )2 (x2 + y 2 )3 Encore une fois.fy(0. 0) . y) → −2 x2 − y 2 x2 x2 (x2 − y 2 ) +2 2 −2 x2 + y 2 x + y2 (x2 + y 2 )2 y2 y 2 (x2 − y 2 ) x2 y 2 (x2 − y 2 ) −2 +8 x2 + y 2 (x2 + y 2 )2 (x2 + y 2 )3 ` A l’origine.0) := value( % ).fx(0.0) )/h. (in fxy) numeric exception: division by zero La d´finition de la d´riv´e sous forme de limite est e e e > Limit( ( fx(0. k→0 lim − 1 > fxy(0. fyx(0.234 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e fxy := (x.1](f). vous devez utiliser la d´finition de la d´riv´e sous forme e e e de limite.k) . ` > fxy(0.0) )/k.0). 0) := 1 . fyx := (x. cette formule n’est pas valide a l’origine. 0) := −1 L’autre d´riv´e seconde mixte est e e > fyx := D[2.

0).0). La rubrique ?Student[Calculus1] est une bonne e ee source de r´f´rence. de e manipuler et de tracer le graphique d’´quations diff´rentielles ordinaires e e et de syst`mes d’´quations diff´rentielles.0) <> fyx(0. En tra¸ant le graphique de fxy. > plot3d( fxy.3 ).. Maple peut vous aider a r´soudre plusieurs autres probl`mes de calcul ` e e diff´rentiel ´l´mentaire.. ee 6.3. e e e .2 Equations diff´rentielles ordinaires e • 235 Remarquez que les deux d´riv´es partielles mixtes sont diff´rentes a e e e ` l’origine. > fxy(0.´ 6. -3.2 ´ Equations diff´rentielles ordinaires e Maple dispose de toute une gamme d’outils permettant de r´soudre. true Les d´riv´es partielles mixtes sont ´gales seulement si elles sont contie e e nues. −1 = 1 > evalb( % ). on peut remarquer que cette foncc tion n’est pas continue en (0. -3.

x$2) . eqns repr´sente un ensemble d’´quations diff´rentielles et de valeurs e e e initiales. eq := ( d2 y(x)) − y(x) = 1 dx2 > dsolve( {eq}. dsolve retourne des constantes arbitraires de la forme _Cnumber .236 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e La commande dsolve La commande la plus utilis´e pour ´tudier le comportement des ´quations e e e diff´rentielles ordinaires (EDO) dans Maple est dsolve. {v(t)} ). et vars repr´sente l’ensemble de variables pour lesquelles on soue haite r´soudre.y(x) = 1. vars ) Ici. {y(x)} ). e Voici une ´quation diff´rentielle et une condition initiale. Vous pouvez utie liser cet outil polyvalent pour obtenir a la fois des solutions exactes et des ` solutions num´riques pour un grand nombre d’EDO. > eq := diff(y(x). _Cnumber . d v(t)) + 2 t = 0 dt ini := v(1) = 5 Utilisez dsolve pour obtenir la solution. e e > eq := diff(v(t). eq := ( > ini := v(1) = 5. dsolve(eqns. La syntaxe de base e de dsolve est la suivante. > dsolve( {eq. {y(x) = ex _C2 + e(−x) _C1 − 1} . ini}. v(t) = −t2 + 6 Si vous omettez une ou plusieurs des conditions initiales.t)+2*t = 0.

e [x=f(_T).t$2) + 5*diff(y(t).x). La notation D@@n repr´sente la ` e e e d´riv´e d’ordre n. e e e > de1 := diff(y(t). Voici une ´quation diff´rentielle et des conditions inie e e e tiales requ´rant la d´riv´e. u e L’option explicit Maple peut retourner la solution d’une ´quation e diff´rentielle sous forme implicite. de1 := ( d2 d y(t)) + 5 ( y(t)) + 6 y(t) = 0 2 dt dt > ini := y(0)=0. {y(t)} ).t) + 6*y(t) = 0. e > de2 := diff(y(x). D(fcn )(var_valeur ) = valeur (D@@n )(fcn )(var_valeur ) = valeur La notation D correspond a la d´riv´e. y(x)=g(_T)]. e e e utilisez la notation suivante. ini := y(0) = 0. dsolve peut retourner une solution sous forme param´trique. . D(y)(0) = 1 Encore une fois. utilisez dsolve pour trouver la solution.2 Equations diff´rentielles ordinaires e • 237 Pour sp´cifier des conditions initiales pour la d´riv´e d’une fonction.´ 6. de2 := d2 d y(x) = (ln(y(x)) + 1) ( y(x)) 2 dx dx > dsolve( {de2}. > dsolve( {de1. {y(x)} ).x$2) = (ln(y(x))+1)*diff(y(x). ini}. y(t) = e(−2 t) − e(−3 t) De plus. o` _T est un param`tre. D(y)(0)=1.

de mˆme que certains cas d’EDO lin´aires a coefficients e e ` non constants. e Consid´rons le probl`me de dynamique classique suivant. e > dsolve( {de2}. Deux poids e e de masses m et αm reposent sur un plan sans frottement et sont reli´s par e un ressort dont la constante de rappel est k. 1 d_a − x − _C2 = 0 _a ln(_a) + _C1 Utilisez l’option explicit pour indiquer a Maple de chercher une ` solution explicite du premier r´sultat. e La m´thode des transform´es de Laplace peut g´rer des EDO lin´aires e e e e d’ordre arbitraire. beaucoup plus simple a r´soudre. e . {y(x)}. Maple peut ne pas ˆtre en mesure de e trouver une solution explicite. ` e Cette m´thode fonctionne ´galement avec les syst`mes d’´quations coue e e e pl´es.238 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e y(x) {y(x) = _C1 }. e L’option method=laplace Il est souvent possible de r´duire la come plexit´ d’un probl`me en utilisant les transform´es de Laplace. Les transe e e form´es font correspondre a une ´quation diff´rentielle une ´quation alg´e ` e e e e brique. {y(x) = _C1 }. incluant la force e ext´rieure u(t). Il existe ´galement une option implicit pour forcer Maple a donner e ` ses r´sultats sous forme implicite. explicit ). dans certains cas. Quelles sont les trajectoires de chaque poids si le premier est sujet a une force ponctuelle unitaire u(t) ` en t = 1 ? D´finissons tout d’abord les ´quations diff´rentielles qui s’appliquent e e e au probl`me. y(x) = RootOf − _Z 1 d_f + x + _C2 _f ln(_f ) + _C1 Cependant. a supposer que Maple puisse trouver les transform´es. La deuxi`me loi de Newton gouverne le mouvement du pree e mier poids : la masse m multipli´e par l’acc´l´ration doit ˆtre ´gale a e ee e e ` la somme des forces appliqu´es sur le premier poids. La difficult´ de cette m´thode ` e e e r´side dans la transformation des ´quations au nouveau domaine et pare e ticuli`rement la transformation des solutions sous leur ancienne forme.

x2 (0) = 0.x[1](t)) + u(t). les deux masses sont au repos a leurs emplacements ` respectifs. . > method=laplace ).2 Equations diff´rentielles ordinaires e • 239 > eqn1 := > alpha*m*diff(x[1](t). eqn2 := m ( d2 x2 (t)) = k (x1 (t) − x2 (t)) dt2 Appliquez une force ponctuelle unitaire au premier poids en t = 1. e > eqn2 := m*diff(x[2](t).´ 6. > u := t -> Heaviside(t-1). > ini := x[1](0) = 2. > dsolve( {eqn1. D(x[2])(0) = 0 . {x[1](t).t$2) = k*(x[1](t) . ini}.x[2](t)). D(x[1])(0) = 0. eqn2.t$2) = k*(x[2](t) . D(x2 )(0) = 0 R´solvez le probl`me en utilisant la m´thode de la transform´e de e e e e Laplace. ini := x1 (0) = 2. x[2](t)}. D(x1 )(0) = 0. eqn1 := α m ( d2 x1 (t)) = k (x2 (t) − x1 (t)) + u(t) dt2 Il en va de mˆme pour le second poids. u := t → Heaviside(t − 1) Au temps t = 0. > x[2](0) = 0.

x1 (t) = −2 1+α √ %1 (t − 1) Heaviside(t − 1) cosh( ) αm − k (1 + α)2 √ %1 t √ √ α cosh( ) %1 %1 α m + e(− α m t ) + e( α m t ) + ( −2 1+α 1 k Heaviside(t − 1) (1 + α) t2 2 − k Heaviside(t − 1) (1 + α) t + 2 α2 m k 1 + Heaviside(t − 1) m + Heaviside(t − 1) α k 2 + 2αmk + 1 Heaviside(t − 1) k) ((1 + α)2 k m) 2 %1 := −α m k (1 + α) ´ Evaluez le r´sultat en fixant des valeurs pour les constantes. m=1. . k=1} ). e > ans := eval( %. {alpha=1/10.240 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 1 x2 (t) = (t2 k α + α k − 2 t k α − 2 α m 2 √ %1 (t − 1) + 2 α cosh( ) m + t2 k + k − 2 t k) αm Heaviside(t − 1) ((1 + 2 α + α2 ) k m) √ %1 t )) α (−1 + cosh( αm .

´ 6. 50 121 √ 1 √ 100 −11 100 (t − 1)) Heaviside(t − 1) cosh( 121 10 √ √ √ 2 1 √ − −11 100 t) + e(−1/10 −11 100 t) cosh( 11 10 √ √ 5 + e(1/10 −11 100 t) + Heaviside(t − 1) t2 11 10 2 155 − Heaviside(t − 1) t + + Heaviside(t − 1) 11 11 121 Transformez ensuite l’expression en fonction au moyen d’unapply. y1 := t → √ 100 1 √ − −11 100 (t − 1)) Heaviside(t − 1) cosh( 121 10 √ √ √ 2 1 √ − −11 100 t) + e(−1/10 −11 100 t) cosh( 11 10 √ √ 5 + e(1/10 −11 100 t) + Heaviside(t − 1) t2 11 10 2 155 − Heaviside(t − 1) t + + Heaviside(t − 1) 11 11 121 . de la mani`re suivante. t ). ans ).2 Equations diff´rentielles ordinaires e • 241 ans := {x2 (t) = ( √ 11 2 9 11 1 1 √ −11 100 (t − 1))) t + − t + cosh( 10 10 5 5 10 √ 2 2 1 √ Heaviside(t − 1) + −11 100 t). Tout d’abord. ´valuez l’expression x[1](t) en sa solution pour extraire l’expression x1 (t). x1 (t) − cosh( 11 11 10 √ 100 1 √ =− −11 100 (t − 1)) Heaviside(t − 1) cosh( 121 10 √ √ √ 2 1 √ − −11 100 t) + e(−1/10 −11 100 t) cosh( 11 10 √ √ 5 + e(1/10 −11 100 t) + Heaviside(t − 1) t2 11 10 2 155 − Heaviside(t − 1) t + + Heaviside(t − 1)} 11 11 121 Vous pouvez transformer la solution pr´c´dente en deux fonctions. > eval( x[1](t). e e e e y1 (t) et y2 (t). − > y[1] := unapply( %.

s) − x1 (0)) − D(x1 )(0)) = k (laplace(x2 (t).242 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Vous pouvez ´galement effectuer les deux ´tapes en mˆme temps. invfourier ... mellin. t. s) − laplace(x1 (t). fourier . method=laplace). ans ).. [addtable. y[2](t) ]. 14 12 10 8 6 4 2 –2 2 t 4 6 Plutˆt que d’appliquer dsolve(. t=-3. laplace. vous pouvez o utiliser la transform´e de Laplace a la main.. e e > with(inttrans). 50 121 √ 11 2 9 11 1 1 √ ( t + −11 100 (t − 1))) − t + cosh( 10 10 5 5 10 √ 2 2 1 √ Heaviside(t − 1) + −11 100 t) − cosh( 11 11 10 Tracez maintenant les deux fonctions. t. s ). fouriercos . Le package inttrans d´finit e ` e la transform´e de Laplace et son inverse (de mˆme que plusieurs autres e e transform´es int´grales). y2 := t → > plot( [ y[1](t). t ). savetable] Les transform´es de Laplace des ´quations diff´rentielles eqn1 et eqn2 e e e sont : > laplace( eqn1. s)) + e(−s) s . invmellin. invlaplace. invhilbert . e e e > y[2] := unapply( eval( x[2](t). hilbert . t. t. α m (s (s laplace(x1 (t). hankel . fouriersin.6 ).

t. . es s3 m (k + α m s2 + α k) (m s2 + k) (2 α m s2 es + 1) } es s3 m (k + α m s2 + α k) Maple a r´solu le probl`me alg´brique . t.t. s) − 2) = e(−s) } s Vous devez maintenant r´soudre cet ensemble d’´quations alg´briques e e e pour les transform´es de Laplace des deux fonctions x1 (t) et x2 (t). m (s (s laplace(x2 (t). { laplace(x[1](t). s)) ´ Evaluez l’ensemble form´ des deux transform´es en leurs conditions e e initiales. %%}. s)). e k (laplace(x2 (t). α m s (s laplace(x1 (t).s). s. t. t. s) − laplace(x2 (t). t ). > invlaplace( %.´ 6. s) − laplace(x2 (t). t. t. s) = laplace(x1 (t). t. {ini} ). s)) + > sol := solve( %. {m s2 laplace(x2 (t).s) } ). t.2 Equations diff´rentielles ordinaires e • 243 et > laplace( eqn2. > laplace(x[2](t). s ). > eval( {%. t. s) = k (laplace(x1 (t). t. s) − x2 (0)) − D(x2 )(0)) = k (laplace(x1 (t).t. sol := {laplace(x2 (t). t. s) − laplace(x1 (t). s) = k (2 α m s2 es + 1) . t. vous devez maintenant prendre e e e la transform´e inverse de Laplace pour en extraire les fonctions x1 (t) et e x2 (t) .

. m=1. k=1} ).244 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 1 2 (t k α + α k − 2 t k α − 2 α m 2 √ %1 (t − 1) + 2 α cosh( ) m + t2 k + k − 2 t k) αm x2 (t) = k Heaviside(t − 1) ((1 + α)2 k 2 ) √ %1 t )) α m (−1 + cosh( αm /m. > eval( %. x1 (t) = −2 k (1 + α) √ %1 (t − 1) Heaviside(t − 1) cosh( ) αm − k (1 + α)2 √ %1 t √ √ α cosh( ) %1 %1 α m + e(− α m t ) + e( α m t ) + ( −2 1+α 1 k Heaviside(t − 1) (1 + α) t2 2 − k Heaviside(t − 1) (1 + α) t + 2 α2 m k 1 + Heaviside(t − 1) m + Heaviside(t − 1) α k 2 + 2αmk + 1 Heaviside(t − 1) k) ((1 + α)2 k m) 2 %1 := −α m k (1 + α) ´ Evaluez-les en fixant des valeurs pour les constantes. {alpha=1/10.

e e e > eq := 2*x*diff(y(x). e Lorsque Maple applique la m´thode des s´ries. e e e {x2 (t) = L’option type=series La m´thode des s´ries pour r´soudre des ´quae e e e tions diff´rentielles consiste a trouver une fonction symbolique approxim´e e ` e des ´quations de la mani`re suivante. eq := 2 x ( d2 d y(x)) + ( y(x)) + y(x) = 0 2 dx dx Demandez a Maple de r´soudre l’´quation.x. u Consid´rez l’´quation diff´rentielle suivante.´ 6. e e Cette technique s’av`re utile lorsque les algorithmes standard de Maple e ne suffisent pas a la tˆche et qu’une solution symbolique est tout de mˆme ` a e pr´f´rable a une solution purement num´rique.2 Equations diff´rentielles ordinaires e • 245 50 121 √ 11 9 11 1 1 √ −11 100 (t − 1))) ( t2 + − t + cosh( 10 10 5 5 10 √ 2 2 1 √ Heaviside(t − 1) + −11 100 t).x) + diff(y(x). La m´thode des s´ries est ee ` e e e souvent d’un grand secours avec les EDO non lin´aires ou de grand ordre. Maple trouve d’abord une ape e proximation des ´quations sous forme de s´rie. il assume qu’il existe e e une solution de la forme ∞ xc i=0 ai xi o` c est un nombre rationnel. ` e e . on obtient la mˆme solution que par e la m´thode pr´c´dente. x1 (t) − cosh( 11 11 10 √ 100 1 √ =− −11 100 (t − 1)) Heaviside(t − 1) cosh( 121 10 √ √ √ 2 1 √ − −11 100 t) + e(−1/10 −11 100 t) cosh( 11 10 √ √ 5 + e(1/10 −11 100 t) + Heaviside(t − 1) t2 11 10 2 155 − Heaviside(t − 1) t + + Heaviside(t − 1)} 11 11 121 Comme on devait s’y attendre. Il r´sout ensuite cette e e e approximation de mani`re symbolique au moyen de m´thodes exactes.x) + y(x) = 0.

%. _C1 = 5] > map(subs. _C1 = 3. convertissez-la ensuite en polynˆme. _C1 = 1.. type=series ). o > rhs(%). _C2=1. [_C1 = 0. _C1 = 2. √ √ poly := _C1 x 1 1 3 1 1 1 2 (1 − x + x − x + x4 − x5 ) 3 30 630 22680 1247400 1 1 3 1 1 + _C2 (1 − x + x2 − x + x4 − x5 ) 6 90 2520 113400 Vous pouvez maintenant tracer le graphique de la solution pour diff´rentes valeurs des constantes arbitraires _C1 et _C2. e > [ seq( _C1=i.5 ) ]. {y(x)}.246 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > dsolve( {eq}. i=0. _C1 = 4. polynom). . 1 1 3 1 1 1 2 x+ x − x + x4 − 3 30 630 22680 1247400 x5 + O(x6 )) + _C2 1 1 3 1 1 (1 − x + x2 − x + x4 − x5 + O(x6 )) 6 90 2520 113400 _C1 x(1 − > poly := convert(%. poly). y(x) = _C1 √ x(1 − 1 1 3 1 1 2 x+ x − x + x4 − 3 30 630 22680 1 x5 + O(x6 )) + _C2 1247400 1 1 3 1 1 (1 − x + x2 − x + x4 − x5 + O(x6 )) 6 90 2520 113400 Utilisez rhs pour extraire la solution .

eq := x(t) ( d x(t)) = t2 dt . 6 90 2520 113400 1 1 3 1 1 %1 + 1 − x + x2 − x + x4 − x5 . des solveurs num´riques alternatifs e e ont ´t´ con¸us.2 Equations diff´rentielles ordinaires e • 247 1 2 1 3 1 1 x − x + x4 − x5 . ee c Voici une ´quation diff´rentielle et une condition initiale. la s´rie r´sultante e e e doit converger .10 ). x=1. 6 90 2520 113400 1 1 3 1 1 5 %1 + 1 − x + x2 − x + x4 − x5 ] 6 90 2520 113400 %1 := √ 1 1 3 1 1 1 2 x (1 − x + x − x + x4 − x5 ) 3 30 630 22680 1247400 [1 − x + > plot( %. t) = t^2. Pour ces raisons. 6 90 2520 113400 1 1 3 1 1 3 %1 + 1 − x + x2 − x + x4 − x5 . 6 90 2520 113400 1 1 3 1 1 4 %1 + 1 − x + x2 − x + x4 − x5 . Maple doit calculer plusieurs d´riv´es dans le proe e cessus de recherche de la solution.. Pour produire un r´sultat.´ 6. 3 2 1 0 –1 –2 –3 –4 2 4 x 6 8 10 L’option type=numeric Bien que les m´thodes des s´ries pour la r´e e e solution des EDO soient bien comprises et ad´quates pour trouver des e approximations justes de la variable d´pendante. 6 90 2520 113400 1 1 3 1 1 2 %1 + 1 − x + x2 − x + x4 − x5 . e e > eq := x(t) * diff(x(t). de plus. ce qui peut s’av´rer coˆteux en temps e u comme en m´moire. elles pr´sentent cepene e dant certaines limitations.

Vous pouvez ´galement cr´er une paire ordonn´e. {x(t)}. ` > sol(1).. type=numeric ).82574790049820024] Le package plots contient une commande. [t. e e e > eval( [t. x(t) = 2. sol := proc(rkf45 _x ) . 1. permettant de tracer le r´sultat de dsolve( . 2. end proc La solution satisfait a la condition initiale. sol(1) ). sol(0) ). . e > eval( x(t).2 ). ini}. e > sol := dsolve( {eq.. x(t)]. type=numeric). -1. [t = 0. . odeplot. x(t)]. . ini := x(1) = 2 Le r´sultat de la commande dsolve avec l’option numeric est une proc´e e dure qui retourne une liste d’´quations.. [t = 1. e > with(plots): > odeplot( sol..] > sol(0).82574790049820024] Utilisez la commande eval pour choisir une valeur particuli`re de la e liste des ´quations. x(t) = 1.248 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > ini := x(1) = 2. [0.

8 2.t) = y(t). eq1 := ∂ x(t) = y(t) ∂t > eq2 := diff(y(t). ini := x(0) = 2.8 –1 –0.4 x 2. {x(t). la proc´dure de solution retourne une liste de e trois ´quations. > type=numeric ). .] > sol1(1).5 1 t 1.2 Equations diff´rentielles ordinaires e • 249 2. y(0) = 1 Dans ce cas particulier. x(t) = 2. Voici un syst`me de deux EDO. end proc > sol1(0).odeplot pour obtenir la syntaxe de odeplot. e > eq1 := diff(x(t).5 0 0. y(0)=1.. e > sol1 := dsolve( {eq1. eq2. [t = 0.6 2.´ 6.t) = x(t)+y(t).y(t)}.2 2 1. sol1 := proc(rkf45 _x ) . ini}. eq2 := > ini := ∂ y(t) = x(t) + y(t) ∂t x(0)=2. . y(t) = 1.5 2 Consultez la rubrique ?plots. .

[t. 8 y –4 2 x 6 1 t –3 ou toute autre combinaison..58216755967155986. Reportez-vous a la e e e ` rubrique ?dsolve. 8 6 y 4 2 0 –2 –4 2 3 4 x 5 6 x(t) et y(t) en fonction de t.82688931187210190] La commande odeplot peut maintenant tracer y(t) en fonction de x(t). y(t)]. e e aucun logiciel ne peut anticiper toutes les conditions. Il e e n’existe pas de r`gles universelles permettant de pr´venir ces effets .250 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e [t = 1. > odeplot( sol1. axes=boxed ). -3. La solution consiste a ` utiliser l’option startinit pour indiquer a la commande dsolve (ou ` plutˆt ` la proc´dure retourn´e par dsolve) de commencer a la valeur o a e e ` initiale pour chaque calcul en un point (x. x(t). > odeplot( sol1."y"] ). type=numeric) e doit utiliser en r´solvant une ´quation diff´rentielle. y(t)]. . Vous pouvez sp´cifier l’algorithme que dsolve(. > labels=["t".1. [x(t). -3. x(t) = 5.numeric... y(x))..1. y(t) = 7. labels=["x"."y"]."x".. Soyez prudent lorsque vous utilisez des m´thodes num´riques. ainsi.

Une fois les d´riv´es ainsi obtenues. 6 vous devez g´n´rer des d´riv´es jusqu’` l’ordre e e e e a . > eq := D(theta) = -1/10*(theta-20). D´terminez ce nombre en fonction de l’ordre de la s´rie e e e de Taylor. vous pouvez les remplacer dans e e la repr´sentation de f (t) en s´rie de Taylor. f (t) et e e e ainsi de suite. t).´ 6.2 Equations diff´rentielles ordinaires e • 251 Un exemple : les s´ries de Taylor e Dans sa forme g´n´rale. Si vous utilisez la valeur par d´faut de la variable Order fournie e par Maple. e e > taylor(f(t). une solution d’une EDO g´n´r´e par une m´thode e e e ee e de s´ries demande la formation d’une s´rie de Taylor autour de t = 0 e e pour une certaine fonction f (t). vous pouvez facilement introduire l’´quae e tion ci-dessus dans Maple. > Order. eq := D(θ) = − > ini := theta(0)=100. dt 10 θ(0) = 100. soit f (t). consid´rez la loi du refroidissement de Newton : e f(0) + D(f )(0) t + dθ 1 = − (θ − 20). 1 1 (2) (D )(f )(0) t2 + (D(3) )(f )(0) t3 + 2 6 1 1 (D(4) )(f )(0) t4 + (D(5) )(f )(0) t5 + O(t6 ) 24 120 Comme exemple. En utilisant l’op´rateur D. 1 θ+2 10 ini := θ(0) = 100 La premi`re ´tape consiste a obtenir le nombre requis de d´riv´es e e ` e e d’ordre sup´rieur. Vous devez ainsi obtenir et manipuler les d´riv´es d’ordre sup´rieur de cette fonction. f (t).

(D(4) )(θ) = − (D(3) )(θ). si vous effectuez des substitutions par rapport a S. 10 10 1 D(θ) = − θ + 2 10 La d´riv´e cinqui`me est une fonction de la d´riv´e quatri`me. {S}). Ainsi. utie e ` lisez la commande map. 1 1 (D(4) )(θ). (D(3) )(θ) = − 1 1 θ+ 1000 50 Pour effectuer cette substitution sur toutes les d´riv´es a la fois. dev _order := 5 Vous pouvez maintenant utiliser seq pour g´n´rer une suite des d´rie e e v´es d’ordre sup´rieur de theta(t). vous ` pouvez exprimer toutes les d´riv´es comme des fonctions de theta. . (D(3) )(θ) = − 1 (D(2) )(θ) 10 En rempla¸ant par rapport a S sur le cˆt´ droit de l’´galit´. e e > S := seq( (D@@(dev_order-n))(eq). rhs(%) )..1. on obc ` oe e e tient : > lhs(%) = subs( S. 10 10 1 1 (D(3) )(θ) = − (D(2) )(θ). la e e e e e e d´riv´e quatri`me est une fonction de la d´riv´e troisi`me. n=1. (D(2) )(θ) = − D(θ).dev_order ). et ainsi de e e e e e e suite. le troisi`me ´l´ment de S est le suivant : e ee S := (D(5) )(θ) = − > S[3]. Par e e exemple. [S] ). > L := map( z -> lhs(z) = eval(rhs(z).252 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > dev_order := Order .

(D(2) )(θ) = θ− . 100 1 1 1 (D(3) )(θ)(0) = D(θ)(0). 100 100 1 1 1 (D(3) )(θ) = D(θ). o > eval( %. e e e [(D(5) )(θ)(0) = > T := taylor(theta(t). 1 (D(3) )(θ)(0). 1 1 1 θ(0) + 2) t + ( θ(0) − ) t2 + 10 200 10 1 1 1 1 3+( (− θ(0) + )t θ(0) − ) t4 + 6000 300 240000 12000 1 1 (− θ(0) + ) t5 + O(t6 ) 12000000 600000 θ(0) + (− ´ Evaluez maintenant les s´ries aux conditions initiales et convertisseze les en polynˆme. (D(2) )(θ)(0) = θ(0) − . e e e L := [(D(5) )(θ) = > L(0). 100 100 5 1 D(θ) = − θ + 2] 10 Vous devez ´valuer les d´riv´es en t = 0. 1 (2) 1 (D )(θ)(0) t2 + (D(3) )(θ)(0) 2 6 3 + 1 (D(4) )(θ)(0) t4 + 1 (D(5) )(θ)(0) t5 + O(t6 ) t 24 120 Remplacez les d´riv´es dans la s´rie. t). T ). e e e T := θ(0) + D(θ)(0) t + > subs( op(L(0)). . 100 1 (D(4) )(θ)(0) = (D(2) )(θ)(0). ini ).´ 6.2 Equations diff´rentielles ordinaires e • 253 1 1 (D(3) )(θ). (D(4) )(θ) = (D(2) )(θ). 100 100 5 1 D(θ)(0) = − θ(0) + 2] 10 G´n´rez maintenant la s´rie de Taylor.

254 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 100 − 8 t + 2 2 1 3 1 4 1 t − t + t − t5 + O(t6 ) 5 75 3000 150000 > p := convert(%. t=0. {theta(t)} ).. polynom). q]. q := 20 + 80 e(−1/10 t) Vous pouvez maintenant comparer la s´rie obtenue a la solution e ` exacte. e > plot(p. > plot( [p. θ(t) = 20 + 80 e(−1/10 t) > q := rhs(%). e > dsolve( {eq(t). 100 80 60 40 20 0 –20 5 10 15 t 20 25 30 Cet exemple particulier poss`de la solution analytique suivante. ini}. .30 ). t=0..30). p := 100 − 8 t + 1 3 1 4 1 2 2 t − t + t − t5 5 75 3000 150000 Vous pouvez maintenant tracer le graphique de la r´ponse.

. > de := (x^7+x^3-3)*diff(y(x). > dsolve( {eq(t). Dans ce cas.x) + x^4*diff(y(x). vous pouvez o e utiliser l’option series de la commande dsolve. DESol e est une expression repr´sentant la solution d’une ´quation diff´rentielle e e e sans la calculer explicitement. ’series’ ). {y(x)} ).x. Cela vous permet de manipuler e l’expression r´sultante de mani`re symbolique avant d’utiliser toute autre e e approche.´ 6.x) > + (23*x-17)*y(x). Ainsi. θ(t) = 100 − 8 t + 2 2 1 3 1 4 1 t − t + t − t5 + O(t6 ) 5 75 3000 150000 Lorsqu’une solution explicite est impossible ` trouver a Dans certains cas.2 Equations diff´rentielles ordinaires e • 255 100 80 60 40 20 0 –20 5 10 15 t 20 25 30 Plutˆt que de calculer la s´rie de Taylor manuellement. {theta(t)}. de := d2 d (x7 + x3 − 3) ( dx2 y(x)) + x4 ( dx y(x)) + (23 x − 17) y(x) dsolve ne peut trouver une solution exacte de de. ini}. DESol est similaire a RootOf. > dsolve( {de}. la commande dsolve peut ree tourner des solutions contenant la structure de donn´es DESol. qui ` repr´sente les racines d’une expression. il peut ˆtre impossible d’exprimer la solution d’une e EDO lin´aire explicitement.

ode1 := ( d2 d y(t)) + sin(t)2 ( y(t)) + y(t) = cos(t)2 2 dt dt > ic1 := y(0) = 1. Par exemple. t$2) + sin(t)^2*diff(y(t).t) + y(t) = cos(t)^2. + x7 + x3 − 3 x7 + x3 − 3 {_Y(x)} Vous pouvez maintenant essayer une autre m´thode sur l’´l´ment DESol e ee lui-mˆme. il peut ˆtre avantageux d’en tracer le graphique. e e > series(rhs(%). _Y(0) + D(_Y )(0) x − (− 17 _Y(0) x2 + 6 17 23 D(_Y )(0) + _Y(0)) x3 + 18 18 289 23 ( _Y(0) + D(_Y )(0)) x4 + 216 36 289 833 ( D(_Y )(0) − _Y(0)) x5 + O(x6 ) 1080 540 diff et int fonctionnent ´galement avec DESol. trouvez une approximation sous forme de s´rie. D(y)(0) = 0 Essayez tout d’abord de r´soudre cette EDO analytiquement au e moyen de dsolve. x). D(y)(0) = 0.256 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e y(x) = DESol d ( dx2 _Y(x)) + 2 d x4 ( dx _Y(x)) (23 x − 17) _Y(x) . . e > ode1 := > diff(y(t). e Tracer le graphique d’´quations diff´rentielles ordinaires e e Plusieurs ´quations diff´rentielles ne peuvent ˆtre r´solues analytiquee e e e ment. ic1 := y(0) = 1. Dans ces cas.

[ini-conds ] ) Ici.4 0. > DEplot( ode1. stepsize=0.8 y(t) 0..20. .6 0. indiquant ainsi qu’elle ne pouvait e trouver de solution. dep-var est e e e la variable d´pendante. method=laplace ).20. 0. y(t). dsolve n’a pas trouv´ de solution.. e Voici un graphique de la fonction satisfaisant a la fois a l’´quation ` ` e diff´rentielle ode1 et aux conditions initiales ic1 ci-dessus. intervalle est le domaine de la variable ind´pene dante et ini-conds repr´sente la liste des conditions initiales. y(t). ic1}. dep-var. • 257 La commande dsolve n’a rien retourn´. ic1}. 0. e > DEplot( ode1.2 0 5 10 t 15 20 Vous pouvez raffiner le graphique en sp´cifiant une ´chelle (stepsize) e e plus fine. e > dsolve( {ode1. Essayez alors les m´thodes de Laplace. essayez la commande DEplot qui se trouve ee dans le package DEtools. Puisque l’usage de e dsolve s’est av´r´ infructueux. > with(DEtools): DEplot est un traceur g´n´ral d’EDO que vous pouvez utiliser en suivant e e la syntaxe ci-dessous : DEplot( ode. {y(t)} ). {y(t)}.2 Equations diff´rentielles ordinaires e > dsolve({ode1.2 ). ode est l’´quation diff´rentielle que vous souhaitez tracer. 1 0.´ 6. [ [ ic1 ] ] ). intervalle. Encore une fois. [ [ ic1 ] ].

8 0. > ic2 := y(0)=0.6 0.2 1 y(t) 0. eq1 := ( d y(t)) + y(t) + x(t) = 0 dt > eq2 := y(t) = diff(x(t).6 0. eq2 := y(t) = d x(t) dt .t) + y(t) + x(t) = 0.4 1.2 ). y(t).2 5 10 t 15 20 DEplot peut ´galement tracer les solutions d’un ensemble d’´quations e e diff´rentielles.8 y(t) 0. D(y)(0) = 1 > DEplot( ode1. 1. D(y)(0)=1. t).4 0. [ [ic1]. 0. DEplot trace e une solution pour chacune. ic2 := y(0) = 0.2 0 5 10 t 15 20 Si vous sp´cifiez plus qu’une liste de conditions initiales.4 0.20. [ic2] ]. stepsize=0.. e > eq1 := diff(y(t).258 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 1 0.

y(0) = −5 Le syst`me {eq1. eq2} poss`de deux variables d´pendantes. Voici un graphique trie dimensionnel du syst`me trac´ en deux dimensions pr´c´demment. > [ [ini1]. y(0)=-5. x(t) et e e e y(t) .5. [ini2] ] ). y(0)=5. • 259 ini1 := x(0) = 0. DEplot3d est la version tridimensionnelle de DEplot.2 Equations diff´rentielles ordinaires e > ini1 := x(0)=0.DEplot pour obtenir davantage de d´tails sur la mani`re de e e tracer des EDO.. . La syntaxe de base de DEplot3d est similaire a celle de DEplot. ini2 := x(0) = 0. Consultez la rubrique ` ?DEtools. y(t)].DEplot3d pour obtenir plus de d´tails. e > DEplot( {eq1. [ini2] ] ). e e e e > DEplot3d( {eq1.´ 6. [x(t).5. y(t)]. eq2}. 60 40 y 20 –60 –40 –20 0 –20 –40 –60 20 40 x 60 Remarquez que DEplot g´n`re ´galement un champ de vecteurs (ainsi e e e qu’illustr´ ci-dessus) d`s qu’il est utile de le faire. vous devez donc donner une liste de variables d´pendantes. y(0) = 5 > ini2 := x(0)=0. -5. [x(t).. eq2}. Consultez la rubrique e e ?DEtools. -5. > [ [ini1].

y(0)=0.t) = y(t)+z(t). ini2 := [x(0) = 0. z(0) = −1] La commande DEplot3d trace deux solutions au syst`me d’´quations e e diff´rentielles {eq1. z(0)=2]. . z(0) = 2] > ini2 := [x(0)=0.260 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 40 20 y(t) 0 –20 –40 –60 –40 –20 0 20 x(t) 0 –2 t –4 40 60 4 2 Voici un exemple d’un graphique d’un syst`me de trois ´quations e e diff´rentielles. z(0)=-1].t) = x(t)+y(t)-z(t). y(0) = 2. y(0) = 0. y(0)=2. eq1 := d x(t) = y(t) + z(t) dt > eq2 := diff(y(t). eq2. e > eq1 := diff(x(t). > ini1 := [x(0)=1.t) = -x(t)-y(t). eq3 := d z(t) = x(t) + y(t) − z(t) dt Voici deux listes de conditions initiales. eq3}. une solution pour chaque liste de valeurs e initiales. ini1 := [x(0) = 1. eq2 := d y(t) = −y(t) − x(t) dt > eq3 := diff(z(t).

2 Equations diff´rentielles ordinaires e • 261 > DEplot3d( {eq1.. eq2.10. Vous pouvez utiliser e e Heaviside avec dsolve pour trouver les solutions a la fois num´riques et ` e symboliques. [x(t). z(t)].1.´ 6. stepsize=0. y(t). > eq := diff(y(t). Maple propose plusieurs mani`res par lesquelles e e il est possible de d´crire un syst`me en termes d’EDO et d’inclure. de e e mani`re significative. e La fonction de Heaviside La fonction de Heaviside permet de mod´liser e des coefficients retard´s ou d´finis par morceaux. eq := ∂ y(t) = −y(t) Heaviside(t − 1) ∂t > ini := y(0) = 3. y(t) = 3 e((−t+1) Heaviside(t−1)) Transformez la solution en une fonction que l’on peut tracer. orientation=[-171. 58] ). {y(t)}). > [ini1. t=0. 2 z 2 x –1 2 y –1 –1 Coefficients discontinus d’une ´quation e Dans plusieurs situations pratiques. ini := y(0) = 3 > dsolve({eq.t) = -y(t)*Heaviside(t-1). ini2]. . > rhs( % ). les coefficients d’une solution a un ` syst`me sont discontinus. ini}. eq3}. des descriptions de ces coefficients discontinus.

5 0 1 2 t 3 4 . > with(plots): > odeplot( sol1.. . 0. {y(t)}. y(t)].5 1 0. 3 2.262 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 3 e((−t+1) Heaviside(t−1)) > f := unapply(%.. e e e e > sol1 := dsolve({eq.5 2 1. sol1 := proc(rkf45 _x ) .5 0 1 2 3 4 R´solvez la mˆme ´quation num´riquement. type=numeric). 3 2. ini}. 0. end proc Vous pouvez utiliser la commande odeplot du package plots pour tracer le graphique de la solution.4 ). t).5 2 y1. f := t → 3 e((−t+1) Heaviside(t−1)) > plot(f.4).5 1 0. [t. .

4 ). eq := > ini := y(0) = 3. la solution num´rique ne consid`re pas la valeur non nulle e e de Dirac(0).8 1. d y(t) = −y(t) Dirac(t − 1) dt ini := y(0) = 3 > dsolve({eq. 0. end proc . ini}. 3 2.6 1.. ini}. > sol2 := dsolve({eq.4 1. > eq := diff(y(t). > f := unapply( rhs( % ). y(t) = 3 e(−Heaviside(t−1)) Transformez la solution en une fonction que vous pouvez tracer. t ).2 2 1. sol2 := proc(rkf45 _x ) .´ 6.2 0 1 2 3 4 Cependant. . {y(t)}). f := t → 3 e(−Heaviside(t−1)) > plot( f.6 2. vous pouvez utiliser e la fonction de Dirac pour produire des coefficients d’impulsion.8 2.t) = -y(t)*Dirac(t-1). . {y(t)}.4 2. type=numeric).2 Equations diff´rentielles ordinaires e • 263 La fonction Delta de Dirac De mani`re similaire.

5 2 0 1 2 t 3 4 Fonctions d´finies par morceaux La commande piecewise vous permet e de construire des fonctions compliqu´es par l’approximation de certaines e de ses sections par des fonctions analytiques. f := x → piecewise(1 ≤ x and x < 2.4 ). Remarquez que l’ordre des conditions est important. 1 − x ≤ 0 and x − 2 < 0 . 1. La fonction retourne la valeur true d`s qu’une condition retourne la valeur true. e > with(plots. e > plot(f. if . 0) > f(x).3).y(t)]. 1. otherwise. odeplot). .. 0). 4 3. Examinez e e tout d’abord le comportement de piecewise.264 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Encore une fois. utilisez odeplot du package plots pour tracer la solution num´rique. [t. 0. 0. > f:= x -> piecewise(1<=x and x<2. puis en regroupant ces multiples approximations pour repr´senter la fonction compl`te.. 1. [odeplot ] > odeplot( sol2.5 y 3 2. 0.

. sol3 := proc(rkf45 _x ) . > ini := y(0)=3. {y(t)}. ini := y(0) = 3 > sol3 := dsolve({eq. ini}. 0.6 0.5 2 2.5 3 Ainsi. utilisez la commande odeplot du package plots pour tracer le r´sultat.5 1 1.8 0. [t.t) = 1-y(t)*f(t). eq := ∂ y(t) = 1 − y(t) ∂t 1.4 0. if 1 − t ≤ 0 and t − 2 < 0 .2 0 0. > eq := diff(y(t). e > with(plots. otherwise. 7 6 y5 4 3 0 1 2 t 3 4 . odeplot): > odeplot( sol3.4 ). 0.´ 6. y(t)]. vous pouvez utiliser cette fonction d´finie par morceaux comme e coefficient. type=numeric). . end proc Encore une fois. .2 Equations diff´rentielles ordinaires e • 265 1 0.

il vous faut un ensemble particulier de fonctions. t. wave := ( ∂2 ∂2 u(x. les ´quations aux d´riv´es partielles (EDP) sont tr`s difficiles a e e e e e e ` r´soudre.t) . Consultez la rubrique ?DEtools pour plus de d´tails.266 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Le package DEtools contient plusieurs commandes vous permettant d’examiner. > with(PDEtools): > sol := pdsolve( wave. u(x. var ) Ici. sol := u(x. mais la plupart d’entre elles sont situ´es e e dans le package PDEtools. t)) ∂t2 ∂x On souhaite r´soudre pour u(x. Maple fournit plusieurs commandes permettant de r´soudre.t) ).c^2 * diff(u(x.t). La syntaxe de base de la commande pdsolve est la e e suivante : pdsolve( pde. de manipuler. de tracer et de r´soudre des ´quations diff´rene e e tielles. La commande pdsolve La commande pdsolve permet de r´soudre plusieurs ´quations aux e e d´riv´es partielles. t) = _F1(c t + x) + _F2(c t − x) Remarquez que la solution est en termes de deux fonctions arbitraires. _F1 et _F2.x). pde est l’´quation aux d´riv´es partielles et var est la variable pour e e e laquelle on souhaite r´soudre. e Voici une ´quation ondulatoire unidimensionnelle. t)) − c2 ( 2 u(x.t).3 ´ Equations aux d´riv´es partielles e e En g´n´ral. Chargeons d’abord en m´moire e e PDEtools. Certaines de ces commandes se trouvent dans la biblioth`que standard. . de e e manipuler et de tracer les EDP. x. e 6. Pour tracer la solution.t). e > wave := diff(u(x.

t) = e(−(t+x) ) + 2 1 1 1 −t + x < and t − x < 2 2 0 otherwise Vous pouvez utiliser la commande rhs pour extraire la solution. 1. _F2=f2. . e(−(t+x) ) + piecewise(−t + x < 2 > plot3d( f..t). > eval( sol. > f := unapply(%. -8. f := (x. {_F1=f1.. 0) 2 2 Vous pouvez maintenant tracer la solution. c=1} ). x.3 Equations aux d´riv´es partielles e e > f1 := xi -> exp(-xi^2).´ 6.8. 0) 2 2 Substituez ces expressions dans la solution. • 267 f1 := ξ → e(−ξ 2) > f2 := xi -> piecewise(-1/2<xi and xi<1/2. 0). 0. f2 := ξ → piecewise( −1 1 < ξ and ξ < . 1.40] ). 1. grid=[40. > rhs(%).5. e(−(t+x) ) + 2 1 1 1 −t + x < and t − x < 2 2 0 otherwise unapply transforme l’expression en fonction. t) → 1 1 and t − x < . u(x.

x) = 0.t). heat := ( d d2 u(x. > pdsolve( heat. mais difficile a lire. u(x. d2 dx2 X(x) = _c 1 X(x)}] Le r´sultat est correct. x. ’build’). e ` De mani`re alternative. t) = X(x) T(t)) &where d [{ dt T(t) = k _c 1 T(t). e > S := eval( rhs(sol). t)) = 0 dt dx Essayez de trouver une solution de la forme X(x)T (t). t) = e( _c 1 x) _C3 e(k _c 1 t) _C1 + √ e( _c 1 x) ´ Evaluez la solution en des valeurs sp´cifiques pour les constantes. √ _C3 e(k _c 1 t) _C2 sol := u(x. e > sol := pdsolve(heat. (u(x. k=1.t) . t)) − k ( 2 u(x. Pour ce faire. HINT=‘*‘.268 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Changer la variable d´pendante dans une EDP e Voici l’´quation de la chaleur en une dimension. ‘*‘) et ensuite de r´soudre e e l’EDO r´sultante en utilisant l’option ’build’. vous pouvez sp´cifier a pdsolve d’utiliser une e e ` s´paration de variables (sous forme de produit. _C2=1. utilisez l’option HINT de pdsolve pour sugg´rer a Maple une piste a e ` ` suivre. _c[1]=1} ). {_C3=1. e > heat := diff(u(x.k*diff(u(x. HINT=X(x)*T(t)). u(x.t). . _C1=1.t).t).

var. s =intervalle ) Ici.5 ).´ 6. u(x. 0=0 Tracer le graphique d’´quations aux d´riv´es partielles e e e Les solutions de plusieurs EDP peuvent ˆtre trac´es grˆce a la come e a ` mande PDEplot que l’on trouve dans le package PDEtools. . t=0. pde est l’EDP.3 Equations aux d´riv´es partielles e e • 269 S := ex et + et ex Vous pouvez tracer le graphique de la solution. %1 _C3 k _c 1 e(k _c 1 t) _C1 + _C3 k _c 1 e(k _c 1 t) _C2 %1 (k _c 1 t) _C2 _c 1 _C3 e − k (_c 1 %1 _C3 e(k _c 1 t) _C1 + )=0 %1 √ %1 := e( _c 1 x) > simplify(%).. ini est une courbe e param´trique de l’espace tridimensionnel de param`tre s et intervalle est e e le domaine de s. PDEplot( pde.5.t)=rhs(sol) ). Il peut ˆtre avis´ de v´rifier la solution avec l’´quation originale.. > plot3d( S. > with(PDEtools): Vous pouvez utiliser la commande PDEplot avec la syntaxe suivante. e e e e > eval( heat. var est la variable ind´pendante. x=-5. ini.

ini := [0. 5 u(x. 7 u(x. y)) + cos(2 x) ( u(x. u(x.270 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Consid´rez cette ´quation aux d´riv´es partielles. La courbe des conditions initiales est ici plus facile a distinguer.. e e e e > pde := diff(u(x. basechar=only ). pde := ( ∂ ∂ u(x. > PDEplot( pde.y). u(x. s.y). y) = -sin(y).. y = s et z = 1 + s2 . ` > PDEplot( pde.y). ini.y) 1 –2 y 2 2 x –2 . s. Maple calcule ces courbes caract´ristiques de e base. s=-2.2 ).2. 1+s^2].y). ini. y)) = −sin(y) ∂x ∂y Utilisez la courbe donn´e par z = 1 + y 2 comme condition initiale. 1 + s2 ] PDEplot trace la courbe des conditions initiales et la surface de solution. s=-2. x) + cos(2*x) * diff(u(x.y) 1 –2 y 2 2 x –2 Pour tracer la surface. e c’est-`-dire x = 0. a > ini := [0.

45] ). ini. > PDEplot( pde.y) 1 –2 x 2 –2 y 2 6.y). > orientation=[-43. e consultez la rubrique ?plot3d. 7 u(x. L’option initcolor modifie la couleur de la courbe des valeurs initiales. e > PDEplot( pde. u(x. s=-2.. 7 u(x. basechar=true ). comment Maple vous aide a analyser le e ` . s=-2. ini.y). de mˆme que la courbe des condie e tions initiales qui est toujours pr´sente. u(x.y) 1 –2 y 2 2 x –2 Plusieurs des options usuelles de plot3d sont ´galement disponibles .options. e e e e Vous avez vu comment Maple peut illustrer des concepts comme la d´riv´e e e et les int´grales de Riemann.4 Conclusion Ce chapitre vous a d´montr´ l’utilit´ de Maple lorsque vient le temps e e e d’´tudier et de r´soudre des probl`mes faisant usage du calcul diff´rentiel.6.4 Conclusion • 271 L’option basechar=true indique a PDEplot de dessiner a la fois les ` ` courbes caract´ristiques et la surface.2. > style=patchcontour.2. initcolor=white. contours=20.. > basechar=true.

e e des ´quations diff´rentielles et des ´quations aux d´riv´es partielles. tant symbolique que num´rique. e e e e e .272 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e terme d’erreur d’une approximation de Taylor de mˆme que sa puissance e dans la r´solution et la manipulation.

vous pouvez utiliser les cae e pacit´s graphiques du logiciel pour visualiser les r´sultats et les capacit´s e e e alg´briques pour construire ou examiner un mod`le math´matique. tracer des fonctions et documenter les r´sultats. e e e Maple propose plusieurs mani`res d’importer et d’exporter des done n´es num´riques brutes et des graphiques. 7. e 273 . Les donn´es peuvent ˆtre des mee e sures exp´rimentales ou des nombres g´n´r´s par d’autres programmes.7 Entr´es et sorties e Vous pouvez effectuer la majeure partie de votre travail a l’int´rieur des ` e feuilles de calcul de Maple : calculer. Il pr´sente les r´sultats e e e e alg´briques et num´riques dans des formats compatibles a leur utilisae e ` tion sous FORTRAN ou C. ou le syst`me de typographie math´matique e e A X.1 Lire des fichiers On utilise g´n´ralement la lecture de fichiers dans Maple pour deux raie e sons : pour obtenir des donn´es et pour r´cup´rer une liste de commandes e e e Maple enregistr´es dans un fichier. il est possible qu’` un certain moment vous dee a viez importer des donn´es ou exporter des r´sultats pour interagir avec e e une autre personne ou un autre logiciel. On y verra comment Maple interagit avec le syst`me de fichiers et avec d’autres e logiciels. e e Le pr´sent chapitre aborde les aspects les plus courants de l’expore tation et de l’importation d’information vers et depuis des fichiers. Vous pouvez couper et coller des r´sultats et exporter des expressions isol´es ou des feuilles enti`res. Cependant. e e ee Une fois les donn´es import´es dans Maple. Vous pouvez mˆme exporter une feuille de calcul enti`re en un TE e e L fichier texte (pour inclusion dans un courriel) ou sous forme d’un docuA e ment L TEX.

et chaˆ est le caract`re qui d´limite les entr´es. La pr´sente section e discute de cette seconde option. Dans le fichier data.2794154982 La commande ImportMatrix permet de lire de telles colonnes de nombres.txt ci-dessous en est un exemple. nomfichier est le nom du fichier que vous souhaitez lire au moyen d’ImportMatrix. mais lorsque ces derni`res sont e e e g´n´r´es hors du logiciel. e ImportMatrix( "nomfichier ".2836621855 -.9589242747 . ıne > L := ImportMatrix( "data. les entr´es sont s´par´es par des espaces. on cherche a lire des commandes Maple se ` trouvant dans un fichier texte.9899924966 . ou vous ´crivez une proc´dure Maple en utilisant votre e e ´diteur de texte favori et en le sauvegardant dans un fichier texte avant e de l’ex´cuter. Vous pouvez tr`s facilement effectuer ces e e op´rations en utilisant respectivement les commandes ExportMatrix et e ImportMatrix.txt".txt. La ıne e e e valeur par d´faut de chaˆ est un caract`re de tabulation repr´sent´ par e ıne e e e "\t".9092974268 -. Utilisez ImportMatrix de la mani`re suivante. Dans la seconde situation. Vous pouvez sauvegarder les nombres en les s´parant par e e des espaces et des sauts de ligne dans un fichier texte.8414709848 -. Le fichier data. 0 1 2 3 4 5 6 1 0 .6536436209 -. Tr`s souvent. vous pouvez couper et coller des commandes e dans Maple ou encore utiliser la commande read. puis les faire lire par Maple pour les ´tudier. delimiter=" " ). vous devez pr´alablement les importer avant de e ee e les manipuler. Lire des colonnes de nombres depuis un fichier Maple manipule les donn´es ais´ment.4161468365 .5403023059 .274 • Chapitre 7: Entr´es et sorties e La premi`re situation survient g´n´ralement dans le cas de donn´es e e e e exp´rimentales. Pour ce faire. . delimiter=chaıne ) Ici.1411200081 -. Vous recevez peut-ˆtre une feuille de calcul e sous format texte.9601702867 -. ces donn´es externes sont stock´es sous la e e e forme de colonnes de nombres dans un fichier texte. e e e La valeur de chaˆ est donc " ".7568024953 .

1411200081   −0. Utilisez la commande convert e e pour choisir les premi`re et troisi`me entr´es dans chaque colonne.8 0.9092974268   0.7568024953   −0. e e .1 Lire des fichiers • 275 0 1  2  L :=  3  4  5 6  1 0. 0. [1. −0.2 0 –0. e e e > convert( L[[1. [4. [3. [2.7.-1].9092974268].4 0. [[0.6536436209 Les donn´es souhait´es sont donc les suivantes. vous devez tenir e compte du fait que L[5.2794154982]] La commande plot peut tracer le graphique de telles listes directement.6 0.8414709848   0.5403023059 −0..9899924966 −0.2] est le second nombre de la cinqui`me souse liste.9589242747  −0.2836621855 0.1411200081]. −0. [5.4161468365 −0. −0. −0. par exemple. 0].9601702867 0 0.8 1 2 3 4 5 6 Pour s´lectionner la seconde colonne de nombres.8414709848]. 0. > L[5.2 –0.7568024953].[1. 0.2].2794154982  Maintenant. > plot(%).6 –0. [6.3]].9589242747]. listlist ).6536436209 0. 0. vous pouvez tracer le graphique de la troisi`me colonne en fonction de la premi`re.4 –0.

0.276 • Chapitre 7: Entr´es et sorties e > L[ 1. Vous pouvez coller les commandes du fichier texte dans votre feuille de calcul ou utiliser la commande read. −6.   1  0.12516888746710864] Pour plus d’information au sujet des options de commandes telles que ImportMatrix. [91.87483111270157598 .9601702867] > stats[describe.9899924966. [1. L.5403023059.-1.9601702867 Convertissons ces donn´es sous forme de liste.1034788321 Vous pouvez aussi effectuer des calculs sur la matrice L en utilisant le package LinearAlgebra.2836621855  0. −0..list).. e > convert(L[1.9899924966     −0. Lire des commandes depuis un fichier Certains utilisateurs Maple trouvent utile d’´crire des programmes Maple e dans un fichier texte au moyen de leur ´diteur favori. 0.-1.41489848119999984] [1. consultez la rubrique d’aide ?ImportMatrix . 0.30278930720000119 .mean](%) . 3. 0. . −0.41489848119999984 . 3.4161468365     −0.109078174475632172] [−6. −0. 1. puis de les importer e dans Maple. −0. 2 ]. −0. > LinearAlgebra[Transpose](L) .2836621855. .2].4161468365.30278930720000119 .6536436209     0.6536436209.5403023059     −0.109078174475632172 .

beta) > * ( (2*beta)!/2^beta . S( 19 ).tst". Maple traite chaque ligne du fichier comme une commande. les commandes du fichier dans votre feuille de calcul. Il ex´cute les come mandes et affiche les r´sultats dans votre feuille de calcul. Voici le fichier de commandes Maple ks. beta) * ( (2*beta)!/2^beta . mais pas les come mandes. Maple a ins`re les commandes du fichier dans votre feuille de calcul.7. . e Utilisez la commande read en suivant cette syntaxe. consultez la section 7.tst".1 Lire des fichiers • 277 Lorsque vous lisez un fichier au moyen de la commande read. mais il ne place e pas. n S := n → β=1 binomial(n. beta=1. > read "ks. Lorsque vous lisez le fichier. > read "ks. par d´faut. beta=1. β) ( (2 β)! − β! β) 2β 1024937361666644598071114328769317982974 Lorsque vous fixez la valeur de la variable interface echo ` 2.n ).beta!*beta )..tst.n ). read "nomfichier " . n S := n → β=1 binomial(n.. > S := n -> sum( binomial(n.beta!*beta ). e > interface( echo=2 ).2. Maple affiche les r´sultats. S := n -> sum( binomial(n. 1024937361666644598071114328769317982974 La commande read peut ´galement lire des fichiers dans le format e interne de Maple . β) ( (2 β)! − β! β) 2β > S( 19 ).

donn´es ) e Ici. il est possible d’utiliser la e commande ExportVector. −65. > L := [ 3. Vous pouvez traiter le r´sultat ult´rieurement. . et donn´es est une matrice. 0 ]. 3. Vous pouvez utiliser la commande ExportMatrix avec la syntaxe suivante. vous pouvez enregistrer e e le r´sultat dans un fichier. e e e avec Maple ou avec un autre programme.1415. ExportMatrix( "nomfichier ". vous permettant d’ime e porter les nombres dans un autre programme. La commande ExportMatrix ´crit e e e les colonnes de donn´es num´riques dans un fichier.txt". > L:=LinearAlgebra[RandomMatrix](5). 3.1415.2 ´ Ecrire des donn´es dans un fichier e Apr`s avoir utilis´ Maple pour effectuer un calcul. nomfichier est la chaˆ contenant le nom du fichier o` ExportMatrix ıne u doit sauvegarder les donn´es. vous pouvez le convertir en une matrice et ´crire les nombres e dans un fichier de mani`re structur´e. L):  Si les donn´es sont plac´es dans un vecteur ou dans tout autre obe e jet qui peut ˆtre converti au type Vector. reportez-vous a la ` rubrique ?Vector. -65. L := [3.278 • Chapitre 7: Entr´es et sorties e 7. tout vecteur. 0] > V := Vector(L). ´ Ecrire des colonnes de donn´es num´riques dans un fichier e e Si le r´sultat d’un calcul Maple est une longue liste ou un grand tableau e de nombres.  −66 −65 20 −90 30  55 5 −7 −21 62     68 66 16 −56 −79  L :=    26 −36 −34 −8 −71  13 −41 −62 −50 28 > ExportMatrix("matrixdata. toute liste de listes ou toute matrice cr´´e a ee ` partir d’une table peut ´galement ˆtre converti en une matrice en utilisant e e le constructeur Matrix (consultez la rubrique d’aide ?Matrix ). Remarquez e e que toute liste. Pour plus d’information.

n (1 − q i ) qbinomial := (n.k) -> product(1-q^i. Si vous sauvegardez cette expression ou cette proc´e e dure au format interne de maple. Ici. .. comme des nombres complexes ou des exprese sions symboliques. Consultez les rubriques d’aide ?ExportMatrix et ?ExportVector pour obtenir plus d’information. e e vous pouvez avoir besoin de la sauvegarder pour un usage ult´rieur a e ` l’int´rieur de Maple.m . ce dernier pourra ensuite la r´cup´rer e e efficacement. Le .´ 7. e Voici quelques expressions.m" . seqnoms est une suite de noms. Utilisez la commande save avec la syntaxe suivante. "nomfichier . V ):   Vous pouvez ´tendre ces routines de mani`re qu’elles ´crivent des e e e donn´es plus complexes.2 Ecrire des donn´es dans un fichier e • 279 3  3. Cela s’accomplit en utilisant la commande save pour ´crire e l’expression dans un fichier dont le nom se termine par les caract`res e .1415   V :=   −65  0 > ExportVector( "vectordata. 4). Remarquez que vous ne pouvez enregistrer que des objets qui ont au pr´alable ´t´ nomm´s.. i=1.n) / > product(1-q^i. k) → i=n−k+1 k (1 − q i ) i=1 > expr := qbinomial(10.m. Sauvegarder des expressions au format interne de Maple Lorsque vous construisez une expression ou une proc´dure compliqu´e.k ). save seqnoms.txt". La commande e ee e save enregistre les objets dans nomfichier.m indique que save ´crit le fichier en utilisant le format interne de Maple. > qbinomial := (n. i=n-k+1.

m". De son cˆt´.m. A Convertir au format LTEX TEX est un programme permettant la pr´sentation de textes math´mae e tiques.m".280 • Chapitre 7: Entr´es et sorties e expr := (1 − q 7 ) (1 − q 8 ) (1 − q 9 ) (1 − q 10 ) (1 − q) (1 − q 2 ) (1 − q 3 ) (1 − q 4 ) > nexpr := normal( expr ). L TEX est un package macro de TEX. La commande oe A A latex convertit les expressions Maple au format L TEX. Ainsi. nexpr. nexpr := (q 6 + q 5 + q 4 + q 3 + q 2 + q + 1) (q 4 + 1) (q 6 + q 3 + 1) (q 8 + q 6 + q 4 + q 2 + 1) Vous pouvez maintenant enregistrer ces expressions dans le fichier qbinom. > save qbinomial. e . convertir le r´sultat en code e e e A A L TEX et l’inclure dans un document L TEX. Ainsi. vous pouvez utiliser Maple pour r´soudre un probl`me. (1 − q 7 ) (1 − q 8 ) (1 − q 9 ) (1 − q 10 ) (1 − q) (1 − q 2 ) (1 − q 3 ) (1 − q 4 ) Consultez la section 7.m. e ` > restart: > expr. Remarquez que expr a retrouv´ sa valeur originale. "qbinom. expr e s’´value a son propre nom. expr Utilisez la commande read pour r´cup´rer les expressions sauvee e gard´es dans qbinom. La commande efface les trois expressions de la m´moire. e > expr. expr. e > read "qbinom.1 pour plus d’information sur la commande read. Utilisez la commande latex de la mani`re suivante.

Vous pouvez ´tendre les possibilit´s de la come e mande latex en d´finissant des proc´dures portant des noms de la forme e e e ‘latex/nomfonction ‘. Maple ´crit le r´sultat directement dans e e e votre feuille. {\frac {a}{b}} > latex( Limit( int(f(x). par e e exemple). e e la forme inerte de int. Vous pouvez omettre filename .. latex affiche le code L TEX a l’´cran et vous pouvez le couper et le A coller dans votre document L TEX. comme les proc´dures. latex l’´crase pour ´crire le nouveau fichier. il sp´cifie e export´es en format L TE e a ` Maple d’´crire le r´sultat de la commande dans le fichier indiqu´. les sommes. les limites. "nomfichier " ) L’objet expr peut ˆtre n’importe quelle expression math´matique.2 Ecrire des donn´es dans un fichier e • 281 latex( expr. A La commande latex ´crit le code L TEX correspondant de l’expression e e Maple expr dans le fichier filename.n). n=infinity ) ). Si filename existe. Le champ nomfichier est optionnel . les e e produits et les matrices. x=-n. Les e e expressions sp´cifiques a Maple. La commande latex peut traduire la plupart des types d’expressions math´matiques.´ 7. e e A La commande latex ne g´n`re pas les commandes requises par L TEX e e pour mettre le syst`me de typographie en mode math´matique ($. Remarquez l’usage de Int. Si vous e e e ne sp´cifiez pas de nom de fichier. e . elle ne produit pas la commande pour entrer et sortir du mode math et ne tente aucun saut de ligne ni aucun alignement particulier. dans ce e A ` e cas. pour empˆcher l’´valuation du cˆt´ gauche de e e oe l’´quation.. A e L’exemple suivant montre la g´n´ration de code L TEX pour une ´quae e tion form´e d’une int´grale et de sa valeur. Il est sugg´r´ de produire le r´sultat de telles commandes de formatage au moyen de la commande printf.$. Cependant. La commande latex se sert de writeto pour rediriger le r´sultat lorsqu’un nom e de fichier est sp´cifi´. \lim _{n\rightarrow \infty }\int _{-n}^{n}\!f \left( x \right) {dx} La commande latex produit des commandes lisibles en mode math. ne peuvent ˆtre e ` e e A X. incluant les int´grales. De telles proc´dures formatent les appels de la ee e fonction functionname . > latex( a/b )..

x). e e e Maple reproduit les symboles sp´ciaux comme les int´grales et les expoe e sants au moyen de caract`res . HTML. 7. Texte Vous pouvez enregistrer une feuille de calcul en texte en choisissant l’option Export As du menu File et Plain Text du sous-menu qui apparaˆ ıt. Notice that its . \sqrt {2}\arctan \left( x\sqrt {2}+1 \right) + 1/4\. texte Maple.\sqrt {2}\arctan \left( x\sqrt {2}-1 \right) La section 7. vous ne pouvez exporter les e graphiques sous forme de texte. RTF et XML au moyen du sous-menu Export As que l’on trouve ´galement dans le menu File. vous pouvez enregistrer vos feuilles de calcul au moyen des options Save ou Save As du menu File.. Vous pouvez ´galement exporter e A une feuille sous six autres formats : texte.3 explique comment enregistrer une feuille compl`te en e A format L TEX. √ √ 1√ x2 + x 2 + 1 1√ 1 √ )+ 2 ln( 2 arctan(x 2 + 1) dx = 4+1 2−x 2+1 x 8 4 x √ √ 1 + 2 arctan(x 2 − 1) 4 > latex(%).\sqrt {2}\ln \left( {\frac {{x}^{2}+x\sqrt {2}+1}{{x}^{2}-x\sqrt {2}+1}} \right) +1/4\. e An Indefinite Integral by Jane Maplefan Calculation Look at the integral Int(x^2*sin(x-a). L’exemple suivant est une portion de feuille Maple export´e en format texte. Cela vous permet de traiter e une feuille de calcul hors de Maple. cependant. Dans ce cas. L TEX. Maple fait pr´c´der chaque entr´e du signe > et d’un espace.282 • Chapitre 7: Entr´es et sorties e > Int(1/(x^4+1).x) = int(1/(x^4+1). HTML avec MathML. \int \! \left( {x}^{4}+1 \right) ^{-1}{dx}=1/8 \.3 Exporter des feuilles compl`tes e Bien entendu.x).

vous e pouvez exporter une feuille de calcul en texte Maple. Maple traite chacune des lignes qui commencent par un prompt Maple suivi d’un espace (> ) comme une entr´e Maple. e e e En lisant ou en collant du texte. / | 2 | x sin(x . Ainsi.x). x).3 Exporter des feuilles compl`tes e • 283 integrand. les entr´es de Maple et ses sorties. Give the integral a name so that you can refer to it later..7. Le texte suivant est une portion d’une feuille export´e en texte e Maple. # # # # # # > An Indefinite Integral by Jane Maplefan Calculation Look at the integral Int(x^2*sin(x-a). et ignore toutes les autres lignes.a) dx | / expr := . x^2*sin(x-a). envoyer le texte par courriel et votre destinataire peut importer ce texte dans son programme et r´g´n´rer une grande part de la structure originale de votre feuille.. Vous pouvez exporter une feuille enti`re en texte Maple en choisissant e Export As du menu File et Maple Text dans le sous-menu qui apparaˆ ıt alors.. Notice that its integrand. expr := Texte Maple e e Le texte Maple n’est que du texte sp´cialement marqu´ qui conserve la distinction entre le texte.. expr := Int(x^2 * sin(x-a). chaque ligne qui commence avec un di`se (#) comme du e e texte. x). / | 2 | x sin(x ..a) dx | / The value of the integral is an anti-derivative of the integrand. depends on the parameter a. x^2*sin(x-a). > expr := Int(x^2 * sin(x-a). depends on the parameter a. Give the integral a name so that you can refer to it later. > answer := value( % ).

Dans la boˆ de dialogue qui apparaˆ alors. et si e e e e vous le collez dans une zone de texte. Maple conserve la structure du texte Maple.tex que Maple g´n`re est prˆt ` ˆtre compil´ par L TEX. choisissez Maple ite ıt Text dans la liste d´roulante des types de fichiers. choisissez Open du menu File. Pour ouvrir une feuille en format texte Maple. e Si votre feuille contient des graphiques incorpor´s.00 (IBM INTEL NT) %% Source Worksheet: tut1. Si vous copiez une partie de votre feuille en texte Maple et le collez ensuite dans une autre application. si vous utilisez l’option Paste habituelle. Toutes e e e ae e les distributions de Maple incluent les fichiers de style n´cessaires. format L TE %% Created by Maple 8. Maple g´n`re les e e e fichiers PostScript correspondant aux graphiques de mˆme que le code e A L TEX permettant d’inclure ces fichiers PostScript dans votre document A L TEX. L’exemple suivant est une portion d’une feuille Maple export´e en e A X. Double-cliquez sur le e ıte fichier souhait´ et choisissez encore Maple Text dans la boˆ de dialogue e qui apparaˆ ıt. De mani`re similaire. > answer := value( % ). il interpr`te tout le texte coll´ comme une entr´e.284 • Chapitre 7: Entr´es et sorties e # The value of the integral is an anti-derivative of the # integrand. le texte coll´ apparaˆ sous forme de e ıt texte Maple. A LTEX A Vous pouvez exporter une feuille Maple en format L TEX en choisissant Export As du menu File et LaTeX du sous-menu qui apparaˆ Le ıt. Par contre. si vous collez du texte Maple dans votre e feuille en utilisant Paste Maple Text du menu Edit. Maple interpr`te tout le texte coll´ e e comme du texte standard. Maple ne conserve aucune structure : si vous collez dans une zone d’entr´e. Vous pouvez ´galement copier et coller du texte Maple grˆce au menu e a Edit.mws %% Generated: Thu Apr 18 9:47:33 2002 \documentclass{article} \usepackage{maple2e} \DefineParaStyle{Author} \DefineParaStyle{Heading 1} \DefineParaStyle{Maple Output} \DefineParaStyle{Maple Plot} \DefineParaStyle{Title} . A fichier .

tex.x). HTML et HTML avec MathML Vous pouvez exporter une feuille Maple en format HTML (HyperText Markup Language) en choisissant Export As du menu File et HTML du sous-menu qui apparaˆ Le fichier .}{% $a$% }.}{% $\int x^{2}\.\mathrm{sin}(x . Notice that its integrand. depends on the parameter \mapleinline{inert}{2d}{a.7.a)\.tex en utilisant le pilote d’imprimante dvips. La section Imprimer des graphiques de la page 288 explique comment enregistrer des graphiques directement. Vous pouvez inclure ces fiA a chiers graphiques dans votre document L TEX ` l’aide de la commande A L TEX \mapleplot. \mapleinline{inert}{2d}{x^2*sin(x-a).dx$% }. Vous pouvez changer ce d´faut e A e en sp´cifiant une option a la commande L TEX \usepackage dans l’en-tˆte e ` de votre fichier .html g´n´r´ par Maple peut ˆtre ıt.\mathrm{sin}(x .a)$% }. e ee e .}{% $x^{2}\. A Les fichiers de style L TEX supposent que vous imprimez le fichier .3 Exporter des feuilles compl`tes e • 285 \DefineCharStyle{2D Comment} \DefineCharStyle{2D Math} \DefineCharStyle{2D Output} \DefineCharStyle{Hyperlink} \begin{document} \begin{maplegroup} \begin{Title} An Indefinite Integral \end{Title} \begin{Author} by Jane Maplefan \end{Author} \end{maplegroup} \section{Calculation} Look at the integral \mapleinline{inert}{2d}{Int(x^2*sin(x-a).

puis HTML with MathML. e qui ont ´t´ cr´´s lors de l’exportation de la feuille originale. Remare quez que les autres documents HTML (incluant une table des mati`res). Maple g´n`re des fichiers .htm mentionn´ e dans le fichier pr´c´dent. selon que vous ayiez choisi l’exportation en format HTML avec MathML ou HTML seul. <html> <head> <title>tut1.*"> <frame src="tut1TOC.htm" name="Content"> <noframes> Sorry.Created by Maple 8. IBM INTEL NT --> </head> <frameset cols="25%. </noframes> </frameset> </html> L’exemple suivant est une portion du fichier tut11.htm" target="Content">This link</a> will take you to a non-frames presentation of the document. Il convertit les formules math´mae tiques et les graphiques en format MathML ou . this document requires that your browser support frames.286 • Chapitre 7: Entr´es et sorties e charg´ dans n’importe quel navigateur HTML. <a href="tut11.gif pour repr´senter les ´quations et les e e e e graphiques de votre feuille de calcul. consultez la rubrique ` ?MathML.gif" width=120 height=60 alt="[Maple Math]" align=middle> .00.htm" name="TableOfContents"> <frame src="tut11. e e <b><font color=#000000 size=5>Calculation</font></b> </p> <p align=left> <font color=#000000>Look at the integral </font> <img src="tut11. Vous pouvez ´galement e e exporter une feuille Maple en format HTML avec MathML (Mathematical Markup Language) en choisissant Export As du menu File. L’exemple suivant est une feuille Maple export´e en HTML.htm</title> <!-.gif. MathML est la norme Internet sanctionn´e par e le World Wide Web Consortium (W3C) pour la communication de formules math´matiques structur´es entre des applications math´matiques. sont appel´s e e ee e par cette portion de code. e e e Pour plus d’information a propos de MathML.

7. </font> <img src="tut12.3 Exporter des feuilles compl`tes e • 287 <font color=#000000>. Maple incorpore les graphiques et les ´l´ments math´matiques format´s sous la ee e e forme de bitmaps inclus dans des m´tafichiers Windows. e ee e e n’importe quel traitement de texte qui supporte le format RTF.html" target="_top">an anti-derivative</a> <font color=#000000> of the integrand.gif" width=89 height=50 alt="[Maple Math]" align=middle> <font color=#000000>. </tt> <b><font color=#FF0000>expr := Int(x^2 * sin(x-a). x). Les feuilles de e calcul (spreadsheets ) ne sont pas pleinement export´es.gif" width=169 height=49 alt="[Maple Math]"> </p> <p align=left> <font color=#000000>The value of the integral is </font> <a href="tut4.rtf g´n´r´ par Maple peut ˆtre charg´ dans ıt. mais les cellules e visibles de mˆme que les en-tˆtes de colonnes et de lignes sont export´s. e e e L’exemple suivant est le d´but d’une feuille Maple export´e en format e e RTF. depends on the parameter </font> <img src="tut13.</font> </p> RTF Vous pouvez exporter une feuille Maple en format RTF (Rich Text Format ) en choisissant Export As du menu File et RTF du sous-menu qui apparaˆ Le fichier .</font></b> </p> <p align=center> <img src="tut14. {\rtf1\ansi\ansicpg1252\deff0\deflang1033 {\fonttbl {\f0 Times New Roman} {\f1 Symbol} .gif" width=13 height=32 alt="[Maple Math]" align=middle> <font color=#000000>. Notice that its integrand.</font> </p> <p align=left><a name="expr command"> <tt>&gt.</font> </p> <p align=left> <font color=#000000>Give the integral a name so that you can refer to it later.

\red0\green0\blue0. Le texte suivant est un extrait d’une feuille Maple export´e en XML. Les documents XML sont charg´s en choisissant Open du menu e File. choisissez Export As du menu File. .</mapletext></para> </exchange></section> 7.4 Imprimer des graphiques Sur la plupart des plateformes.288 • Chapitre 7: Entr´es et sorties e {\f2 Courier New} } {\colortbl \red205\green205\blue205. Lorsque votre graphique s’affiche dans une fenˆtre s´par´e. } {\stylesheet {\s0 \widctlpar} {\s1\qr footer_header} {\*\cs12\f2\fs24\cf1\i0 \b \ul0 \additive Maple Input} {\*\cs13\f0\fs24\cf2\i0 \b0 \ul0 \additive 2D Comment} {\*\cs14\f0\fs24\cf1\i0 \b0 \ul0 \additive 2D Input} {\*\cs15\f0\fs24\cf3\i0 \b0 \ul0 \additive 2D Output} XML Pour exporter une feuille Maple en format XML (Extensible Markup Language). e e e > plotsetup(window). Le fichier . \red0\green0\blue255. vous poue e e vez l’imprimer par le menu File comme toute autre feuille Maple. puis XML. La commande suivante indique a Maple d’afficher le graphique dans une fenˆtre ` e s´par´e de votre ´cran. Maple affiche par d´faut les graphiques die e e rectement dans la feuille (on parle de graphiques ins´r´s ). e <section><exchange><para pstyle=’Normal’ prompt=’> ’><mapletext maple-input=’true’ cstyle=’Maple Input’>a.xml g´n´r´ par Maple peut ˆtre charg´ comme une feuille Maple tradie ee e e tionnelle. \red255\green0\blue0. Vous pouvez utiliser la commande plotsetup pour changer ce comportement.

hp". vous devez modifier l’option plotoutput entre chaque graphique .ps. Consultez la rubrique ?plot. plotsetup( TypePilote. . Maple peut ´galement g´n´rer des graphiques au format HP Lasere e e jet. x=-4. vous devez sp´cifier a Maple que les e e ` graphiques doivent de nouveau ˆtre ins´r´s a travers les feuilles. plotoption="options " ) Ici. e e e > plotsetup( plotoutput="myplot2. > plotsetup( hpgl. e ee ` > plotsetup( inline ). chaque nouveau graphique ´crasera le pr´c´dent.hp.4 Imprimer des graphiques • 289 On appelle la commande plotsetup en appliquant la syntaxe suivante. > plotoptions=laserjet ). nomfichier est le nom du fichier de sortie et options est une chaˆ d’options reconnues ıne par le pilote sp´cifi´. e e La commande suivante indique a Maple d’envoyer le graphique en ` format PostScript dans le fichier myplot. Il envoie le graphique g´n´r´ par la commande plot3d au fichier e ee myplot.. TypePilote est le pilote graphique que Maple doit utiliser. > plot( exp@sin. il est envoy´ dans le fichier myplot.. > plotsetup( postscript. x=-Pi/3. Le graphique g´n´r´ par la commande plot ci-dessous n’apparaˆ pas e ee ıt a e ` l’´cran .hp" ).ps.7..Pi). Si vous souhaitez imprimer plus d’un graphique. 0. Une fois les graphiques export´s.ps" ). e > plot( sin(x^2).Pi/3.10 ). y=-Pi. > plot3d( tan(x*sin(y)). sinon. plotoutput="nomfichier ". plotoutput="myplot.4 ). plotoutput="myplot..device pour une description des pilotes graphiques reconnus par Maple.

fscanf. Bien entendu. utilisez-les en ´tudiant ee e l’index ou en les cherchant une a une. fopen et fclose. En fait. comment e e lire et ´crire des donn´es num´riques et comment exporter une feuille e e e A X ou HTML. Maple est un langage complet et fournit plusieurs outils de programmation. puisque e ce langage de haut niveau est de loin sup´rieur aux langages de proe grammation traditionnels pour des tˆches math´matiques. En particulier. Maple poss`de plusieurs commandes d’entr´es et de sorties e e de bas niveau comme fprintf. Tout comme un manuel de r´f´rence traditionnel. l’option de recherche ` d’un texte entier est une m´thode de recherche de l’information sup´rieure e e a ` un index traditionnel. la majorit´ des e commandes de Maple sont enregistr´es dans le langage Maple. Le but de ce livre est de donner au lecteur une bonne base de connaissances a partir de laquelle il pourra explorer Maple. Consultez les pages d’aide pour plus de d´tails. nous avons vu un grand nombre de possibilit´s d’entr´es e e et de sorties de Maple : comment imprimer des graphiques. Le Guide de a e programmation de Maple 8 vous introduit a la programmation sous ` Maple. readbytes. e Les pages d’aide sont en quelque sorte un manuel de r´f´rence interee actif. Il se concentre donc ` sur l’usage interactif du logiciel. writeline. Elles sont toujours au bout des doigts lorsque vous utilisez Maple. Les hyperliens rendent ais´e la recherche de sujets e connexes.5 Conclusion Dans ce chapitre.290 • Chapitre 7: Entr´es et sorties e 7. comment enregistrer et r´cup´rer des expressions Maple individuellement. . Maple en document L TE De plus.

Les utilisateurs peuvent effectuer des calculs ou tracer des graphiques de fonctions sans utiliser l’interface de la feuille de travail. ` 291 . des boˆ e e ıtes de dialogue et d’autres interfaces visuelles qui interagissent avec l’utilisateur. e e e Son contenu peut ´galement s’av´rer utile aux programmeurs de maplets.1 Exemple de maplet Vous pouvez cr´er une interface qui demande l’entr´e d’information de e e la part de l’utilisateur. une maplet d’int´gration pourrait e ressembler a l’exemple suivant.8 Les maplets En utilisant le package Maplets. Par exemple. e e 8. vous pouvez cr´er des fenˆtres. Le pr´sent chapitre est destin´ en priorit´ aux utilisateurs des maplets.

des boˆ de dialogue et des actions.292 • Chapitre 8: Les maplets 8.2 Terminologie maplet Une maplet est une collection d’´l´ments incluant. sans s’y limiee ter. e ıtes Une mapplet diff`re des autres fenˆtres et boˆ de dialogue en ce qu’elle e e ıtes contient elle-mˆme des fenˆtres et des boˆ de dialogue. e e ` peut contenir plusieurs ´l´ments r´gissant la disposition et la fonction de ee e cette fenˆtre. a son tour. Une fenˆtre ne doit pas e ee e ˆtre vue comme une maplet. e o ee Une maplet peut contenir plus d’une fenˆtre. e e ıtes auteur de maplet Un auteur de maplet est un programmeur qui utilise du code Maple pour cr´er une maplet. disposition La disposition d´finit comment les ´l´ments d’une maplet e ee sont affich´s. e utilisateur de maplet Un utilisateur de maplet est quelqu’un qui interagit avec une maplet. e . et chaque fenˆtre. e fenetre Une fenˆtre est un ´l´ment d’une maplet. des fenˆtres et leur disposition. mais plutˆt comme un ´l´ment de maplet.

> > > > mymaplet := Maplet ([ ["Hello World".2. e e communiquez avec votre administrateur de syst`me. e 8. ıte ee Contrairement a une fenˆtre. appuyez sur Enter apr`s les derniers deuxe e points (:) ou le dernier point-virgule (. Button("OK". Dans l’exemple suie e vant. ee 8.2 du JavaTM Runtime e Environment Version (ou la version 1. Important : Vous devez poss´der la version 1. Dans l’exemple suivant.8. Si cet environnement n’est pas install´. qui peut contenir d’autres ´l´ments comme ` e ee des boutons. la maplet est ´crite comme deux groupes e d’ex´cution. Elle doit ˆtre d´finie avant d’utiliser la commande Display. Shutdown())] ]): maplets[Display](mymaplet).3 Comment d´marrer le package Maplets e Si vous recevez une feuille Maple contenant du code provenant du package Maplets. une boˆ de dialogue poss`de une structure pr´d´finie : un ıte e e e auteur peut sp´cifier les options d’une boˆ de dialogue.4 Comment appeler une maplet ` partir d’une a feuille Maple Pour d´marrer une maplet. la maplet est ´crite en un seul groupe d’ex´cution. Vous pouvez ape e puyer sur Enter n’importe o` dans le groupe d’ex´cution pour d´marrer u e e la maplet. mais ne peut lui e ıte ajouter d’´l´ments. e e > > restart: with(maplets[Elements]).0) sur votre syst`me local.3 si vous travaillez sous Red Hat Linux 7. vous devez d’abord charger ce dernier en m´moire.3 Comment d´marrer le package Maplets e • 293 boıte de dialogue Une boˆ de dialogue est un ´l´ment d’une maplet. e e e . Appuyez sur e Enter apr`s ces deux groupes d’ex´cution possibles.). ou n’importe o` dans un groupe u d’ex´cution pour lancer l’ex´cution du code Maplets.

La maplet doit ˆtre ferm´e ou autoe e ris´e ` compl´ter une action avant que la feuille Maple soit de nouveau e a e accessible. . e 8. Sinon.6 Comment utiliser les Maplets et la fenetre Maple (modalit´) e Lorsqu’une maplet est en cours d’ex´cution. cliquez sur ce bouton. Un menu d´roulant apparaˆ e ıt. Shutdown())] ]): maplets[Display](my2maplet). Par e exemple : Sous UNIX : 1. o e 2.294 • Chapitre 8: Les maplets > > > > > with(maplets[Elements]): my2maplet := Maplet ([ ["Hello World #2".5 Comment fermer une maplet Si la maplet contient un bouton Cancel. Cette derni`re se ferme. sablier sous Windows) apparaˆ indiquant que la ıt. feuille de travail est inaccessible. Note : Cette icˆne varie selon votre gestionnaire de th`mes. cliquez sur le bouton de fermeture appropri´ pour votre plateforme. Cliquez sur un champ de saisie de la maplet.7 Comment activer la fenetre d’une maplet 1. Cliquez sur l’icˆne – situ´e dans le coin sup´rieur gauche de la fenˆtre o e e e de la maplet. Si vous d´placez le curseur au-dessus de cette feuille. Sous Windows : – Cliquez sur l’icˆne X situ´e dans le coin sup´rieur droit de la barre o e e de titre de votre maplet. Button("OK". la feuille Maple est inace cessible. 8. une icˆne e o (horloge sous UNIX. 8. Choisissez Close. Ce champ apparaˆ en ıt surbrillance.

e e . e 1.9 Comment utiliser les raccourcis de l’interface graphique Listes d´roulantes e Certaines maplets contiennent des listes d´roulantes. les nombres ou le texte appropri´s. e 8. 2. La commande choisie est ex´cut´e. Vous pouvez ´galement utiliser les touches Tab et la barre e d’espacement de la mani`re suivante. Entrez le premier caract`re de l’´l´ment de la liste que vous souhaitez e ee atteindre. Voici comment les e utiliser efficacement. Pour arrˆter la maplet en cours. Pour red´marrer la maplet.8 Comment arreter puis red´marrer une maplet e • 295 2. La liste se d´place automatiquement jusqu’` un ´l´ment e a ee commen¸ant par la lettre saisie. Appuyez sur la barre d’espacement. Continuez a ajouter des caract`res du nom de l’´l´ment voulu jusqu’` ` e ee a ce que la s´lection d´sir´e soit affich´e en surbrillance. Utilisez la touche Tab pour positionner le curseur sur le bouton de votre choix.8 Comment arreter puis red´marrer une maplet e Lorsque les calculs a effectuer par une maplet sont longs. e e e e Remarquez que cette m´thode ne s’applique pas aux listes d´roulantes e e cr´´es avec l’´l´ment ComboBox. ee ee La barre d’espacement et la touche TAB Vous pouvez utiliser la souris pour cliquer sur un bouton comme Cancel ou OK. il vous est tou` jours possible d’interrompre le processus en cours. cliquez sur le bouton X (ou l’icˆne de e o fermeture appropri´e pour votre plateforme) qui figure dans sa barre e de titre. 2. c 2. 1. Entrez l’expression. > maplets[Display](lastmaplet). 8.8. 1. ex´cutez-la a nouveau au moyen de l’outil e e ` lastmaplet.

.10 Conclusion Pour obtenir plus d’information sur les maplets. au chapitre 9. reportez-vous a la ru` brique ?maplets ou au Guide d’introduction a la programmation (Maple ` Introductory Programming Guide).296 • Chapitre 8: Les maplets 8.

168 assuming. 128 animations. tracer le graphique. 128 coords. 28 afficher proc´dures. 116 oe cˆt´ droit. 182 oe cˆt´ gauche. see maıte plets. 53 assignations d’ensembles d’´quations. 169 nonnegative. 129 en deux dimensions. 94 affectations invalides. 55 \. 125 297 images des. 168 add. 21 assigned. 125 coords.boˆ de dialogue bordure (bounding box). 127 e tridimensionnelles. 9 d´cimales. 78 _Z. 133 param´triques. 68–70 e approximations a ` virgule flottante. 53 e multiples. 20 nommer. 227– 229 approximation de fonctions en s´ries. 8 about. 133 e e en coordonn´es sph´riques. 168 integer. 127 frames. 12 %. 126. 134 ApproximateInt. 122 o oe e e cˆt´ droit d’une ´galit´. 200 assume. 8 ->. 3-D. 18 . 182 cˆnes. 6 e ee arrow. 172 additionally. 126. 186 arithm´tique ´l´mentaire. 168 affectation multiple. 28 _C. 172 axes. 39 oe e e calcul diff´rentiel. 91 e e algsubs. 2-D. 129. 198 e alg`bre lin´aire. 89–91. 39 cˆt´ gauche d’une ´galit´. 209 e . 129 frames. 19 :. 192 algsubs. 128 annotations. 126 animate3d. 176 additionally.Index !. 41 animate. 128. 8 π. 19 affichage du r´sultat e supprimer. 18 noms valides.. 128 e param´triques. 211 afficher. 131 boˆ ıte de dialogue. 140 assign. 9 e arbre des expressions. 28 :=.

51 en chaˆ ines. 138 cutout. 237. 231 e contourplot. 121 polaires. 119 e coordonn´es polaires. 35. 167 set. 195 s´ries en polynˆmes. 216 e o s´ries en polynˆmes. 68 e o coordonn´es e cylindriques. 37. 87 chaˆ ınes. 86 e Calculus1 ApproximateInt. 87–89 Roots. 107 sph´riques.298 • Index calcul diff´rentiel. 218 e d´finition. 127 e coordonn´es sph´riques. 210 e partielles. 194. 137 constantes. 178 commandes. 35. 35 des expressions en fonctions. 194 en listes et en ensembles. 232 e e d´riv´es partielles. 227–229 Hint. 14 exp. 166 factorial. 12 d’int´gration. 121 D. 89 Rule. 35. 231. 166 parfrac. 270 cone. 119 e e correspondance sur des ensembles. 89–91. 194 e champ de vecteurs. 205–207 e concat´nation e chaˆ ınes. 154 coloriage. 195. 86–89 Tangent. 166 hex. 187 sur des listes. 251 d´nominateurs. 65 coefficients. 174 sur des expressions. 142 conformal. 144 cylinderplot. 174 courbes dans l’espace. 276 convert. 216 rational. 66–72. 65 collect distributed. 14 list. 209 d´finition. 105. 183 e e e d´riv´es. 230 e continuit´. 124 combine. 232 mixtes. 106 et fonctions param´e triques. 158 combiner des listes. 233 e d´saffectation. 194. 275 binary. 70. 237. 32 suites d’expressions. 35. 21 conditions initiales. 194. see noms de commandes sp´cifiques e compter. 194 convertir. 167 polynom. 127 et fonctions explicites. 31 concat´ner. 203 . 40 concat´nation. prolonger par. 89 Understand. 218. 138 coeff. 166 string. 137 conversion sous forme de listes. 276 ln. 195 sincos.

24 vides. 266 e e cˆt´ droit d’une ´galit´. 26 op´randes des. 73. 8 e solutions enti`res. 86 Digits. 270 tracer le graphique. 13 Dirac. 210 evaln. 200 ´valuation. 24 minus. 38 diff´rence. 238 e num´riques. 245 tracer le graphique. 60 e entiers gaussiens. 197 . 34 modulo m. 183 densityplot. 266 conditions initiales. 238 implicit. 7 calculs sur. 23 convertir en. 237 dsolve. 195 correspondances. 190. 266 de la chaleur. 75. 277 EDO. 39 oe e e ´quations diff´rentielles e e syst`mes d’. 268 ´quations e aux d´riv´es partielles. 159 d´velopper e des expressions. 39 oe e e cˆt´ gauche d’une ´galit´. 238 method=laplace. 247 e s´ries. 132. 86 diff. 65 denom. 245 dynamique classique. 257 DEplot3d. 239 startinit. 250 eval. 190 differentiation. 200 a assigned. 250 type=numeric. 256 EDP. 196 evalf. 196 du dernier nom. 15 ´quation e d’onde. 259 DESol. 269 empty_set. 64 dodecahedron. 25 entiers. 39 e commun. 7 commandes pour. 255 deux-points. 238 ´cart type. 211 divide. 73. 200 ` un nom. 8–9 pr´cision arbitraire. 10. 95 e echo. 25–26 e s´lectionner dans. 236 e e m´thode des transform´es de Laplace. 200 e compl`te. 137 DEplot. 140 dsolve. 28 Diff. 37. 78 e ordinaires. 186 e op´rations sur les. 263 display. 140 display. 196–207 e a ` un niveau. 73. 64. 39. 176 e union.Index • 299 d´nominateurs. 248 type=series. 236 erreurs d’arrondi. 236 explicit. 152 degr´ d’un polynˆme. 25 ensembles. 65 e o degree. 73 conditions initiales. 26 e intersection.

152 expand. e e 37. 12. 157 modulo p. 200 forcer l’´valuation compl`te. 20 d´finies par morceaux. 56. 278 e lecture de colonnes depuis. 201 et substitution. 264 e de coloriage. 184 ind´termin´es des. 34. 276 lecture de donn´es depuis. 183 e partielles. 47 et les guillemets. 19 arguments. 159 e frac. 263 fonctions a ` partir d’expressions. 15. 286 A en L TEX. 51 affectation. solve. 167 sur le mˆme d´nominateur. 193 evaln. e 231 rationnelles factoriser. e 274 fieldplot. 288 ExportMatrix. 15–16 e prolongement par continuit´. 197 proc´dures.300 • Index en un point. 284 en RTF. 159 fsolve. 39. 13 e retard´e. 138 fonction de Heaviside. 154 feuilles sauvegarder. 154 forme normale factoris´e. 11 Expand. 108 math´matiques. 197 tables. 201 e ´valuer e des variables locales. 197 exp. 30. 283 XML. 8 factorisation. 261 fonction delta de Dirac. 169 fractions d´nominateurs de. 34 vs. 282 en texte Maple. 124 discontinues tracer le graphique. 188 e e non ´valu´es. 10. 278 ExportVector. 157 factor. 101–148 . 183 e num´rateurs de. 188 Factor. 197 num´rique. 65 factorielle. 200 matrices. 197 e tableaux. 287 en texte. 221 graphiques. 39. 274 lecture de commandes depuis. 184 e requˆte sur le contenu des. e 187 types des. 282 fichiers ´crire des colonnes dans. 51 identification de. e e 198 niveaux. 157 factoriser. 201 e e op´randes des. 278 expressions convertir en fonctions. 34. 150 exporter en HTML. 285 en HTML avec MathML.

116 surfaces param´triques. e 114 sur un axe logarithmique. 134 titres. 138 courbes dans l’espace tridimensionnel. 115. 138 e graphiques param´triques 2-D. e e e 288 de densit´. 201 guillemets anglais. 129. 138 courbes param´triques. 137 contours. 211 annotations. 288 fonctions de coloriage. 194. 124 conformes. 112 e styles de points. 137 e domaine. 113 e courbes dans l’espace. 119 e e couleurs. 256 EDP. 124 objets. 116 cartes topographiques. sp´cifier. 116. 103 3-D. 140 pilotes. 121. 118 cylindres. 31 hastype. 194 e singularit´s. 121 cylindres. 275 Matrices. 120 e guillemets. 132 afficher les coordonn´es. sp´cifier. 103 e cylinderplot. 139 afficher. 120 e sphereplot. 117 e surfaces. 124 fonctions discontinues. 136 surface color´e. see animations. 207 tourner. 288 ee listes de nombres. 142 tracer des points. 132 raffiner. e 120 tangente. 188 . 109 e sph`res. 116 tubes. 135 imprimer. 134 bordure (bounding box). 122 dans des fenˆtres s´par´es. sp´cifier. 107 e sph`res. 135 e e ins´r´s. 139 mod`les d’´clairage. 112 styles de lignes. 119 styles de lignes. 123 s´ries.Index • 301 graphiques ´chelle e de type constrained. 111 translater. 104 root loci. 101 e algorithme adaptatif pour. 137 coordonn´es polaires. 269 exporter vers un fichier. 117 EDO. 288 plusieurs. 116 fonctions implicites. 129. 138 coloriage. 89 texte. 101. 118. 137 champs de vecteurs. 288 in´galit´s. 105 e coordonn´es sph´riques. 122 en coordonn´es polaires. 124 e e niveaux de gris. 113 tracer plusieurs courbes. 108 fonctions explicites. 142 tridimensionnels. 115 animations.

188 inequal. 91 listes. 229 e int´grales. 12 map. 182 lightmode. 124 Limit. 251 majuscules-minuscules. 188 e e indets. 174 map2. 66. 199 inttrans package. 181 lhs. 38. 276 de colonnes. 38 d´sordonn´s. 158. 292 ıte champ de saisie. 280. 276 de fichiers. 276 length. 135 infolevel. 25 loglogplot. 176 e trier. 289 HTML. 91 e interface echo. 295 Display. 22 e s´lectionner dans. 145 Maple Graphics Gallery. 169 int´grales. 277 verboseproc. 23 e e op´randes des. 32. 39. 227 ind´finies. 139 HP Laserjet. 212 LinearAlgebra. 136 logplot. 91 limites. 143 Hint. 70. 242 A L TEX. 87–89 histogrammes. 22 combiner. 174 Maple Animation Gallery. 25–26 e ordonn´es. 135 ImportMatrix. 22 ee ´l´ments de. 97. 24. 178 convertir en. 211 isolve. 145 Maple Application Center. 291–296 maplets activer. 186 e op´rations sur les. 87. 71. 66. 70. 179 vides. 296 Maplets. 145 Maple Introductory Programming Guide. 243 is. 136 Loi du refroidissement de Newton. 239. 284 lecture de code. 230 d´finies. 274 imprimer des graphiques. 168 implicitplot. 195 correspondances. 180 isolate. 168 retirer.302 • Index Heaviside. 72. 294 ComboBox. 295 e auteur. 60 Java Runtime Environment. 274 de commandes. 292 boˆ de dialogue. 294 arrˆter. 171 voir. 293 . 293 laplace. 288 ind´termin´es. 285 hypoth`ses e poser. 242 invlaplace. 87. 229 e de Riemann. 170. 227. 261 hemisphere. 230 e constantes des.

295 e raccourcis. 12 e e vs. 39 e numer. 270–271 pi. 262 op. 276 matrixplot. 184 op. 18 nops. 140 objets graphiques.Index • 303 disposition. 226 op´randes e de listes et d’ensembles. 183 e num´rateurs. 12– ` 14 pr´cision par d´faut. 81 utiliser des commandes dans les. 15 mods. 95 msolve. 9–11 nommer. 184 e op´rateur idem. 264 oleplot. 197 e nombre d’op´randes. 40. 68. 292 e fermer. 280 mod. 295 e travailler avec. 140 odeplot. 184 s´lectionner. 9–11 nombres complexes. 248. 294 utilisateur. 40. 12–14 nombres imaginaires. 152 e factorisation. 79 num´rateurs. 295 red´marrer. 264 graphiques. 176 niveaux d’´valuation. 291 e fenˆtre. 62 color color. 12 piecewise. 14 d´velopper. 292 Elements. 25 e noyau. 184 nombre de. 97 e Order. 80 liste des. 37 expanded. 294 listes d´roulantes. 8 e optimisation lin´aire. 108 plex. 40 e nombres a virgule flottante. 93 matrices ´valuer. 286 Matlab. 184 normal. 139 max. 251 packages charger. 15 modulo. 39. 40. 157 mod`les d’´clairage. 183 objet graphique. 197 e Transpose. nombres a virgule flot` tante. 79 PDEplot. 60 mul. nombres rationnels. 19 e notation indic´e. 113 plot . 293 exemple de l’int´gration. 160 notation fl`che. 292 MathML. 14 e nombres d´cimaux. 14–15 moyenne. 186 des expressions. 226 mise en page. 14 nombres rationnels. 124 e e modp. 23. 7–10 vs.

exacts vs. 65 e division de. 157 read. 139 RootOf. 41. 289 e pr´cision entiers. 129. 49 e e rationalize. approximae tifs. 114 symbolsize. 63 o remember tables. 116 axes. 177 restart. 171 e rhs. 114 symbol. 114 title. 140 plusieurs assignations. 187 supprimer les occurrences de. 39. 9 r´soudre e ensembles d’´quations. 130 legend. 232 r´sultats. 112 discont. 131 grid.304 • Index color. 56 e r´currences. 8 print. 131 linestyle. 45 e ensembles de variables. 46. 194 plot3d. 109. 61 e solutions enti`res. 197 e afficher. 63. 47–49 e in´galit´s. 201 retirer des hypoth`ses. 89 rotate. 113 polynˆmes. 277 relations accessoires. 63 remove. 111 plusieurs graphiques. 60 num´riquement. 61–66 o coefficients de. 280 o reste de polynˆmes. 33. 21 plusieurs courbes dans un graphique. 130 labelsfont. 123 lightmodel. 128 arrow. 49 e e modulo m. 63 factoriser. 124 shading. 63 e retarder l’´valuation. 198 prolonger par continuit´. 112 numpoints. 154 regrouper les termes. 61 e rem. 124 plots animate. 164–166 PostScript. 45 et v´rifier. 55. 111 labels. 63 ee trier les ´l´ments. 132 point-virgule. 192 relations de r´currence. 55 Roots. 27 proc´dures e ´valuer. 142 . 28 pointplot. 152 reste. 65 e d´velopper. 63 quotient polynˆmes. 125 animate3d. 231 e quo. 117 style=line. 60 e syst`mes d’´quations. 115 style=hidden. 288 plottools. 140 plotsetup. 150 degr´ de. 182 rootlocus.

33. 191. 120 e sphere. 192 subsop. 252 seq. 184. 26 ´valuer. 197 e tables de rappel. 89. 29. 20 sum. 250 stats. 232 Tangent. 189 sph`res. 92 rsolve. 138 specfunc. 193 substitutions. 228 sort. 227. 214 type. 86–91 subs. 86–89 s´lectionner e dans des listes et des ensembles. 33. 97 simplifications. 49 param´triques.Index • 305 RowSpace. 188 realcons. 32–35 au moyen des relations accessoires. 163. 30. 68 simplex. 62. 187 op´randes. 210 solutions multiples. 123 sqrt. 46 e solve. 143 Student Calculus1. 184 e s´ries. 287 Rule. 65 sommes de Riemann. 119 spirales. 136 seq. 176 has. 201 supprimer l’affichage du r´sultat. 192 e avec hypoth`ses. 61 RTF. 109 e NewtonQuotient. 89 . 30 ´valuer. 175 series. 41. 107. 194 o s´ries de Taylor. 193. 176 des constantes r´elles. 188 hastype. 28 ee correspondances. 163 singularit´s. 38 imprimer. e 28 tableaux. 279 select. 188 selectremove. 164–166. 278 save. 278 matrices. 40 spacecurve. 28 e sauvegarder listes de nombres. 253 s´parateurs de commandes. 219 vs. graphiques. 141 sphereplot. 197 e choisir les ´l´ments. 177 semilogplot. 190 suites d’expressions. 161–164 au moyen des relations accessoires. 33 simplify. factor. 27 tables. 94 stellate. 179 sous-expressions. 29. e 251. 245 e convertir en polynˆmes. 89 tangente tracer le graphique. 201. 215. 214 e des sous-expressions. 41 e e sp´cifier les r`gles. 278 tableaux de nombres. 11 startinit.

62. 280 texte Maple. 177. 8 e TEX. e 115 transform´es de Laplace. 283 texte. 164–166 par degr´ total. 194. 243 translate. 184 XML. 92 verboseproc. e 180 des listes. 134 titres de graphiques. 179 des polynˆmes. 179 en ordre num´rique.306 • Index tests de primalit´. 20 e unapply. 51. e 242 inverse. 276 triangle de Pascal. 179 e les ´l´ments d’une expresee sion. 92 e transpos´e de. 211 Understand. 166. exporter. 87 variables locales. 129. 175 trier d´finir une relation d’ordre. 200 e vecteurs. 62 o en ordre lexicographique. 181 tubeplot. 138 type. 165 e par longueur. 188 specfunc. 282 textplot. 207 tourner des graphiques tridimensionnels. 116 trac´ adaptatif de graphiques. 178 . 142 Transpose. 134 textplot3d. 189 types de donn´es. 288 zip. ´valuer. 199 whattype. 238.

Sign up to vote on this title
UsefulNot useful