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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1/3. −x4 − x3 + x2 + x + 1 > sort_poly.x^4. Ainsi.I)*x + 3 + 4*I. Plutˆt que de conserver une e e o deuxi`me copie du polynˆme original dont les termes ont ´t´ tri´s.sqrt(3)*x . (1 − I) x + 3 + 4 I > a*x^4 + b*x^3 + c*x^2 + d*x + f. 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. −x4 − x3 + x2 + x + 1 . 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 . si vous affichez le polynˆme apr`s l’avoir o e o e pass´ ` sort. sort _poly := x + x2 − x3 + 1 − x4 > sort(sort_poly). 1 1 2 √ x − 3x − 2 3 > (1 .x^3 + 1 . les prochaines e o sections en examinent quelques-uns. 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 .62 • Chapitre 3: Trouver des solutions x+y+z > 1/2*x^2 .

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

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

{y=1.x=-1}).2*y + x^2*y + 1.z).1 – Commandes servant a d´terminer les coefficients polynomiaux ` e Commande coeff lcoeff tcoeff coeffs degree ldegree Description extraire un coefficient trouver le coefficient du terme de plus haut degr´ e trouver le coefficient du terme de plus faible degr´ e retourner une suite de tous les coefficients d´terminer le degr´ (sup´rieur) du polynˆme e e e o d´terminer le degr´ inf´rieur du polynˆme e e e o > mul_var_poly := y^2*x .3. −1 > degree(poly. −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. poly := 3 z 3 − z 2 − z + 1 > coeff(poly. e > poly := 3*z^3 . mul _var _poly := y 2 x − 2 y + y x2 + 1 > eval(mul_var_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.z^2 + 2*z . z^2).4 Les polynomes • 65 Tab. o e e .3*z + 1. 3.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

. .04. .003. .003.9125.45. 01 sont suffisamment petites pour e ˆtre n´gligeables.04. Weight(1. marks := [64.003. 2). .0.04.002] qui sont ´quivalentes a cette liste statistique.9125. .9125. 72. il est possible de les regrouper et de ne sp´cifier qu’un e e e intervalle (en utilisant “. readings := [Weight(.83.83. Weight(1. 2). 73] tout comme readings. . 2).01. .75.8 Les packages Maple • 95 Le package stats traite les donn´es sous la forme de listes statise tiques . qui peuvent ˆtre de simples listes Maple.75. e > describe[mean](marks). .002] L’expression Weight(x. 81. 2). .82.75..874.75. Une liste statistique peut e ´galement contenir des intervalles et des valeurs auxquelles des poids ont e ´t´ assign´s. e ` > readings := [ Weight(.9125. > . . readings := [. 82. 1. .874. .874. .93. .002 ].72.73].874. Weight(. .81.002 ].68.874. . .874.75. La diff´rence se comprend plus facilement au moyen d’un ee e e exemple. Weight(1.01.. .75. 1. 2)] Le sous-package describe contient des commandes servant a l’analyse ` de donn´es.04.83.003. .83. Si des diff´rences de moins de 0.. > readings := [ 0. 2).n ) indique que la valeur x apparaˆ n fois dans ıt la liste.003. Weight(0. > .9125. 45. marks est une liste standard.04.04.01.75. > .83. 2). 1. . . 0. . 76. > readings := [ Weight(.76.01. . . .”). . . 2).01.75. Weight(1. 68.003. 93.3.01.. 1. 2) ].01. 2). 75.9125.002.002. .75. .83. . > marks := > [64.01. readings := [Weight(.

2..4386378394. .1729739933.858250470.5872984199.4470293004.96 • Chapitre 3: Trouver des solutions 729 10 > describe[range](marks).01 > describe[standarddeviation](readings).1. −. −. 2. 1. −1. −.005183053789. . 1.095665255. −.4038750456 Ce package contient plusieurs distributions statistiques. −. −.. groupez-les en e e classes et tracez un histogramme de ces classes.2620109124.1093403084.407989130. −. G´n´rez des e e donn´es al´atoires en utilisant la distribution normale.93 > describe[range](readings). . .6341448687.463572278. . .6917100232. 1.7304597374.7487697029.342701867.3758638317. 1.6707087107.8670709448.8364873682.1231141571. −.08547526754. ..452138520. . . 1.1. −1..6819890237. −1.4908898750. . .7765483851. . .-2..-2.140005385. . . −1..162605068. −.283733823. −.8876933468.8181350112.4996033128.2.04721150696.4128440679] > ranges:=[-5. .0. −. −. .3876183720.5].583279600. 45.253885017.-1.-1. .2.625165927. .3045008349.1238893314.09467224460. random_data := [1.03801888006. > random_data:=[random[normald](50)].1. .. −.. . −.2068680316.7648245898.599692668.1529160443. −. −1.0.9886372087.01231563388. .7709242575. −. .6385850228.002. −.

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

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

Que vous utilisiez ou non les commandes solve. ces m´thodes e e s’av`reront utiles a de nombreuses reprises.3. A e e ` u ce point de votre lecture. vous pouvez interrompre ici votre ´tude pour travailler e (ou jouer !) avec Maple.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. 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. . La section 3. y = } 2 8 3. e ` A votre guise. z = .9 Conclusion • 99 1 49 {x = 0.1 vous e e e a introduit aux commandes solve et fsolve de mˆme qu’` leur utilisation e a ad´quate. vous ne connaissez pas encore tout a fait ce ` logiciel. e ` Les derni`res sections du pr´sent chapitre ont introduit les manie e pulations. Vous en savez cependant suffisamment pour commencer a utiliser ` Maple de mani`re efficace.

100 • Chapitre 3: Trouver des solutions .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

En coordonn´es sph´riques.4. Figure 4. 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. les coordonn´es sph´riques sont e e une autre option. la distance e e e du point a l’origine.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 . vous devez d’abord appeler la commande e e with(plots). e .2 Le syst`me de coordonn´es sph´riques e e e z φ 0 x r y θ Maple peut tracer une fonction en coordonn´es sph´riques en utilisant e e la commande sphereplot du package plots. Pour acc´der a la forme e ` abr´g´e de cette commande. Pour ´viter d’afficher la liste de toutes les commandes de e plots. o > with(plots): Vous pouvez utiliser la commande sphereplot de la mani`re suivante. tapez les deux-points plutˆt que le point-virgule.

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

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

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

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

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. x=-5.5. lightmodel=none ).124 • Chapitre 4: Tracer des graphiques La valeur par d´faut de grid est d’environ 25 points sur 25. e Maple poss`de un grand nombre de configurations de sources lumie neuses donnant des r´sultats esth´tiquement satisfaisants. . Voici une surface colori´e avec un shading zgrayscale sans ´clairage. une ou plusieurs sources lumineuses color´es illuminent la e e surface.y=-5. Pour colorier la surface directement. e Mod`les de coloriage et d’´clairage e e Deux m´thodes permettent colorier une surface en trois dimensions. Dans e la premi`re. Dans la seconde...5. L’usage simultan´ de sources lumineuses et de coloriage direct peut e compliquer le rendu des couleurs. > shading=zgrayscale. Utilisez des sources lumineuses ou un e coloriage direct. la couleur de chaque point est fonction directe de ses coordonn´es. 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. les graphiques apparaissent en noir et blanc. 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. e Essayez-les vous-mˆme pour voir les effets de la couleur.y=-5. e 4..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). animate et animate3d. > with(plots): . sont e d´finies dans le package plots. comme la d´formation e e d’une balle qui rebondit. x=-5. Dans le pr´sent manuel. > shading=none. temps =intervalle ) Les images suivantes sont un exemple d’animation. des images statiques ne mettent pas toujours en ´vidence certains comportements graphiques. e e L’animation en deux dimensions Vous pouvez sp´cifier une animation bidimensionnelle selon la syntaxe qui e suit. Une animation Maple ressemble a une s´quence d’images d’un film : ` e une suite de graphiques s’affichent rapidement l’un apr`s l’autre.3 L’animation Tracer des graphiques constitue une excellente mani`re de repr´senter e e l’information .. Les deux e commandes utilis´es pour les animations. cependant.4.5. > plot3d( x*y^2/(x^2+y^4). x =intervalle. animate( y-expr. lightmodel=light1 ).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 0 0.6 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.4 –0. e e > cup := hemisphere(): > display( cup ).5 La commande hemisphere cr´e un h´misph`re. n’´crivez rien entre les e e parenth`ses pour accepter les valeurs par d´faut.7 Manipuler des objets graphiques • 143 3 2. 0 ): > display( cap ). Vous pouvez sp´cifier e e e e le rayon et les coordonn´es de son centre . sinon.4.4 –0.5 2 0.20. Si vous ´levez le point milieu de chaque pentae gone au moyen de la commande stellate. Pi. l’objet r´sultant se nomme e . > cap := rotate( cup.4 –0.2 1. 0.2 1 0.

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

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

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

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

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

beaucoup de temps et d’efforts sont consacr´s ` la manipue a lation d’expressions. 5. et les e modifier. chaque situation peut avoir sa propre d´finition e e d’une forme simple . 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. 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. ou a convertir une expression sous une e e e ` forme particuli`re requise par certaines routines Maple.5 L’´valuation et la e simplification Dans Maple. Les manipulations math´matiques sont celles correspondant e a ` une forme de processus math´matique. eq := 4 x + 17 = 23 149 . Ce qui est simple dans un contexte peut ne e pas l’ˆtre dans un autre . e Le probl`me de la simplification s’av`re ´tonnamment complexe en e e e math´matiques symboliques. 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. 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.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.

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

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

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

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

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

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

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

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

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

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

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

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

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

|x y| > simplify( expr. x2 y 2 x2 y 2 L’option assume=propri´t´ indique a la commande simplify d’ase e ` sumer que toutes les inconnues de l’expression poss`dent la propri´t´. assume=real ). Simplification au moyen des relations accessoires Vous pouvez quelquefois simplifier une expression en utilisant votre propre r`gle de transformation.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 . expr := > simplify( expr ). e e e > expr := sqrt( (x*y)^2 ).2. > expr := x*y*z + x*y + x*z + y*z. xy Vous pouvez ´galement vous servir de la commande assume pour plae cer des hypoth`ses individuellement sur des variables. assume=positive ). e ee > simplify( expr. Consultez la section e 5. La commande simplify vous permet de le faire e en utilisant des relations accessoires .5. { x*z=1 } ). 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 ee en y Dans le second cas. [y. ea > poly := 1 + x^4 . [x.x] ). Les manipulations de polynˆmes en base de Gr¨bner sont a la base du o o ` fonctionnement de simplify. {siderel}. n’en trouvant aucun. La commande simplify consid`re les ´quations e e donn´es comme des simplifications additionnelles. Vous pouvez en trier les termes par ordre d´croissant de e e ee e degr´ ` l’aide de la commande sort. l’ex´cution est arrˆt´e. Maple effectue la substitution y 2 = 1 − x2 dans la premi`re expression.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. y3 − x y2 + x > simplify( expr. l’ex´cution est arrˆt´e.x^2 + x + x^3. {siderel}. expr := x3 + y 3 > siderel := x^2 + y^2 = 1. Pour obtenir davantage d’information sur cette commande.siderels. e Il est ´galement possible de sp´cifier l’ordre dans lequel simplify e e effectue l’op´ration.y] ). siderel := x2 + y 2 = 1 > simplify( expr. Maple effectue la substitution x2 = 1−y 2 dans la premi`re expression. x3 − y x2 + y Dans le premier cas. consultez la rubrique ?simplify. puis tente d’effectuer une substituion pour les termes e 2 . n’en trouvant aucun. poly := 1 + x4 − x2 + x + x3 . 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´´. puis tente d’effectuer des substitutions pour les e e ee termes en x2 . e > expr := x^3 + y^3.

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

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

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

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

x=infinity). x=0.5.. x=infinity).x = 0 . 0 La limite suivante d´pend de b. > frac(n).infinity ). > frac(n). t2) Definite integration: Can’t determine if the integral is convergent. e e e > infolevel[int] := 2.. infolevel int := 2 > 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). integer). frac(n) > assume(n. int/cook/nogo1: Given Integral Int(exp(c*x). signum(b) ∞ > assume( b>0 ). 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 .x = t1 . La e commande frac retourne la partie fractionnaire d’un nombre.2 Les hypoth`ses e • 169 Plusieurs fonctions font usage des hypoth`ses sur une inconnue. ∞ Vous pouvez utiliser infolevel pour obtenir de Maple un rapport d´taill´ de l’activit´ d’une commande. > limit(b*x. e > limit(b*x..

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

a4 > a[i] := evaln( a[i] ). ai Vous devez utilser evaln pour d´saffecter a[i]. > ’a[i]’. a4 := 9 Remarquez que ’a[i]’ est a[i] et non a[4]. ’q’ ). x-1.204 • Chapitre 5: L’´valuation et la simplification e i := 4 > a[i] := 9. 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. 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. > divide( x^2-1. x+1 Rappelez-vous d’utiliser un nom entour´ de guillemets afin de vous e assurer de ne pas passer de variable allou´e ` la proc´dure. e e La commande divide assigne le quotient au nom global q. e > evaln( a[i] ). true > q. e .

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

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

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

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

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

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

> h=h_values ): La commande display du package plots peut afficher les graphiques de la suite sous forme d’animation. 1.246939100.250111128.4.251406908..251609743. x=0.248921648. 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.245408615. Tout d’abord. 1. 1. 1. > with(plots): Warning.251782800 Voici l’´quation de la pente de la s´cante. the name changecoords has been redefined . 1. y= (esin(1+h) − esin(1) ) (x − 1) + esin(1) h Vous devez faire de cette ´quation une fonction. > view=[0.243256512. 1.4] ). e > S := seq( plot( [f(x). vous e e devez cr´er une suite de graphiques.p0[2] = m * ( x . 1. e > secant := unapply( rhs(%).1 Calcul diff´rentiel ´l´mentaire e ee • 211 h_values := 0.174305789.. 1. 1. y ).. 1. 1.250534250.4.210917616. 0. 1. 1.250880512.251167122. 1.248066842.p0[1] ).053234748.226806975. > isolate( %.235154852. 1. secant(x)]. 1.240091510.249585493. 1. 1. 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. x ). 1.1628009030. e e > y .6.

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

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

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

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

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

xi=2. vous dee vriez entrer .4. x ). e e e > f6 := unapply( %.16 0 2 xi 4 4 x 2 . D´finissez la e e e fonction f 6 comme ´tant cette d´riv´e.. axes=boxed ). f6 := x → −sin(x) esin(x) + 16 cos(x)2 esin(x) − 15 sin(x)2 esin(x) + 75 sin(x) cos(x)2 esin(x) − 20 cos(x)4 esin(x) − 15 sin(x)3 esin(x) + 45 sin(x)2 cos(x)2 esin(x) − 15 sin(x) cos(x)4 esin(x) + cos(x)6 esin(x) Vous pouvez maintenant calculer l’erreur de l’approximation. 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.4.6.a)^6.. Sans cet op´rateur. > err := 1/6! * f6(xi) * (x . 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. x six fois pour calculer la d´riv´e d’ordre 6. x=2. > plot3d( abs( err ). > style=patch.

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

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

4 ).2 2.6948635283.8 3 3. index = 3). > plot( eval(err_xi. arctan( RootOf(%1.2 2.4 2. xi=2. −1. index = 5)2 − 1)). 0. RootOf(_Z 2 + RootOf(%1.570796327 + 3. arctan( RootOf(%1..083849212 I} Il est recommand´ de v´rifier l’ensemble solution en tra¸ant le grae e c phique de la solution.570796327 + 0. 2 RootOf(_Z 2 + RootOf(%1. index = 5).8535664710 I. index = 2).3257026605. x=2). arctan( RootOf(%1.570796327. RootOf(_Z 2 + RootOf(%1. −1. index = 4). index = 1).570796327 + 2. 1.2 3.6 0. 0. RootOf(_Z 2 + RootOf(%1.4 0. index = 4)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).220 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e 1 sol := { π. −0.6 2. {−1. arctan(RootOf(%1. index = 6)2 − 1)). index = 1)2 − 1)). index = 6). arctan( RootOf(%1. −1.473801030 I. arctan( RootOf(%1.2 0 –0.4 3. RootOf(_Z 2 + RootOf(%1.6 3. index = 2)2 − 1)).8 4 xi . RootOf(_Z 2 + RootOf(%1.570796327 + 1.767486929 I.

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

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

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

0. {xi=2.01542298119 (4 − π)6 . x=4} > eval( err. 0.180293062. {0.180293062 − π)6 } Agrandissez maintenant l’ensemble des grandes erreurs. x=4} ). −0. ). π} L’ensemble suivant contient les erreurs extrˆmes a la fronti`re ξ = x. vous devez ajouter l’erreur aux quatre coins de l’ensemble des valeurs critiques. sol := {2.180293062 − π)6 .07333000221 (2 − π)6 } Enfin. ) }. critical := {0.04005698601 (2. e ` e > { seq( B. . x=2} > eval( err. > critical := critical union %. {xi=4. x=2} > eval( err.04005698601 (2.224 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e > sol := sol union { % }. x=sol ) }. > critical := critical union > { eval( err. {xi=4. ). 0. {xi=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) )(2 − π)6 . .07333000221 (2 − π)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 . 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.180293062 − π)6 .01542298119 (4 − π)6 .6. ee > map( abs. 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 . critical ).04005698601 (2. appliquez la commande abs aux ee ´l´ments de critical.1 Calcul diff´rentiel ´l´mentaire e ee • 225 critical := {0. 1 0. −0.

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

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

> seq( evalf(ApproximateInt( f(x).. x=0.860504866.. 6. 6.14).888196447. > partition=n^2)). partition=6.10] UsingaLeft-endpointRiemannSum ApproximateValue:6. 6. 6.5 4 x 6 8 10 –1 Area:6.10.864739771. method=left.10. 6.857222010.5 1 0. n=3.839071529 1. 6. .870316620. 5 3 5 i=0 1 5 ( + sin( i)) 2 3 Ce nombre est approximativement > evalf( % ). 6.852550665 Utilisez l’option output = animation pour cr´er une animation de la e somme de Riemann. > output=sum). 6. method=left.948819107. 6. Augmentez le nombre de boˆ jusqu’` 12 et calculez la valeur e ıtes a de ApproximateInt pour chacune de ces boˆ ıtes.228 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e AnApproximationoftheIntegralof f(x)=1/2+sin(x) ontheInterval[0.5 2 –0.877830054.845601766 L’approximation de l’aire s’am´liore a mesure que plus de boˆ sont e ` ıtes utilis´es. 6. 6. x=0. 6.902789479.923289158. 6.. > ApproximateInt( f(x).845601763 f(x) Changez output = plot pour output = sum pour calculer l’aire des boˆ ıtes.854630209.948089404.

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

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

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

> fx(0. -3. y) = (r cos(θ). est e e ` e > fx := D[1](f).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. la valeur de fx est > fx( r*cos(theta).. 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. La d´riv´e partielle de f par rapport a son premier param`tre. Voici le graphique de f .. r sin(θ)). .0) := limit( ( f(h. 0. h=0 ).0). x.3 ).232 • Chapitre 6: Exemples tir´s du calcul diff´rentiel e e f(0. > plot3d( f. Error. ` > fx(0. fx := (x.0) ..f(0. (in fx) division by zero Vous devez donc utiliser la d´finition de la d´riv´e exprim´e sous forme e e e e d’une limite. r*sin(theta) ).0) )/h. -3. 0) := 0 En (x. fx(0.

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

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

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

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

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

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

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

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

e e e e y1 (t) et y2 (t). ´valuez l’expression x[1](t) en sa solution pour extraire l’expression x1 (t). de la mani`re suivante. Tout d’abord. 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 . > eval( x[1](t). ans ). 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. − > y[1] := unapply( %.´ 6.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). t ). x1 (t) − cosh( 11 11 10 √ 100 1 √ =− −11 100 (t − 1)) Heaviside(t − 1) cosh( 121 10 √ √ √ 2 1 √ − −11 100 t) + e(−1/10 −11 100 t) cosh( 11 10 √ √ 5 + e(1/10 −11 100 t) + Heaviside(t − 1) t2 11 10 2 155 − Heaviside(t − 1) t + + Heaviside(t − 1)} 11 11 121 Vous pouvez transformer la solution pr´c´dente en deux fonctions.

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

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

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

on obtient la mˆme solution que par e la m´thode pr´c´dente. eq := 2 x ( d2 d y(x)) + ( y(x)) + y(x) = 0 2 dx dx Demandez a Maple de r´soudre l’´quation. ` e e . 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. 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. La m´thode des s´ries est ee ` e e e souvent d’un grand secours avec les EDO non lin´aires ou de grand ordre. Maple trouve d’abord une ape e proximation des ´quations sous forme de s´rie.´ 6. e e e > eq := 2*x*diff(y(x). 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.x) + y(x) = 0.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 Lorsque Maple applique la m´thode des s´ries. u Consid´rez l’´quation diff´rentielle suivante.x. il assume qu’il existe e e une solution de la forme ∞ xc i=0 ai xi o` c est un nombre rationnel. Il r´sout ensuite cette e e e approximation de mani`re symbolique au moyen de m´thodes exactes.x) + diff(y(x).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Les donn´es peuvent ˆtre des mee e sures exp´rimentales ou des nombres g´n´r´s par d’autres programmes. 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.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 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. e e ee Une fois les donn´es import´es dans Maple. ou le syst`me de typographie math´matique e e A X. 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. 7. On y verra comment Maple interagit avec le syst`me de fichiers et avec d’autres e logiciels. e 273 . Cependant. 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. 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. tracer des fonctions et documenter les r´sultats.1 Lire des fichiers On utilise g´n´ralement la lecture de fichiers dans Maple pour deux raie e sons : pour obtenir des donn´es et pour r´cup´rer une liste de commandes e e e Maple enregistr´es dans un fichier. Il 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

. au chapitre 9.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).296 • Chapitre 8: Les maplets 8.

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful