Cours Maple
Cours Maple
Cours Maple
A)GENERALITES: exemple d’entrée: l’expression x+cos(y*z); sera traduite sous la forme [opéra-
teur,opérandes] soit [+,x,[cos,[*,y,z]]] afin d’être traitée.
I) ARCHITECTURE GENERALE DE MAPLE: On pourrait aussi choisir une représentation arborescente et visualiser
l’expression par
STUDENT LINALG MAPLE est un +
logiciel de calcul formel
fonctionnant autour d’un x cos
noyau central effectuant les
NOYAU CENTRAL calculs. Des bibliothèques
+STANDART LIB contenant les fonctions les *
+200 FONCTIONS plus couramment utilisées
+LIB MISC sont ouvertes au démarrage. y z
exemple d’évaluation: pour évaluer la dérivée d’un produit D(f*g); Maple traduira
Si l’on désire l’expression par [D,[*,f,g]] puis va la transformer en: [+,[*,[D,f],g],[*,f,[D,g]]]
utiliser d’autres bibliothè-
PLOTS ... ques plus spécifiques, il
D
faudra les charger préala- Si on choisit une représentation arborescente:
blement par l’instruction:
with(nom de bibliothèque); *
MAPLE travaille à partir du langage LISP - pour List Processing-. Il manipule donc On peut imaginer le fonctionnement de Maple comme une boucle sans fin:
des objets qui sont des listes: -affichage du prompt >
-lors de l’entrée, l’utilisateur fournit une liste -saisie d’une expression
-lors de l’évaluation, Maple modifie cette liste -évaluation et simplification de l’expression
-lors de l’affichage, Maple retourne à l’utilisateur la liste modifiée en guise de -affichage du résultat si la commande se termine par “;” ou non affichage si la
résultat. commande se termine par “:”.
Nicolas CHIREUX Page 1 sur 17
Résumé des fonctions de Maple SPÉ MP 2
On parle de boucle TOP-LEVEL. sion.
exemples: f:=x->x^3; b:=`pas de solution`; solve(x^3-4*x^2+1=0); ..
On peut taper plusieurs commandes à évaluer successivement sur un même ligne
séparées par des “;” ou “:”.Les réponses seront affichées à la suite. Comme vu précédemment, Maple traduira immédiatement ces expressions sous
forme[opérateur,opérandes]. Il existe diverses fonctions permettant de visualiser cette tra-
On peut écrire sur plusieurs lignes des instructions de commandes -si l’on sou- duction:
haite par exemple écrire une procédure- sans évaluation intermédiaire en tapant -whattype(expression) donne le type général (integer, float, complex, string,
“MAJ+ENTRÉE”. expseq, list, set, function, +, *, ^, =,...)
Une même commande peut être découpée sur plusieurs lignes avec le “\”,les mo r- -op(0,expression) est plus précise que la précédente
ceaux seront recollés par Maple avant évaluation - c’est juste un artifice de présentation. -op(expression) donne la liste des opérandes
On peut rappeler les trois dernières expressions évaluées -dans le déroulement -nops(expression) donne le nombre des opérandes
chronologique- sans les retaper avec le “ pour la dernière,”” pour l’avant dernière et “”” -op(i,expression) donne la ième opérande
pour l’antépénultième. -op(i..j,expression) renvois la suite des opérandes du ième au jème
3) déroulement d’une évaluation: On peut modifier une expression à l’aide des fonctions suivantes:
Maple mémorise toutes les évaluations qu’il fait dans l’ordre chronologique. Cet -map(f,expression) où f est une fonction remplace chaque opérande de
ordre diffère parfois de l’ordre d’écriture. l’expression par f(opérande)
exemple: >t:=5; -subs (s 1,...,s n ,expr) où s 1,...,s n sont des équations effectue les substit utions
>t+4; indiquées par les équations dans l’expression
>t:=2; -subsop(i1 =e1 ,...,in =en ,e) où les ik sont des entiers remplace l’opérande de numéro
Si on évalue la première expression puis ensuite la deuxième, Maple affiche 9
ik par l’expression ek dans l’expression e
comme résultat. Évaluons ensuite la troisième expression puis à l’aide de la souris,on se
repositionne sur la deuxième expression et on l’évalue à nouveau. Maple affichera alors 6 -convert(expression,t) remplace le type de l’expression par le nouveau type t
comme résultat!! sans changer les opérandes.
Il sera donc judicieux d’imposer un nettoyage de la mémoire centrale régulière-
ment: on le fait par l’instruction restart;. 2) les séquences:
On peut forcer Maple à évaluer une expression en l’analysant d’une façon déter-
minée par l’utilisateur. On utilise alors les instruction suivantes: Une séquence - expseq - est une suite d’expressions séparées par des virgules.
Elle n’est pas ordonnée,les diverses occurrences d’une valeur sont maintenues. Une sé-
-eval(expression) est équivalent à ; quence vide est notée NULL.
-evalf(expression) force l’utilisation de réels -float-
-evalb(expression) force l’utilisation de booléens exemple: >1,2,6,5,4,5; sera évalué comme étant l’objet 1,2,6,5,4,5
-evalc(expression) force l’utilisation de complexes
-evalm(expression) force l’utilisation de matrices On peut créer une séquence soit en la tapant directement soit par:
-seq(f(i),i=m..n); produisant la suite d’expressions f(m),f(m+1)...f(n)
-seq(f(i),i=expression) équivalent à seq(f(op( j,expression)), j=1.. nops(expres-
III) OBJETS MANIPULES PAR MAPLE: sion))
L’expression est le type le plus général manipulé par Maple. Tout est une expres- Une liste - list - est une suite d’expressions séparées par des virgules et notées
Nicolas CHIREUX Page 2 sur 17
Résumé des fonctions de Maple SPÉ MP 3
entre crochets [ ].Elle n’est pas ordonnée et les occurrences multiples d’une même valeur
sont maintenues. Une liste vide est notée [ ]. Dans l’exemple ci-dessus >notes; renvoie notes alors que >eval(notes); renvois le
contenu de la table notes.
exemple: >[1,2,6,5,4,5]; sera évaluée comme l’objet [1,2,6,5,4,5]
Enfin deux fonctions utiles: indices(nom) renvois les indices de la table nom et
Pour ajouter un élément x à une liste l,on écrira: l:=[op(l),x]; entries(nom) renvoie les valeurs de la table nom.
Pour enlever le ième élément d’une liste l,on écrira: subsop(i=NULL,l)
Un tableau est une table particulière. Les indices seront forcément entiers et leurs
4) les ensembles: bornes seront définies à la création du tableau: t:=array(1..n,1..m) crée un tableau à deux
dimensions de bornes 1..n,1..m
Un ensemble -set- ressemble à une liste si ce n’est qu’il est ordonné et que les
occurrences multiples d’une même valeur sont supprimées. Il est noté entre accolades. Un 6) les variables:
ensemble vide est noté {}.
Pour Maple, une variable n’est pas typée. Elle peut se voir successivement affec-
exemple: >{1,2,6,5,4,5}; sera évalué comme étant l’objet {1,2,4,5,6} ter un entier, une expression,une chaîne...Une variable non initialisée reste une étiquette
utilisable comme inconnue ou paramètre dans un calcul.
Pour ajouter un élément x à un ensemble e:
e:=e union {x}; exemple: >x+4; retourne x+4
Pour enlever un élément x à un ensemble e: >x:=4;
e:=e minus {x}; >x+4; retourne 8
Pour calculer l’intersection de deux ensembles, on utilisera la fonction intersect
Pour évaluer une variable, Maple la remplace par sa définition,puis continue ainsi
5) les tables et tableaux: récursivement pour les variable apparaissant dans cette définition etc...
Une table est une application entre un ensemble d’indices et les valeurs qui y eval(variable) évalue complètement la variable
sont associées. Indices et valeurs peuvent être n’importe quelle expression. On crée une eval(i,variable) évalue la variable au ième niveau.
table par la fonction table:
t:=table() affecte à t une nouvelle table vide. Pour empêcher l’évaluation d’une variable, il faut la mettre entre guillemets sim-
ples ‘.
Pour accéder ou affecter une valeur à un élément d’une table, on utilise la notation
t[indice]:
exemple: t[1]:=12; affecte à l’élément d’indice 1 la valeur 12.Si la
table t n’avait pas été créée précédemment,elle l’est alors automatiquement.
B) MANIPULATION DES NOMBRES SOUS MAPLE:
exemple: notes[toto]:=12,3,7;
notes[alfred]:=1,6,14; crée une table notes et affecte à
I) GENERALITES:
l’indice toto la séquence 12,3,7 et à l’indice alfred la séquence 1,6,14.
1) TYPE:
Attention!! l’évaluation du nom d’une table produit le nom de la table mais pas
son contenu - ce n’est pas comme une variable assignée-.En effet,le nom de la table est un
Tout nombre (RÉEL, ENTIER, RATIONNEL) peut être:
pointeur - sur une zone mémoire-,il ne représente donc pas le contenu. Il faudra imposer un
positive >0
eval(nom) pour que Maple retourne le contenu de la zone pointée.
Nicolas CHIREUX Page 3 sur 17
Résumé des fonctions de Maple SPÉ MP 4
negative <0 -abs(n) retourne la valeur absolue de n
nonneg >=0 -factorial(n) ou n! retourne la factorielle de n
On peut tester le signe par type(r, positive) ou is(r, positive) par exe mple. -ifactor(n) décompose n en facteurs premiers
-ifactors(n) donne la liste des facteurs premiers de n. Il faut
2) restriction du champ de la variable: préalablement lire la bibliothèque ifactors par rea-
dlib(ifactors)
-assume(x,prop) prop est une propriété -type(n,facint) teste si n a été décomposé en facteurs premiers
-is(x,prop) teste si x a la propriété prop -igcd(n 1,n 2,...) retourne le pgcd des nombres
-isgiven(x,prop) teste si la propriété prop a été donnée à x -ilcm(n1,n2,..) retourne le ppcm des nombres
-about(x) retourne les propriétés de x -iquo(a,b,’r’) retourne le quotient de la division de a par b. ’r’
-additionally(x,prop) ajoute une propriété à x est optionnel et contient le reste de la division.
-irem(a,b,’q’) retourne le reste de la division de a par b. ’q’ est
Pour faire cesser la restriction,il faut affecter la variable - x:=3 par exemple- ou la optionnel et contient le quotient de la division.
désaffecter x:=’x’. -isprime(n) retourne TRUE si n est premier
-ithprime(n) retourne le nième nombre premier,le premier étant
II) LES ENTIERS: 2
-nextprime(n) retourne le plus petit nombre premier strictement
1) type: supérieur à n
-prevprime(n) retourne le plus grand nombre premier strictement
Ce sont des objets de type integer pouvant être: posint >0 inférieur à n
negint <0 -max(n 1,n 2,...) retourne le plus grand des nombres de la liste
nonnegint >=0
-min(n 1,n 2,...) retourne le plus petit des nombres de la liste
even pair
odd impair -rand() retourne un entier positif aléatoire de 12 chiffres
primeint premier -sign(n) retourne -1 si n<0,1 sinon
Ce type peut être testé: -isolve (éq,vars) résout dans l’ensemble des entiers l’équation(ou
is(n,positive); is(4,negint); type(12,even); le système d’équations)éq, vars est optionnel est
la (ou les) variable
2) changement de base de numération:
III)LES RATIONNELS:
La fonction convert permet avec l’option base de changer de base de numération:
-convert(entier,base,b) convertit l’entier de la base 10 vers la base b.Le re- 1) type: fraction ou rational
tour se fait de la forme: entier=[a 0,a1,...] qu’il faut lire
Le type peut être testé par type(q,fraction); ou type(q,fraction(nonneg));
a0b 0+a 1b 1+..
-convert(entier,base,b1,b2) convertit l’entier de la base b1 vers la base b2. 2) fonctions usuelles:
-convert(entier,option) on l’utilise pour les conversions du système décimal
vers les bases 2 (binaire),8 (octal),16 (hexadécimal) -numer(q) isole le numérateur
avec les options binary,octal,hex. -denom(q) isole le dénominateur
-ifactor(q) factorise le numérateur et le dénominateur
3) fonctions usuelles: -is(q,facint) teste la décomposition de q
-abs,max et min comme les entiers
Nicolas CHIREUX Page 4 sur 17
Résumé des fonctions de Maple SPÉ MP 5
-ceil(r) plus petit entier >=r - même remarque si r est complexe
Il existe d’autres fonctions portant sur les rationnels. Elles sont dans la librairie -floor(r) plus grand entier <=r - même remarque si r est complexe
numtheory. Il faut l’ouvrir par with(numtheory);. -trunc(r) troncature -même remarque si r est complexe
Pour avoir la liste de ces fonctions, il suffit de taper ?numtheory -abs(z) valeur absolue si z est réel, module si z est complexe
-argument(z) argument de z
IV) LES REELS ET COMLEXES: -conjugate(z) conjugué de z
-signum(z) z/abs(z)
1) type:
float pour réel ou complex pour complexes La plupart des fonctions mathématiques peuvent être utilisées avec les comple-
exposant
écriture: mantisse*10 ou Float(mantisse,exposant) xes: exp, ln, log, log[b], sin, cos, sinh, cosh, tan, tanh, cot, coth, arccos, arcsin, arctan, arc-
La partie entière et décimale de la mantisse sont séparées par un point. Le type cosh, arcsinh, arctanh, arccot, arccoth, sec, sech, csc, csch, arcsc, arccsch, arcsec, arcsech
peut être testé par type ou is.
5) transformation des expressions:
2) constantes prédéfiniées:
Maple permet de transformer toutes les fonctions - simplifier, regrouper, factori-
E base des logarithmes naturels ser, développer...-. Les méthodes sont nombreuses.
Pi pour π
infinity pour +8 -combine(expr,noms) transforme l’expression expr en un seul terme. Noms
-infinity pour -8 est optionnel choisi parmi: exp, trig, power, Psi, ln.
Les constantes de Maple ne sont pas vues comme étant du type float mais du -convert(expr,forme) transforme une liste en somme,produit, ensemble,
type string ou encore chaînes de caractères. tableau, un ensemble en liste, un tableau en liste, en
liste de listes. Pour résumer, cette fonction convertit
3) précision: une expression en une autre de nature différente.
Pour l’aide, ?convert
Maple est très performant dans les calculs numériques mais connaît les mêmes -expand(expr,ex1,...exn) développe expr en préservant les expression option-
problèmes d’approximation que les autres outils numériques. Par exemple, Maple ne retourne nelles ex1,...exn
pas z=0 dans l’exemple suivant: -factor(expr) factorise expr
1 -normal(expr) simplifications de base et factoris ations simples sur
x := 10 + 2 − 10 + 1; y := ;z := x − y
n n
expr
10 + 2 − 10 + 1;
n n
-radsimp(expr) simplifie une expression contenant des radicaux
On peut par contre demander le calcul littéral par simplify(x/y) ou simplify(z) qui -simplify(expr,n 1,...n k) simplifie expr,les arguments n i sont optionnels
donnent 1 et 0.
-collect(xpr,v,forme,f) ordonne xpr comme un polynôme en la variable v
,forme (option) est recursive (par défaut) ou distribu-
4) fonctions usuelles:
ted. f (option) est appliquée à tous les coefficients.
pour avoir une liste ?inifcns
-op(r) retourne deux entiers,la mantisse et l’exposant du réel r
-Digits:=n fixe à n le nombre de décimales dans les calculs. n=10 par défaut C) LES POLYNOMES:
-evalf(expr,d) force le calcul numérique de expr avec d décimales. Si d est omis
c’est Digits qui controle. I MANIPULATION DE POLYNOMES:
-Re(z),Im(z) partie réelle,imaginaire de z
-evalc(z) simplifie l’écriture d’un complexe 1) Généralités:
-round(r) entier le plus proche de r- si r=a+Ib, round(a)+Iround(b)
Nicolas CHIREUX Page 5 sur 17
Résumé des fonctions de Maple SPÉ MP 6
+ Les polynômes sont des expressions que 1) opérations classiques:
Maple stocke comme les autres. On peut les représenter
sous forme d’arbre avec les additions au niveau supé- -+,-,*,^ addition, soustraction, multiplication et puissance
* * rieur puis aux niveaux inférieurs les multiplications et -quo(a,b,x,’r’) calcule le quotient de a par b,le reste est stocké dans r
puissances. -rem(a,b,x,’q’) calcule le reste de la division de a par b,le quotient est
an n an-1 n-1 On peut isoler des opérandes en utilisant les fonctions stocké dans q
op(p) ou op(i,p) déjà vues. -gcd(a,b,’cofa’,’cofb’) calcule le pgcd de a et b, cofa et cofb sont optionnels:ce
Maple développe toutefois des fonctions sont les cofacteurs cofa=a/gcd(a,b)
x x spécifiques aux polynômes qui vont nous en faciliter le -lcm(a,b) calcule le ppcm de a et b.
traitement. -content(a,x,’pp’) calcule le pgcd des coefficients de a.pp vaut a/pgcd(coeff)
Maple travaille avec les polynômes de plusieurs variables ce qui imposera de -primpart(p,x) donne le résultat de p/content(p,x) comme le pp précédent
spécifier la variable suivant laquelle on appliquera la fonction. -divide(a,b,’q’) retourne TRUE si la division de a par b est exacte en
stockant le quotient dans q, FALSE si la division n’est pas
2) manipulation de termes: exacte, q n’est alors pas affecté.
-collect(a,x,g,f) groupe les coefficients de même degré en x. g et f sont MAPLE dispose de diverses fonctions pour trouver les racines d’un polynôme.
optionnels. Noter l’option distributed pour les polynômes Le choix sera guidé par la forme souhaitée pour les résultats.
à plusieurs variables.
-normal(p) présente p sous forme classique -realroot(p,taille) isole des intervalles de la largeur de taille contenant
-sort(p,options) ordonne un polynôme en respectant les options s’il y en a. chacun une racine. Il faut au préalable lire la bibliothèque
-expand(p) développe p par distribution des produits sur les sommes. realroot par readlib(realroot);
-convert(p,horner) factorise p sous forme d’un polynôme de Horner -roots(p,options) cherche les racines exactes du polynôme. Maple retourne
-compoly(r,x) retourne p(x) et x=q(x) tels que subs(x=q(x),p(x))=r(x). Il les racines sous la forme [valeur,multiplicité]. Si le champ
faut pour l’utiliser lire la bibliothèque compoly par rea- n’est pas spécifié, Maple cherche les racines dans
dlib(compoly); l’ensemble auquel appartiennent les coefficients du po-
lynôme. On peut étendre ce champ ou en spécifier un au-
II) OPERATIONS ARITHMETIQUES: tre en ajoutant des options.
-fsolve (p,var,options) retourne une approximation réelle ou complexe des raci-
Nicolas CHIREUX Page 6 sur 17
Résumé des fonctions de Maple SPÉ MP 7
nes. Le champ de recherche est fixé par les coefficients
du polynôme.On peut forcer une résolution en complexe 3) image d’intervalle,extréma:
par l’option complex. On peut limiter le domaine de
recherche en spécifiant borne-inf..borne-sup en guise Les fonctions evalr,minimize et extrema sont à utiliser après chargement par rea-
d’option On peut aussi ne faire rechercher qu’un certain dlib.
nombre de racines par l’option maxsols=nombre. -evalr(fonction([a,b])) détermine l’image de l’intervalle [a,b]
-irreduc(p,options) teste l’irréductibilité d’un polynôme sur le champ fixé par par fonction
les coefficients du polynôme. On peut étendre ce champ -minimize(fonction,{vars},intervalle) retourne le minimum de fonction par
ou en spécifier un autre en ajoutant des options. rapport à la variable vars dans inter-
-factor(p,options) factorise un polynôme. valle.
-maximize(fonction,{vars},intervalle) idem pour le maximum
-extrema(fonction,{contraintes},var,’s’) donne les extrema de fonction par
rapport à var en tenant compte des
contraintes - s’il n’y a pas de contrain-
tes,écrire {}-. Les valeurs
correspondantes de var sont stockées
D) LES FONCTIONS dans s.
II) ETUDES LOCALES:
I DEFINITION:
1) limites:
1) les méthodes de définition:
-limit(fonct,x=a,dir) recherche une limite à fonct en a -valeur, infini-
-par la flèche: f:=var->expr.
ty,-infinity - dans la direction dir - left, right, real,
S’il y a plusieurs variables: f:=(var1,var2,...)->expr;
complex -
-par les procédures: f:=proc(var)...end; .
-Limit(fonct,x=a,dir) forme inerte.Maple écrit la limite sans la calculer
S’il y a plusieurs variables: f:=proc(var1,var2...)...end;
- traitement de texte -.La fonction value permet
-grâce à une expression déjà calculée: unapply(expr,var1,var2...) renvoie la fonc-
de forcer le calcul des formes inertes.
tion (var1,var2...)->expr
Le résultat de la fonction peut être autre chose qu’un nombre, par exemple une
2) développement en séries:
liste de nombre - c’est à dire un vecteur-: f:=(var1,var2...)->[expr1,expr2,...]
-taylor(expr,x=a,n) développement en série de expr en x=a -valeur,
2) domaines de définition, de continuité:
infinity,-infinity,0 par défaut - à l’ordre n -6 par
défaut
Les deux fonctions suivantes sont à charger dans le noyau central par readlib
-series(expr,x=a,n) même chose mais en plus général.
avant emploi. Elles sont à manier avec précaution,le problème de la continuité étant difficile à
-asumpt(expr,x) même chose mais seulement en +infini à l’ordre
résoudre en informatique.
6
-singular(fonct,var) permet de déterminer les singularités
-coeftayl(expr,x,n) donne le coefficient du terme à la puissance 10
d’une fonction
dans la série sans la calculer.
-iscont(fonct,x=a..b,’closed’) permet d’étudier la continuité de la
-series(leadterm(expr),x=a,n) terme principal du développement en série de
fonction sur l’intervalle [a,b]- fermé
expr en x=a à l’ordre n - 6 par défaut -
avec l’option closed- ou ]a,b[ -sans
-convert(ser,polynom) transforme la série ser en polynôme.
l’option closed-.
-mtaylor(expr,v,n) développe en série à l’ordre n - 6 par défaut
Nicolas CHIREUX Page 7 sur 17
Résumé des fonctions de Maple SPÉ MP 8
l’expression à plusieurs variables expr aux 1) instruction de base:
points donnés par la liste des variables v.
-solve(eqns,vars) où eqns est une équation et vars la variable.Maple
III) DERIVEES,INTEGRALES: cherche une solution formelle de l’équation sur le champ associé aux
coefficients -rationnels...-.Si aucune solution n’est trouvée,Maple re-
1) dérivée: tourne la valeur NULL.
-diff(a,x1,x2...xn) dérivée de l’expression ou fonction a par rapport aux variables Rem 1: Si à la place d’une équation,on entre une expression dans
x1,x2...xn successivement eqns,Maple va résoudre expr=0 par défaut.
-diff(a,x$n) érivée d’ordre n de a par rapport à x.$ est appelé Rem 2: Si aucune variable n’est entrée dans vars,Maple résoudra sur
opérateur séquentiel toutes les variables apparaissant dans l’équation eqns.
-Diff(a,x1,x2...xn) Diff est la forme inerte -traitement de texte-.
Pour forcer le calcul,on utilise value. Rem 3: Parfois,Maple retourne la ou les solutions en utilisant la fonc-
tion RootOf(fonction(_Z)) dans le but de simplifier l’affichage.On peut
2) opérateur différentiel: toutefois forcer le calcul fonction(_Z)=0 par allvalues(RootOf(...)).
-D(f) dérivée de f -fonction d’une seule variable-. C’est Rem 4: pour résoudre un système d’équations,on entrera le système
équivalent à D(f)=unapply(diff (f(x) ,x),x) sous forme d’un ensemb le {eqn1,eqn2...} dans eqns et les variables
-D[i$n](f) dérivée n ième de f par rapport à la ième variable sous forme d’un ensemble {var1,var2...} dans vars.
-D[i,j](f) dérivée de f par rapport à la ième variable,puis à la
Rem 5: eqns peut être une inéquation.Le retour se fera sous la forme
jème variable d’une inégalité:par exe mple var1>val1
-(D@@n)(f) dérivée n ième de f -fonction d’une seule variable-
Rem 6: eqns peut avoir pour variable une fonction f(x).Maple retournera
3) intégrales: alors une procédure proc(x) ...end permettant de calculer la fonction f
solution de l’équation eqns.
-int(f,x) retourne la primitive de f.Maple n’affiche pas la
constante d’intégration. Int en est la forme inerte. Rem 7: solve(identity(eqn,x),vars) permet de résoudre l’équation eqn vé-
-int(f,x=a..b,options) intégrale définie de f entre a et b rifiée quelque soit x sur les variables vars
-changevar(chang,int,u) faire with(Student) avant. Effectue le changement
de variable dans l’intégrale int,chang est de la Rem 8: solve(series(f(x),x)=y,x) force la résolution de l’équation f(x)=y
forme f(x)=g(u) où x est l’ancienne variable et u la sous la forme d’un développement en série à l’ordre 6 par défaut.On
nouvelle. peut fixer préalablement l’ordre par Order=n.Le retour est donné sous
-intparts(int,u) faire with(student) avant. Fais l’intégration par forme d’une série en y.Si on remplace dans f(x) la variable x par ce déve-
parties,u étant le facteur à dériver dans int. loppement,on obtient y.
Rem 9: pour les systèmes linéaires,on peut utiliser les matrices pour la
résolution sous la forme AX=B où A est la matrice des coefficients,X le
vecteur des inconnues et B le vecteur second membre.
E) RESOLUTION D’EQUATIONS
2) résolution numérique:
I RESOLUTION D’EQUATIONS:
On peut forcer Maple à résoudre numériquement avec
Nicolas CHIREUX Page 8 sur 17
Résumé des fonctions de Maple SPÉ MP 9
l’instruction solve vue précédemment en entrant des coefficient réels {equa diff,cond initiale}.
dans l’équation eqns: par exemple solve(x^2-3*x+1) retournera Rem 2: eqns peut être un système d’équations différentielles.
(3+sqrt(5))/2... alors que solve(x^2-3*x+1.0) retournera 2.6180033...
Parmi les options,on notera:
Maple dispose toutefois de fonctions plus évoluées:
-type=nom où nom peut être exact - par défaut, le résultat est
fsolve(eqns,vars,opts ) retourne la valeur numérique des solutions sur le alors formel -, numeric - le résultat est alors une procédure qu’on peut
champ de recherche fixé par les coefficients.Il existe 3 options utiles: appeler pour diverses valeurs numériques- ou series - le résultat est
complex pour forcer le calcul en complexes,maxsols=n pour fixer le alors donné sous forme d’un développement en série.
nombre maximum de solutions à retourner et val1..val2 pour limiter -method=nom2 où nom2 peut être rkf45 - par défaut,résolution
l’intervalle de recherche. par la méthode de Range Kutta d’ordre 4 ou 5- ,dverk78 - résolution par
la méthode de Range Kutta d’ordre 7 ou 8- ou laplace - résolution par la
isolve(eqns,vars) permet de forcer la résolution sur les entiers. méthode de Laplace qui autorise l’utilisation de fonctions de Dirac ou
msolve(eqns,vars,m) permet de forcer la résolution sur Z/mZ Heavyside -.
-explicit=val où val est false - par défaut - ou true - dans ce
3) résolution de récurrences: cas,on force Maple à donner le résultat explicitement en fonction de la
variable dépendante...mais ce n’est pas toujours possible!!-
Maple dispose d’une fonction spécifique à la résolution d’équation im- -value=array([val1,val2...]) retourne un tableau à deux lignes:la
pliquant des récurrences: première contient le nom des valeurs calculées - x,y(x),y’(x)-,la deuxième
rsolve(eqns,fonct,opt) où eqns est la (ou les) relation de de récurrences contient une matrice constituée de chacune des valeurs val1,val2... et
et fonct représente la fonction vérifiant la récurrence.Si l’on désire de l’ évaluation de la solution de l’équation différentielle en ces points.
fournir les premiers éléments de la suite -u 0,u 1...-on écrit alors {rela-
tion1,relation2...,terme0=val0,terme1=val1...} à la place d’eqns. Si au- F) ALGÈBRE LINÉAIRE
cune valeur initiale n’est fournie,Maple les remplacera par
fonct(0),fonct(1)... I LES MATRICES:
Pour les suites récurrentes linéaires,l’option ‘genfunc’(x) per-
met d’obtenir la fonction génératrice de la suite. 1) Généralités:
G) LE GRAPHISME -xtickmarks=n: nombre minimum de graduations sur l’axe des x.Il existe la même
option pour l’axe y:c’est ytickmarks=n.
Aucune des options n’est obligatoire car Maple affecte une valeur par défaut à -linestyle=n: style des lignes.Si n=0 tracé plein.
chacune d’elles.
Les options les plus importantes sont les suivantes: -symbol=s: choix de la forme des points lors d’un tracé par points parmi BOX,
CROSS, CIRCLE,POINT, et DIAMOND.La valeur par défaut est POINT.
-scaling: contrôle de l’échelle du graphe.Si CONSTRAINED est choisi,tout chan-
gement d’échelle affecte également x et y contrairement à UNCONSTRAINED. La valeur par -view=[xmin..xmax,ymin..ymax]: choix de la partie de la courbe affichée.Par défaut
défaut est UNCONSTRAINED. la courbe entière est affichée.
-numpoints=n: nombre de points minimum généré lors de l’appel à la fonction (par -h est le domaine horizontal de la forme var=valeur1..valeur2 ou simplement va-
défaut n=49).Maple choisit automatiquement d’en générer plus quand la fonction n’est pas leur1..valeur2 si la variable est évidente.h est obligatoire
régulière. -v est la domaine vertical d’affichage:il est optionnel.Par défaut,toute la courbe est
affichée.
-resolution=n: choix de la résolution horizontale de l’écran en pixels (par défaut -options:ce sont les options définies au 1).Aucune n’est obligatoire.
Nicolas CHIREUX Page 12 sur 17
Résumé des fonctions de Maple SPÉ MP 13
-le fonction complexe: on trace par conformal les images d’une grille par la fonc-
Pour la fonction,diverses possibilités sont offertes: tion complexe définie.Le pas de la grille est fixé par défaut (11 lignes) et modifiable par
grid=[n1,n2].Le nombre de points évalués sur chaque ligne de la grille est fixé par num-
-la fonction simple: plot(tan(x),x=-2*Pi..2*Pi,y=-4..4, discont=true); xy=[n1,n2] ou par défaut (15 points).
Noter l’option et la majuscule à Pi! conformal(1/z,z=-1-I..1+I,-6-6*I..6+6*I);
La fonction peut aussi être un opérateur: plot(cos + sin, 0..Pi); conformal(cos(z),z=0..2*Pi+ Pi*I,grid=[8,8],numxy=[11,11]);
On peut retracer la fonction avec d’autres paramètres à l’aide de l’instruction conformal(z^3,z=0..2+2*I,xtickmarks=3,ytickmarks=6); noter ici les options.
replot.
p := plot(sin(x),x=0..2*Pi): -le champ de vecteurs: il est noté [f(x,y),g(x,y)].Maple trace par fieldplot un vec-
teur évalué en x,y de direction et de norme fixée par f et g.
-la fonction paramétrique: elle est notée entre crochets [x(t),y(t),t=val1..val2] fieldplot( [x/(x^2+y^2+4)^(1/2),-y/(x^2+y^2+4)^(1/2)],x=-2..2,y=-2..2);
plot([sin(t), cos(t), t=-Pi..Pi]); fieldplot([y,-sin(x)-y/10],x=-10..10,y=-10..10,arrows=LINE, color = x); changer les
options (style des flêches arrows=LINE,SLIM,THIN ou THICK)
-la fonction en coordonnées polaires: c’est un cas particulier des fonctions para-
métriques. L’option coords=polar impose un tracé en coordonnées polaires -le champ de gradient: Maple trace par la fonction gradplot un champ de vecteurs
plot([cos(5*t),t,t=0..2*Pi],coords=polar); dérivant d’un potentiel donné.
plot([x^2,x,x=0..3*Pi],-8..8,-10..10,coords=polar); gradplot(x^2+2*y^2+1,x=-1..1,y=-1..1,grid=[15,15], color = x^2+2*y^2+1); noter la
Noter la différence entre domaine de variation du paramètre entre[] et domaine valeur de l’option COLOR.
d’affichage.
-la fonction implicite: on utilise la fonction implicitplot pour tracer une fonction
-l’ensemble de fonctions: si on veut tracer plusieurs fonctions sur un même gra- définie de manière implicite (équation,procédure...).Par défaut,la fonction est évaluée en 625
phe,il faut les noter entre accolades. points (25 sur x et 25 sur y dans les domaines définis.
plot({sin(x), x-x^3/6}, x=0..2); p:= proc(x,y) if x^2 < y then x^2 + y^2 else x - y fi end:
plot({x,[x^2,x,x=-1..1]},x=0..1); noter ici que,si parmi les fonctions il y a une fonc- implicitplot(p,-2..2,-1..3);
tion paramétrique,on doit utiliser pour les autres le nom du paramètre comme variable.
b) les tracés particuliers:
-la fonction à domaine de variation infini: le domaine -8,+8 est transformé en -1,1
par approximation de la fonction arctan:le tracé sera en conséquence déformé au vois inage -le tracé semi-logarithmique: seule l’échelle sur l’axe y est logarithmique.
de l’infini. logplot(x->10^x,1..10);
plot(sin(x), x=0..infinity); logplot({ x->2^(sin(x)), x->2^(cos(x))}, 1..10);
plot( {exp,ln}, -infinity..infinity );
-le tracé logarithmique:les deux échelles sont logarithmiques.
-la fonction procédure: la fonction peut être une procédure qu’on repère par son loglogplot(10^x,x=1..10);
nom. loglogplot([1,2,3,4,5,6,7,8],style=POINT);
w:=proc(x) if x<0 then -x elif (x>0) and (x<4) then x else -x+8 fi end; loglogplot([[1,2],[3,4],[5,6],[7,8]]);
plot(w,-5..6);
-le tracé de densité: il permet par la fonction densityplot le tracé d’une fonction 3D
-l’ensemble de points: une ensemble de points est noté [[x1,y1],[x2,y2],...]. en 2D.Plus la valeur de la fonction au point x,y est élevée,plus le tracé est foncé.
l := [[0,0],[1,1],[2,1]]; densityplot(sin(x*y),x=-Pi..Pi,y=-Pi..Pi,axes=boxed);
plot(l, x=0..2, style=point,symbol=diamond); noter les options et essayer d’en
changer (style=line...) -le tracé retardé: tout tracé est une structure à laquelle on peut affecter un nom.Si
on écrit variable=plot(...),le tracé est calculé mais pas affiché.Il est stocké dans variable.Pour
Nicolas CHIREUX Page 13 sur 17
Résumé des fonctions de Maple SPÉ MP 14
l’afficher ensuite,il y a deux possibilités:soit variable; soit display(variable,options); Q := animate(cos(x+t),x=-Pi..Pi,t=-Pi..Pi,frames=8):
.L’avantage de display est qu’il permet une affichage multiple. display([P,Q]); essayer l’option insequence=true.Elle permet d’enchainer des
F:=plot(cos(x),x=-Pi..Pi,y=-Pi..Pi,style=line): animations les unes après les autres.Par défaut insequence=false,chaque image est alors la
G:=plot(tan(x),x=-Pi..Pi,y=-Pi..Pi,style=point): superposition des fonctions.
display({F,G},axes=boxed,scaling=constrained,title=`Cosine and Tangent`);
II) GRAPHISME EN 3D:
-l’affichage de texte: la syntaxe est textplot([x,y,`texte`],options);.Maple affiche le
texte au point x,y.Il y a de nombreuses options sur le texte.On retiendra seulement celle
1) Les options:
d’alignement:align=ABOVE,RIGHT,LEFT,BELLOW.
p := plot(sin(x),x=-Pi..Pi):
Les options du graphisme en 2D sont toujours valable ici mais s’y ajoutent un lot
delta := 0.05:
d’options spécifiques au graphisme en 3D.Nous ne citerons que les principales.
t1 := textplot([Pi/2,1+delta,`Local Maxima (Pi/2, 1)`],align=ABOVE):
t2 := textplot([-Pi/2,-1,`Local Minima (-Pi/2, -1)`],align=BELOW):
-grid=[m,n]:choix du maillage sur lequel sont évalués les points.
display({p,t1,t2});
-style=s:choix du mode de dessin de la surface.s est POINT, HIDDEN (parties
-le tracé de polygones: polygonplot trace un polygone à partir de la séquence des
cachées non représentées), PATCH, WIREFRAME (maillage uniquement représenté),
coordonnées de ses sommets.
CONTOUR lignes de niveau), PATCHNOGRID (combinaison de styles), PATCHCONTOUR
ngon := n -> [seq([ cos(2*Pi*i/n), sin(2*Pi*i/n) ], i = 1..n)]:
(combinaison de styles), ou LINE.la valeur par défaut est HIDDEN.
display([ polygonplot(ngon(8)), textplot([0,0,`Octagon`]) ], color=BLUE); tester
-contours = n:choix du nombre de lignes de niveau.n est un entier positif (10 par
l’option patch
défaut).
-le tracé de matrice: en 2D,le tracé se limite à un tracé de contenu.Maple affiche
-coords=c: choix du système de coordonnées parmi cartesian,spherical et cylindri-
par la fonction sparsematrix un point en x (indice de ligne) et y (indice de colonne) si
cal.La valeur par défaut est cartesian.
l’élément de matrice est non-nul.
with(linalg):
-projection=r:choix de la perspective,r doit être compris entre 0 et 1.r=0 corres-
A := randmatrix(15,15,sparse):
pond à une vue grand angle,r=1 correspond à une projection orthogonale,r=0.5 correspond à
B := gausselim(A):
la projection normale (valeur par défaut:1).
PA := sparsematrixplot(A, color=green):
-orientation=[theta,phi]:choix du point de vue sous forme des deux angles sphé-
PB := sparsematrixplot(B, color=red):
riques theta et phi anglo-saxons (noms inverse des nôtres).Par défaut les deux angles valent
display({PA, PB}); changer la forme des points
45°
c) les animations:
-shading=s:choix du mode de colorisation de la surface.s est soit XYZ, XY, Z,
Z_GREYSCALE, Z_HUE, NONE.
Il est possible de créer des animations de courbes par la fonction ani-
mate.L’option frames=n fixe le nombre d’images de l’animation (par défaut 16);l’option num-
-ambientlight=[r,g,b]:définition de la lumière d’ambiance dans laquelle baigne le
points=m fixe le nombre de points de chaque image.
dessin.r,g,b (pour red,green,blue) sont compris entre 0 et 1.
animate( sin(x*t),x=-10..10,t=1..2,frames=50);
animate( {x-x^3/u,sin(u*x)}, x=0..Pi/2,u=1..16 ,color= red);
-light=[phi,theta,r,g,b]:choix de l’éclairage du dessin.la source éclaire sous les
animate( [u*t,t,t=1..8*Pi], u=1..4,coords=polar,frames=60,numpoints=100);
angles theta et phi avec une lumière dont la couleur est fixée par les valeurs de r,g,et b.
On peut stocker une animation dans une variable pour affichage ultérieur.
2) Les fonctions:
P := animate(sin(x+t),x=-Pi..Pi,t=-Pi..Pi,frames=8):
Nicolas CHIREUX Page 14 sur 17
Résumé des fonctions de Maple SPÉ MP 15
tracé en coordonnées sphériques.On fournit la fonction sous la forme r(theta,phi) ou en
a) tracé d’une courbe: paramétriques [f(theta,phi),g(theta,phi),h(theta,phi)].
plot3d((1.3)^x * sin(y),x=-1..2*Pi,y=0..Pi,coords=spherical,style=patch);
La syntaxe est : plot3d(fonction,hx,hy,options); plot3d([z*theta,exp(theta/10),z^2],theta=0..Pi,z=-2..2,coords=spherical);
-hx est le domaine de variation de x de la forme var=valeur1..valeur2 ou simple- On peut aussi utiliser la fonction sphereplot(fonction,domaine.phi,domaine the-
ment valeur1..valeur2 si la variable est évidente.hx est obligatoire ta,options); où domaine.phi est le domaine de variation de phi et domaine.theta celui de
-hy est le domaine de variation de y de la forme var=valeur1..valeur2 ou simple- theta.
ment valeur1..valeur2 si la variable est évidente.hy est obligatoire sphereplot((1.3)^z * sin(theta),z=-1..2*Pi,theta=0..Pi,style=patch,color=z);
-options:ce sont les options définies au 1) plus celles du graphisme 2D.Aucune -l’ensemble de fonctions: si on veut tracer plusieurs fonctions sur un même gra-
n’est obligatoire. phe,il faut les noter entre accolades.
c1:= [cos(x)-2*cos(0.4*y),sin(x)-2*sin(0.4*y),y]:
En graphisme 3D,il y a souvent plusieurs possibilités pour obtenir un même tra- c2:= [cos(x)+2*cos(0.4*y),sin(x)+2*sin(0.4*y),y]:
cé:soit par plot3d avec choix d’option soit par le fonction dédiée.Dans la suite,chaque fois c3:= [cos(x)+2*sin(0.4*y),sin(x)-2*cos(0.4*y),y]:
que la fonction dédiée existe,elle est présentée avec son homologue plot3d. c4:= [cos(x)-2*sin(0.4*y),sin(x)+2*cos(0.4*y),y]:
Pour la fonction,diverses possibilités sont offertes: plot3d({c1,c2,c3,c4},x=0..2*Pi,y=0..10,grid=[25,15],style=patch,color=sin(x));
-la fonction simple: plot3d(sin(x)/x*sin(y)/y,x=-2*Pi..2*Pi,y=-2*Pi..2*Pi); -la fonction procédure: la fonction peut être une procédure qu’on repère par son
Noter l’influence des styles et du mode de coloris ation. nom.
p:= proc(x,y) if x^2 < y then cos(x*y) else x*sin(x*y) fi end:
-la fonction paramétrique: elle est notée entre crochets [x(t),y(t),t=val1..val2] h:= proc(x) x^2 end:
plot3d([x*sin(x)*cos(y),x*cos(x)*cos(y),x*sin(y)],x=0..2*Pi,y=0..Pi); plot3d(p,-2..2,-1..h); noter que le domaine de variation d’une variable peut dépen-
dre de l’autre y compris par l’intermédiaire d’une procédure.
On peut aussi tracer une courbe en coordonnées paramétriques par space-
curve ([fonction],domaine); -l’ensemble de points: une ensemble de points est noté de deux manières:soit
spacecurve([cos(t),sin(t),t],t=0..4*Pi); [x1,y1,x2,y2,...] soit [[x1,y1],[x2,y2],...].On peut le représenter par plotpoint(liste,options);
spacecurve({[sin(t),0,cos(t),t=0..2*Pi],[cos(t)+1,sin(t),0,numpoints=10]}, points:= { seq([cos(Pi*T/40),sin(Pi*T/40),T/40],T=0..40) }:
t=-Pi..Pi,axes=FRAME); pointplot(points);
-la fonction en coordonnées cylindriques: L’option coords=cylindrical impose un On peut aussi tracer une surface à partir de points par la fonction surfda-
tracé en coordonnées cylindriques.On fournit la fonction sous la forme r(theta,z) ou en pa- ta(liste,options);
ramétriques [f(theta,z),g(theta,z),h(theta,z)]. cosdata := [seq([ seq([i,j,evalf(cos((i+j)/5))], i=-5..5)], j=-5..5)]:
plot3d(theta*z/5,theta=0..6*Pi,z=-5..5,coords=cylindrical); sindata := [seq([ seq([i,j,evalf(sin((i+j)/5))], i=-5..5)], j=-5..5)]:
plot3d([x*u,u,x*cos(u)],x=-8..8,u=0..4*Pi,coords=cylindrical); surfdata( {sindata,cosdata}, axes=frame, labels=[x,y,z] ,style=patch);
On peut aussi utiliser la fonction cylinderplot(fonction,domaine the- -le champ de vecteurs: il est noté [f(x,y,z),g(x,y,z),h(x,y,z)].Maple trace grâce à
ta,domaine.z,options); où domaine.theta est le domaine de variation de theta et domaine.z fiedplot3d(fonction,domainex,domainey,domainez,options); un vecteur évalué en x,y,z de
celui de z. direction et de norme fixée par f,g et h.
cylinderplot(z+ 3*cos(2*theta),theta=0..Pi,z=0..3); fieldplot3d([2*x,2*y,1],x=-1..1,y=-1..1,z=-1..1,grid=[5,5,5]);
cylinderplot([z*theta,theta,cos(z^2)],theta=0..Pi,z=-2..2, color = theta);
-le champ de gradient: Maple trace grâce à gradplot3d(fonction,domainex, domai-
-la fonction en coordonnées sphériques: L’option coords=spherical impose un ney,domainez,options); un champ de vecteurs dérivant d’un potentiel donné.
Nicolas CHIREUX Page 15 sur 17
Résumé des fonctions de Maple SPÉ MP 16
gradplot3d( (x^2+y^2+z^2+1)^(1/2),x=-2..2,y=-2..2,z=-2..2); -le tracé de matrice: en 3D,la fonction matrixplot trace le contenu d’une ma-
trice.Maple affiche un point en x (indice de ligne) et y (indice de colonne) dont la côte z a
-la fonction implicite: on utilise la fonction dédiée implicitplot3d(fonction, pour valeur celle de l’élément de matrice correspondant.
domainex,domainey,domainez,options); pour tracer une fonction définie de manière implicite with(linalg):
(équation,procédure...).Par défaut,la fonction est évaluée en 1000 points (10 sur x,10 sur y et A:= hilbert(8):
10 sur z dans les domaines définis. B:= toeplitz([1,2,3,4,-4,-3,-2,-1]):
implicitplot3d( x^3 + y^3 + z^3 + 1 = (x + y + z + 1)^3,x=-2..2,y=-2..2,z=-2..2, matrixplot(A+B,heights=histogram,axes=frame,gap=0.25,style=patch);
grid=[13,13,13]);
c) les animations:
b) les tracés particuliers:
Il est possible de créer des animations de courbes par animate3d.L’option
-le tracé de niveau: par la fonction contourplot(fonction,domainex,domainey, frame=n fixe le nombre d’images de l’animation (par défaut 8);l’option numpoints=m fixe le
options); Maple génère un tracé en lignes de niveau de la fonction 3D. nombre de points de chaque image.
contourplot((1.3)^x * sin(y),x=-1..2*Pi,y=0..Pi,coords=spherical); changer le point animate3d((1.3)^x * sin(u*y),x=-1..2*Pi,y=0..Pi,u=1..8,coords=spherical);
de vue à la souris. animate3d(sin(x)*cos(t*u),x=1..3,t=1..4,u=1/4..7/2,coords=cylindrical);
contourplot(sin(x*y),x=-Pi..Pi,y=-x..x);
III) Les équations différentielles:
-le tracé de tubes: par la fonction tubeplot([courbe paramétrée,domaine, ra -
dius=n],options); Maple génère un tube de rayon radius sur la base de la courbe paramétrée 1) tracé simple:
donnée.
tubeplot({[cos(t),sin(t),0,t=Pi..2*Pi,numpoints=15,radius=0.25*(t-Pi)], Maple peut tracer directement la solution d’une équation différentielle par ode-
[0,cos(t)-1,sin(t),t=0..2*Pi,numpoints=45,radius=0.25]}); plot.Cette fonction fait partie de la bibliothèque (plots).
Il faut une résolution numérique préalable.Dans l’exemple qui suit p est la procé-
-le tracé retardé: tout tracé est une structure à laquelle on peut affecter un nom.Si dure de résolution numérique créée par Maple à l’appel de dsolve.
on écrit variable=plot3d(...),le tracé est calculé mais pas affiché.Il est stocké dans varia- sys := diff(y(x),x)=z(x),diff(z(x),x)=y(x):
ble.Pour l’afficher ensuite,il y a deux possibilités:soit variable; soit dis- fcns := {y(x), z(x)}:
play3d(variable,options); .L’avantage de display3d est qu’il permet une affichage mu ltiple p:= dsolve({sys,y(0)=0,z(0)=1},fcns,type=numeric):
comme son pendant en graphisme 2D. odeplot(p, [x,y(x)], -4..4, numpoints=25);
F:=plot3d(sin(x*y),x=-Pi..Pi,y=-Pi..Pi): odeplot(p, [[x,y(x)],[x,z(x)]],-4..4,numpoints=25);
G:=plot3d(x + y,x=-Pi..Pi,y=-Pi..Pi): odeplot(p, [y(x),z(x)],-4..4,numpoints=25); diagramme de phase
H:=plot3d([2*sin(t)*cos(s),2*cos(t)*cos(s),2*sin(s)],s=0..Pi,t=-Pi..Pi): odeplot(p, [x,y(x),z(x)],-4..4,numpoints=25, color=orange); diagramme en 3D
display3d({F,G,H}); ,chaque point étant défini paramétriquement.
a1 := diff(y(x),x$4)+2*diff(y(x),x$2) -cos(x)=3;
DEplot(a1,[x,y],0..2,{[1,1,2,3,0]});
b) la fonction DEplot1:
Son rôle est de tracer les solutions d’équations différentielles d’ordre 1 du type
y’=f(t,y).Sa syntaxe est DEplot1(équadiff,vars,domaine.t,cond.init.,domaine.y,options);