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

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

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. e e Maple. leurs c a ee chiffriers et mˆme leurs langages de programmation tel FORTRAN.1 Introduction ` Maple a On appelle le logiciel Maple un syst`me de calcul symbolique. 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 ). 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. ´quations diff´rentielles et probl`mes e e e e e e d’alg`bre lin´aire. e e sait ´galement manipuler les expressions et les symboles sous-jacents. Les chercheurs de plusieurs domaines consid`rent ´galement Maple e e comme un outil essentiel a leur travail. En compl´ment a ces op´rations symboliques. 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. et un lane e e gage de programmation complet et accessible permet le d´veloppement sur e mesure de nouvelles fonctions et applications. 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. tout en demeurant capable d’´valuer des expressions num´riques. une vaste e e e ` e gamme de routines graphiques facilite la visualisation de donn´es math´e e matiques complexes . int´grales. ´voquant e e ainsi sa capacit´ ` manipuler l’information de mani`re symbolique ou e a e alg´brique. des algorithmes num´riques fournissent des r´ponses e e approxim´es aux probl`mes ne poss´dant pas de solution exacte. Maple est en effet tout indiqu´ pour ` e 1 . contrairement aux logiciels math´matiques stane e dard. leurs calculatrices. e e e Les utilisateurs de Maple ont trouv´ plusieurs mani`res d’utiliser son e e langage et ses feuilles. En effet.

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. les documents Maple peuvent ˆtre e structur´s en utilisant des outils modernes tels les styles. deux grandes cat´gories d’utilisation dominent. Plutˆt que de e o s’astreindre a des manipulations alg´briques fastidieuses. 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 . Chacun utilise Maple d’une mani`re toute personnelle selon ses bee soins . il est possible d’en apprendre beaucoup sur e e un probl`me. 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 . son interface documente les ´tapes de e e e sa recherche d’une solution. la division en e sous-sections et les hyperliens. Plusieurs types de documents peuvent profiter des caract´ristiques e des feuilles Maple. mais ´galement faciles a mettre a jour. il est facile de les traduire en d’autres formats comme A L TEX. Par exemple.2 • Chapitre 1: Introduction ` Maple a la formulation. e La seconde cat´gorie utilise Maple en tant que syst`me de cr´ation e e e de documents techniques. 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 . cependant. ou mˆme d’en ins´rer une nouvelle. l’essai d’une m´thode de r´solution e e e n´cessite parfois plusieurs heures et plusieurs pages. facilement et efficacement. Elle permet aussi de modifier ais´ment l’une e de ces ´tapes. 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. structur´s et dynamiques ou de modifier une ´quation et d’ace e tualiser sa solution automatiquement. et permet le calcul et le trac´ e e e de graphiques sur demande. De plus. 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. cr´ant ainsi des feuilles qui sont non seulee ment claires et faciles a cr´er. e e lorsqu’on travaille sur un probl`me. Le langage math´matique naturel e de Maple facilite l’entr´e des ´quations. les hyperliens autorisent la cr´ation de r´f´rences dynamiques qui am`nent le lecteur aux pages renfermant de l’information e . Traditionnellement. leurs ´tudiants ` e e peuvent ainsi se concentrer sur les concepts fondamentaux. Les professeurs emploient Maple en classe. 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. ` e e ` ` Puisque les composantes des feuilles sont directement associ´es a la struce ` ture du document. RTF ou HTML. Il est en effet possible de cr´er des documents e interactifs. la r´solution et l’exploration de mod`les math´matiques.

1 Les autres manuels • 3 compl´mentaire. Vous trouverez ´galement des exemples que vous poue vez copier. Ces quelques concepts simples vous permettront e d’utiliser Maple a son meilleur. e e 1. mais ´galement sur le trac´ de graphiques. Une e ` attention particuli`re est plac´e non seulement sur la recherche de solue e tions. les commandes et les m´thodes mises a votre disposition. 1 .1. ` Consid´rez ce livre d’abord comme un guide . l’aide en ligne constie tuera votre manuel de r´f´rence. puisque l’on peut y rechercher ee de l’information de plusieurs mani`res et qu’il se trouve toujours accese sible. 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. Plus important encore. et introduisant les obe e jets Maple. En effet. Ce livre constitue votre introduction a Maple. la cr´ation d’animations e e e et l’exportation de feuilles en d’autres formats. il pr´sente la philosophie et les m´thodes d’utilisation sugg´r´es par les e e ee concepteurs du syst`me. 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. Enfin. 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.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). coller et ex´cuter imm´diatement. la nature interactive de Maple permet de calcue ler et de r´pondre a des questions durant une pr´sentation. 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. le syst`me d’aide de Maple se r´v`le plus pratique que tout autre e e e texte traditionnel. 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. Ce manuel vous donnera un aper¸u des fonctionnalit´s de Maple. ou pourquoi une modifie e cation a un processus de manufacturation entraˆ des pertes ou engendre ` ıne des profits.

Le Guide d’introduction a la programmation (Introductory Program` ming Guide) pr´sente les concepts fondamentaux de la programmation e sous Maple : les expressions. le d´bogage et e e e e e les Maplets.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. les entr´es-sorties. les entr´es-sorties. les graphiques et le code e e compil´. A l’int´rieur. le Guide de programmation avanc´e (Advanced Programming e Guide) couvre des concepts de programmation comme les modules. sur le tour guid´ du logiciel (New User’s Tour ). les proc´dures. les boucles et les e m´canismes de d´cision. la programmation num´rique. les structures de donn´es. sur e les exemples de feuilles de travail ainsi que sur le site Web de Waterloo Maple. 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. e . Enfin.

Des renseignements sur les calculs symboliques de base et les commandes d’affectation suivent. Ce chapitre explique les commandes n´cessaires pour commencer e a ` travailler. dans d’autres cas. Maple peut e fonctionner comme une calculatrice traditionnelle avec les entiers et les 5 . vous pouvez utiliser le syst`me d’aide en ligne. a Si vous souhaitez comprendre davantage les rouages du syst`me e Maple. du sujet sur lequel vous souhaitez obtenir plus d’information. Pour obtenir de e l’aide a propos d’une commande. ?commande 2.2 Math´matiques de base e avec Maple Ce chapitre commence par une discussion a propos des calculs num´riques ` e exacts avec Maple.1 Introduction Les calculs les plus simples dans Maple sont num´riques. Les chapitres subs´quents donneront a ces commandes ainsi e ` qu’` d’autres un traitement plus approfondi. ` 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. tapez simplement a l’invite Maple un ` ` point d’interrogation (?) suivi du nom de la commande ou. 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. qui diff`rent l´g`rement de ceux effectu´s par d’autres e e e e applications.

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

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

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

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

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

arcsin. . etc. 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. arccos. > (1 + x)^2. etc. LegendrePic.2 – Quelques fonctions math´matiques connues de Maple e Fonction sin. BesselY binomial erf.3 Calculs symboliques de base Maple sait comment travailler avec des inconnues et des expressions les contenant. LegendreEc. tanh. LegendreKc1. tan. exp ln log[10] sqrt round trunc frac BesselI. 2. BesselJ. cosh. LegendreEc1. BesselK.16 • Chapitre 2: Math´matiques de base avec Maple e Tab. etc. cos. arctan. sinh. erfc Heaviside Dirac MeijerG Zeta LegendreKc.

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

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. C’est pourquoi Maple vous e permet de nommer des objets. e e e 2. o > rem(x^3+x+1. x). e ` e > eqs := x = y + 2. nom := expression . 2+x Cr´ez une s´rie. e e > series(sin(x). terme := x y Vous pouvez mˆme donner des noms a des ´quations. x^2+x+1. 10). Appliquez la syntaxe suivante. ` > var := x. eqs := x = y + 2 .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. Vous pouvez affecter un nom a n’importe quelle expression Maple. var := x > terme := x*y.18 • Chapitre 2: Math´matiques de base avec Maple e Divisez un polynˆme en x par un autre. x=0.

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

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

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

b. Francois .c. data_list := [1. > lettres := [a. 5]. 2 x] > participants := [Simon. c.c].a. a. lettres := [a. e e > data_list := [1. Martin. [a. Francois. Sylvain].c. 3. [a.a]. b. 3 > h.c]. c]. 4. 2*x].b.a]. 2. b. une liste est une suite d’expressions encadr´e par des crochets. x2 + 3 x − 1. 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.b. e > [a. 5] > polynomes := [x^2+3.c].b. 4. 3. b. polynomes := [x2 + 3. Sylvain] Ainsi.a] et [a. x^2+3*x-1. e e ee Ainsi. [a. Martin. c. Kim. [b.c. participants := [Simon. Kim.a] sont trois listes diff´rentes. c] . [a.a. [b. 2. e Maple conserve l’ordre et la r´p´tition des ´l´ments dans une liste.c.b. [b. 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. a].22 • Chapitre 2: Math´matiques de base avec Maple e > f.

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

Pi/2.a}. {1. nombres). c.d. 2 Pour plus d’information. incluant les op´rateurs e e de base de l’intersection et de l’union en utilisant la notation intersect et union. Pi}. 2. nombres := {0.24 • Chapitre 2: Math´matiques de base avec Maple e > {1.c} intersect {0. > nombres := {0. 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. > {a. tout comme ils le sont en math´matiques. 2.e}. g( π)} 3 2 . {1. > map(g.1. a} La commande nops compte le nombre d’´l´ments d’un ensemble. b. π. g( π).y. e} > {1.b. {a. tout ee comme pour une liste.3. 1 1 π. π} 3 2 1 1 {g(0). Souvent utilis´e.a. > nops(%). e e Maple fournit plusieurs op´rateurs ensemblistes. d. 2.0} Les propri´t´s que revˆtent les ensembles font de ceux-ci des outils paree e ticuli`rement utiles dans Maple. consultez la section Les commandes nops et op de la page 40. 2. Pi/3.c} union {c.0}. la commande map s’av`re tr`s utile pour les ene e e sembles. g(π).2.b.

1. nombres). 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. Josee]. 6. • 25 {0. . ` > participants := [JeanSebastien. 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. Sophie.5 Les principaux types d’objets Maple > map(sin.2. 6. 3. 7} > member(2. Josee] > member(Sophie. data_set). participants). Sophie. utilisez la notation indic´e ee e [n ] . u e ee e e > participants[2]. o` n d´signe la position de l’´l´ment d´sir´ dans la liste. data_set := {3. true > data_set := {5. ee > empty_set := {}. false Pour choisir des ´l´ments depuis une liste. 7}. 5. participants := [JeanSebastien. Sophie Maple reconnaˆ les ensembles et les listes vides (qui ne contiennent ıt aucun ´l´ment).

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

carres > print(carres). > carres[2]. []) . carres[2] := 2^2.8. ee e e > cubes := array( 1. 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. cubes := [1.3). > pwrs := array(1. carres[3] := 3^2. [1. Cependant. 9] Le tableau pr´c´dent ne poss`de qu’une dimension.5 Les principaux types d’objets Maple • 27 Assignez des ´l´ments au tableau.. 27] Vous pouvez choisir un seul ´l´ment en utilisant la notation appliqu´e ee e aux listes..3. pwrs := array(1.3. effectuez toutes ces op´rations en mˆme temps.3. si vous pr´f´rez.2. 8. [1. > carres[1] := 1. 1.1. les tableaux peuvent en avoir plus d’une. D´finissez un tableau e e e de dimensions 3 × 3. > carres. en e e e g´n´ral. Pour afficher le contenu e ` du tableau. 4 Vous devez d´clarer les tableaux a l’avance...27] ).. vous devez utiliser une commande comme print. 4. carres 1 := 1 carres 2 := 4 carres 3 := 9 Ou.3.

. pwrs[2.1]. pwrs[1. 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. [3. Assignez d’abord les ´l´ments de la premi`re rang´e.3] := 1.1. [2.3]. > pwrs[2. 1 := 1 pwrs 1.3] := 8: pwrs[3. pwrs[1.4.1] := 1. tout comme le point-virgule.). Le e deux-points. pwrs 1.28 • Chapitre 2: Math´matiques de base avec Maple e Ce tableau est de dimension deux (deux ensembles d’indices). 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. Si vous pr´f´rez. Pour ce faire. > pwrs[2.27]] ).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. vous ee pouvez terminer chaque commande par le deux-points (:) plutˆt que par o le point-virgule habituel (. Ainsi.2] := 9: pwrs[2. est un s´parateur de come mandes. 2 := 1 pwrs 1. [[1.2] := 1.8]. ee e e > pwrs[1.3.2] := 4: pwrs[3.9. .1] := 3: > print(pwrs).1] := 2: > pwrs[3. 3 := 1 Poursuivez maintenant avec le reste du tableau. pour supprimer l’affichage du r´sultat. 1.3.. vous pouvez d´finir le tableau pwrs de la mani`re suie e vante : > pwrs2 := array( 1.

8]]] ). 2) = 4 (2.. > [[[1.6].4]]. Sa syntaxe de base est la suivante : subs( x =expr1. 1. 1. cependant. utilisez la commande subs. pour certaines commandes. 2) = 6 (2.. 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.2. e > expr := z^2 + 3.2.2. expr := z 2 + 3 . 2. ceux e a qui contiennent plus de deux dimensions sont difficiles a afficher.2. Pour effectuer des substitutions de ce genre. 1.2. y =expr2. 1.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 ... 1...[3..[7.2]. Si vous ` le souhaitez. 1) = 7 (2.2. 1. [[5. e ee vous devez sp´cifier que vous souhaitez effectuer une op´ration sur les e e ´l´ments. ee Supposons que vous souhaitez remplacer chaque apparition du nombre 2 dans pwrs par le nombre 9. . 2) = 2 (1. 2) = 8 ]) Maple n’´tend pas automatiquement le nom d’un tableau a la e ` repr´sentation de tous ses ´l´ments. expr_principale ) Par exemple. 1) = 3 (1. 2. supposons que vous souhaitez remplacer z par x + y dans une ´quation.2. 2. e e e > tableau3 := array( 1. Ainsi. .   tableau3 := array(1. 1) = 5 (2. [ (1. 1. 1) = 1 (1.

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

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]

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

ln(x). −1. > map( f. ` > map( f. data_list). y). 2 π] 2 2 [0.c]. x. y)] Par exemple. [a. f(b. x ] dx dx dx . f(b).b. Mˆme s’il est possible d’´crire des e e e boucles dans un programme pour accomplir ces tˆches.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. x. 1. 2*Pi]. 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. l’une des plus puissantes fonctions de Maple. ln(x). ln(x). 3*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.c] ). y). fcn_list := [sin(x). x. [ d d d 2 sin(x). 1 3 π. x2 ] > map(Diff. 0] Si vous donnez a la commande map plus de deux arguments. y ). > map(sin. pour d´river chaque ´l´ment d’une liste par rapport a e ee ` x.x^2]. Pi/2. x. π. des ene sembles et des tableaux. Maple ` passe les derniers a la commande initiale. [f(a). f(c)] > data_list := [0. data_list := [0. Elle fournit un moyen commode de g´rer plusieurs e solutions ou d’appliquer une op´ration a chaque ´l´ment d’un tableau. [a.b. [f(a. f(c. x). Prenez le e e temps n´cessaire pour vous assurer que vous connaissez bien l’utilisation e de map. fcn_list.

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

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

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

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

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

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

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. {u=1. e e e > eval( s2. y. e e > s1 := solve({eqn1.t.t=1} ). > s2 := solve({eqn1. y.z. z. t = −11. > eval( [x.y. z = −1. e e Puisqu’il est impossible de fixer l’ordre des ´l´ments dans un ensemble.eqn2.z= .z]. s2 ). ee solve ne retournera pas n´cessairement les solutions dans l’ordre x. { x. essayez e ee la commande suivante.eqn2. {x. 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. + 12 t + u. ainsi.u}). [− 28 635 70 70 59 527 − 7t − u. z}). ´valuez la solution en u = 1 et t = 1. 527 28 70 59 − 7t − u.eqn3}. Par exemple.y. supposons que vous n´cessitiez que les cinq solutions trouv´es par solve soient plac´es dans un ordre particulier. y = 3.eqn3. {x = −646 −220 861 . − − 7 t − u] 13 13 13 13 13 13 . e Cependant. u = 16} Vous pouvez ´galement choisir de r´soudre pour un sous-ensemble des e e inconnues .eqn5}. les listes pr´servent l’ordre de leurs ´l´ments .y= } 13 13 13 ` e Tout comme a la page 47.eqn4. z = − − 7 t − u. Maple retourne ensuite les solutions en fonction des autres inconnues. s1 := {x = 2.

1) Pour transformer l’expression en une fonction. t=0. il faut utiliser une autre commande tr`s importante. Par souci de commodit´. x.. s2 ). axes=BOXED). y). unapply. y = y(u. et non une fonction. Ainsi. 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). Souvenez-vous que vous pouvez facilement choisir l’expression d’une solution pour une variable particuli`re en utie lisant eval. il suffit de fournir a e ` ` unapply l’expression et les variables a partir desquelles Maple doit faire une fonction.2.. > eval( x. par exemple. e > plot3d(%. > x(1. Cette possibilit´ est particuli`rement utile lorsque vous souhaitez e e tracer la surface qui repr´sente la solution. cela est une expression pour x.3.1). d´finissez x = x(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(1. Pour ce faire.-`-d. − 28 527 − 7t − u 13 13 Cependant. t) et z = z(u. .1 R´solution au moyen de solve e • 51 Non seulement cette commande a fix´ l’ordre des solutions. > f := unapply(x^2 + y^2 + 4. t) (c.2. t). convertise e a sez les solutions en fonctions). u=0.

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

z := (u. z(1. plutˆt que de d´finir x. t). • 53 − 59 70 − 7t − u 13 13 > z := unapply(%. Pour commencer. f(0)=0}. t) → − > y(1. z. ` > s3 := dsolve( {diff(f(x). 70 59 − 7t − u 13 13 861 −220 .1). assignez e un nom a la solution.x)=6*x^2+1. y. y et z en tant que fonco e tions. − − 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 := . {f(x)} ). + 12 t + u. dont la section 3. elle ne peut cr´er de fonctions. e Le prochain exemple comprend la r´solution d’´quations diff´rene e e tielles. u.1). Par exemple.1 R´solution au moyen de solve e > eval(z. Cependant. > x. rappelez-vous que meme si cette commande est utile pour rapidement assigner des noms aux solutions. La commande assign est utile pour assigner des noms aux expressions. − 28 635 70 70 59 527 − 7t − u.3. e > assign( s2 ).s2). 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.6 discute plus en d´tail. .

f(x) := 2 x3 + x qui n’est pas du tout semblable a l’affectation ` > f := x -> 2*x^3 + x.54 • Chapitre 3: Trouver des solutions s3 := f(x) = 2 x3 + x > assign( s3 ). Il vous reste cependant a cr´er une fonction. 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 . 2 x3 + x . f (x) est e e simplement le nom de l’expression 2x3 + x. utilisez unapply. malgr´ les apparences. f (y) ou f (1). que l’on ´crive f (x). Appelez la fonction f en utilisant un argument autre que x. 2 x3 + x produit la r´ponse attendue . 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. cependant.s3). la seconde d´finit la fonction f : x → 2x3 + x de mani`re e e ` fonctionner. a e Pour d´finir la solution f comme une fonction de x. > f(1). ` e > f(x). e > eval(f(x). et non une fonction.

Maple retourne ses solutions a l’aide de la commande ` RootOf.4984277790 I}. > evalf(%). index = 1)}.2467292569 − 1. • 55 f := x → 2 x3 + x > f(1). index = 3)}.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.1 R´solution au moyen de solve e > f := unapply(%. {x = . En utilisant la commande evalf. {x = RootOf(_Z 5 − 2 _Z + 3.2467292569 + 1. {x = −. index = 4)}. {x = RootOf(_Z 5 − 2 _Z + 3. index = 2)}. {x = . {x = RootOf(_Z 5 − 2 _Z + 3.9585321812 − . 3 La commande RootOf ` A l’occasion. o` le param`tre index num´rote et ordonne les o u e e solutions. {x = −1. e .320816347 I}. e vous obtenez une forme explicite des racines complexes. {x = RootOf(_Z 5 − 2 _Z + 3. {x = −. e e et _Z est un nom g´n´rique pour x. Cela signifie que x est une racine e e du polynˆme z 5 − 2z + 3. e > solve({x^5 . {x = RootOf(_Z 5 − 2 _Z + 3. index = 5)} RootOf(expr ) est un nom g´n´rique pour toutes les racines de expr. 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). Consid´rons l’exemple suivant.423605849}.320816347 I}.9585321812 + .{x}).2*x + 3 = 0}.

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

{x = 4. • 57 {x = −.2 R´soudre num´riquement : fsolve e e > fsolve({poly}.6623589786 + . {x}. sp´cifier un e e intervalle peut aider Maple. e e vous pouvez augmenter la valeur de la variable sp´ciale.2*Pi). Remare e quez que dans l’exemple suivant. {x}). e . {x = 5.5622795121 I}.6623589786 − . > fsolve({cos(x)=0}. Dans ces situations.324717957}. mais il est fort e possible que vous deviez avoir recours a une solution num´rique en cas ` e d’´chec. {x = 1.5622795121 I}.57079632679489661923132169164} Les limites de solve La commande solve ne s’applique pas a toutes les situations.3. {x}. e > Digits := 30.333333333} Vous pouvez ´galement sp´cifier l’intervalle dans lequel chercher une e e racine en particulier.712388980} Dans plusieurs cas. e e ` Math´matiquement parlant. complex). Pour am´liorer la pr´cision de solutions. Digits := 30 > fsolve({cos(x)=0}. {x = 1. Maple e e e tente de les r´soudre symboliquement le mieux possible. {x = −. mˆme si une telle racine existe.. Pi. la solution trouv´e ne garantit pas une pr´cision de trente d´cimales . cependant. 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. fsolve peut ´chouer dans sa recherche d’une rae cine. 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. Digits. 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.

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

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

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

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

−x4 − x3 + x2 + x + 1 . 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. vous remarquerez qu’il demeure tri´ : ea e > sort_poly := x + x^2 . 1 1 2 √ x − 3x − 2 3 > (1 . 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. Plutˆt que de conserver une e e o deuxi`me copie du polynˆme original dont les termes ont ´t´ tri´s. Ainsi.I)*x + 3 + 4*I.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 .x^4. (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. si vous affichez le polynˆme apr`s l’avoir o e o e pass´ ` sort.sqrt(3)*x . sort _poly := x + x2 − x3 + 1 − x4 > sort(sort_poly).1/3.x^3 + 1 . les prochaines e o sections en examinent quelques-uns.

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

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.y^3. > divide(x^3 . poly := x2 + 3 x − 4 > eval(poly. true > rem(x^3 .y). > r := rem(x^3+x+1. x).4. 6 . 0 Vous ´valuez les polynˆmes en des valeurs comme avec n’importe e o quelle expression en utilisant la commande eval. x ). x . Parmi les op´rations les plus fondamentales.y^3. x=2). r := 2 + x > q := quo(x^3+x+1. La commande divide v´rifie la o e division polynomiale exacte. q := x − 1 > collect( (x^2+x+1) * q + r. x). il peut suffire de d´terminer si un polynˆme e o divise exactement un autre polynˆme.y. x^2+x+1. x). x3 + x + 1 Dans certaines situations. 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). Maple fournit les commandes rem et quo pour d´terminer le e reste (remainder en anglais) et le quotient d’une division polynomiale. > poly := x^2 + 3*x . x . x^2+x+1.

mul _var _poly := y 2 x − 2 y + y x2 + 1 > eval(mul_var_poly.3.3*z + 1. z^2).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 .2*y + x^2*y + 1.4 Les polynomes • 65 Tab. 3. −1 > degree(poly. 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. o e e .x=-1}).z).z^2 + 2*z . poly := 3 z 3 − z 2 − z + 1 > coeff(poly. {y=1. e > poly := 3*z^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.

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

5 Le calcul diff´rentiel e • 67 Tab. > f := x -> (x^2-2*x+1)/(x^4 + 3*x^3 .5 Le calcul diff´rentiel e Maple offre plusieurs outils puissants permettant la r´solution de e probl`mes de calcul diff´rentiel. 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(%). 1 8 . f := x → > Limit(f(x). x=1). Calculez la limite d’une fonction rationnelle lorsque x tend vers 1.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.3. 3. Par exemple.7*x^2 + x+2). il est utile pour calculer les e e limites des fonctions.

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

. -2. -2.6 0. x=0).8–0.6–0.. p}. on remarque l’am´lioration escompt´e de e e e e e la pr´cision de l’approximation.2). • 69 p := 4 x − 38 3 421 5 x + x 3 30 > plot({f(x).1.4 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.x=-1. x=-1..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.1. 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).polynom).5 Le calcul diff´rentiel e > p := convert(fs1. Order := 12 > fs1 := series(f(x). e > Order := 12.3. p}.2).4–0. 2 1 –1 –0. .2 0.polynom).20 –1 –2 0.

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

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(%). . Les r´sultats peuvent ˆtre calcul´s en une seule commande e e e e en utilisant respectivement diff et int. Par exemple.. x). 2 sin(2 a) + 3 b − sin(a) Consid´rez une int´grale plus compliqu´e. e e > g := t -> exp(-a*t)*ln(t). g := t → e(−a t) ln(t) > Int (g(t). e e e > Int(exp(-x^2). t=0. e e e a > Int(df. 2 1√ π erf(x) 2 ` A quelques occasions. et retourne donc un r´sultat inattendu. e e e recalculez l’int´grale pr´c´dente sur l’intervalle de x = 1 ` x = 2. e(−x ) dx > value(%). Maple ne peut d´terminer si une variable est e r´elle ou complexe.infinity). 2 sin(a x) + x cos(a x) a + 2 b x dx 1 > value(%).x=1.. Vous pouvez ´galement effectuer des int´grales d´finies.3.

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

le syst`me suivant form´ de deux ´quations simule e e tan´es du second ordre. 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. de_sys := { d2 d2 y(x) = z(x).x)=z(x).78 • Chapitre 3: Trouver des solutions > y := ’y’.x. x ). eee e > y := ’y’. e > de_sys := { diff(y(x).x. Maple produit automatiquement les constantes appropri´es _C1. soln). _C4.x)=y(x) }. y := y Maple peut ´galement r´soudre des syst`mes d’´quations diff´rene e e e e tielles . soln := { y(x) = −_C1 sin(x) + _C2 ex − _C3 cos(x) + _C4 e(−x) . z(x) = y(x)} dx2 dx2 > soln := dsolve(de_sys.. −_C1 e(−1) + _C2 e − _C3 sin(1) + _C4 cos(1) Vous pouvez d´r´f´rencer les solutions lorsque vous en avez termin´. diff(z(x). y := y . . e .y(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). {z(x). . y := x → −_C1 e(−x) + _C2 ex − _C3 sin(x) + _C4 cos(x) > y(1). par exemple.

e e e Le noyau est form´ de code C hautement optimis´ et totalise environ e e 10% de la taille du syst`me. e e package[souspackage][cmd] (. entrez le nom abr´g´ de la commande.3. Par exemple. Chacun e e des nombreux packages de Maple contient un groupe de commandes effectuant des calculs apparent´s. Ce noyau constitue la base du syst`me.. 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). suivi de la commande d´sir´e. Maple ne charge en m´moire que le noyau (en anglais e e kernel ) de son programme. 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 . La biblioth`que principale contient les commandes Maple les plus e fr´quemment utilis´es (excluant celles d´j` contenues dans le noyau).7 L’organisation de Maple Au d´marrage. 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.. 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 1. 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. Utilisez le nom complet du package. e e package [cmd ]( .) Puis. 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).7 L’organisation de Maple • 79 3. 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. e Les derni`res commandes de la biblioth`que sont les packages.. le nom complet du sous-package. La e e biblioth`que se divise en deux groupes : la biblioth`que principale (main e e e library ) et les packages. le package LinearAlgebra e contient des commandes pour la manipulation des matrices. ) Si le package poss`de un sous-package. ces groupes de fonctions se situent au-dessus du noyau.. Vous pouvez utiliser une commande d’un package de trois mani`res. utilisez le nom complet du pace kage.

.. e with(package[souspackage] ) Puis..) 3. e with(package[souspackage].. utilisez la commande with de e la mani`re suivante..) 2. e e cmd (. cmd ) Si le package poss`de un sous-package.80 • Chapitre 3: Trouver des solutions cmd (. Activez les noms abr´g´s pour toutes les commandes d’un package en e e utilisant la commande with. with(package ) Si le package poss`de un sous-package. entrez le nom abr´g´ de la commande. utilisez la commande with de e la mani`re suivante.. Activez le nom abr´g´ d’une seule commande d’un package. > with(Student[Calculus1]).) 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. cmd ) Puis. e e cmd (.. e e with(package. entrez le nom abr´g´ de la commande.

Tangent . ApproximateInt . NewtonQuotient . x Lorsque vous utilisez with(package ). 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. ArcLength. InversePlot . Summand . x = 0). 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 . e ea 3. GetMessage. Rule. RollesTheorem. RiemannSum. GetProblem. Pour obtenir une liste compl`te des commandes d’un package e en particulier. de manipulation et de traduction de proc´e e dures Maple en d’autres langages. GetNumProblems . Asymptotes . MeanValueTheorem.8 Les packages Maple • 81 [AntiderivativePlot . vous voyez apparaˆ une liste ıtre de tous les noms abr´g´s des commandes du package.8 Les packages Maple Les packages inclus dans Maple permettent d’effectuer des tˆches dans a de nombreuses disciplines. Show . FunctionChart . De plus. Clear . Understand . ShowSteps. Maple vous e e avertit lorsqu’il red´finit des noms d´j` existants. Ce package permet la diff´rentiation e . VolumeOfRevolution. SurfaceOfRevolution. CriticalPoints . du calcul diff´rentiel ´l´mentaire a la th´orie e ee ` e g´n´rale de la relativit´. consultez la page d’aide ?nomdupackage . DerivativePlot . e o e codegen Outils de cr´ation. NewtonsMethod . FunctionAverage. ShowIncomplete.3. Integrand . Undo. ExtremePoints . PointInterpolation. Roots . TaylorApproximation. InflectionPoints . e Liste des packages Vous trouverez la liste de packages suivante dans la page d’aide ?packages. WhatProblem] > Tangent(sin(x).

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

o . de l’addition de matrices aux vecteurs et valeurs propres. 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. e group Commandes permettant de travailler avec les groupes de permutations et les groupes finiment pr´sent´s. triangles ` et cercles. e e e e linalg Plus de 100 commandes de manipulation matricielle et vectorielle . d’affichage et de r´solution de e relations de r´currence lin´aire. e e Maplets Commandes permettant de cr´er des fenˆtres. LREtools Commandes de manipulation. e e e LinearFunctionalSystems Commandes qui permettent de r´soudre des e syst`mes lin´aires de fonctions avec des coefficients polynomiaux. des boˆ de diae e ıtes logue et d’autres interfaces visuelles qui interagissent avec l’utilisateur. calculer avec de grandes matrices nue m´riques et effectuer des op´rations d’alg`bre matricielle. e e e ListTools Commandes de manipulation de listes. Groebner Commandes pour les calculs en base de Gr¨bner . e e inttrans Commandes qui permettent de travailler avec les transformations d’int´grales et leurs inverses.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. outils de calcul pour les alg`bres de Ore et les D-modules. MathML Commandes qui importent et exportent des expressions Maple en texte MathML. 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.3. (Ce package est accessible seulee e ment si Matlab est install´ sur votre syst`me. e LibraryTools Commandes de manipulation et de traitement de biblioth`ques. en particuo lier. e liesymm Commandes servant a caract´riser les sym´tries de contact des ` e e syst`mes d’´quations aux d´riv´es partielles. Matlab Commandes qui exploitent plusieurs des fonctions matricielles num´riques de Matlab. lignes. incluant les valeurs et les vecteurs propres.) e e MatrixPolynomialAlgebra Ensemble d’outils de manipulation alg´e brique des polynˆmes matriciels. les e d´terminants et la d´composition LU.

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

Sumtools Outils permettant de calculer des formes ferm´es de sommes e d´finies et ind´finies. 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. Slode Commandes servant a trouver des solutions a des EDO lin´aires ` ` e sous forme de s´ries enti`res. Dans des versions e ` futures de Maple. les sommes de Riemann. Come e prend les algorithmes de Gosper et de Zeilberger. l’´cart type. Le premier de ceux-ci est Calculus1. o e Spread Outils permettant de travailler avec les feuilles de calcul dans Maple.3. stats Manipulation statistique de donn´es . de mˆme que des routines pour trouver les points critiques d’une expression. la visuae lisation de la m´thode de Newton. la e e longueur d’arc. sumtools Commandes de calcul de sommes d´finies et ind´finies. 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. e Student Sous-packages sp´cifiques a certains cours. de l’int´gration et du calcul des limites. e e SolveTools Commandes qui permettent de r´soudre des syst`mes e e d’´quations alg´briques.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. inclut des commandes pour e le calcul de la moyenne. e StringTools Commandes optimis´es de manipulation des chaˆ e ınes de caract`res. e a Calculus1 Commandes permettant de d´cortiquer les ´tapes de la e e e e diff´rentiation. les volumes de r´volution. simplex Commandes d’optimisation lin´aire utilisant la m´thode du sime e plexe. la e e variance et l’analyse de r´gression. les coefficients de corr´lation. e e tensor Commandes permettant le calcul tensoriel et ses applications a ` la th´orie g´n´rale de la relativit´. 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. et non le syst`me des nombres e e e e complexes. e e e e . ce package sera ´largi pour inclure d’autres souse packages li´s ` l’enseignement. e e Sockets Commandes permettant les communications r´seau avec Maple.

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. x). ` > Diff(4*x^2.Pi). e > Rule[sum](%). π x cos(x) + x dx 0 Utilisez la r`gle sum. d (4 x2 ) = 8 x dx Consid´rez maintenant cet exemple d’int´gration. Creating problem #1 d d (4 x2 ) = 4 ( (x2 )) dx dx Utilisez la r`gle power.. d’int´gration et de limites. Int´grez x∗cos(x)+ e e e x entre x = 0 et x = π. Creating problem #2 . x=0. e > Rule[power](%). remplacez e les deux points par le point-virgule a la fin de la commande. > Int(x*cos(x) + x. e e > with(Student[Calculus1]): > infolevel[Student] := 1: Pour voir la liste de toutes les commandes charg´es par Maple. Consid´rez le probl`me suie e e e vant : trouvez la d´riv´e de la fonction 4 ∗ x2 . d (4 x2 ) dx Utilisez la r`gle constantmultiple. e > Rule[constantmultiple](%).

sin(x)] Utilisez cet indice avec la commande Rule. x. π 0 π x cos(x) + x dx = − 0 sin(x) dx + 1 2 π 2 Servez-vous de la r`gle sin pour terminer le calcul. Sp´cifiez a Understand les r`gles de la constante. > Understand(Limit. [parts . power. de la puissance et de la somme pour le prochain exemple. e > Rule[power](%). sum). ‘c*‘.3. . e e e > Hint(%). π π 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. 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. π 0 x cos(x) + x dx = −2 + 1 2 π 2 Employez le package Student[Calculus1] pour calculer la limite de (1 + 1/x)x . constant. e > Rule[sin](%). de la e ` e constante multiplicative.8 Les packages Maple π π π • 87 x cos(x) + x dx = 0 0 x cos(x) dx + 0 x dx Utilisez la r`gle power. > Rule[%](%%).

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

> showtangent=true). output=plot.2.   rewrite. 3 ] 2 Vous pouvez calculer l’aire sous la courbe entre ces deux points au moyen de sommes de Riemann. x = x+1  1  1 1+ x > Rule[%](%%). . -2. Tracez-en le graphique. de mˆme e e que la pente de sa tangente en x = 0. > Tangent(-2/3*x^2+x..8 Les packages Maple • 89 x→∞ lim (1 + 1 x ) = e(limx→∞ x x ) x+1 > Hint(%). [0. TheTangenttotheGraphof f(x)=–2/3*x^2+x atthePoint(0. x=0. x→∞ lim (1 + 1 x ) =e x Consid´rez la fonction −2/3 ∗ x2 + x.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).3.

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

3/2 0 − 2 2 x + x dx 3 > value(%). 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. . . reporteze vous au chapitre 6. x=0. .  n−1 i=0 3 n→∞ 2 lim > value(%). n=infinity ). lorsque c1 v1 + c2 v2 + c3 v3 + · · · + cn vn = 0 alors c1 = c2 = c3 = · · · = cn = 0. v3 . v2 . 3 8 Pour plus d’information sur le calcul diff´rentiel avec Maple.3. e > Int(-2/3*x^2+x.  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. > Limit( %. un ensemble de vecteurs lin´airement ind´pendants e e e e qui engendrent l’espace vectoriel se nomme une base.8 Les packages Maple • 91 Prenez ensuite la limite lorsque n tend vers ∞. .. Le package LinearAlgebra En alg`bre lin´aire. vn } est lin´airement ind´pendant si et seulement si. . e ee e e Un ensemble de vecteurs {v1 .3/2 ).

−2. 1.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. e > b:=RowSpace(vector_space). c1 [1.v2. [5. −1.0> ). 0. 0]. 0. Exprimer le vecteur [1.0. La e commande RowSpace retourne une base pour un espace vectoriel donn´. 0. [0.v3>. 3. −1] + c3 [6. −2]] . −2. 1]. −5] par rapport a cette base. <0. 0. −3. 1] + c2 [5. 3. il forment une base. e e Pour v´rifier l’ind´pendance lin´aire.  1 −1 0 1 vector _space :=  5 −2 3 −1  6 −3 3 0 Si les vecteurs sont lin´airement ind´pendants.0. −1. −3. 3. 0. b := [[1. Ils ne peuvent donc pas former une base. ` Solution : Entrer les vecteurs. 0] = [0. −1]. −1] et [6. 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). > > > > > with(LinearAlgebra): v1:=<1|-1|0|1>: v2:=<5|-2|3|-1>: v3:=<6|-3|3|0>: vector_space:=<v1. 3.  −_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. 1. ´crivez l’´quation c1 v1 +c2 v2 +c3 v3 = e e e e e 0. 1. 2. 3.

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

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

.01. 01 sont suffisamment petites pour e ˆtre n´gligeables. .9125. > .01. 2) ].04. .9125. qui peuvent ˆtre de simples listes Maple. 0. 2). . 2).002 ].83.01. . .75. 1.83. . e ` > readings := [ Weight(. . .01. il est possible de les regrouper et de ne sp´cifier qu’un e e e intervalle (en utilisant “. .874.83.003.04. . 68. La diff´rence se comprend plus facilement au moyen d’un ee e e exemple. readings := [Weight(. 2)] Le sous-package describe contient des commandes servant a l’analyse ` de donn´es. > readings := [ 0.003. .04. marks est une liste standard.75. Weight(0.68. 45.9125. marks := [64.003.002. . . 82.75.01.83. > marks := > [64.874. 2). .”)..01.874.874.83.9125.75.45. .81.874.04.003.76. . . .93.83. Si des diff´rences de moins de 0.003.75. .003.874. 2). . 72. readings := [Weight(. readings := [. 75. Weight(1. .. . 2).8 Les packages Maple • 95 Le package stats traite les donn´es sous la forme de listes statise tiques .n ) indique que la valeur x apparaˆ n fois dans ıt la liste.04. Weight(1. . .75.72.002 ].9125. Weight(1..75.0. . > . 93. . Weight(. . e > describe[mean](marks). 2). . 1. 1.002.002] qui sont ´quivalentes a cette liste statistique. 2). Weight(1.01.75.73]. > readings := [ Weight(.04.3.75.01. 1. .82. 81. . 76.. Une liste statistique peut e ´galement contenir des intervalles et des valeurs auxquelles des poids ont e ´t´ assign´s. 2). > . 73] tout comme readings.002] L’expression Weight(x.9125.

. . −.08547526754. .625165927. . −1. .. −. 2. −.283733823. 1.140005385. −. . .96 • Chapitre 3: Trouver des solutions 729 10 > describe[range](marks).1529160443. −1.452138520.5].4128440679] > ranges:=[-5.7648245898. −.93 > describe[range](readings).4038750456 Ce package contient plusieurs distributions statistiques.0.03801888006. . −1. −. . G´n´rez des e e donn´es al´atoires en utilisant la distribution normale.1.2620109124. .6819890237.463572278. .1093403084. . 1.095665255. . random_data := [1.7487697029.-2. .599692668. −.09467224460..6341448687. −.005183053789. −. 45. .162605068. .2068680316. 1..0.7709242575.342701867.5872984199.-1. 1. −1. .8181350112. .6917100232.407989130. −.. −.1.4470293004.1238893314..6707087107..6385850228.8364873682. −. −. groupez-les en e e classes et tracez un histogramme de ces classes.7765483851.04721150696. 1.8670709448.3758638317. 2. −.01231563388.9886372087. −. −..002.1.583279600. −1.-2. .1729739933.01 > describe[standarddeviation](readings). ..3045008349.7304597374.858250470.3876183720.253885017. −.8876933468. .4386378394. > random_data:=[random[normald](50)].2. . .4908898750.2.1231141571.4996033128.-1.

. 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. − 2. Weight(0. data_list := [Weight(1. 1.. vous pouvez trouver la solution optimale. Vous devez ´galement vous rendre aux quatre endroits en moins de vingt minutes. 0. Weight(−1. Weight(2.. −2. Weight(−5. − 1. 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. 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. Vous souhaitez livrer e e toutes les quatre en utilisant le moins de carburant possible.8 Les packages Maple • 97 ranges := [−5. 6). 2.. e > with(simplex). L’optimisation lin´aire permet e de trouver des solutions optimales a des ´quations soumises a certaines ` e ` contraintes.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.0.2. − 2..1. −1. − 1. Imaginez-vous en livreur de pizza : vous devez livrer quatre pizzas en quatre endroits diff´rents dispers´s dans la ville. Weight(−2. .0. e e Voici un petit syst`me en guise d’exemple.1. 17)] > statplots[histogram](data_list). 20)..5] > data_list:=transform[tallyinto](random_data.. 5).3. 0). Un exemple classique d’optimisation est le probl`me de la livraison de e pizza.. e de mani`re que les pizzas demeurent chaudes.ranges). 2)..5...

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

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 pouvez interrompre ici votre ´tude pour travailler e (ou jouer !) avec Maple. 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.3. z = . A e e ` u ce point de votre lecture.9 Conclusion • 99 1 49 {x = 0. vous ne connaissez pas encore tout a fait ce ` logiciel. La section 3. e ` A votre guise.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. Que vous utilisiez ou non les commandes solve. y = } 2 8 3. ces m´thodes e e s’av`reront utiles a de nombreuses reprises.

100 • Chapitre 3: Trouver des solutions .

ıtre > plot( sin(x).5 –6 –4 –2 0 –0. la meilleure mani`re de mieux comprendre une structure e math´matique consiste a en tracer le graphique. Maple peut g´rer les formes e explicites.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. Maple peut produire e ` plusieurs formes de graphiques : en deux ou trois dimensions.4 Tracer des graphiques Quelquefois. anim´s ou e non. Maple doit connaˆ la fonction et son domaine. implicites et param´triques et exploiter plusieurs syst`mes de e e coordonn´es. 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 .2*Pi ). La flexibilit´ de Maple vous permet de manipuler ais´ment e e e des graphiques dans de nombreuses situations.1 Graphiques en deux dimensions Lorsqu’on lui demande de tracer une fonction donn´e explicitement y = e f (x). x=-2*Pi. 1 0. affichables selon n’importe quel angle. 4..

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

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

Voici le mˆme grae e phique pour lequel on a sp´cifi´ le param`tre scaling=constrained. 1 0. x=0. t=0. .5 –1 0.5 –1 –0. le graphique ci-dessus ressemble dao vantage a une ellipse puisque Maple.2*Pi ].5 –1 –0.5 1 Plutˆt que de produire un cercle.5 –0.3 ). scaling=constrained ).5 –0.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. sin(t). Le ` e graphique suivant est trac´ sans l’option constrained (unconstrained). d´forme le graphique ` e e pour lui faire prendre les dimensions de la fenˆtre... e > plot( exp(x).104 • Chapitre 4: Tracer des graphiques 1 0. > plot( [ cos(t). par d´faut. Il e e e est possible de changer l’´chelle des axes en utilisant les menus ou l’option e scaling.5 –1 0.

r est la distance du point a l’origine. vous devez d’abord appeler la commande with(plots). 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 x 2 2. peuvent ´galement e e ˆtre utilis´es. Pour acc´der a la forme abr´g´e de cette come ` e e mande.. (r. x=0. > with(plots): . Maple peut tracer une fonction en coordonn´es polaires a l’aide de e ` la commande polarplot. trac´ e avec l’option > plot( exp(x). θ). les coordonn´es polaires.5 3 Voici maintenant constrained. scaling=constrained). e e En coordonn´es polaires.3.1 Graphiques en deux dimensions • 105 20 18 16 14 12 10 8 6 4 2 0 0.5 1 1.4. le mˆme e graphique. et θ e ` repr´sente l’angle entre l’axe des x et la ligne passant par le point donn´ e e et l’origine.

2*Pi.5 1 Tout comme dans cette section a la page 103. polarplot( r-expr. angle =intervalle ) En coordonn´es polaires.. Voici le graphique de r = sin(3θ).5 –1 0. > polarplot( sin(3*theta).106 • Chapitre 4: Tracer des graphiques Figure 4. vous pouvez sp´cifier le cercle explicitement en e e entrant r = 1.5 –0.2*Pi ).5 –1 –0. 1 0. > polarplot( 1.. . le param`tre ` e scaling=constrained fait apparaˆ ıtre le cercle rond. scaling=constrained ). theta=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. theta=0.

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

4 0. x < 2. 1. Consid´rez par exemple la fonction suivante. -1..4 0. qui poss`de deux e e discontinuit´s en x = 1 et x = 2. f := x → piecewise(x < 1. r=0.108 • Chapitre 4: Tracer des graphiques 0. −1. 1 si 1 ≤ x < 2. f (x) =  3 sinon.5 –0. Voici comment d´finir f (x) dans Maple.7 ] ). 1.5 1 Voici le graphique de θ = sin(3r).3). > polarplot( [ r. x<2. x=0. 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. e > f := x -> piecewise( x<1. .2 –0. 3 ).2 –1 –0.. e   −1 si x < 1. sin(3*r).

> plot( 1/(x-1)^2.5 x 2 2.1 Graphiques en deux dimensions • 109 3 2 1 0 –1 0.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. x=0. 250000 200000 150000 100000 50000 –4 –2 0 2 4 6 x .5 x 2 2.4. x=-5.. 3 2 1 0 –1 0.5 1 1. La e e fonction x → 1/(x − 1)2 poss`de une singularit´ en x = 1. discont=true).6 ). L’option discont=true indique qu’il peut y avoir des discontie nuit´s.3.. e > plot(f(x).5 3 Maple dessine des lignes presque verticales pr`s d’un point de discone tinuit´.5 1 1.

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

y=-4. il suffit de e donner a la commande plot une liste de fonctions. x. cos(x).. diff(f(x). 1+x^2 ). . 1 + x2 ) > plot( [ f(x). > plot( tan(x).1 Graphiques en deux dimensions • 111 Maple dessine des lignes presque verticales pr`s des singularit´s . x>=0. discont=true ).. f := x → piecewise(x < 0. 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^4 ].. x)..2*Pi.. x=-2*Pi. > x=-2. vous e e devez donc utiliser l’option discont=true. cos(x). y=-10. x^2.10 ). diff(f(x).4.10. x) ]. x^3. 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. discont=true ).4. 0 ≤ x. ` > plot( [ x.2. x=-10.

. y=-0.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. > linestyle=[1. t=-1. > plot( [ sin(x)/x.5 –2 –1 –0. t=0. sin(x)/x et e linestyle=DOT pour la seconde fonction. sin(t).2*Pi ]. > [ t^2. scaling=constrained ).5..8*Pi. cos(x)/x ]. .5.5 –1 1 2 En utilisant diff´rents styles de ligne (par exemple continue ou poine till´e). > plot( [ [ 2*cos(t).. 1 0. cos(x)/x. t^3.1. x=0.4] ). e e Maple utilise linestyle=SOLID pour la premi`re fonction. Dans l’exemple suivant.1 ] ]. il est ais´ de distinguer diff´rentes fonctions dans un mˆme grae e e e phique en sp´cifiant le param`tre linestyle..

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

[2.3]. l’option e style=line oblige a tracer ces lignes. 0]. 16]] > pointplot(data_list). 2]. [−1. 3]. [3. 1].1]. [3. 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. symbol=cross. 4]] > pointplot(data_list_2.4]].114 • Chapitre 4: Tracer des graphiques data_list := [[−2. [2. 9]. [4. [0. style=line ). Vous pouvez ´galement utiliser les ` e menus pour indiquer a Maple de tracer les lignes. 4]. 1]. [4. 16 14 12 10 8 6 4 2 –2 –1 0 1 2 3 4 Par d´faut. [1. [2. style=point. [3. Maple ne relie pas les points par des lignes droites . . > symbolsize=16). ` > pointplot( data_list. 4]. data_list _2 := [[1. [4. 1].2]. > data_list_2:=[[1.

` Raffiner des graphiques Maple comporte un algorithme de trac´ adaptatif. > plot(sum((-1)^(i)*abs(x-i/10)...4.. x=-1. i=0.5 2 2.4.30).2 3 2. Il d´cide ensuite de calculer plus de e e e points dans les intervalles o` les valeurs fluctuent davantage. e Pour plus d’information.8 2.1 Graphiques en deux dimensions • 115 4 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´sultat.5 1 1 1. reportez-vous a la rubrique ?CurveFitting.5 3 3. on peut indiquer a Maple de calculer da` vantage de points. x=-1. > plot(sum((-1)^(i)*abs(x-i/10).4).30).. 3.4 3. u il peut arriver que cet algorithme adaptatif ne donne pas de r´sultats e satisfaisants. Cependant. i=0. Il calcule la valeur de e la fonction en un nombre raisonnable de points approximativement ´e quidistants dans l’intervalle sp´cifi´.5 2 1. > numpoints=500). .6 –1 0 1 2 3 x 4 5 6 Pour raffiner ce graphique.5 3 2.

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

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

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

Pour ´viter d’afficher la liste de toutes les commandes de e plots. Figure 4. tapez les deux-points plutˆt que le point-virgule. les coordonn´es sph´riques sont e e une autre option. e . la distance e e e du point a l’origine.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. vous devez d’abord appeler la commande e e with(plots). l’angle θ dans le plan xy depuis l’axe des x et l’angle ` φ depuis l’axe des z. 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 . En coordonn´es sph´riques.4. Pour acc´der a la forme e ` abr´g´e de cette commande. o > with(plots): Vous pouvez utiliser la commande sphereplot de la mani`re suivante.

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

param2 =intervalle ) Ici. theta-expr. t^2 ].1) dans le plan xy et z est la coordonn´e cart´sienne e e usuelle en z. phi-expr ]..2 Graphiques en trois dimensions • 121 sphereplot([ r-expr. > sphereplot( [ exp(s)+t..2*Pi. Figure 4. param1 =intervalle. θ = cos(s + t) et φ = t2 . t=-2. 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.4. cos(s+t). r et θ sont les cooronn´es polaires e e e (voir la section 4. r = exp(s) + t. > with(plots): Vous pouvez tracer les graphiques en coordonn´es cylindriques en applie quant la syntaxe suivante : .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. Ici. θ et z. > s=0.2 ).

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π. cylinderplot( [ r-expr.1 ). e a > cylinderplot( z. z =intervalle ) Voici une version tridimensionnelle de la spirale montr´e dans la sece tion 4.4*Pi. param`tre1 =intervalle. θ = s et z = cos(t2 ).. z=0.1 ).2*Pi.. z=-1. . angle =intervalle. theta=0. theta=0.122 • Chapitre 4: Tracer des graphiques cylinderplot( r-expr.1. Consultez la section Les graphiques param´triques de la e e page 118. e param`tre2 =intervalle ) e L’image suivante est un graphique de la fonction r = st.. > cylinderplot( theta. theta-expr. z-expr ]. cylinderplot accepte ´galement les graphiques param´triques.. Leur e e syntaxe est similaire a celle des graphiques param´triques en coordonn´es ` e e cart´siennes.

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

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

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). les graphiques apparaissent en noir et blanc. x=-5. > shading=none.3 L’animation Tracer des graphiques constitue une excellente mani`re de repr´senter e e l’information . sont e d´finies dans le package plots. x =intervalle. > with(plots): . Les deux e commandes utilis´es pour les animations. lightmodel=light1 ). 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. des images statiques ne mettent pas toujours en ´vidence certains comportements graphiques. e 4.y=-5. comme la d´formation e e d’une balle qui rebondit.5. animate et animate3d.. Dans le pr´sent manuel.4. e Essayez-les vous-mˆme pour voir les effets de la couleur. > plot3d( x*y^2/(x^2+y^4). 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. cependant. e e L’animation en deux dimensions Vous pouvez sp´cifier une animation bidimensionnelle selon la syntaxe qui e suit.. animate( y-expr. temps =intervalle ) Les images suivantes sont un exemple d’animation.

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

.2*Pi ].1 de la page 103). > animate( [ a*cos(u). L’option coords indique a la commande animate d’utiliser un syst`me ` e de coordonn´es autre que les coordonn´es cart´siennes. u=0.. e e e > animate( theta*t.8*Pi. . e L’animation de graphiques param´triques est ´galement possible (cone e sultez la section 4. coords=polar ). a=0.2 ). t=1. sin(u)..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..4.4. theta=0.

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

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

5 –1 Prenez note qu’en sp´cifiant le titre. 24] ). 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. the name changecoords has been redefined > sphereplot( 1. le style et la taille du titre au moyen de l’option titlefont.5 0 –6 –4 –2 2 x 4 6 –0. > with(plots): Warning. Consultez ?plot. Vous pouvez sp´cifier la poe lice. theta=0. TheSphere L’option labels vous permet de cr´er des ´tiquettes aux axes. Ce d´tail est tr`s important.options.. > titlefont=[HELVETICA. 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.130 • Chapitre 4: Tracer des graphiques PlotofSine 1 0. vous devez placer des guillemets e doubles (") aux deux extr´mit´s du texte..Pi. phi=0.2*Pi. BOLD. title="The Sphere". > scaling=constrained. Remarquez que les ´tiquettes ne doivent pas e .options ou ?plot3d.

linestyle=[1. > plot( x^2. e e > plot3d( sin(x*y). > 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. "width". "The Cosine Function"] ).3.5 .vertical] ). 2 8 6 2 2.5 velocity 1 time 1. > labels=["length". "velocity"].3*Pi/2. 0.1. x=-3*Pi/2.4 Annoter des graphiques • 131 forc´ment ˆtre identiques au nom des variables de l’expression dont vous e e tracez le graphique.1. y=-1.. > plot( [sin(x).8 height –0. e e e Dans le cas des graphiques tridimensionnels. x=0. labels=["time".. 4 0 0. axes=FRAMED ).4]. x=-1.. cos(x)].. vous devez donc les sp´cifier. > legend=["The Sine Function".5 3 Les ´tiquettes s’affichent seulement si les axes sont ´galement affich´s. "height"].4. les axes ne sont pas affich´s e par d´faut .

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

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

OBLIQUE.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. y-coord. .. Utilisez l’ope ee e tion font pour sp´cifier la police de caract`res employ´e pour l’affichage. -1. > with(plots): Vous pouvez utiliser textplot and textplot3d de la mani`re suivante. 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.5 –3 –2 –1 –0.c] ). y=-1.5 1 x 2 3 LocalMinimum –1 Consultez la rubrique ?plots. e textplot( [ x-coord. Le pae ee ckage plots contient ces deux commandes. "P"]. > d := plot3d( x^2-y^2. 0. "texte " ] ) .. x=-1.1.45] ).textplot pour obtenir plus de d´tails e sur la mani`re de placer les ´l´ments de texte avec pr´cision. 0. textplot3d( [ x-coord. 1.Pi ): b := textplot( [ Pi/2. y-coord.. 1 LocalMaximum 0. > font=[HELVETICA. Par exemple : > > > > a := plot( sin(x). orientation=[68. e e e Dans le graphique suivant. "Local Maximum" ] ): c := textplot( [ -Pi/2.1 ): > e := textplot3d( [0. est indiqu´e par la e lettre P . x=-Pi. "Local Minimum" ] ): display( [a. 22]. un point de selle.b.e]. "texte "] ) . z-coord. color=white ): > display( [d. l’origine.

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

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

x 4.4.5 –1 –0. 7.2+2*I ).1. > densityplot( sin(x*y).1e2 1.1e3 . . > conformal( z^2.1e4 ..1e5 .x=-10.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 . x=-1. des teintes plus claires indiquent une plus grande valeur de la fonction. y=-1.5 x 1 Le long des courbes suivantes. comme dans une carte topographique.5 –0. 1 y 0.. Dans un densityplot. 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.1 )..5 –1 0. la fonction sin(xy) est constante.10)..10. > contourplot(sin(x*y).. 2.y=-10.

t].sin(t).5 –1 –0.4*Pi.. 1 y 0... ` > spacecurve( [cos(t). e e > tubeplot( [cos(t). .1).. Maple gonfle la courbe pr´c´dente pour en faire un tube. le graphique ainsi form´ est un champ de vecteurs de e mˆme type qu’un champ magn´tique. y=-1. t=0.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 . x=-1.5 –1 0.5 –0.1.5 ). x*cos(x*y)]. t=0. Ici. e e > fieldplot( [y*cos(x*y).sin(t).12 ).5 x 1 Maple peut dessiner des courbes dans l’espace a trois dimensions.t]. radius=0.

5 –1 –0.5. 1 0. > adaptive=false ). e > rootlocus( (s^5-1)/(s^2+1)..-2. > gap=0.25. style=patch). style=point. 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 .4.2. -5. heights=histogram.3. > symmetric): > matrixplot( A+B.-4.-1].5 0 0.-3.6 Quelques graphiques particuliers • 139 La commande matrixplot affiche les valeurs d’un objet de type Matrix.5 –1 –1.5 1 1.4. > A := LinearAlgebra[HilbertMatrix](8): > B := LinearAlgebra[ToeplitzMatrix]([1. axes=frame.5 0 –0. s.5 .

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

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

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

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

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

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

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

60]. 10. x=-3.4. lightmodel=light1). 0.3. 9..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.q].3): plots[display]([p.2*Pi. t=0. s=0. 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. scaling=constrained. Les coordonn´es cart´siennes. 8. shading=zhue. De plus. grid=[60. r2*cos(t).30]). > style=patch. grid=[120. Bonhomme de neige Le graphique du bonhomme de neige est une animation. shading=zhue. point(o. 7. y. style=patchnogrid.2*Pi. axes=none. 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). x=-Pi. orientation=[-176. 1): stellate(p2.Pi. 45]. scaling=constrained): plots[display](moebius). > style=patchnogrid. x*sin(1/2*y)]. 0). style=patchnogrid. polaires. lightmodel=light3. 120]..3. 2*cos(x^3+y^3)}. coords=cylindrical. y=-0.. p1. orientation=[-107.. 0. 4..81]). implicites et param´triques. . lightmodel=light4. axes=none. modifiez la valeur de hauteur dans la commande stellate.. Le code de cette animation est disponible dans le Maple Application Center. Pour voir d’autres variations. style=patchnogrid. grid=[80. 4): p := draw(p2): q := plottools[homothety](p.9 Conclusion > > > > > • 147 moebius := plot3d([4+x*cos(1/2*y).2*Pi. 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. z1]. Fonction de deux variables en coordonn´es cart´siennes e e > plot3d({sin(x^2+y^2). y=-3. Icosa`dre e > > > > > > > with(geom3d): icosahedron(p1. 80]. shading=xyz. orientation=[50. scaling=constrained.

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

chaque situation peut avoir sa propre d´finition e e d’une forme simple . eq := 4 x + 17 = 23 149 . 5. 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 L’´valuation et la e simplification Dans Maple. 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. Vous pouvez ´galement effectuer e e e ces ´tapes au moyen de Maple. Celle-ci sert a convertir des r´sultats sous une forme ` e famili`re et v´rifier une r´ponse. par exemple la factorisation d’un e polynˆme ou la rationalisation du d´nominateur d’une expression rationo e nelle. e > eq := 4*x + 17 = 23.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. ou a convertir une expression sous une e e e ` forme particuli`re requise par certaines routines Maple. Ce qui est simple dans un contexte peut ne e pas l’ˆtre dans un autre . 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. Les manipulations math´matiques sont celles correspondant e a ` une forme de processus math´matique. et les e modifier.

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

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

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

(z + 2) xyprod + z .x) + sin(f(x))*diff(f(x).x).diff(f(x). 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.x)*sin(x) . cr´ez une variable rempla¸ant x*y. puis ree e e c groupez les termes sur cette nouvelle variable. z xyprod + 2 xyprod + z > collect( %. e Dans l’exemple pr´c´dent. (cos(x) + 1 + y) sin(x) > DE := diff(f(x).x. big_expr ). diff ).x)*sin(f(x)) > + sin(x)*diff(f(x). big _expr := z x y + 2 y x + z > collect( big_expr.5. 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. > subs( x=xyprod/y. sin(x) ). • 153 trig _expr := sin(x) cos(x) + sin(x) + y sin(x) > collect( trig_expr. > big_expr := z*x*y + 2*x*y + z. Error.x.1 Manipulations math´matiques e > trig_expr := sin(x)*cos(x) + sin(x) + y*sin(x). (in collect) cannot collect y*x Pour contourner ce probl`me. xyprod ). effectuez d’abord une substitution.

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

e e e > poly := x^5 .y^16) / (x^8 . > rat_expr := (x^16 .x^4 . poly := x5 − x4 − x3 + x2 − 2 x + 2 > factor( poly ). 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.y^16) / (x^7 . (x − 1) (x2 − 2) (x2 + 1) Dans le prochain exemple.y^8). rat _expr := > factor( rat_expr ). rat _expr := > factor(rat_expr).5. Le polynˆme o e o suivant poss`de des coefficients entiers . les coefficients incluent diff´rence dans le r´sultat.2*x + 2. e e √ 2. Remarquez la .x^3 + x^2 . les termes de sa forme face toris´e poss`dent ´galement des coefficients entiers. La come mande factor factorise a la fois le num´rateur et le d´nominateur.1 Manipulations math´matiques e • 155 (x + y) (x2 − y x + y 2 ) Vous pouvez ´galement factoriser des fonctions rationnelles. et ` e e annule ensuite leurs termes communs.y^7). ainsi. x16 − y 16 x8 − y 8 x8 + y 8 > rat_expr := (x^16 .

poly := x4 − 5 x2 + 6 > factor( poly ). √ 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. (x2 − 2) (x2 − 3) > factor( poly. (x2 − 3) (x − √ √ 2) (x + 2) > factor( poly. sqrt(2) ). √ 2 x5 − √ 2 x4 − √ 2 x3 + √ 2 x2 − 2 √ √ 2x + 2 2 > factor( % ). soit 2 ou − 2. { sqrt(2). e . sqrt(3) } ). (x − √ 3) (x + √ √ √ 3) (x − 2) (x + 2) Vous pouvez ´galement sp´cifier l’extension en utilisant RootOf. e ` > factor( poly. Ici. (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. e ` > poly := x^4 . e e √ √ RootOf(x^2-2) repr´sente une solution a x2 − 2 = 0.156 • Chapitre 5: L’´valuation et la simplification e > expand( sqrt(2)*poly ).5*x^2 + 6. RootOf(x^2-2) ).

il est pr´f´rable de pr´senter les expressions rationnelles sans e e ee e exposant rationnel au d´nominateur. ` > Factor( x^2+3*x+3 ) mod 7. La syntaxe est similaire a celle de la commande Expand. > Factor( x^3+1 ) mod 5. 1 (2/3) 2 1 (1/3) + − 2 2 5 5 10 > (x^2+5) / (x + x^(5/7)). (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 + root[3](2) ). 1 2 + 2(1/3) > rationalize( % ).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. (x + 1) (x2 + 4 x + 1) > Factor( x^3+1. 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. La commande rationalize enl`ve e e les racines du d´nominateur d’une expression rationnelle en multipliant e par un facteur convenable. . Supprimer des exposants rationnels En g´n´ral.5. (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´. consultez la rubrique ?Factor.

e > infolevel[combine] := 1.158 • Chapitre 5: L’´valuation et la simplification e x2 + 5 x + x(5/7) > rationalize( % ). 1 > combine( sin(x)*cos(x) ). x). 1 sin(2 x) 2 > combine( exp(x)^2 * exp(y) ). x) + Int(x^2. infolevel combine := 1 > expr := Int(1. e > combine( sin(x)^2 + cos(x)^2 ). (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. e Combiner des termes La commande combine applique certaines r`gles de transformation pour e de nombreuses fonctions math´matiques. . e(2 x+y) > combine( (x^a)^2 ). x(2 a) Pour voir comment combine permet d’obtenir le r´sultat. donnez au e param`tre infolevel[combine] une valeur positive.

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 ).1 Manipulations math´matiques e • 159 expr := > combine( expr ). 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. Consultez la section D´velopper des polynomes en e sommes ` la page 150. vous pouvez trouver utile de regrouper celles-ci en une seule et d’annuler les facteurs communs du num´rateur et du d´nominateur. La commande normal effectue ce processus.5. x 1 1 + + x+1 x x+1 . x2 + 1 x > expr := x/(x+1) + 1/x + 1/(1+x).

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

5.1 Manipulations math´matiques e • 161 big _expr := sin( > normal( big_expr ). 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. > factor(expr). expr := > normal( expr ). Consultez la section 5. expr := √ 4+3 . e > expr := 4^(1/2) + 3. 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.1 a la ` page 154. e e > expr := (x^25-1) / (x-1). (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. utilisez la commande factor. La commande simplify tente de trouver une expression plus e simple en effectuant une s´rie de manipulations. (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.

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

{ x*z=1 } ). > expr := x*y*z + x*y + x*z + y*z. La commande simplify vous permet de le faire e en utilisant des relations accessoires . assume=real ).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 .2. expr := x y z + x y + x z + y z > 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 + yz + y + 1 . e e e > expr := sqrt( (x*y)^2 ). Consultez la section e 5.5. e ee > simplify( expr. expr := > simplify( expr ). |x y| > simplify( expr. Simplification au moyen des relations accessoires Vous pouvez quelquefois simplifier une expression en utilisant votre propre r`gle de transformation. 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´. xy Vous pouvez ´galement vous servir de la commande assume pour plae cer des hypoth`ses individuellement sur des variables. assume=positive ).

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^2 + x + x^3. {siderel}. poly := 1 + x4 − x2 + x + x3 . Maple effectue la substitution x2 = 1−y 2 dans la premi`re expression. l’ex´cution est arrˆt´e. expr := x3 + y 3 > siderel := x^2 + y^2 = 1. y3 − x y2 + x > simplify( expr. l’ex´cution est arrˆt´e. 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´´. Les manipulations de polynˆmes en base de Gr¨bner sont a la base du o o ` fonctionnement de simplify. x3 − y x2 + y Dans le premier cas. n’en trouvant aucun. {siderel}. puis tente d’effectuer une substituion pour les termes e 2 . Pour obtenir davantage d’information sur cette commande. puis tente d’effectuer des substitutions pour les e e ee termes en x2 . Vous pouvez en trier les termes par ordre d´croissant de e e ee e degr´ ` l’aide de la commande sort. e ee en y Dans le second cas. e Il est ´galement possible de sp´cifier l’ordre dans lequel simplify e e effectue l’op´ration. [x. ea > poly := 1 + x^4 . e > expr := x^3 + y^3. La commande simplify consid`re les ´quations e e donn´es comme des simplifications additionnelles. [y. n’en trouvant aucun.siderels. siderel := x2 + y 2 = 1 > simplify( expr. consultez la rubrique ?simplify.x] ).y] ). Maple effectue la substitution y 2 = 1 − x2 dans la premi`re expression.

x] ). et ainsi de suite). x3 y + x2 y 2 > sort( x^3*y + y^2*x^2. Maple les trie e e e en ordre lexicographique (de telle sorte que a vienne avant b.y] ).x.1 Manipulations math´matiques e > sort( poly ). lorsque deux termes ont le mˆme degr´. • 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.y] ). [x. [x. Avec ce tri. [w. x4 + x3 y + x2 y 2 Remarquez que l’ordre des variables dans la liste d´termine l’ordone nancement de l’expression. Maple utilise par d´faut le tri e e par degr´ total . [x. y 2 x2 + y x3 . > sort( x+x^3 + w^5 + y^2 + z^4. 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.5. > sort( x^3*y + y^2*x^2. w5 + z 4 + x3 + y 2 + x > sort( x^3*y + y^2*x^2. les termes sont alors r´arrang´s en ordre d´croissant de e e e e degr´.y] ).y. c o e > poly. x3 y + x2 y 2 > sort( x^3*y + y^2*x^2 + x^4. [y.z] ).

plex ). x3 + x + y 2 + z 4 + w5 La commande sort peut ´galement trier des listes. > sort( x + x^3 + w^5 + y^2 + z^4. w5 + x3 + x + y 2 + z 4 Encore une fois.z. ` e > sort( x + x^3 + w^5 + y^2 + z^4. La commande convert permet d’effectuer des conversions de ce genre.y. 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. sincos ). n! k! (n − k)! . exp ). [x. cos(x) sin(x) > convert( arccos(x). l’ordre dans lequel sont donn´es les inconnues au e moment de l’appel a sort d´termine l’ordonnancement. Conversion entre diff´rentes formes e Vous pouvez ´crire plusieurs fonctions math´matiques selon diverses e e formes ´quivalentes. Pour plus d’information.k). Consultez la sece tion 5. ln ).y.z]. −I ln(x + I −x2 + 1) > convert( binomial(n.x. > convert( sin(x). [w. Par exemple.3. factorial ). 1 −1 I (e(I x) − (I x) ) 2 e > convert( cot(x). plex ).w]. consultez la rubrique ?convert.

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

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

. e e e > infolevel[int] := 2. t2) Definite integration: Can’t determine if the integral is convergent.2 Les hypoth`ses e • 169 Plusieurs fonctions font usage des hypoth`ses sur une inconnue.5. e > limit(b*x.x = t1 . int/cook/nogo1: Given Integral Int(exp(c*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). infolevel int := 2 > int( exp(c*x). ∞ Vous pouvez utiliser infolevel pour obtenir de Maple un rapport d´taill´ de l’activit´ d’une commande. > frac(n). frac(n) > assume(n.x = 0 . integer). La e commande frac retourne la partie fractionnaire d’un nombre.. Need to know the sign of --> -c Will now try indefinite integration and then take limits. > limit(b*x. signum(b) ∞ > assume( b>0 ). x=0. int/indef1: first-stage indefinite integration int/indef2: second-stage indefinite integration int/indef2: applying derivative-divides .infinity ). x=infinity). > frac(n). 0 La limite suivante d´pend de b. x=infinity)..

. par exemple lorsque x est r´el. ıtre o > assume( c>0 ). x~ Vous pouvez utiliser la commande is pour v´rifier directement les e propri´t´s des inconnues.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).x = 0 . real).x = t1 . g´n´ralement. > ln(exp(x)). x=0. int/cook/nogo1: Given Integral Int(exp(x). pour des e e e valeurs complexes de x. > int( exp(c*x).infinity or undefined ∞ Les logarithmes retournent plusieurs valeurs . πI Ainsi. ln(ex ) est diff´rent de x. ee . ln(ex ) > assume(x. a moins de la savoir ` e correcte. t2) int/cook/IIntd1: --> U must be <= 0 for converging integral --> will use limit to find if integral is +infinity --> or . > ln(exp(x)).infinity ). Maple ne simplifie pas l’expression suivante.. > ln( exp( 3*Pi*I ) ).. 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).

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

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

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

q. q)] > map( diff. e > map2( f. x*(x+2) } ). 2 x + 2] La commande map2 est ´troitement li´e a map. les arguments e suppl´mentaires sont pass´s ` la fonction.c]. f(b). r)] . c] ). [a. b. x ). map2 remplace le e deuxi`me argument d’une fonction. c] ). p. q. [f(a). c2 ] Lorsque map est appel´e avec plus de deux arguments. r ). c]. x*(x+2) ]. [a2 .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. f(c. > f( [a. f(p. b. p. e e a > map( f. c] ). q. b.b. La commande map vous ee o a permet d’effectuer cette application multiple. q ). [f(a. b. b2 . x2 + 3 x + 2} > map( x->x^2. r). [a. [ (x+1)*(x+2). b. [f(p. f(p. f(b. p. { (x+1)*(x+2). p. a. f([a. [2 x + 3. L` o` map remplace e e ` a u s´quentiellement le premier argument d’une fonction. f(c)] > map( expand. p. [a. b. c. r). c]) > map( f. q. q). [a. {x2 + 2 x. q).

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

0] [1. 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. 3. sin(x). 0. L := [8. 0] [1. 0] [1. seq. 0. 1. 0. 0. -5] ). 50 + y 2 + sin(x)2 Les commandes map. 2. 5. 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. y. 0] [1. 6. i=[5. 4. 4. 1] [] Les commandes add et mul fonctionnent comme seq. e e ee ` e La fonction bool´enne suivante retourne true si son argument est sup´e e rieur a 3. 0. sin(9) ]. 5.95. ee ` ee > L := [ 8. map2. π. 2. 0. 10. 3. 0. sin(9)] . 0. 0] [1. a l’exception ` qu’elles engendrent respectivement des sommes et des produits au lieu de suites. 2. 1. > add( i^2. ` > large := x -> is(x > 3).176 • Chapitre 5: L’´valuation et la simplification e [1. Pi. add et mul peuvent ´galement agir e sur des expressions g´n´rales.95. 1. Consultez la section Les parties d’une e e expression de la page 182. 0. 1. 0. 10.

numeric ). L). ` la e a commande type. π] De fa¸on similaire.5.3 Manipulations structurelles > select( large. e e . 2. L. numeric ). 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. > selectremove( large. sin(9)] Servez-vous de la commande type pour d´terminer le type d’une exe pression. L ). [2.95. [8. numeric ). > type( 3. L ).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. > remove( large. false Ici. • 177 [8. π]. la syntaxe de select passe le troisi`me argument. [2. sin(9)] Pour effectuer les deux op´rations simultan´ment. true > type( cos(1).95. [8. numeric. > select( type. utilisez la come e mande selectremove.

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

d. “has”. "has". • 179 [a. e e > zip( (x. Entre autres fonctions. 99 f ] > zip( igcd.5.3. Trier des listes Dans Maple. e > sort( [1. 3] La commande zip peut ´galement combiner des vecteurs. "a".3. Consultez e la rubrique ?zip pour obtenir plus d’information sur cette commande.3]. Les ´l´ments d’une liste demeurent dans le e ee ee mˆme ordre que lorsque la liste a ´t´ cr´´e. “lamb”. e > sort( ["Mary".f]. 3 c. [1. [“Mary”. [a.d. [a.2.b.346. “little”] .e. 6! ). 3.123]. 99 d.c.6] ). 99 e. 18.3. la commande sort trie les listes en ordre croissant. "little".y) -> x.756. 2.213. “a”. en utilisant le quatri`me param`tre pour remplacer les valeurs manquantes. 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.2.342.f]. Elle trie une liste de nombres en ordre num´rique.c.y. 2. 99 ). 3. [1.b. 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.6.2.y. 6] La commande sort peut ´galement trier une liste chaˆ e ınes de caract`res en ordre lexicographique. 3.3 Manipulations structurelles > zip( (x. 2 b.4.3] ). 4.5. "lamb"] ). 3. 6. une liste est une structure de donn´es fondamentale qui e pr´serve l’ordre des ´l´ments.876]. [1. 2 b. [1.y) -> x. [34. [a. [7657.e. 5.

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

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

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

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

expr). les op´randes d’une expression. + Utilisez la commande op pour lister les termes d’une somme ou. expr := 3 + sin(x) + 2 cos(x)2 sin(x) La commande whattype consid`re expr comme une somme. Utilisez la commande e ee nops pour compter le nombre d’op´randes d’une expression. . term3 := 2 cos(x)2 sin(x) term3 est un produit de trois facteurs. vous pouvez choisir le troisi`me terme de la mani`re e e suivante. 2 cos(x)2 sin(x) L’expression expr est form´e de trois ´l´ments.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). ∗ > nops( term3 ). e > nops( expr ). e > whattype( expr ). > term3 := op(3. 3. sin(x). 3 Par exemple. > whattype( term3 ). en g´n´ral. e e e > op( expr ).

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

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

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

. ‘+‘ ). e . 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. expr := (3 + x) x2 sin(1 + > select( type.188 • Chapitre 5: L’´valuation et la simplification e Utilisez select et has pour choisir ces solutions. ‘+‘ ). (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. √ π) 3+x La commande hastype d´termine si une expression contient une souse expression d’un certain type. sol. a > expr := ( 3+x ) * x^2 * sin( 1+sqrt(Pi) ). ‘+‘ ). expr. la commande select passe son troisi`me argument. e e > type( 3+x. RootOf ). utilisez la commande indets.) pour choisir les op´e randes d’une expression qui contient un certain type.. > select( hastype.. ` type. ‘+‘ ). true Dans cet exemple. {{y = b . > hastype( sin( 1+sqrt(Pi) ). expr. true Utilisez la combinaison select(hastype. > select( has. e ‘+‘. La commande type d´termine si une expression est d’un type donn´.

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

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

expr ). expr ). > expr := a * b * c * a^b.5. cela signifie que vous pouvez effectuer des substitutions pour n’importe quelle sous-expression. et non math´e matiques . > evalf( % ). > op( expr ). −0. a. yprime ). 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. expr := a b c ab > subs( a*b=3. b. a b c ab expr est un produit de quatre facteurs. 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. > subs( cos(x)=3. ab Le produit a*b n’est donc pas un facteur dans expr. .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.1388047428 La commande effectue des substitutions syntaxiques. c.

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

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

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

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

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

e e ´ Evaluation du dernier nom Les structures de donn´es array. y := z > z := array( [ [1. e . produirait un tableau.4] ] ). 1). [3. z. de mˆme que le comportement des variables locales a e e ` l’int´rieur d’une proc´dure. e e ee > x := y. > eval(x.2]. les matrices et e e les proc´dures. matrix et proc poss`dent un e e comportement d’´valuation sp´cial appel´ ´valuation du dernier nom. z > eval(x. x := y > y := z. 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. 2).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. z := 1 2 3 4 Maple remplace x par y et y par z. table. l’un des quatre e types sp´ciaux de structures.5. mais arrˆte a ce point puisque e ` l’´valuation du dernier nom. 3). y > eval(x.

examinez la commande erfi. Vous pouvez forcer une e e ´valuation compl`te en appelant explicitement la commande eval. y) x + y end proc > add2. add2 Vous pouvez facilement forcer une ´valuation compl`te en utilisant e e eval ou print. . supprime le code de cette proc´dure. z Maple utilise l’´valuation du dernier nom pour les tableaux. proc(x : :algebraic) .y) x+y. erfi > eval(erfi). e e e Pour illustrer cette situation. y) x + y end proc Remarquez qu’une ´valuation compl`te des proc´dures contenues dans e e e la biblioth`que de Maple. > erfi. . 1 2 3 4 > 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)). proc(x.198 • Chapitre 5: L’´valuation et la simplification e > x. > eval(add2). les tables. add2 := proc(x. e e > eval(x). end proc . end proc. par d´faut.

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

e > x := y. > y := z.200 • Chapitre 5: L’´valuation et la simplification e > interface( verboseproc=1 ). y Comparez cette ´valuation a l’exemple similaire pr´sent´ ` la e ` e e a page 196. y. > x. utie e e a e e lisez eval. Lorsque vous e ` e d´sirez obtenir de l’´valuation compl`te ` l’int´rieur d’une proc´dure. x := y > y := z. > z := 5. 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. ´ 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. 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. le r´sultat de l’´valuation est e e la valeur la plus r´cemment assign´e directement a cette variable. z. > x := y. y := z > evaln(x). e e ` > test:=proc() > local x. > end proc: > test(). La rubrique d’aide ?interface explique les valeurs permises de verboseproc et des autres variables d’interface. x .

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

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

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

x-1. ai Vous devez utilser evaln pour d´saffecter a[i]. e e La commande divide assigne le quotient au nom global q. 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. true > 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. 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. a4 := 9 Remarquez que ’a[i]’ est a[i] et non a[4].204 • Chapitre 5: L’´valuation et la simplification e i := 4 > a[i] := 9. a4 > a[i] := evaln( a[i] ). e > evaln( a[i] ). > divide( x^2-1. > ’a[i]’. e . ’q’ ).

ab L’op´rateur de concat´nation. x+y Les commandes rem. x-y. dans un nom. e > a||b. q ). .5. q ). a := x > b := 2. || . Error. q := q > divide( x^2-y^2. irem et iquo se comportent de mani`re simie laire. mais pas celui du cˆt´ gauche. entraˆ l’´value e ıne e ation du cˆt´ droit de l’op´rateur. 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. true > q. x-y. oe e oe > a := x. • 205 q := 2 > divide( x^2-y^2.4 Les r`gles d’´valuation e e > q := 2. wrong number (or type) of parameters in function divide > q := evaln(q). quo.

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

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

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

Le package e e e e Student[Calculus1] contient plusieurs commandes qui s’av`rent pare ticuli`rement utiles dans ce domaine. 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 > f := x -> exp( sin(x) ). e e e e 6. puis montre comment d´terminer l’ene semble des points d’inflexion d’une fonction. e e e e > x0 := 1. D´finissez la fonction f : x → exp(sin(x)) de la mani`re suivante. la deuxi`me traite des ´quations diff´rentielles ordinaires . f := x → esin(x) Trouvez la d´riv´e de f ´valu´e en x0 = 1. 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. enfin.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. e e e e la troisi`me section porte sur les ´quations aux d´riv´es partielles.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. 209 .

esin(2) − esin(1) La commande evalf nous donne une approximation d´cimale de ce e r´sultat. p1 := [1 + h. > h_values := seq( NewtonQuotient( f(x).20). f(x0) ]. esin(1+h) ] La commande NewtonQuotient du package Student calcule la pente de la s´cante passant par p0 et p1 . x=1. 0. h=1 ).0/i^2 ). h=1.. les valeurs de la pente de la s´cante semblent e e converger. la pente est donn´e par e > eval( m.0.162800903 Lorsque h tend vers z´ro. > m := NewtonQuotient(f(x). f(x0+h) ].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 > p0 := [ x0. e > evalf( % ). x=x0. esin(1) ] > p1 := [ x0+h. > i=1. h=h). p0 := [1. m := − esin(1) − esin(1+h) h Si h = 1. e > with(Student[Calculus1]): Utilisez NewtonQuotient pour trouver une expression pour la pente. .

. 1. 1. e > secant := unapply( rhs(%). 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.240091510. > with(plots): Warning.053234748.p0[2] = m * ( x ..4.248066842. y= (esin(1+h) − esin(1) ) (x − 1) + esin(1) h Vous devez faire de cette ´quation une fonction. 1. 1.226806975. 1.251782800 Voici l’´quation de la pente de la s´cante.243256512.249585493. 1. e > S := seq( plot( [f(x). 1.251609743. 1.6. the name changecoords has been redefined . e e > y .1 Calcul diff´rentiel ´l´mentaire e ee • 211 h_values := 0.245408615. > view=[0. 1.250880512. 1.235154852.251406908. 1. y ). 1.210917616.250534250. 1. 1. x ).250111128. 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.4. 1.248921648. vous e e devez cr´er une suite de graphiques. 1.p0[1] ). Tout d’abord. 1.251167122. > h=h_values ): La commande display du package plots peut afficher les graphiques de la suite sous forme d’animation.246939100. 1.1628009030. secant(x)]. 0.. x=0.174305789. 1. > isolate( %.4] ).

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

. vous pouvez remarquer que f augmente lorsque f 1 e est positive. x. x ). ces changements de signe peuvent survenir aux valeurs de x telles que f 2(x) s’annule.1 Calcul diff´rentiel ´l´mentaire e ee • 213 Dans le cas pr´sent. e e e > diff( f(x). e > plot( [f(x). x=0. d´finissez la fonction f 2 comme la d´riv´e seconde e e e de f . > f2 := unapply( %. 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 . −sin(x) esin(x) + cos(x)2 esin(x) Encore une fois. .10 ). f1(x). x ) }.6. 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 ). f2(x)]. > sol := { solve( f2(x)=0. la d´riv´e seconde existe.

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

e > f := x -> exp( sin(x) ).1 Calcul diff´rentiel ´l´mentaire e ee • 215       arctan 2         −arctan 2      2 1 1√  √ √ 5− −2+2 5  2 2 . 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. 1. e  √ −2 + 2 5 √ 1/2 5−1/2 √  (1/2 5−1/2)2 √ 1+4 −2+2 5      > evalf( % ).6662394325. 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π.         2 1 1√  √ √ 5− −2+2 5 2 2  + π. 1.475353222. e > taylor( f(x).855276958]} Puisque la fonction f est p´riodique. f := x → esin(x) > a := Pi. Une approximation de Taylor Voyons maintenant comment utiliser Maple pour analyser le terme d’erreur d’une approximation par s´rie de Taylor. Voici la formule de Taylor.6. . [0. elle poss`de une infinit´ de points e e e d’inflexion. x=a ). {[2. e √ −2 + 2 5   √  (1/2 5−1/2)2 √ 1+4 −2+2 5 √ 1/2 5−1/2     .855276958].

3] ).. 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. poly].. > plot( [f(x). x$6 ). x=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.10.5 0 2 4 6 8 10 x L’expression (1/6!)f (6) (ξ)(x − a)6 nous donne l’erreur de l’approximation.216 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e a := π > taylor( f(x).10.5 2 1. 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. polynom ).5 1 0.. 3 2. vous devez convertir cette s´rie en un polynˆme. e o > poly := convert( %. o` ξ est un nombre compris entre x et a. 0. La d´riv´e sixi`me de f u e e e est > diff( f(x). x=0.

e e e > f6 := unapply( %.. axes=boxed ).. vous dee vriez entrer . 0.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. Sans cet op´rateur. 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. > style=patch. > plot3d( abs( err ). x ).4. > err := 1/6! * f6(xi) * (x . D´finissez la e e e fonction f 6 comme ´tant cette d´riv´e.a)^6. x=2. xi=2. x six fois pour calculer la d´riv´e d’ordre 6. 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.4.6.16 0 2 xi 4 4 x 2 .

xi] ). x).a].218 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Pour d´terminer l’erreur exacte.5 2 2 2.4]. [4. the name arrow has been redefined > display( curve( [ [2. [2.2].a]. 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. the name changecoords has been redefined Warning.5 3 x 3. .5 xi 3 2. e > with(plots): with(plottools): Warning. [2. e e e x = 4.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. > labels=[x. Les d´riv´es partielles de err sont e e > err_x := diff(err. [4. ξ = a et ξ = x (soit pour x compris entre 2 et 4 et pour ξ compris entre a et x). xi). 4 3. vous devez effectuer une analyse e compl`te de l’expression err dans les deux r´gions ferm´es par x = 2. Vous devez alors ´tudier e a e e e err aux bords du domaine. La commande curve du package plottools permet d’illustrer ces deux r´gions.2] ] ).

err_xi=0}. xi} ). > critical := { % }. e > sol := { solve( err_xi=0. La plus grande valeur critique borne l’erreur maximale. e > eval( err. sol ). ξ = ξ} L’erreur est ´galement nulle en ce point. sol := {x = π. {x. . xi ) }.6. 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. 0 Vous devez maintenant regrouper un ensemble de valeurs critiques. e e > sol := solve( {err_x=0.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.

8 3 3. arctan( RootOf(%1. RootOf(_Z 2 + RootOf(%1. arctan( RootOf(%1. index = 1). arctan( RootOf(%1.. index = 4).570796327. index = 6)2 − 1)).570796327 + 0.570796327 + 1. 0. arctan( RootOf(%1.2 2. index = 4)2 − 1)).3257026605.2 0 –0. index = 2). index = 5)2 − 1)). −0.083849212 I} Il est recommand´ de v´rifier l’ensemble solution en tra¸ant le grae e c phique de la solution. arctan(RootOf(%1. index = 6). 2 RootOf(_Z 2 + RootOf(%1. RootOf(_Z 2 + RootOf(%1.2 2.6 3. xi=2. arctan( RootOf(%1.2 3.220 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 1 sol := { π. {−1. 0.473801030 I. 1. −1. index = 5). x=2).8 4 xi .6 0. index = 1)2 − 1)).4 0.4 2. > plot( eval(err_xi. RootOf(_Z 2 + RootOf(%1.6948635283.767486929 I.6 2.570796327 + 2. −1.4 3.8535664710 I. index = 2)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). −1.4 ). RootOf(_Z 2 + RootOf(%1.570796327 + 3. RootOf(_Z 2 + RootOf(%1. index = 3).

a. xi. xi=sol} ). e e > sol := fsolve( eval(err_xi. alors ξ doit ˆtre situ´ entre a et 4. ` > critical := critical union {%}. xi=sol}). 0.01542298119 (4 − π)6 > critical := critical union {%}.. x=4). l’erreur est > eval( err. {x=2. l’erreur est e > B := eval( err. l’erreur est > eval( err..4 ).07333000221 (2 − π)6 } Si x = 4.446729125 En ce point.07333000221 (2 − π)6 Ajoutez maintenant cette valeur a l’ensemble des valeurs critiques. 0. e > sol := fsolve( eval(err_xi.467295314 En ce point.6.07333000221 (2 − π)6 . 2. alors ξ doit ˆtre situ´ dans l’intervalle e e e e situ´ entre 2 et a.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. −0. Vous devez donc utiliser des e e ` m´thodes num´riques. {x=4. critical := {0. −0. Si x = 2. xi=a ). .a ). 0. xi.01542298119 (4 − π)6 } ` A la fronti`re ξ = a. x=2). sol := 2. critical := {0. sol := 3.

07333000221 (2 − π)6 . l’erreur est e e > B := eval( err. x ). . B1 := − 1 (x − π)5 40 > sol := { solve( B1=0. x ) }. sol := {π} En ce point critique. l’erreur est > eval( B. e e > B1 := diff( B. 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. ξ = x. xi=x ). 0 > critical := critical union { % }. −0. critical := {0. vous devez trouver le point o` la d´riv´e s’annule.01542298119 (4 − π)6 } ` A la derni`re fronti`re.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. x=sol[1] ). x ). u e e > B1 := diff( B.

2 3. Puisque solve ne peut trouver cette solution. 1 ( 120 sol := {π} Il est bon de v´rifier la solution en tra¸ant le graphique.2.3.2 0 2.1.2 2.8 0.8 3 3.4 3.4 0. 2. e c > plot( B1. 2.6 3.3 ).6.180293062 Ajoutez cette solution num´rique a l’ensemble des solutions symboe ` liques.8 4 x Le graphique de B1 indique qu’une solution existe entre 2.1 et 2. vous devez a nouveau re` courir aux m´thodes num´riques..4 2. e e > fsolve( B1=0. x ) }.. x.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. 0. x=2.4 ).6 0.6 2. .

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

Tout d’abord. (−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 .6.07333000221 (2 − π)6 .1 Calcul diff´rentiel ´l´mentaire e ee • 225 critical := {0. . 1 0. −0. appliquez la commande abs aux ee ´l´ments de critical.04005698601 (2. (−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 . ee > map( abs.01542298119 (4 − π)6 . critical ).180293062 − π)6 . (−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 . 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 } Vous devez maintenant d´terminer le maximum en valeur absolue des e ´l´ments de critical.

1623112756 . − −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 . 0.226 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e {0. 1 ( 720 max _error := 0.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 .01542298119 (4 − π)6 . − (−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 .180293062 − π)6 . La commande max requiert une ee suite de nombres . vous devez donc utiliser la commande op pour transformer l’ensemble des valeurs en une suite. 0. > max_error := max( op(%) ).07333000221 (2 − π)6 Ce nombre est approximativement > evalf( max_error ). 0. 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.

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

> partition=n^2)). 6.888196447.877830054. x=0.845601766 L’approximation de l’aire s’am´liore a mesure que plus de boˆ sont e ` ıtes utilis´es.864739771. 6. 6. partition=6..228 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0. 6.14). method=left. 6. x=0. .10..854630209. > output=sum).948089404.5 4 x 6 8 10 –1 Area:6.857222010. > seq( evalf(ApproximateInt( f(x).839071529 1. Augmentez le nombre de boˆ jusqu’` 12 et calculez la valeur e ıtes a de ApproximateInt pour chacune de ces boˆ ıtes. 6.870316620. n=3.5 1 0.852550665 Utilisez l’option output = animation pour cr´er une animation de la e somme de Riemann.10.902789479. 6. 5 3 5 i=0 1 5 ( + sin( i)) 2 3 Ce nombre est approximativement > evalf( % ). method=left.5 2 –0. 6.860504866. > ApproximateInt( f(x). 6.845601763 f(x) Changez output = plot pour output = sum pour calculer l’aire des boˆ ıtes. 6. 6. 6.923289158.10] UsingaLeft-endpointRiemannSum ApproximateValue:6. 6.948819107..

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

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

y) -> x * y * (x^2-y^2) / (x^2+y^2). vous pouvez dessiner et additionner des boˆ ´valu´es en leur coin droit ou en leur point milieu. e e ` e > f(0. r=0 ). ı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.6. f := (x. vous pouvez prolonger f par continuit´ ` l’origine en la e a d´finissant ´gale a z´ro en ce point. r sin(θ)). r2 cos(θ) sin(θ) (r2 cos(θ)2 − r2 sin(θ)2 ) r→0 r2 cos(θ)2 + r2 sin(θ)2 lim > value( % ).0). e e > Limit( %. y) = (r cos(θ). la valeur de la fonction est > f( r*cos(theta). 0 Ainsi. .1 Calcul diff´rentiel ´l´mentaire e ee • 231 En sp´cifiant method = right ou method = midpoint lorsque vous e utilisez la commande ApproximateInt.. r*sin(theta) ). e e e Consid´rez la fonction suivante. (in f) numeric exception: division by zero En (x.0. Error. e > f := (x. e ` > f(0. y) → x y (x2 − y 2 ) x2 + y 2 La fonction f n’est pas d´finie a l’origine. 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.

232 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e f(0.3.0). r sin(θ)). fx := (x.0) .f(0.. Voici le graphique de f . Error. la valeur de fx est > fx( r*cos(theta).. -3.) := 0 L’affectation pr´c´dente ajoute une entr´e dans la table de rappels e e e (en anglais remember table) de Maple. h=0 ). 0) := 0 En (x. fx(0. ` > fx(0. . r*sin(theta) ). y) = (r cos(θ). La d´riv´e partielle de f par rapport a son premier param`tre. > plot3d( f. est e e ` e > fx := D[1](f)..0) := limit( ( f(h. > fx(0. 0.3 ).0) )/h. 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. (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. x.

fy(0. fy := (x. y) − e e e fx (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. r=0 ). 0) tend vers z´ro.2](f). 0)| tend ´galement vers z´ro. Sym´triquement.k) .6.fx(0.0) ). ` e > fy := D[2](f). 0) := 0 Voici la d´riv´e seconde mixte de f . |fx (x. e e > fxy := D[1. 0). fx est continue en (0. y. > Limit( abs( % . 3 1 r sin(3 θ) − r sin(5 θ) 4 4 Lorsque la distance r entre (x.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 Ainsi. r→0 lim 1 3 r sin(3 θ) − r sin(5 θ) 4 4 > value( % ).0) := limit( ( f(0. 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. y) et (0.0) )/k.f(0. . k=0 ).

0) := value( % ).k) . 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. ` > fxy(0. fyx := (x. fxy(0.234 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e fxy := (x. cette formule n’est pas valide a l’origine. h=0 ).fy(0.fx(0.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. vous devez utiliser la d´finition de la d´riv´e sous forme e e e de limite.0) := value( % ). k→0 lim − 1 > fxy(0.0) )/k. h→0 lim 1 > fyx(0. 0) := 1 . 0) . Error. > Limit( ( fy(h. k=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 Encore une fois. fyx(0. 0) := −1 L’autre d´riv´e seconde mixte est e e > fyx := D[2.1](f).

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

_Cnumber . eq := ( > ini := v(1) = 5. dsolve(eqns. vars ) Ici.y(x) = 1. 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. e Voici une ´quation diff´rentielle et une condition initiale. {v(t)} ). v(t) = −t2 + 6 Si vous omettez une ou plusieurs des conditions initiales. dsolve retourne des constantes arbitraires de la forme _Cnumber .x$2) . d v(t)) + 2 t = 0 dt ini := v(1) = 5 Utilisez dsolve pour obtenir la solution. eqns repr´sente un ensemble d’´quations diff´rentielles et de valeurs e e e initiales.t)+2*t = 0. > eq := diff(y(x). e e > eq := diff(v(t). ini}. eq := ( d2 y(x)) − y(x) = 1 dx2 > dsolve( {eq}. La syntaxe de base e de dsolve est la suivante. {y(x)} ). {y(x) = ex _C2 + e(−x) _C1 − 1} .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. et vars repr´sente l’ensemble de variables pour lesquelles on soue haite r´soudre. > dsolve( {eq.

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

e . 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. 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. 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. Il existe ´galement une option implicit pour forcer Maple a donner e ` ses r´sultats sous forme implicite. {y(x) = _C1 }. dans certains cas. a supposer que Maple puisse trouver les transform´es. e Consid´rons le probl`me de dynamique classique suivant. ` e Cette m´thode fonctionne ´galement avec les syst`mes d’´quations coue e e e pl´es. de mˆme que certains cas d’EDO lin´aires a coefficients e e ` non constants. 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. incluant la force e ext´rieure u(t).238 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e y(x) {y(x) = _C1 }. y(x) = RootOf − _Z 1 d_f + x + _C2 _f ln(_f ) + _C1 Cependant. {y(x)}. beaucoup plus simple a r´soudre. explicit ). 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. Les transe e e form´es font correspondre a une ´quation diff´rentielle une ´quation alg´e ` e e e e brique. Maple peut ne pas ˆtre en mesure de e trouver une solution explicite. e > dsolve( {de2}. 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.

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

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. .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 . m=1. k=1} ). {alpha=1/10. e > ans := eval( %.

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 . ans ). ´valuez l’expression x[1](t) en sa solution pour extraire l’expression x1 (t).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). 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. 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. de la mani`re suivante. t ). Tout d’abord. > eval( x[1](t).´ 6. − > y[1] := unapply( %. e e e e y1 (t) et y2 (t).

t=-3. s)) + e(−s) s .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. fourier . s ).. t. invhilbert . t. invlaplace. hilbert . e e > with(inttrans).. fouriersin. e e e > y[2] := unapply( eval( x[2](t). s) − x1 (0)) − D(x1 )(0)) = k (laplace(x2 (t). invmellin. hankel .. savetable] Les transform´es de Laplace des ´quations diff´rentielles eqn1 et eqn2 e e e sont : > laplace( eqn1.6 ). fouriercos . 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. vous pouvez o utiliser la transform´e de Laplace a la main. t. y[2](t) ]. s) − laplace(x1 (t). laplace. method=laplace). t. y2 := t → > plot( [ y[1](t). α m (s (s laplace(x1 (t). 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). [addtable. t ). ans ). 14 12 10 8 6 4 2 –2 2 t 4 6 Plutˆt que d’appliquer dsolve(..

t. t. t. t. e k (laplace(x2 (t). t. {ini} ).s) } ).t. > eval( {%. α m s (s laplace(x1 (t). s) = k (2 α m s2 es + 1) . s)). s)) ´ Evaluez l’ensemble form´ des deux transform´es en leurs conditions e e initiales. s) − laplace(x2 (t). > invlaplace( %. { laplace(x[1](t). s) = k (laplace(x1 (t). s) − laplace(x2 (t). > laplace(x[2](t). t.s).´ 6. . 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 ). 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). s. t. s) − laplace(x1 (t). %%}. s) − x2 (0)) − D(x2 )(0)) = k (laplace(x1 (t). t. s)) + > sol := solve( %.t.2 Equations diff´rentielles ordinaires e • 243 et > laplace( eqn2. vous devez maintenant prendre e e e la transform´e inverse de Laplace pour en extraire les fonctions x1 (t) et e x2 (t) . s) = laplace(x1 (t). t. sol := {laplace(x2 (t). m (s (s laplace(x2 (t). {m s2 laplace(x2 (t). t. t.

k=1} ). > eval( %. {alpha=1/10. . 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. m=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.

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.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.x) + diff(y(x). eq := 2 x ( d2 d y(x)) + ( y(x)) + y(x) = 0 2 dx dx Demandez a Maple de r´soudre l’´quation.x) + y(x) = 0. e Lorsque Maple applique la m´thode des s´ries. 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. on obtient la mˆme solution que par e la m´thode pr´c´dente. 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 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. Maple trouve d’abord une ape e proximation des ´quations sous forme de s´rie. u Consid´rez l’´quation diff´rentielle suivante. Il r´sout ensuite cette e e e approximation de mani`re symbolique au moyen de m´thodes exactes. ` e e .´ 6.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). e e e > eq := 2*x*diff(y(x).

246 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > dsolve( {eq}. [_C1 = 0. e > [ seq( _C1=i. 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 . %. type=series ).. i=0. o > rhs(%). convertissez-la ensuite en polynˆme. _C2=1. _C1 = 3. √ √ 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. _C1 = 2. 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(%. . _C1 = 4.5 ) ]. _C1 = 1. poly). polynom). {y(x)}. _C1 = 5] > map(subs.

des solveurs num´riques alternatifs e e ont ´t´ con¸us. ee c Voici une ´quation diff´rentielle et une condition initiale.10 ). t) = t^2. elles pr´sentent cepene e dant certaines limitations. 6 90 2520 113400 1 1 3 1 1 3 %1 + 1 − x + x2 − x + x4 − x5 . Pour produire un r´sultat. Maple doit calculer plusieurs d´riv´es dans le proe e cessus de recherche de la solution.2 Equations diff´rentielles ordinaires e • 247 1 2 1 3 1 1 x − x + x4 − x5 . de plus. 6 90 2520 113400 1 1 3 1 1 4 %1 + 1 − x + x2 − x + x4 − x5 . e e > eq := x(t) * diff(x(t).. la s´rie r´sultante e e e doit converger . 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( %. eq := x(t) ( d x(t)) = t2 dt . 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. Pour ces raisons. x=1. 6 90 2520 113400 1 1 3 1 1 2 %1 + 1 − x + x2 − x + x4 − x5 . ce qui peut s’av´rer coˆteux en temps e u comme en m´moire. 6 90 2520 113400 1 1 3 1 1 %1 + 1 − x + x2 − x + x4 − x5 .

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

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

.."y"] ). [t. [x(t). 8 6 y 4 2 0 –2 –4 2 3 4 x 5 6 x(t) et y(t) en fonction de t.58216755967155986. > odeplot( sol1. e e aucun logiciel ne peut anticiper toutes les conditions. 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. Reportez-vous a la e e e ` rubrique ?dsolve. Vous pouvez sp´cifier l’algorithme que dsolve(. y(t)]. 8 y –4 2 x 6 1 t –3 ou toute autre combinaison. y(x)). -3.250 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e [t = 1."x". -3. type=numeric) e doit utiliser en r´solvant une ´quation diff´rentielle.. x(t) = 5. ainsi.. axes=boxed ). Il e e n’existe pas de r`gles universelles permettant de pr´venir ces effets .numeric. Soyez prudent lorsque vous utilisez des m´thodes num´riques. y(t)]. x(t).1. y(t) = 7.82688931187210190] La commande odeplot peut maintenant tracer y(t) en fonction de x(t). > labels=["t"."y"]. > odeplot( sol1. .1. labels=["x"..

f (t). f (t) et e e e ainsi de suite. eq := D(θ) = − > ini := theta(0)=100. dt 10 θ(0) = 100. > Order. 6 vous devez g´n´rer des d´riv´es jusqu’` l’ordre e e e e a . soit f (t). 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. Une fois les d´riv´es ainsi obtenues.2 Equations diff´rentielles ordinaires e • 251 Un exemple : les s´ries de Taylor e Dans sa forme g´n´rale. Vous devez ainsi obtenir et manipuler les d´riv´es d’ordre sup´rieur de cette fonction. vous pouvez facilement introduire l’´quae e tion ci-dessus dans Maple. 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. t). > eq := D(theta) = -1/10*(theta-20). e e > taylor(f(t). Si vous utilisez la valeur par d´faut de la variable Order fournie e par Maple. 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).´ 6. vous pouvez les remplacer dans e e la repr´sentation de f (t) en s´rie de Taylor. En utilisant l’op´rateur D. D´terminez ce nombre en fonction de l’ordre de la s´rie e e e de Taylor. consid´rez la loi du refroidissement de Newton : e f(0) + D(f )(0) t + dθ 1 = − (θ − 20).

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

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. . o > eval( %. 100 1 (D(4) )(θ)(0) = (D(2) )(θ)(0).´ 6. 100 1 1 1 (D(3) )(θ)(0) = D(θ)(0). 1 (D(3) )(θ)(0). e e e T := θ(0) + D(θ)(0) t + > subs( op(L(0)). ini ). e e e L := [(D(5) )(θ) = > L(0). (D(2) )(θ) = θ− . 100 100 5 1 D(θ)(0) = − θ(0) + 2] 10 G´n´rez maintenant la s´rie de Taylor. T ). 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. t). 100 100 5 1 D(θ) = − θ + 2] 10 Vous devez ´valuer les d´riv´es en t = 0.2 Equations diff´rentielles ordinaires e • 253 1 1 (D(3) )(θ). (D(2) )(θ)(0) = θ(0) − . 100 100 1 1 1 (D(3) )(θ) = D(θ). (D(4) )(θ) = (D(2) )(θ). e e e [(D(5) )(θ)(0) = > T := taylor(theta(t).

{theta(t)} ). 100 80 60 40 20 0 –20 5 10 15 t 20 25 30 Cet exemple particulier poss`de la solution analytique suivante. e > dsolve( {eq(t). ini}. e > plot(p. q].30 ).30). polynom)... θ(t) = 20 + 80 e(−1/10 t) > q := rhs(%). . > plot( [p. t=0. 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. t=0. q := 20 + 80 e(−1/10 t) Vous pouvez maintenant comparer la s´rie obtenue a la solution e ` exacte.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(%.

.x) + x^4*diff(y(x). il peut ˆtre impossible d’exprimer la solution d’une e EDO lin´aire explicitement. > dsolve( {de}. la commande dsolve peut ree tourner des solutions contenant la structure de donn´es DESol. Ainsi.x. θ(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. vous pouvez o e utiliser l’option series de la commande dsolve.´ 6. > de := (x^7+x^3-3)*diff(y(x). {y(x)} ). > dsolve( {eq(t). ini}.x) > + (23*x-17)*y(x). Cela vous permet de manipuler e l’expression r´sultante de mani`re symbolique avant d’utiliser toute autre e e approche.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. ’series’ ). DESol e est une expression repr´sentant la solution d’une ´quation diff´rentielle e e e sans la calculer explicitement. DESol est similaire a RootOf. 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. {theta(t)}. qui ` repr´sente les racines d’une expression. Dans ce cas.

il peut ˆtre avantageux d’en tracer le graphique. ode1 := ( d2 d y(t)) + sin(t)2 ( y(t)) + y(t) = cos(t)2 2 dt dt > ic1 := y(0) = 1. D(y)(0) = 0 Essayez tout d’abord de r´soudre cette EDO analytiquement au e moyen de dsolve. _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. 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. Par exemple. Dans ces cas. 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). + 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. trouvez une approximation sous forme de s´rie. x). ic1 := y(0) = 1. e e > series(rhs(%). t$2) + sin(t)^2*diff(y(t).t) + y(t) = cos(t)^2.

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

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

[ini2] ] ). La syntaxe de base de DEplot3d est similaire a celle de DEplot. 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. y(0)=-5. y(t)]. eq2} poss`de deux variables d´pendantes. [x(t). ini2 := x(0) = 0.. [ini2] ] ). -5.DEplot3d pour obtenir plus de d´tails. • 259 ini1 := x(0) = 0. > [ [ini1]. DEplot3d est la version tridimensionnelle de DEplot. x(t) et e e e y(t) .´ 6.DEplot pour obtenir davantage de d´tails sur la mani`re de e e tracer des EDO. [x(t). Consultez la rubrique e e ?DEtools. y(t)].5..5. Consultez la rubrique ` ?DEtools. . y(0) = −5 Le syst`me {eq1. e > DEplot( {eq1. -5. Voici un graphique trie dimensionnel du syst`me trac´ en deux dimensions pr´c´demment. eq2}. vous devez donc donner une liste de variables d´pendantes. > [ [ini1]. eq2}. y(0)=5. e e e e > DEplot3d( {eq1.2 Equations diff´rentielles ordinaires e > ini1 := x(0)=0. y(0) = 5 > ini2 := x(0)=0.

une solution pour chaque liste de valeurs e initiales. y(0) = 2.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)=2]. > ini1 := [x(0)=1. y(0) = 0. eq1 := d x(t) = y(t) + z(t) dt > eq2 := diff(y(t).t) = x(t)+y(t)-z(t). z(0) = 2] > ini2 := [x(0)=0. y(0)=2.t) = -x(t)-y(t). eq3}. eq2. z(0) = −1] La commande DEplot3d trace deux solutions au syst`me d’´quations e e diff´rentielles {eq1. . y(0)=0. ini2 := [x(0) = 0. e > eq1 := diff(x(t). ini1 := [x(0) = 1. eq2 := d y(t) = −y(t) − x(t) dt > eq3 := diff(z(t).t) = y(t)+z(t). eq3 := d z(t) = x(t) + y(t) − z(t) dt Voici deux listes de conditions initiales. z(0)=-1].

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

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

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

1. f := x → piecewise(1 ≤ x and x < 2.. [t. > f:= x -> piecewise(1<=x and x<2.5 y 3 2. otherwise. e > plot(f.3). 1. 0. . 0. La fonction retourne la valeur true d`s qu’une condition retourne la valeur true.y(t)].. 0. utilisez odeplot du package plots pour tracer la solution num´rique. 0) > f(x). Examinez e e tout d’abord le comportement de piecewise. puis en regroupant ces multiples approximations pour repr´senter la fonction compl`te. Remarquez que l’ordre des conditions est important.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. 1.264 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e Encore une fois. 0). 1 − x ≤ 0 and x − 2 < 0 . 4 3. odeplot). e > with(plots. [odeplot ] > odeplot( sol2.4 ). if .

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

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

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

vous pouvez sp´cifier a pdsolve d’utiliser une e e ` s´paration de variables (sous forme de produit. heat := ( d d2 u(x. HINT=X(x)*T(t)). HINT=‘*‘.x) = 0. √ _C3 e(k _c 1 t) _C2 sol := u(x. x. _C1=1. e > heat := diff(u(x. mais difficile a lire. t)) − k ( 2 u(x. u(x. e > S := eval( rhs(sol).t).t). ‘*‘) et ensuite de r´soudre e e l’EDO r´sultante en utilisant l’option ’build’. . > pdsolve( heat. ’build’). t)) = 0 dt dx Essayez de trouver une solution de la forme X(x)T (t). e > sol := pdsolve(heat. {_C3=1.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.t). d2 dx2 X(x) = _c 1 X(x)}] Le r´sultat est correct. Pour ce faire. k=1. utilisez l’option HINT de pdsolve pour sugg´rer a Maple une piste a e ` ` suivre. u(x. _C2=1. 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.t). _c[1]=1} ).k*diff(u(x. t) = X(x) T(t)) &where d [{ dt T(t) = k _c 1 T(t).t) . e ` De mani`re alternative. (u(x.

. Il peut ˆtre avis´ de v´rifier la solution avec l’´quation originale. t=0.3 Equations aux d´riv´es partielles e e • 269 S := ex et + et ex Vous pouvez tracer le graphique de la solution. s =intervalle ) Ici. var. > with(PDEtools): Vous pouvez utiliser la commande PDEplot avec la syntaxe suivante. ini. e e e e > eval( heat.5 ). 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. > plot3d( S. u(x. pde est l’EDP.. ini est une courbe e param´trique de l’espace tridimensionnel de param`tre s et intervalle est e e le domaine de s. .´ 6. var est la variable ind´pendante. PDEplot( pde.t)=rhs(sol) ).5. x=-5. %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(%).

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

L’option initcolor modifie la couleur de la courbe des valeurs initiales. u(x.. 7 u(x. s=-2.2. ini.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. e > PDEplot( pde. basechar=true ).2. 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.y). comment Maple vous aide a analyser le e ` . s=-2. > basechar=true.y). u(x. contours=20. > style=patchcontour.6.y) 1 –2 x 2 –2 y 2 6. > PDEplot( pde. de mˆme que la courbe des condie e tions initiales qui est toujours pr´sente. ini.4 Conclusion • 271 L’option basechar=true indique a PDEplot de dessiner a la fois les ` ` courbes caract´ristiques et la surface.45] ).y) 1 –2 y 2 2 x –2 Plusieurs des options usuelles de plot3d sont ´galement disponibles .. e consultez la rubrique ?plot3d. 7 u(x. > orientation=[-43.options. initcolor=white.

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. e e e e e . e e des ´quations diff´rentielles et des ´quations aux d´riv´es partielles. tant symbolique que num´rique.

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. e e e Maple propose plusieurs mani`res d’importer et d’exporter des done n´es num´riques brutes et des graphiques. Vous pouvez couper et coller des r´sultats et exporter des expressions isol´es ou des feuilles enti`res. 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. 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. e 273 .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. ou le syst`me de typographie math´matique e e A X. 7. tracer des fonctions et documenter les r´sultats. 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. 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. e e ee Une fois les donn´es import´es dans Maple. Cependant. 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. On y verra comment Maple interagit avec le syst`me de fichiers et avec d’autres e logiciels.

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

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

.87483111270157598 . e > convert(L[1. 0.9899924966     −0.2]. 3.5403023059.109078174475632172] [−6. 0. 1. .30278930720000119 .276 • Chapitre 7: Entr´es et sorties e > L[ 1. consultez la rubrique d’aide ?ImportMatrix .12516888746710864] Pour plus d’information au sujet des options de commandes telles que ImportMatrix.-1.1034788321 Vous pouvez aussi effectuer des calculs sur la matrice L en utilisant le package LinearAlgebra. 0. L. −0. −0.5403023059     −0.6536436209     0. [91.2836621855  0.41489848119999984 .   1  0.4161468365.30278930720000119 .6536436209. [1.-1. −6.4161468365     −0.2836621855..mean](%) . 2 ]. −0.9899924966.list). −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.9601702867] > stats[describe. −0.109078174475632172 . . 3. puis de les importer e dans Maple.41489848119999984] [1.9601702867 Convertissons ces donn´es sous forme de liste. > LinearAlgebra[Transpose](L) . 0. Vous pouvez coller les commandes du fichier texte dans votre feuille de calcul ou utiliser la commande read.

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

0] > V := Vector(L). Pour plus d’information. L := [3. 3. il est possible d’utiliser la e commande ExportVector.278 • Chapitre 7: Entr´es et sorties e 7. . vous pouvez le convertir en une matrice et ´crire les nombres e dans un fichier de mani`re structur´e.  −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. nomfichier est la chaˆ contenant le nom du fichier o` ExportMatrix ıne u doit sauvegarder les donn´es. vous permettant d’ime e porter les nombres dans un autre programme. > L := [ 3. Vous pouvez utiliser la commande ExportMatrix avec la syntaxe suivante.1415. La commande ExportMatrix ´crit e e e les colonnes de donn´es num´riques dans un fichier. 3. 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 ). Vous pouvez traiter le r´sultat ult´rieurement. e e e avec Maple ou avec un autre programme.2 ´ Ecrire des donn´es dans un fichier e Apr`s avoir utilis´ Maple pour effectuer un calcul. reportez-vous a la ` rubrique ?Vector.txt". −65. tout vecteur.1415. 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. vous pouvez enregistrer e e le r´sultat dans un fichier. et donn´es est une matrice. ExportMatrix( "nomfichier ". > L:=LinearAlgebra[RandomMatrix](5). Remarquez e e que toute liste. -65. donn´es ) e Ici. ´ 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. 0 ].

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

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. expr e s’´value a son propre nom. La commande oe A A latex convertit les expressions Maple au format L TEX. Ainsi.1 pour plus d’information sur la commande read.m. e ` > restart: > expr. Remarquez que expr a retrouv´ sa valeur originale. De son cˆt´. Utilisez la commande latex de la mani`re suivante.m". "qbinom. convertir le r´sultat en code e e e A A L TEX et l’inclure dans un document L TEX. > save qbinomial. A Convertir au format LTEX TEX est un programme permettant la pr´sentation de textes math´mae e tiques. L TEX est un package macro de TEX. 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. nexpr. vous pouvez utiliser Maple pour r´soudre un probl`me.m". expr.m. e > read "qbinom. e .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 ). Ainsi. (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.

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

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

expr := Texte Maple e e Le texte Maple n’est que du texte sp´cialement marqu´ qui conserve la distinction entre le texte. 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.3 Exporter des feuilles compl`tes e • 283 integrand. depends on the parameter a.. / | 2 | x sin(x . Notice that its integrand. x^2*sin(x-a). > answer := value( % ). expr := Int(x^2 * sin(x-a). e e e En lisant ou en collant du texte. chaque ligne qui commence avec un di`se (#) comme du e e texte. Le texte suivant est une portion d’une feuille export´e en texte e Maple. x). depends on the parameter a. / | 2 | x sin(x . Give the integral a name so that you can refer to it later. 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. les entr´es de Maple et ses sorties. vous e pouvez exporter une feuille de calcul en texte Maple. x^2*sin(x-a). Give the integral a name so that you can refer to it later. Ainsi. et ignore toutes les autres lignes.x)... > expr := Int(x^2 * sin(x-a). Maple traite chacune des lignes qui commencent par un prompt Maple suivi d’un espace (> ) comme une entr´e Maple..a) dx | / expr := .a) dx | / The value of the integral is an anti-derivative of the integrand.7. x). # # # # # # > An Indefinite Integral by Jane Maplefan Calculation Look at the integral Int(x^2*sin(x-a)..

si vous utilisez l’option Paste habituelle. si vous collez du texte Maple dans votre e feuille en utilisant Paste Maple Text du menu Edit. Double-cliquez sur le e ıte fichier souhait´ et choisissez encore Maple Text dans la boˆ de dialogue e qui apparaˆ ıt. 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. choisissez Open du menu File. L’exemple suivant est une portion d’une feuille Maple export´e en e A X. De mani`re similaire.284 • Chapitre 7: Entr´es et sorties e # The value of the integral is an anti-derivative of the # integrand. Maple ne conserve aucune structure : si vous collez dans une zone d’entr´e. format L TE %% Created by Maple 8. Toutes e e e ae e les distributions de Maple incluent les fichiers de style n´cessaires. le texte coll´ apparaˆ sous forme de e ıt texte Maple. il interpr`te tout le texte coll´ comme une entr´e. Par contre.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} . e Si votre feuille contient des graphiques incorpor´s.tex que Maple g´n`re est prˆt ` ˆtre compil´ par L TEX. Dans la boˆ de dialogue qui apparaˆ alors. A fichier . > answer := value( % ). 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. Maple conserve la structure du texte Maple. Si vous copiez une partie de votre feuille en texte Maple et le collez ensuite dans une autre application. choisissez Maple ite ıt Text dans la liste d´roulante des types de fichiers.00 (IBM INTEL NT) %% Source Worksheet: tut1. et si e e e e vous le collez dans une zone de texte. Maple interpr`te tout le texte coll´ e e comme du texte standard. Vous pouvez ´galement copier et coller du texte Maple grˆce au menu e a Edit. Pour ouvrir une feuille en format texte Maple.

}{% $a$% }.a)\.}{% $\int x^{2}\.tex.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). Vous pouvez inclure ces fiA a chiers graphiques dans votre document L TEX ` l’aide de la commande A L TEX \mapleplot. La section Imprimer des graphiques de la page 288 explique comment enregistrer des graphiques directement.html g´n´r´ par Maple peut ˆtre ıt.}{% $x^{2}\. depends on the parameter \mapleinline{inert}{2d}{a.x).a)$% }.\mathrm{sin}(x . Notice that its integrand. 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 Les fichiers de style L TEX supposent que vous imprimez le fichier . \mapleinline{inert}{2d}{x^2*sin(x-a). e ee e .\mathrm{sin}(x .tex en utilisant le pilote d’imprimante dvips.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 .7.

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

{\rtf1\ansi\ansicpg1252\deff0\deflang1033 {\fonttbl {\f0 Times New Roman} {\f1 Symbol} . x). e e e L’exemple suivant est le d´but d’une feuille Maple export´e en format e e RTF. </font> <img src="tut12. 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.3 Exporter des feuilles compl`tes e • 287 <font color=#000000>. Les feuilles de e calcul (spreadsheets ) ne sont pas pleinement export´es. mais les cellules e visibles de mˆme que les en-tˆtes de colonnes et de lignes sont export´s.html" target="_top">an anti-derivative</a> <font color=#000000> of the integrand.</font> </p> <p align=left><a name="expr command"> <tt>&gt.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).7.rtf g´n´r´ par Maple peut ˆtre charg´ dans ıt. depends on the parameter </font> <img src="tut13. e ee e e n’importe quel traitement de texte qui supporte le format RTF.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. Notice that its integrand.</font></b> </p> <p align=center> <img src="tut14.gif" width=13 height=32 alt="[Maple Math]" align=middle> <font color=#000000>.</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> </p> <p align=left> <font color=#000000>Give the integral a name so that you can refer to it later.

vous poue e e vez l’imprimer par le menu File comme toute autre feuille Maple. } {\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). Maple affiche par d´faut les graphiques die e e rectement dans la feuille (on parle de graphiques ins´r´s ). La commande suivante indique a Maple d’afficher le graphique dans une fenˆtre ` e s´par´e de votre ´cran. e e e > plotsetup(window). \red255\green0\blue0. puis XML. 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.xml g´n´r´ par Maple peut ˆtre charg´ comme une feuille Maple tradie ee e e tionnelle. choisissez Export As du menu File.</mapletext></para> </exchange></section> 7. e <section><exchange><para pstyle=’Normal’ prompt=’> ’><mapletext maple-input=’true’ cstyle=’Maple Input’>a.4 Imprimer des graphiques Sur la plupart des plateformes. Lorsque votre graphique s’affiche dans une fenˆtre s´par´e. \red0\green0\blue0.288 • Chapitre 7: Entr´es et sorties e {\f2 Courier New} } {\colortbl \red205\green205\blue205. . Vous pouvez utiliser la commande plotsetup pour changer ce comportement. Le fichier . \red0\green0\blue255.

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

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

` 291 .8 Les maplets En utilisant le package Maplets. e e e Son contenu peut ´galement s’av´rer utile aux programmeurs de maplets. des boˆ e e ıtes de dialogue et d’autres interfaces visuelles qui interagissent avec l’utilisateur. vous pouvez cr´er des fenˆtres.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. Les utilisateurs peuvent effectuer des calculs ou tracer des graphiques de fonctions sans utiliser l’interface de la feuille de travail. Le pr´sent chapitre est destin´ en priorit´ aux utilisateurs des maplets. e e 8. Par exemple.

e . Une fenˆtre ne doit pas e ee e ˆtre vue comme une maplet.292 • Chapitre 8: Les maplets 8. e fenetre Une fenˆtre est un ´l´ment d’une maplet. 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 o ee Une maplet peut contenir plus d’une fenˆtre. des fenˆtres et leur disposition. des boˆ de dialogue et des actions. a son tour. 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 utilisateur de maplet Un utilisateur de maplet est quelqu’un qui interagit avec une maplet. sans s’y limiee ter. et chaque fenˆtre. mais plutˆt comme un ´l´ment de maplet.2 Terminologie maplet Une maplet est une collection d’´l´ments incluant. e e ` peut contenir plusieurs ´l´ments r´gissant la disposition et la fonction de ee e cette fenˆtre.

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

5 Comment fermer une maplet Si la maplet contient un bouton Cancel. Cette derni`re se ferme. Shutdown())] ]): maplets[Display](my2maplet). e 8. une icˆne e o (horloge sous UNIX. 8. Note : Cette icˆne varie selon votre gestionnaire de th`mes. cliquez sur le bouton de fermeture appropri´ pour votre plateforme.294 • Chapitre 8: Les maplets > > > > > with(maplets[Elements]): my2maplet := Maplet ([ ["Hello World #2". Un menu d´roulant apparaˆ e ıt.6 Comment utiliser les Maplets et la fenetre Maple (modalit´) e Lorsqu’une maplet est en cours d’ex´cution. Choisissez Close. Cliquez sur un champ de saisie de la maplet. Si vous d´placez le curseur au-dessus de cette feuille. 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. Button("OK".7 Comment activer la fenetre d’une maplet 1. Ce champ apparaˆ en ıt surbrillance. Par e exemple : Sous UNIX : 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. feuille de travail est inaccessible. cliquez sur ce bouton. sablier sous Windows) apparaˆ indiquant que la ıt. la feuille Maple est inace cessible. o e 2. 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. Sinon. . 8.

8. e 1. Pour arrˆter la maplet en cours. 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. 1. La liste se d´place automatiquement jusqu’` un ´l´ment e a ee commen¸ant par la lettre saisie. ee ee La barre d’espacement et la touche TAB Vous pouvez utiliser la souris pour cliquer sur un bouton comme Cancel ou OK. 1. c 2. Entrez l’expression.8 Comment arreter puis red´marrer une maplet e • 295 2. Appuyez sur la barre d’espacement. e 8. ex´cutez-la a nouveau au moyen de l’outil e e ` lastmaplet. Pour red´marrer la maplet. 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. Utilisez la touche Tab pour positionner le curseur sur le bouton de votre choix. il vous est tou` jours possible d’interrompre le processus en cours. 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. e e . Voici comment les e utiliser efficacement. > maplets[Display](lastmaplet). Vous pouvez ´galement utiliser les touches Tab et la barre e d’espacement de la mani`re suivante. les nombres ou le texte appropri´s. 2.8 Comment arreter puis red´marrer une maplet e Lorsque les calculs a effectuer par une maplet sont longs.9 Comment utiliser les raccourcis de l’interface graphique Listes d´roulantes e Certaines maplets contiennent des listes d´roulantes.8. La commande choisie est ex´cut´e. Entrez le premier caract`re de l’´l´ment de la liste que vous souhaitez e ee atteindre.

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful