Académique Documents
Professionnel Documents
Culture Documents
LIRMM Montpellier
y INRA LAMETA Montpellier
Table des matières
1 Introduction 3
1.1 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Accès sur le campus . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Accès à l'aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Prise en main 4
2.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 La feuille de calcul . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Ce que peut faire Maple 5
4 Ce que Maple ne peut pas faire 6
5 Problème de l'évaluation des symboles 7
6 Structures de données 9
6.1 Les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2 Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.3 Les tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.4 Les "table-array" . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.5 Les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.6 Passage entre les structures de données . . . . . . . . . . . . . . 14
7 Manipulations sur les fonctions 15
7.1 Manipulations simples . . . . . . . . . . . . . . . . . . . . . . . 15
7.2 Coecients des polynômes . . . . . . . . . . . . . . . . . . . . . 16
7.3 Intégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7.4 Factorisation et décomposition de fractions . . . . . . . . . . . 19
7.5 Développements . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8 Algèbre linéaire 22
8.1 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.2 Résolution de systèmes linéaires . . . . . . . . . . . . . . . . . . 24
8.3 Vecteurs propres . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.4 Systèmes d'équations généraux . . . . . . . . . . . . . . . . . . 27
8.5 Equations diérentielles . . . . . . . . . . . . . . . . . . . . . . 30
8.6 Développements en série . . . . . . . . . . . . . . . . . . . . . . 31
8.7 Système d'équations . . . . . . . . . . . . . . . . . . . . . . . . 34
1
9 Graphiques 36
10 Programmation 39
10.1 Tests et conditions . . . . . . . . . . . . . . . . . . . . . . . . . 39
10.2 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
10.3 Procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
11 Fichiers, entrées/sorties, sauvegardes 43
11.1 Sauvegarde des instructions . . . . . . . . . . . . . . . . . . . . 43
11.2 Utilisation des procédures dans un chier externe . . . . . . . . 43
11.3 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.1 Fichier texte . . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.2 Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.3 Feuille de calcul . . . . . . . . . . . . . . . . . . . . . . 45
11.3.4 Format HTML . . . . . . . . . . . . . . . . . . . . . . . 45
11.3.5 Graphiques . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.3.6 Postscript . . . . . . . . . . . . . . . . . . . . . . . . . . 46
11.4 Fonctions d'édition de la feuille de calcul . . . . . . . . . . . . . 46
2
1 Introduction
1.1 Dénition
maple7 est un logiciel de calcul formel ou symbolique comme Mathematica,
Axiom ; tandis que des langages tels que Pascal, C, C++, Java, Matlab, sont
destinés à manipuler des nombres.
1.2 Accès sur le campus
L'acquisition a été faite pour utiliser 6 licences simultanées au maximum.
C'est le gestionnaire de licence qui empêche le 7e appel au programme. A
termes, l'installation sous la forme de licences ottantes devrait permettre
aux utilisateurs de lancer l'application depuis n'importe quelle plateforme (pc
ou tx, depuis windows ou unix).
Sur les pc avec un système d'exploitation windows*, ce type d'accès nécessite
d'installer l'application cliente sur les postes de travail. Ensuite l'accès se fait
par Démarrer > Programmes > Maple7 > Maple7
Dans le cas d'utilisation sous unix, l'accès pourrait se faire depuis une session
telnet soit depuis un pc soit depuis un terminal.
L'interface graphique se présente sous la forme d'une fenêtre avec un menu,
des barres d'outils et un espace de travail. La fenêtre principale est l'espace
de travail où le signe ">" représente le prompt c'est à dire que maple est
prêt à travailler et attend qu'une instruction soit entrée à ce niveau an de
l'exécuter. L'interface laisse la possibilité d'avoir plusieurs feuilles de travail
ouvertes dans la même application. La navigation se fait alors de page en page.
1.3 Accès à l'aide
Documentation : Les livres pédagogiques sont sans doute nombreux. Des sup-
ports de cours existent sur le net (Mourrain & Papegay inria, Salvy).
Aide en ligne : Le menu help introduction assure une navigation de rubrique
en rubrique. L'accès direct peut se faire à partir de la ligne de commande :
>? solve accès à la fenêtre d'aide relative à la commande solve
> ? sol accès à la liste des commandes dont le nom commence par sol
> ?solve
3
2 Prise en main
2.1 Notation
Une instruction est saisie au clavier derrière le prompt ">". Le point virgule
représente la n de l'instruction.
> f : = x^2 + x + 1 ; # commentaire
L'expression x^2 + x + 1 est une formule avec le symbole x , un symbole non
évalué, une variable libre.
: = symbolise l'aectation.
f représente le nom de la variable qui devient ici une fonction de x.
# est un commentaire.
Le point virgule à la n d'une instruction demande son exécution et l'achage
du résultat
> f: = x^2 + x + 1 :
tandis que les deux points à la place du point virgule n'achent pas le résultat.
Ce qui peut être utile en cas de résultat intermédiaire, bien qu'il y ait une
aectation par derrière.
Une formule longue ou une indentation est appliquée grâce à shift return qui
permet de poursuivre une ligne sans demander la n de l'instruction par une
validation avec return. Il n'y a donc pas de message d'invitation à donner une
suite à l'instruction. On peut ainsi mettre plusieurs instructions sur une même
ligne.
> a : = 2 : b : = 3 ; n'ache que la variable b et son aectation.
> a : = 'a' ; b : = unassign('b') ; ces deux commandes permettent de remettre
à zéro l'initialisation.
2.2 La feuille de calcul
Nous avons vu qu'une feuille est une interface entre l'utilisateur et le moteur de
Maple (dénommé server 1 sur le nom de la feuille), qui reçoit des instructions et
les exécute séquentiellement. Attention toutefois, car l'ordre d'exécution n'est
pas forcément l'ordre visuel. De plus, cela signie qu'il n'y a rien en mémoire
dans une feuille Maple : charger la feuille ne sut pas à refaire les instructions.
Pour réexécuter les instructions : Menu Edit > Execute > Worksheet
2.3 Conventions
Pour les noms de variables, toutes les lettres sont autorisées. La casse a de
l'importance.
4
Les chires sont autorisés à condition que le nom ne commence pas par un
chire. De même, le caractères surligné "_" est utilisable.
2.4 Opérateurs
Les opérateurs arithmétiques : + * - / ^
Les opérateurs logiques : < <= > >= <> and or not
> f := x^2 + x + 1 ;
f := x2 + x + 1
> xx=2 ; yy:=3 ; # égalité et affectation
xx := 2
yy := 3
Notons au passage la notation des deux lignes d'instructions suivantes.
> u:=1/(x-1)*(x+2) ;
u := xx ;
+2
1
> u:=1/(x-1)/(x+2) ;
u := (x ; 1)1(x + 2)
; ab
> (3/2)^100;
515377520732011331036461129765621272702107522001
1267650600228229401496703205376
5
> 1.5^100;
:4065611775 1018
> r:=(3/2)^100 : evalf(r) ;
:4065611775 1018
Si la taille du symbole est trop grande ou si l'algoritme est trop long, alors
c'est un échec. Il existe un bouton stop permettant d'interrompre un cal-
cul trop long. Parfois ce bouton ne sut pas et il faut tuer l'application.
Penser à sauvegarder son travail ! !
Il peut y avoir un problème de précision numérique classique. La valeur
par défaut du nombre de chires signicatifs est Digits: =10. Il faut
donc faire attention aux manipulations de formules et autres inversions
de matrices !
> v:=(log(640320^3+744)/Pi)^2;
2
v := ln(262537412640768744)
2
> Digits := 20 ; evalf(v) ;
6
Digits := 20
162:99999999999999999
> Digits := 40 ; evalf(v) ;
Digits := 40
163:0000000000000000000000000000232167780
7
10
> val:=c ;
val := 10
> b:='b' ; a; b; c; val ;
b := b
10
b
10
10
> val:=20 ; a; b; c; val ;
val := 20
20
b
20
20
> z:=t ; t:=z^2 ; # récursif !
z := t
Error, recursive assignment
> t:=10 ; z:=t ; t:=z^2 ;
8
> f:=x^2 + 3*a*x +1 ;
f := x2 + 3 a x + 1
> subs({x=3,a=2},f) ;
28
Attention aux substitutions récursives...
> subs({x=a^2,a=2},f) ;
a4 + 6 a2 + 1
Il faut procéder en deux temps :
> subs(a=2,subs(x=a^2,f)) ;
41
Information utile :
> anames() permet de savoir quelles sont les variables utilisées, y compris
celles du système parfois nombreuses !
> anames() :
6 Structures de données
6.1 Les ensembles
Un ensemble de symboles est toujours évalué si les valeurs sont assignées. Un
ensemble n'est pas ordonné ; Maple peut donc à tout moment changer l'ordre
des éléments.
> A:={a,b,x^2+1} ;
A := fa; b; x2 + 1g
> B:={A,C} ;
B := fC; fa; b; x2 + 1gg
On peut appliquer les opérations classiques sur les ensembles.
> A union B ;
fa; b; C; x2 + 1; fa; b; x2 + 1gg
> A intersect B ;
fg
6.2 Les listes
Une liste est un ensemble ordonné dont les éléments sont numérotés à partir
de 1.
> l:=[a,b,d];
l := [a; b; d]
9
> l[1] ; # 1er élément de la liste
a
> a:=[10,11] ; # un élément peut être une liste également
a := [10; 11]
> l;
[[10; 11]; b; d]
> l[1][2] ; #le 2nd membre du 1er élément de l
11
> l[4] ; # le 4ème élément n'existe pas
10
> t[6] ;
t6
> t[1/2]:=7 ;
t1 2 := 7
=
tbl 1 2 := 7 =
[[a; b; c]]; [ 21 ]
La fonction entries permet d'obtenir la liste des valeurs contenues dans le
tableau.
> entries(tbl) ;
[x]; [7]
Les deux instructions suivantes sont diérentes. La première fait référence à
un élément d'un tableau à 2 dimensions. Tandis que la seconde représente le
3ème élément de l'objet tab[1] qui est un tableau à une dimension.
> tab[1,3]:=y ;
tab 1 3 := y
;
> tab[1][3]:=y ;
tab 13 := y
Le tableau est une structure puissante mais elle n'est pas forcément la plus
ecace.
6.4 Les "table-array"
Il s'agit d'une table avec des indices numériques dans un certain intervalle,
que l'on appelle "array" sous Maple. L'instruction suivante dénit un array
dont les indices vont de 1 à 10.
> a:=array(1..10) ;
a := array(1::10; [])
11
> a[3] ;
a3
> a[13] ; # en dehors de l'intervalle
b := array(0::2; [
(0) = x
(1) = y
(2) = z
])
Si la liste est trop courte, tous les éléments ne sont pas initialisés.
Si la liste est trop longue, Maple refuse de le faire.
> b:=array(0..2,[x,y]);
b := array(0::2; [
(0) = x
(1) = y
(2) = b2
])
> b:=array(0..2,[x,y,z,t]);
12
d2 := array(1::3; 1::4; [])
> d2[0,0] ; # en dehors des bornes
0 0 0 0
b2 := 64 0 0 0 0 75
0 0 0 0
b2:=array(1..4,1..3,[[0$3]$4]);
2 3
>
0 0 0
6 7
b2 := 664 00 00 00 775
0 0 0
6.5 Les matrices
Il existe peu de diérence entre les structures array et matrice. Dans une
matrice les indices sont toujours dénis à partir de 1.
La matrice est un objet algébrique ce qui nécessite de charger la bibliothèque
spécique aux traitements d'algébre linéaire.
> with(linalg) : # ":" est moins bavard que ";"
M := matrix(4,4,[0$16]);
2 3
>
0 0 0 0
6 7
M := 664 00 00 00 00 775
0 0 0 0
> p:=charpoly(M,Z) ; # renvoie le déterminant (M-ZI)
p := Z 4
13
6.6 Passage entre les structures de données
Lorsqu'il est possible, le passage d'une structure de données à une autre se fait
grâce à l'instruction convert.
convert(M,array) ;
2 3
>
0 0 0 0
66 0 0 0 0 77
64 0 0 0 0 75
0 0 0 0
> whattype(M) ;
symbol
> whattype(op(M)) ; # renvoie le type de M
array
> type(M,matrix) ;
true
> type(M,array) ; # une matrice est un array
true
Convert calcule un objet de type array à partir de la matrice M. L'objet M
ne change pas de type. M peut recevoir le résultat de la conversion (ce qui est
rare), mais cela détruira le contenu antérieur de M.
> matrix(m,n,[]) ;
est équivalent à :
> array(1..m,1..n,[]) ;
On peut fabriquer une array monodimensionnelle ou bidimensionnelle. Ces
objets ne sont pas des matrices.
> array(1..3,[a,aa,aaa]) ;
[a; aa ; aaa ]
b:=array(1..2,1..3,[[0$3] $2]) ;
" #
>
b := 00 00 00
convert(b,matrix) ;
" #
>
0 0 0
0 0 0
> convert(b,list) ; # impossible
14
b:=matrix(3,3,[i$i=1..9]) ;
2 3
>
1 2 3
b := 64 4 5 6 75
7 8 9
> convert(b,listlist) ; # liste de listes
[[1; 2; 3]; [4; 5; 6]; [7; 8; 9]]
> convert(tbl,list) ;
[x; 7]
> convert(tbl,array) ; # impossible
15
> f4:=expand(f4) ; # pas de hiérarchisation des puissances
f4 := 1 + 4 a3 x3 + 4 x6 + 12 x5 a + 12 x4 a2 + x8 + 6 x4 + 12 x3 a + 6 a2 x2 + 4 a x + 6 x6 a2
+ 4 x5 a3 + a4 x4 + 4 x7 a + 4 x2
> sort(f4,x) ; # puissances décroissantes par défaut
x8 + 4 a x7 + 4 x6 + 6 a2 x6 + 12 a x5 + 4 a3 x5 + 12 a2 x4 + a4 x4 + 6 x4 + 4 a3 x3 + 12 a x3
+ 6 a2 x2 + 4 x2 + 4 a x + 1
> sort(f4,[x,a],plex) ; # tri en x et a, puiss. lexicographiques
x8 + 4 x7 a + 6 x6 a2 + 4 x6 + 4 x5 a3 + 12 x5 a + x4 a4 + 12 x4 a2 + 6 x4 + 4 x3 a3 + 12 x3 a
+ 6 x2 a2 + 4 x2 + 4 x a + 1
> collect(f4,x) ; # rassemble les coeff par puissances de x
x8 + 4 x7 a + (6 a2 + 4) x6 + (4 a3 + 12 a) x5 + (a4 + 12 a2 + 6) x4 + (4 a3 + 12 a) x3
+ (6 a2 + 4) x2 + 4 x a + 1
> collect(f4,[x,a]) ;
x8 + 4 x7 a + (6 a2 + 4) x6 + (4 a3 + 12 a) x5 + (a4 + 12 a2 + 6) x4 + (4 a3 + 12 a) x3
+ (6 a2 + 4) x2 + 4 x a + 1
7.2 Coecients des polynômes
> coeff(f4,x,6) ;
6 a2 + 4
> coeffs(f4,x) ; # liste de tous les coeffs
1; 4 a; 6 a2 + 4; a4 + 12 a2 + 6; 6 a2 + 4; 1; 12 a + 4 a3; 12 a + 4 a3 ; 4 a
> coeffs(expand((x^2+1)^3),x) ; # non ordonné incomplet
1; 1; 3; 3
> degree(expand((x^2+1)^3),x) ;
6
> seq(coeff(x^6+3*x^4+3*x^2+1,x,i),i=0..degree(x^6+3*x^4+3*x^2+1,x))
> ; # ordonné et complet
1; 0; 3; 0; 3; 0; 1
> [seq(coeff(x^6+3*x^4+3*x^2+1,x,i),i=0..degree(x^6+3*x^4+3*x^2+1,x))]
> ; # liste
[1; 0; 3; 0; 3; 0; 1]
16
7.3 Intégration
> int(f4,x) ; # polynôme résultant de l'intégration
1 x9 + 1 x8 a + 6 x7 a2 + 4 x7 + 2 x6 a3 + 2 x6 a + 1 x5 a4 + 12 x5 a2 + 6 x5 + x4 a3 + 3 x4 a
9 2 7 7 3 5 5 5
4
+ 2 x3 a2 + 3 x3 + 2 x2 a + x
> int(f4,x=1..y) ;
1 y 9 ; 10 + 1 a (y 8 ; 1) + 1 (6 a2 + 4) (y 7 ; 1) + 1 (4 a3 + 12 a) (y 6 ; 1)
9 9 2 7 6
1
+ 5 (a4 + 12 a2 + 6) (y 5 ; 1) + 4 (4 a3 + 12 a) (y 4 ; 1) + 13 (6 a2 + 4) (y 3 ; 1)
1
+ 2 a (y 2 ; 1) + y
> ig:=int(f4,x=1..y) ;
1 10 1 1 1
ig := y 9 ; + a (y 8 ; 1) + (6 a2 + 4) (y 7 ; 1) + (4 a3 + 12 a) (y 6 ; 1)
9 9 2 7 6
+ (a + 12 a + 6) (y ; 1) + (4 a + 12 a) (y ; 1) + 1 (6 a2 + 4) (y 3 ; 1)
1 4 2 5 1 3 4
5 4 3
2
+ 2 a (y ; 1) + y
> simplify(ig) ; # formule magique
; 15 1 4 5 12 2 5 3 4 4 2 3 2 5 3 1 4
2 a+y + 5 a y + 5 a y +a y + 3ay + 2a y + 2ay ; 3 a ; 5 a + 2ay
6
+ 23 a3 y 6 + 91 y 9 + 56 y 5 + 43 y 3 + 74 y 7 ; 184
35 a 2 ; 1328 + 1 a y 8 + 6 a2 y 7
315 2 7
> expand(ig) ; # expand préférée à
> simplify pour les produits (id dans ce cas)
; 152 a + y + 15 a4 y5 + 12
5 a 2 y 5 + a3 y 4 + 3 a y 4 + 2 a2 y 3 + 2 a y 2 ; 5 a3 ; 1 a4 + 2 a y 6
3 5
+ 23 a3 y 6 + 91 y 9 + 56 y 5 + 43 y 3 + 74 y 7 ; 184 2 1328 1 8 6 2 7
35 a ; 315 + 2 a y + 7 a y
> int(1/f4,x) ;
17
1 2x+ a
3 (4 ; a ) (x2 + x a + 1)3
2
0 0 2 x + a )11
BB B 4 arctanh( p CC
BB 3B 2x+ a ; p ;4 + a2 C
C
@(4 ; a2) (x2 + x a + 1) (4 ; a2) ;4 + a2 ACC
10 B1B 2x+a CC
3 B B + CC
BB2 (4 ; a2) (x2 + x a + 1)2 4 ; a2 CC
B@ CA
+
4 ; a2
> int(sqrt(1/f4),x) ; # Maple réussit souvent !
p p
(;2 ;4 + a2 x ; ;4 + a2 a + 4 arctanh( p2 x + a 2 ) x2 + 4 arctanh( p2 x + a 2 ) x a
;4 + a ;4 + a
.
+ 4 arctanh( p2 x + a 2 ))(x2 + x a + 1)(1 (x8 + 4 x7 a + 6 x6 a2 + 4 x6 + 4 x5 a3
;4 + a
+ 12 x5 a + x4 a4 + 12 x4 a2 + 6 x4 + 4 x3 a3 + 12 x3 a + 6 x2 a2 + 4 x2 + 4 x a + 1))
=
.
(1 2) (;4 + a2 )(3 2)
=
1 dx
(x2 + x a + 1)(1 3)
=
1 2x+ a
3 (4 ; a ) (x2 + x a + 1)3
2
0 0 2 x + a 11
BB BB 2x+ a 4 arctanh( p 2 )CC
; a
@(4 ; a2) (x2 + x a + 1) (4 ; a2) ;4 + a2 CACCC
BB 3 ; p 4 +
10 B BB1 2x+a CC
3 B + CC
BB2 (4 ; a2) (x2 + x a + 1)2 4 ; a2 CC
B@ CA
+ 4 ; a2
18
> fa:=subs(a=3,f4) ; # évacue le pb du paramètre a
fa := x8 + 12 x7 + 58 x6 + 144 x5 + 195 x4 + 144 x3 + 58 x2 + 12 x + 1
> v:=int(1/fa,x=1..2) ; # résultat avec partie réelle
10946 + 8 p5 <(arctanh( 7 p5)) ; 8 p5 <(arctanh(p5))
v := 499125 125 5 125
evalc(v) ; # évaluation/simplification d'un nombre complexe
0 7p 1
>
19
h := ;(8 x7 + 28 x6 a + 36 x5 a2 + 24 x5 + .20 x4 a3 + 60 x4 a + 4 x3 a4 + 48 x3 a2 + 24 x3
+ 12 x2 a3 + 36 x2 a + 12 x a2 + 8 x + 4 a) (x8 + 4 x7 a + 6 x6 a2 + 4 x6 + 4 x5 a3
+ 12 x5 a + x4 a4 + 12 x4 a2 + 6 x4 + 4 x3 a3 + 12 x3 a + 6 x2 a2 + 4 x2 + 4 x a + 1)2
> h:=factor(h);
2
;4 (2 +1 a)4 + 4 (28 ++ 5a)a5 (x ; 1) ; 60 (21++aa)5 (x ; 1)2 + 20 6 +(216+a a+)67 a (x ; 1)3;
21 a + 14 a2 (x ; 1)4 + 12 ;24 + 49 a + 112 a2 + 42 a3 (x ; 1)5;
20 1 + (2 + a)6 (2 + a)7
2 3 3 33 a4 + 36 a2
28 ;19 ; 4 a(2++54a)a7 + 30 a (x ; 1)6 + 40 ;25 ; 64 a +(296+a a+ )8
(x ; 1)7 + O((x ; 1)8)
> convert(ty,polynom) : id sans "O" à tester
Parfois Maple donne un développement à un ordre inférieur à cause de ses
calculs intermédiaires. La solution est de demander un développement à un
ordre supérieur.
> qw:= subs(a=-2,h) ;
qw := ;4 2
2x;2
(x ; 2 x + 1)5
> simplify(qw) ;
;8 (x ; 1) (x21; 2 x + 1)4
> factor(qw) ;
20
;8 (x ;1 1)9
> taylor(qw,x=1) ; # par défaut ordre 6
on obtient une erreur mais Maple propose la fonction series
Error, does not have a taylor expansion, try series()
> series(qw,x=1) ;
;8 (x ; 1);9
> series(u,x=1) ;
u2 :=
e( ;1) ; 1
x
(x ; 1) (x + 2)
> subs(x=1,u2) ;
Remarquons que l'écriture des paramètres est inversée entre subs et limit.
Maple fait le développement limité pour calculer la singularité.
Par ailleurs, il existe un paradoxe. En eet on demande le développement
limité. Puis on remplace le paramètre a. Le retour ne se fait pas forcément car
les calculs intermédiaires le bloquent peut-être.
> pty:=convert(ty,polynom) : # à tester
> ptz:=subs(x-1=z,pty) :
> st:=seq(coeff(ptz,z,1),i=0..degree(ptz,z));
21
st := %1; %1; %1; %1; %1; %1; %1; %1
%1 := ;8 (2 +1 a)5 + (2 +20a)4
> map(factor,st);
8 Algèbre linéaire
8.1 Matrices
Initialisation d'une matrice avec une fonction où le coe i,j est i^j :
M:=matrix(3,3,(i,j)->x[i]^j) ;
2 2 x1 3 3
>
x 1 x1
M := 64 x2 x22 x23 75
x3 x32 x33
Il faut songer à charger le package linalg !
> with(linalg) :
> det(M) ;
x1 x22 x33 ; x1 x23 x32 ; x2 x12 x33 + x2 x13 x32 + x3 x12 x23 ; x3 x13 x22
> factor(det(M)) ;
;x3 x2 x1 (;x2 + x1) (;x1 + x3) (x3 ; x2)
multiply(M,M) ;
2 2 2 3
>
3 3 2 2 3 2 4 2 3 3 3
64 xx12 x+1 +x1x2x32++xx213 xx33 xx112+x2x+1 xx224 ++xx213 xx332 xx12 x+13x+1 xx225 ++xx213 xx333 75
x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36
evalm(M &* M) ; # équivalent à multiply(M,M)
2 2 2 3
>
3 3 2 2 3 2 4 2 3 3 3
64 xx12 x+1 +x1x2x32++xx213 xx33 xx112+x2x+1 xx224 ++xx213 xx332 xx12 x+13x+1 xx225 ++xx213 xx333 75
x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36
> evalm permet d'évaluer la matrice avec des opérations sur les matrices.
L'opérateur &* est la multiplication de matrices.
> evalm(M**2) ;
22
2 2 2 3
x1 + x1 x2 + x13 x3 x1 3 + x1 2 x2 2 + x1 3 x3 2 x14 + x12 x23 + x13 x33
64 x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33 75
2
x3 x1 + x3 x2 + x3 4 2 2 2
x3 x1 + x3 x2 + x3 5 3 3 2
x1 x3 + x2 x3 + x3 6
> Minv:=evalm(M^(-1)) ;
2 x3 x2 x1 x3 x1 x2 3
66 ; %3 x1 %2 x2 %1 x3 77
6 x3 + x2 x3 + x1 x1 + x2
Minv := 66 %3 x ; %2 x ; %1 x
77
64 1 2 3 77
1 1 1 5
; %3 x %2 x2 %1 x3
1
2
%1 := ;x3 x1 + x2 x1 + x3 ; x2 x3
%2 := ;x2 x3 + x3 x1 + x2 2 ; x2 x1
%3 := ;x2 x3 + x3 x1 + x2 x1 ; x1 2
> simplify(%) ; # % dernier résultat %% avant dernier
2 x3 x2 x1 x3 x1 x2 3
;
66 %3 x1 %2 x2 %1 x3 7
66 x3 + x2 ; x3 + x1 ; x1 + x2 777
66 %3 x1 %2 x2 %1 x3 77
4 1 1 1 5
; %3 x %2 x2 %1 x3
1
%1 := ;x3 x1 + x2 x1 + x3 2 ; x2 x3
%2 := ;x2 x3 + x3 x1 + x2 2 ; x2 x1
%3 := ;x2 x3 + x3 x1 + x2 x1 ; x12
Dans l'exemple qui suit, la fonction map applique la fonction factor à tous les
éléments de la matrice.
map(factor,Minv) ;
2 3
>
x2 x3 x3 x1 x2 x1
66 ; (;x2 + x1) (;x1 + x3) x1 (;x2 + x1) (x3 ; x2) x2 (;x1 + x3) (x3 ; x2) x3 77
66 x +x x +x x +x 77
66 (;x2 + x1)3 (;x21 + x3) x1 ; (;x2 + x13) (x31; x2) x2 ; (;x1 + x31) (x32; x2) x3 77
64 75
; (;x + x ) (1;x + x ) x (;x + x )1(x ; x ) x 1
(;x1 + x3 ) (x3 ; x2 ) x3
2 1 1 3 1 2 1 3 2 2
> evalm(M &* Minv) : # à tester
map(factor,evalm(M &* Minv)) ;
2 3
>
1 0 0
64 0 1 0 75
0 0 1
Les vecteurs sont des matrices !
23
b:=matrix(3,1,[1,2,0]) ;
2 3
>
1
b := 64 2 75
0
evalm(M &* b) ;
2 3
>
x 1 + 2 x12
64 x2 + 2 x22 75
x3 + 2 x32
transpose(b) ;
h i
>
1 2 0
val:=evalm(transpose(b) &* M &* b) ;
h i
>
24
2 x2 x3 ; 2 x1 x3 3
66 %2 x1 %1 x2 7
66 x2 + x3 2 (x1 + x3) 777
xs2 := 66 ; + 7
64 %2 x1 %1 x2 77
1 ; 2 5
%2 x1 %1 x2
%1 := ;x1 x3 + x2 x1 ; x2 2 + x2 x3
%2 := x2 x3 ; x2 x1 ; x1 x3 + x12
map(simplify,evalm(xs-xs2)); # pour voir que c'est identique
2 3
>
64 00 75
0
Calcule aussi x mais c'est plus long, d'autant plus long que les symboles restent
dans la matrice !
Le calcul symbolique a ses limites : il est exact mais prend du temps.
8.3 Vecteurs propres
> z:='z' : cp:=charpoly(M,z) ;
cp := z 3 ; z 2 x3 3 ; x2 2 z 2 + z x22 x33 ; z x2 3 x3 2 ; x1 z 2 + x1 z x3 3 + x1 x2 2 z ; x1 x2 2 x3 3
+ x1 x2 3 x3 2 ; x2 x1 2 z + x2 x1 2 x3 3 ; x2 x13 x32 ; x3 x1 2 x2 3 ; x3 x1 3 z + x3 x1 3 x2 2
> factor(cp) ;
z3 ; z2 x33 ; x22 z2 + z x22 x33 ; z x23 x32 ; x1 z2 + x1 z x33 + x1 x22 z ; x1 x22 x33 + x1 x23 x32
; x2 x12 z + x2 x12 x33 ; x2 x13 x32 ; x3 x12 x23 ; x3 x13 z + x3 x13 x22
M2:=subs({x[1]=0,x[2]=1,x[3]=t},op(M)) ;
2 3
>
0 0 0
M2 := 64 1 1 1 75
t t2 t3
eigenvals(M2) ; # valeurs propres
p p
>
0; 1 + 1 t3 + 1 1 ; 2 t3 + t6 + 4 t2 ; 1 + 1 t3 ; 1 1 ; 2 t3 + t6 + 4 t2
2 2 2 2 2 2
>
1 1
eigenvects(M2) ; # vecteurs propres
1 1 1 1
3 3
[ 2 + 2 t + 2 %1; 1; f 0; 1; ; 2 + 2 t + 2 %1 g];
[ 21 + 12 t3 ; 21 %1; 1; f 0; 1; ; 21 + 12 t3 ; 21 %1 g]; [0; 1; f ; t +t 1 ; 1; ; t +1 1 g]
p
%1 := 1 ; 2 t3 + t6 + 4 t2
Renvoie une séquence avec la valeur propre, la dimension de l'espace et l'ensemble
des vecteurs propre, soit autant de descripteurs qu'il y a de valeurs propres.
25
> eigenvects(diag(1,1,2)) ;
[1; 2; f[1; 0; 0]; [0; 1; 0]g]; [2; 1; f[0; 0; 1]g]
Par exemple, pour chercher si le système est stable, on cherche si les valeurs
propres sont inférieures à 1 en valeur absolue.
> linsolve(M2,b) ; # pas de message = pas de solution
> evalm(inverse(M2) &* b);
0
zoro := 64 0 75
0
linsolve(M2,zoro) ;
2 3
>
t 11 t
64 ; t 11 (t + 1) 75
t 11
Ce résultat peut paraître étrange mais il est correct ! Il existe une innité
de solutions proportionnelles à un vecteur que Maple a choisi de noter d'une
certaine façon.
Le problème est de trouver x tel que M2x=0 et la somme des x = 1 pour i
i
dimensions du vecteur.
res:=linsolve(M2,zoro) ;
2 3
>
t 11 t
res := 64 ; t 11 (t + 1) 75
t 11
> total:=sum(res[i,1],i=1..3);
t t t
total := ; 11 + t 11 ; 11
t+1 t+1
> simplify(total);
0
On ne peut pas trouver de solution telle que x1 + 2x2 + 3x3 = 1 car toute
solution est telle que x1 + 2x2 + 3x3 = 0. On essaie donc de trouver x avec
M2x=0 et x1 + 2x2 + 3x3 = 1.
> total:=res[1,1]+2*res[2,1]+3*res[3,1];
t t 3t
total := ; 11 + 2 t 11 ; 11
t+1 t+1
26
> solu:=evalm(res/total);
2 t 11 t 3
66 ; %1 (t + 1) 77
6 t 11 77
solu := 666 %1 77
64 75
; %1 (tt11+ 1)
%1 := ; tt+111t + 2 t 11 ; 3t +t 111
avec x tel que x1 + 2x2 + 3x3 = 1 soit 1 tel que 1 + 2 2 + 3 3 = 1.
x x
s
x
s
x
s
map(simplify,solu) ;
2 t 3
>
66 ; t ; 1 77
66 t + 1 77
66 t ; 1 77
64 1 75
;t ; 1
map(factor,solu) ;
2 t 3
>
66 ; t ; 1 77
66 t + 1 77
66 t ; 1 77
64 1 75
;t ; 1
Quelques manipulations sur les matrices :
> coldim(b) ;
1
> rowdim(b) ;
3
8.4 Systèmes d'équations généraux
> p:=product(z-i,i=1..4) ;
p := (z ; 1) (z ; 2) (z ; 3) (z ; 4)
seq et sum sont des fonctions permettant d'obtenir en une seule ligne des
résultats parfois compliqués.
> solve(p,z) ; # sous entendu p=0
1; 2; 3; 4
> solve(p=1,z) ;
27
5 ; 1 q5 + 4 p2; 5 + 1 q5 + 4 p2; 5 ; 1 q5 ; 4 p2; 5 + 1 q5 ; 4 p2
2 2 2 2 2 2 2 2
> solve(p=-10,z) ;
1 + I; 1 ; I; 4 + I; 4 ; I
Renvoie des nombres imaginaires.
> sol:=[solve(p=-10,z)] ;
sol := [1 + I; 1 ; I; 4 + I; 4 ; I ]
> sol[2] ;
1;I
> p:=product(z-i,i=1..5) ;
p := (z ; 1) (z ; 2) (z ; 3) (z ; 4) (z ; 5)
> sol:=[solve(p=-10,z)] ;
sol := [RootOf(%1; index = 1); RootOf(%1; index = 2); RootOf(%1; index = 3);
RootOf(%1; index = 4); RootOf(%1; index = 5)]
%1 := Z 5 ; 15 Z 4 + 85 Z 3 ; 225 Z 2 + 274 Z ; 110
Maple n'ayant pas réussi, on peut lui demander de faire la résolution avec des
ottants.
> fsolve(p=-10,z) ;
:7449115882443210833027883655874290900097
Maple a trouvé une racine qui est réelle. On lui demande alors de savoir où
sont toutes les racines.
> Digits:=10 : fsolve(p=-10,z,complex) ;
28
Figure 1: Plot z
z
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0
–20
–40
–60
–80
–100
0
> maximize(ut,location) ;
29
so := fy = ;8 ; x = 6 g
5 5
> so[1] ;
y = ;58
> subs(so[1],ut) ;
;(x ; 65 )4 ; (3 x ; 18
5)
2
On peut récupérer la valeur du 2nd élément de la première solution, mais selon
les cas ce n'est pas toujours dans le même ordre.
> a:=op(2,so[1]) ;
a := ;58
Pour illustrer le propos de la conance limitée à accorder à Maple quant aux
résultats, il sut de faire l'exercice avec la fonction d'utilité suivante :
> ut:=-(x^2+2*y+2)^4-(3*x+y-2)^2 ;
ut := ;(x2 + 2 y + 2)4 ; (3 x + y ; 2)2
8.5 Equations diérentielles
dsolve concerne équations diérentielles ordinaires.
pdesolve (ou pdsolve) est utilisé pour les dérivées partielles.
> ode1:=diff(y(x),x) ;
ode1 := @
@x
y(x)
ode1 reçoit ensuite toute l'équation.
> ode1:=diff(y(x),x)=k*y(x)*(1-y(x)) ;
ode1 := @x
@
y(x) = k y(x) (1 ; y(x))
> dsolve(ode1,{y(x)}) ;
y(x) = 1
1 + e ) C1
( ; kx
y(x) = 1
1; e(; ) (;1 + C1 )
k x
C1
30
> dsolve({ode1,y(0)=0},{y(x)}) ;
y(x) = 0
8.6 Développements en série
Si l'on veut obtenir la série de y(x) à l'ordre 6 :
> dsolve(ode1,{y(x)},type=series) ;
y(x) = 21 + 14 k x ; 48
1 k3 x3 + 1 k5 x5 ; 17 k7 x7 + 31 k9 x9 + O(x10 )
480 80640 1451520
> ode2:=diff(y(x),x,x)-k*y(x)*(1-y(x)):
> dsolve({ode2,y(0)=1/2},{y(x)},type=series) ;
solu := y(x) = 1 + x + 1 k x2 ; 1 k x4 ; 1 k2 x5 ; 1 k3 x6 + 1 k2 x7 + 11 k3 x8 +
2 8 12 80 1920 252 13440
1 k4 x9 + O(x10 )
17280
> toto:=subs(solu,y(x)) ;
31
toto := 1 + x + 1 k x2 ; 1 k x4 ; 1 k2 x5 ; 1 k3 x6 + 1 k2 x7 + 11 k3 x8 + 1 k4
2 8 12 80 1920 252 13440 17280
x9 + O(x10)
> toto:=convert(toto,polynom) ;
toto := 1 + x + 1 k x2 ; 1 k x4 ; 1 k2 x5 ; 1 k3 x6 + 1 k2 x7 + 11 k3 x8
2 8 12 80 1920 252 13440
1
+ 17280 k4 x9
> subs(x=4,toto) ;
9 ; 58 k + 16448 k2 + 5408 k3 + 2048 k4
2 3 315 105 135
Ces deux méthodes -solution générique et développement limité- sont des mé-
thodes formelles.
Passons maintenant à la méthode numérique :
> k:=0.1 ;
> lo:=dsolve({ode1,y(0)=1/2},{y(x)},type=numeric) ;
k := :1
lo := proc(rkf45 x ) : : : end proc
Le résultat de cet appel est une procédure.
> lo(1) ;
[x = 1:; y(x) = :524979187477936592]
> lo(2) ;
[x = 2:; y(x) = :549833997184993926]
> lo(0) ;
[x = 0:; y(x) = :50000000000000]
> Digits:=20 ;
Digits := 20
> lo(1.0) ;
[x = 1:0; y(x) = :524979195325058768]
> lo1:=subs(k=2,lo) ; # ne marche pas
lo1 := lo
> k:=0.1 ; lo(1.0) ; # marche... mais...
k := :1
[x = 1:0; y(x) = :524979195325058768]
> logode:=subs(k=0.1,ode1) ;
logode := @
@x
y(x) = :1 y(x) (1 ; y(x))
32
> lo:=dsolve({subs(k=0.1,ode1),y(0)=1/2},{y(x)},type=numeric)
;
lo := proc(rkf45 x ) : : : end proc
> with(plots) : # bibliothèque des fonctions graphiques évoluées
> curvs:=seq(dsolve({logode,y(0)=i/10},
> {y(x)},type=numeric),i=1..9) ;
0.8
0.6
y
0.4
0.2
0 20 40 60 80 100
x
33
> listgr:=[seq(odeplot(curvs[i],x=0..100),i=1..9)]:
> display (listgr) ; # cf. Figure 3
0.8
0.6
y
0.4
0.2
0 20 40 60 80 100
x
34
fy(t) = ; 12 C1 %3 a ; C1 %3 d ; C1 %3 %1 +b C2 %2 a ; C2 %2 d + C2 %2 %1 ;
x(t) = C1 %3 + C2 %2g
p
%1 := a2 ; 2 a d + d2 + 4 c b
%2 := e(1 2( + ;%1) )
= a d t
%3 := e((1 2 +1 2 +1 2 %1) )
= a = d = t
> dsolve({eq1,eq2,x(0)=1,y(0)=0},{x(t),y(t)}) ;
8 0 p p
< 1 1 ( a ; d + %1) %3 a 1 ( a ; d + %1) %3 d ; 1 (a ; d + p%1) %3
: y( t ) = ; @ p ; p
2 2 %1 2 %1 2
p 1 (a ; d ; p%1) %2 d 1
p .
; 12 (a ; d ;p %1) %2 a + 2 p ; 12 (a ; d ; %1) %2A b;
%1 %1
p p 9
1 ( a ; d + %1) %3 1 ( a ; d ; %1) %2 =
x(t) = 2 p ;2 p ;
%1 %1
%1 := a2 ; 2 a d +p d2 + 4 c b
%2 := e(1 2( + ; %1) )p
= a d t
%3 := e((1 2 +1 2 +1 2 %1) )
= a = d = t
Méthode série :
> Order:=4; dsolve({eq1,eq2},{x(t),y(t)}, type=series) ;
Order := 4
fx(t) = x(0) + (a x(0) + b y(0)) t + ( 12 a2 x(0) + 12 a b y(0) + 21 b c x(0) + 12 b d y(0)) t2 + (
1 a3 x(0) + 1 a2 b y(0) + 1 a b c x(0) + 1 a b d y(0) + 1 c b2 y(0) + 1 b d c x(0)
6 6 3 6 6 6
1
+ 6 b d2 y(0))t3 + O(t4 ); y(t) = y(0) + (c x(0) + d y(0)) t+
( 12 c a x(0) + 21 c b y(0) + 12 d c x(0) + 12 d2 y(0)) t2 + ( 16 c a2 x(0) + 61 c a b y(0)
+ 16 b c2 x(0) + 13 c b d y(0) + 61 d c a x(0) + 16 d2 c x(0) + 16 d3 y(0))t3 + O(t4 )g
Equations non linéaires :
> eq3:=diff(x(t),t)=x(t)^2+2*y(t) ;
eq3 := @
@t
x(t) = x(t)2 + 2 y(t)
> eq4:=diff(y(t),t)=x(t)*y(t) ;
eq4 := @
@t
y(t) = x(t) y(t)
35
> dsolve({eq3,eq4},{x(t),y(t)}) ;
[fx(t) = ;2 t + C2 1 12
; C1 + t2 + 2 t C2 + C2 2 g; fy(t) = 2 ( x(t)) ; 2 x(t) g]
@
@t
> eq5:=diff(y(t),t)=x(t)*y(t)^2 ;
eq5 := @
@t
y(t) = x(t) y(t)2
> dsolve({eq3,eq5},{x(t),y(t)}) ;
2( Z Z RootOf(;e Z a 2 ; 4 C1 + 4 Ei(1; ; Z )) !)
4 x(t) = RootOf ; d a + t + C2 ;
4 + RootOf(;e Z a 2 ; 4 C1 + 4 Ei(1; ; Z )) a 2
3
1 1
fy(t) = 2 ( x(t)) ; 2 x(t)2g5
@
@t
Error, (in fy) cannot evaluate the solution further right of .43053336
> odeplot(ff,t=0..0.5) ; # cf. Figure 4
Warning, cannot compute solution further right of
.43053336275796050028
Le graphique apparaît dans la feuille de calcul, pour le faire apparaître dans
une fenêtre, il faut passer par la commande interface (sur unix mettre plot-
device=X11). Tous les graphiques sont mis dans une fenêtre à part, chaque
graphique étant dans sa propre fenêtre.
9 Graphiques
> f:=-(x+2*y+1)^4-(x+3*y-3)^2 ;
36
Figure 4: Plot t
12
10
8
x
6
37
Figure 5: Plot 3d
0
–500
–1000
–1500
–2000
–2 –2
–1 –1
0 0
y 1 1 x
2 2
38
10 Programmation
10.1 Tests et conditions
> if a=1 then
> a*a
> else
> a-1
> fi ;
a;1
> if a=1 then
> b:=a*a
> elif a=2 then
> b:=a
> else
> b:= a-1
> fi ;
b := a ; 1
> if a=1 then
> a*a
> else
> if b=1 then
> b:=0
> fi
> fi ;
10.2 Boucles
> s:='s' : n:=10 ; s:=0 ;
> for i from 1 to n
> do s:= s+ i*i
> od:
n := 10
s := 0
> s;
385
> s:='s' : # récursif
> for i from 1 to n
> do s:= s+ i*i
> od ;
s := s + 4
Error, too many levels of recursion
Construction d'une récurrence :
> for i from 1 to n
> do v[i]:=v[i-1]+ i*i
> od ;
v1 := v0 + 1
39
v2 := v0 + 5
v3 := v0 + 14
v4 := v0 + 30
v5 := v0 + 55
v6 := v0 + 91
v7 := v0 + 140
v8 := v0 + 204
v9 := v0 + 285
v10 := v0 + 385
> op(v) ;
40
l2 := []
l2 := [a2]
l2 := [a2 ; b2]
l2 := [a2; b2; c2]
> [seq(l[i]^2,i=1..nops(l))] ;
[a2; b2; c2]
La fonction nops correspond au nombre d'éléments de la liste.
> for i in l
> do l2:=[op(l2),i^2] # concaténation par ajout à l'existant
> od ;
l2 := [a2; b2; c2 ; a2 ]
l2 := [a2; b2; c2; a2 ; b2 ]
l2 := [a2; b2; c2 ; a2 ; b2; c2]
Boucle tant que :
> s:=1 ;
> while s<2000
> do s:=2*s
> od ;
s := 1
s := 2
s := 4
s := 8
s := 16
s := 32
s := 64
s := 128
s := 256
s := 512
s := 1024
s := 2048
10.3 Procédures
Une procédure est une suite d'instructions partagées que l'on peut appeler
ensuite.
41
> # la fonction carre calcule le carre d'un nb
> carre:=proc(x)
> local x2; # variable locale
> x2:=x*x;
> RETURN(x2); # par défaut retourne le dernier résultat
> end;
carre := proc(x) local x2 ; x2 := x2 ; RETURN(x2 ) end proc
> carre(3) ;
9
> carre(3,4) ; # prend le 1er argument
9
> carre(truc) ;
truc 2
> racine:=proc(x)
> if (x>=0) then
> RETURN(sqrt(x)) ;
> else
> RETURN(Impossible !) ;
> fi;
> end ;
racine := proc(x)
if 0 x then RETURN(sqrt(x)) else RETURN(Impossible!) end if
end proc
> racine(4) ;
2
> racine(-3) ;
Impossible!
> racine(sophie) ; # ne sait pas évaluer sophie
I 3
> racine:=proc(x::numeric) # paramètre
> de type connu par maple
> if (x>=0) then
> RETURN(sqrt(x))
> else
> RETURN("Impossible!")
> fi;
> end ;
42
racine := proc(x: : numeric )
if 0 x then RETURN(sqrt(x)) else RETURN( Impossible! ) end if
end proc
> racine(ab) ;
M := 00 00
toto.dat contient les informations suivantes :
43
maxvp : =proc(M: : matrix)
local ev, mx ;
ev : = eigenvals(M) ;
mx : = max(ev) ;
RETURN(ev,mx);
end;
> read "C:toto.dat" :
> debug(maxvp) ; #mode debugage d'une procédure
Le principe est de mettre les procédures dans un chier. Le restart réinitialise
et se débarasse du contexte précédent.
> restart ; # remise à zéro
On peut sauvegarder une procédure comme tout autre objet dans un chier,
sans mise en forme.
> save carre, "carre.txt" ;
carre : = proc (x, y) local x2, y2; x2: =x^2; y2 : = y^3; RETURN(x2,"et",y2)
end proc;
44
# mon chier de commandes progmp.txt with(linalg);
# proc carre
carre: =proc(x,y)
local x2,y2;
x2: =x*x;
y2: =y*y*y;
RETURN(x2,"et",y2)
end;
# proc calcul...
maxvp: =proc(M: : matrix)
local ev, mx, vabs ;
ev : = eigenvals(M) ;
vabs : = seq(abs(vabs[i]),i=1..nops(vabs));
mx : = max(ev) ;
RETURN(mx);
end;
11.3 Communication
11.3.1 Fichier texte
Menu File> Save as Text
Ensuite on peut copier depuis un éditeur puis coller dans Maple as Maple Text
11.3.2 Sélection
Menu Exporter pose le problème de tout exporter : il faut faire le ménage
ensuite.
11.3.3 Feuille de calcul
L'exportation au format TeX de la feuille de calcul produit un chier TeX
autonome très utile pour retravailler le texte. Il est nécessaire d'avoir récupéré
le package maple2e.
11.3.4 Format HTML
Il est possible de fabriquer du HTML standard avec des chiers GIF intégrés.
A l'avenir, mathML permettra de représenter des formules.
45
11.3.5 Graphiques
Il est préférable de passer par le menu contextuel car le menu Export ne
s'applique pas toujours à l'ensemble souhaité.
> interface(plotdevice=inline) ; # retour à la feuille
Les exportations de graphiques peuvent se faire aux diérents formats reconnus
(GIF, JPG, EPS, WMF).
11.3.6 Postscript
Pour exporter la feuille en postscript, Maple ne le fait pas tout seul, il faut
passer par l'impression dans un chier à l'aide d'un driver d'imprimante Post-
script (rappelons que lorsqu'on imprime, on peut imprimer sur une feuille ou
dans un chier ! ), puis éditer avec un éditeur de chiers postscript, tel que
GhostView et sélectionner les pages intéressantes.
Entre collaborateurs, la communication peut se faire à l'aide de chiers post-
script.
11.4 Fonctions d'édition de la feuille de calcul
Nous mentionnons ici les principales fonctionnalités.
Menu > Insert > Execution Group > Before ou After
permet de créer un groupe de commandes. Le système présente une barre de
modication avec validation par exemple.
Les fenêtres d'aide ont été faites avec des instructions et des commentaires.
Menu > Insert > Section ou Subsection.
Le bloc peut être indenté ou outdenté par Menu > Format.
Les blocs d'exécution peuvent être fusionnés ou cassés par Menu > Edit >
Split ou Join.
46
Index
:,4 exp, 21
: =, 4 expand, 16
;,4 exporter, 45
>, 3
?,3 factor, 19
#, 4 chiers, 43
$, 12 for, 39
&*, 22 formats, 46
fsolve, 28
aide, 3
anames, 9 gif, 45
array, 11 html, 45
boucle, 39, 41 if, 39
charpoly, 13, 25 implicitplot, 37
coe, 16 indices, 11
coes, 16 int, 17
coldim, 27 intersect, 9
collect, 16 limit, 21
convert, 14 linalg, 13, 22
debug, 44 linsolve, 24
degree, 16 liste, 9, 41
denom, 20 listlist, 15
det, 22 listprocedure, 36
diag, 26 map, 23
di, 15 maple2e, 45
Digits, 6 matrice, 13
display, 34 maximize, 28
dsolve, 30 multiply, 22
édition, 46 nops, 41
eigenvals, 25 numer, 20
eigenvects, 25
ensemble, 9 odeplot, 36
entries, 11 op, 10, 11
evalc, 19 opérateurs arithmétiques, 5
evalf, 6 opérateurs logiques, 5
evalm, 22 order, 35
47
Order, 31
pdesolve, 30
pdsolve, 30
plot, 28
plot3d, 37
plots, 33
postscript, 46
procedure, 41
product, 27
prompt, 3
read, 43
restart, 44
return, 42
rowdim, 27
sauvegarde, 43, 45
save, 43
seq, 10
series, 21
simplify, 6
solve, 6
sort, 16
sqrt, 18
subs, 8
sum, 26, 40
table, 10
tableau indicé, 10
taylor, 20
test, 39
transpose, 24
type, 14
type numeric, 42
unassign, 4
union, 9
variable locale, 42
whattype, 14
while, 41
with, 13, 33
48
Liste des gures
1 Plot z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2 Plot 1 seule courbe . . . . . . . . . . . . . . . . . . . . . . . . . 33
3 Plot plusieurs courbes . . . . . . . . . . . . . . . . . . . . . . . 34
4 Plot t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Plot 3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Références
[1] C. Gomez. Notes de cours Maple. Institut National de la Recherche en
Informatique et Automatique, 2001.
[2] Y. Mourrain, B. Papegay. Notes de cours Maple. Institut National de la
Recherche en Informatique et Automatique, 2001.
[3] Waterloo. Maple 7. Waterloo Maple, 2002.
49