SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Notes de cours maple
Alain JEAN-MARIE Annie HOFSTETTERy
Juin 2002
LIRMM Montpellier
yINRA 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 Coe cients 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 a n 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'a ectation.
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'a chage
du r sultat
> f: = x^2 + x + 1:
tandis que les deux points la place du point virgule n'a chent pas le r sultat.
Ce qui peut tre utile en cas de r sultat interm diaire, bien qu'il y ait une
a ectation 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'a che que la variable b et son a ectation.
> 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 signi e qu'il n'y a rien en m moire
dans une feuille Maple: charger la feuille ne su t 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 chi res sont autoris s condition que le nom ne commence pas par un
chi re. 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 := x+ 2
x;1
> u:=1/(x-1)/(x+2)
u := 1
(x; 1)(x+ 2)
3 Ce que peut faire Maple
Maple sait faire des manipulations alg briques sur les formules compos es
de variables, de symboles.
> f: = x + 2 Maple n'a pas besoin de savoir ce qu'est x, on suppose
que x supporte l'addition, etc.
Il sait faire des d riv es, int grales, factorisations ou r soudre des sys-
t mes d' quations.
Il sait faire des manipulations num riques, calculer des nombres, faire
des graphiques.
Il fait du calcul arbitraire sur les nombres entiers, rationnels, les poly-
n mes. Maple essaie de faire du calcul exact autant que possible.
> f:= a*x+b : solve(f,x)
;b
a
> (3/2)^100
515377520732011331036461129765621272702107522001
1267650600228229401496703205376
5
> 1.5^100
:40656117751018
> r:=(3/2)^100 : evalf(r)
:40656117751018
4 Ce que Maple ne peut pas faire
Pour des raisons th oriques, on ne peut pas tester l' galit z ro. Si
une expression est trop compliqu e (sin, lg) alors il n'est pas possible
d'a rmer si elle vaut 0 ou non. Par contre si cette expression est un
polyn me, alors c'est possible le polyn me nul vaut 0 tout le temps.
Notons que si la formule utilise des sin, log, etc., on peut aboutir des
formules qui ne se simpli eront jamais. Maple ne simpli e pas sponta-
n ment les expressions. On le lui demande par l'appel de la fonction
simplify().
> f := (x+1)^2 - 2*x - x^2 - 1
f := (x+ 1)2 ;2x; x2 ;1
> f:= simplify(f)
f := 0
Maple fait de son mieux pour r soudre des quations ou factoriser des
formules. S'il ne trouve pas de solution (pour solve par exemple), il ren-
voie un r sultat vide. Dans le cas d'un polyn me de degr sup rieur ou
gal 5, il n'existe pas de formule de calcul des racines. L'expression
retourn e de type RootOf(...) est toutefois exploitable par Maple.
> solve(f)
Si la taille du symbole est trop grande ou si l'algoritme est troplong, alors
c'est un chec. Il existe un bouton stop permettant d'interrompre un cal-
cul trop long. Parfois ce bouton ne su t 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 chi res signi catifs est Digits: =10. Il faut
donc faire attention aux manipulations de formules et autres inversions
de matrices!
> v:=(log(640320^3+744)/Pi)^2
v := ln(262537412640768744)2
2
> Digits := 20 evalf(v)
6
Digits := 20
162:99999999999999999
> Digits := 40 evalf(v)
Digits := 40
163:0000000000000000000000000000232167780
5 Probl me de l' valuation des symboles
Maple value les formules le plus loin possible, c'est dire tant qu'il peut
remplacer les symboles qui ont une valeur.
> f:=x^2
f := x2
> x:=y
x := y
> f
y2
> g:=x^2
g := y2
> x:=12
x := 12
> f # f n'a pas chang
144
> g # g non plus !
y2
Il faut donc faire attention l'ordre d'a ectation des symboles: le r sultat
semble le m me, bien qu'en m moire ce soit di rent!
> a:=val b:=a c:=b a b c
a := val
b := val
c := val
val
val
val
> val:=10 a b c
val := 10
10
10
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
l'initialisation est une solution!
t := 10
z := 10
t := 100
Pour viter ces probl mes d' valuation, il vaut mieux ne jamais donner de
valeurs num riques aux variables et utiliser la fonction de substitution.
> f:=x^2+x+1
f := x2 + x+ 1
> subs(x=3,f)
13
> f
f n'a pas chang de nature!
x2 + x+ 1
Il est possible d'e ectuer plusieurs substitutions avec de nombreuses variables
en m me temps.
8
> f:=x^2 + 3*a*x +1
f := x2 + 3ax+ 1
> subs({x=3,a=2},f)
28
Attention aux substitutions r cursives...
> subs({x=a^2,a=2},f)
a4 + 6a2 + 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
Error, invalid subscript selector
Ajout d'un l ment une liste
> l:= op(l),e5]
l := 10 11] b d e5]
Concat nation de deux listes, par exemple une liste avec elle-m me: dans une
liste on peut avoir 2 fois le m me l ment, contrairement aux ensembles.
> l:= op(l),op(l)]
l := 10 11] b d e5 10 11] b d e5]
Une fa on de fabriquer une "liste" est d'utiliser la fonction seq (s quence) qui
produit une suite que l'on peut mettre dans une liste.
> st:=seq(n*n,n=1..10) # cr ation de la s quence d' l ments
st := 1 4 9 16 25 36 49 64 81 100
La s quence est constitu e des carr s des nombres allant de 1 10.
> l:= st] # affectation une liste
l := 1 4 9 16 25 36 49 64 81 100]
6.3 Les tables
Les tables sont des objets g n raux qui assurent la correspondance entre deux
valeurs (tableau indic ).
> t 1]:=3
t1 := 3
L'instruction pr c dente vient de cr er implicitement le tableau t et d'assigner
la valeur 3 dans le 3e l ment de ce tableau.
> t 12]:=8
t12 := 8
> op(t)
table( 1 = 3 12 = 8])
10
> t 6]
t6
> t 1/2]:=7
t1=2 := 7
> t (a,b,c)]:=x # table d'une suite
t10 11] b c := x
Une table repr sente un espace de stockage ou encore une mani re d'associer
une valeur une famille d'objets. C'est un tableau associatif o un indice
correspond une valeur.
La fonction op() permet d'obtenir une repr sentation de ce qu'il y a l'int rieur
d'un tableau, mais elle n'est pas tr s pratique. La fonction indices retourne la
liste des valeurs des indices et non pas le contenu.
> tbl a,b,c]]:=x tbl 1/2]:=7 indices(tbl)
tbl a b c] := x
tbl1=2 := 7
a b c]] 1
2]
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
tab1 3 := y
> tab 1] 3]:=y
tab13 := y
Le tableau est une structure puissante mais elle n'est pas forc ment la plus
e cace.
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
Error, 1st index, 13, larger than upper array bound 10
> a 0] # l'intervalle commence 1
Error, 1st index, 0, smaller than lower array bound 1
> b:=array(0..2, x,y,z])
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])
Error, (in index/fill) a list with 4 entries cannot be used to
initialize the range 0 .. 2
Par exemple nous proposons de d clarer un tableau puis de le remplir de z ros.
> n:= 10 # taille du tableau
n := 10
> b:=array(1..n, 0$n]) # $ est l'op rateur de r p tition
b := 0 0 0 0 0 0 0 0 0 0]
Dans l'exemple suivant, la boucle qui remplit le tableau est cach e l'int rieur
de la fonction de cr ation du tableau. On obtient la liste des valeurs i r p t es
pour la valeur d'une variable allant de 1 n (n=10).
> c:=array(1..n, i$i=1..n])
c := 1 2 3 4 5 6 7 8 9 10]
Tableaux plusieurs dimensions:
> d2:=array(1..3,1..4)
12
d2 := array(1::3 1::4 ])
> d2 0,0] # en dehors des bornes
Error, 1st index, 0, smaller than lower array bound 1
> d2 1,3]:=3
d21 3 := 3
> d2 2] # le tableau est deux dimensions
Error, array defined with 2 indices, used with 1 indices
> b2:=array(1..3,1..4, 0$12]) # non autoris
Error, (in index/fill) a list with 12 entries cannot be used to
initialize the range 1 .. 3
Cet exemple n cessite une liste de 3 l ments, chacun tant une liste de 4
autres l ments.
> b2:=array(1..3,1..4, 0$4]$3])
b2 :=
2
64
0 0 0 0
0 0 0 0
0 0 0 0
3
75
> b2:=array(1..4,1..3, 0$3]$4])
b2 :=
2
6664
0 0 0
0 0 0
0 0 0
0 0 0
3
7775
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 ci que aux traitements d'alg bre lin aire.
> with(linalg) : # ":" est moins bavard que " "
> M := matrix(4,4, 0$16])
M :=
2
6664
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
3
7775
> p:=charpoly(M,Z) # renvoie le d terminant (M-ZI)
p := Z4
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
6664
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
3
7775
> 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 :=
"
0 0 0
0 0 0
#
> convert(b,matrix)
"
0 0 0
0 0 0
#
> convert(b,list) # impossible
Error, (in convert/list) can't convert array of dimension > 1
14
> b:=matrix(3,3, i$i=1..9])
b :=
2
64
1 2 3
4 5 6
7 8 9
3
75
> convert(b,listlist) # liste de listes
1 2 3] 4 5 6] 7 8 9]]
> convert(tbl,list)
x 7]
> convert(tbl,array) # impossible
Error, (in index/FillInitVals) unevaluated array index in assignment
Il faut veiller ne pas perdre le contenu d'un tableau ou les autres donn es
telles que les symboles importants!
> c:=x # le contenu de c est perdu !
c := x
7 Manipulations sur les fonctions
7.1 Manipulations simples
f est une fonction de x.
> f:=x^2 + a*x +1
f := x2 + ax+ 1
> df:= diff(f,x)
df := 2x+ a
> dfa:=diff(f,a)
dfa := x
> dfg:=diff(f,g) # f ne d pend pas de
> g
dfg := 0
> df2:=diff(f,x,x)
df2 := 2
> df2:=diff(f,x$2) # x$2 vaut x,x
df2 := 2
> res:=diff(f,x,a)-diff(f,a,x)
res := 0
> f4:=f**4
f4 := (x2 + ax+ 1)4
15
> f4:=expand(f4) # pas de hi rarchisation des puissances
f4 := 1 + 4a3x3 + 4x6 + 12x5a + 12x4a2 + x8 + 6x4 + 12x3 a+ 6a2 x2 + 4ax+ 6x6a2
+ 4x5 a3 + a4 x4 + 4x7a + 4x2
> sort(f4,x) # puissances d croissantes par d faut
x8 + 4ax7 + 4x6 + 6a2 x6 + 12ax5 + 4a3 x5 + 12a2x4 + a4 x4 + 6x4 + 4a3x3 + 12ax3
+ 6a2x2 + 4x2 + 4ax+ 1
> sort(f4, x,a],plex) # tri en x et a, puiss. lexicographiques
x8 + 4x7 a+ 6x6a2 + 4x6 + 4x5 a3 + 12x5a+ x4 a4 + 12x4 a2 + 6x4 + 4x3a3 + 12x3 a
+ 6x2a2 + 4x2 + 4xa+ 1
> collect(f4,x) # rassemble les coeff par puissances de x
x8 + 4x7a + (6a2 + 4)x6 + (12a+ 4a3)x5 + (a4 + 12a2 + 6)x4 + (12a+ 4a3)x3
+ (6a2 + 4)x2 + 4xa+ 1
> collect(f4,x,sort)
x8 + 4x7a + (6a2 + 4)x6 + (4a3 + 12a)x5 + (a4 + 12a2 + 6)x4 + (4a3 + 12a)x3
+ (6a2 + 4)x2 + 4xa+ 1
> collect(f4, x,a])
x8 + 4x7a + (6a2 + 4)x6 + (4a3 + 12a)x5 + (a4 + 12a2 + 6)x4 + (4a3 + 12a)x3
+ (6a2 + 4)x2 + 4xa+ 1
7.2 Coe cients des polyn mes
> coeff(f4,x,6)
6a2 + 4
> coeffs(f4,x) # liste de tous les coeffs
1 4a 6a2 + 4 a4 + 12a2 + 6 6a2 + 4 1 12a+ 4a3 12a+ 4a3 4a
> 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
9 x9 + 1
2 x8 a+ 6
7 x7 a2 + 4
7 x7 + 2
3 x6 a3 + 2x6a+ 1
5 x5 a4 + 12
5 x5 a2 + 6
5 x5 + x4 a3 + 3x4 a
+ 2x3 a2 + 4
3 x3 + 2x2a + x
> int(f4,x=1..y)
1
9 y9 ; 10
9 + 1
2 a(y8 ;1) + 1
7 (6a2 + 4)(y7 ; 1)+ 1
6 (4a3 + 12a)(y6 ; 1)
+ 1
5 (a4 + 12a2 + 6)(y5 ;1) + 1
4 (4a3 + 12a)(y4 ;1)+ 1
3 (6a2 + 4)(y3 ;1)
+ 2a(y2 ; 1)+ y
> ig:=int(f4,x=1..y)
ig := 1
9 y9 ; 10
9 + 1
2 a(y8 ; 1)+ 1
7 (6a2 + 4)(y7 ;1) + 1
6 (4a3 + 12a)(y6 ;1)
+ 1
5
(a4 + 12a2 + 6)(y5 ; 1)+ 1
4
(4a3 + 12a)(y4 ;1) + 1
3
(6a2 + 4)(y3 ; 1)
+ 2a(y2 ;1) + y
> simplify(ig) # formule magique
;15
2 a+ y + 1
5 a4 y5 + 12
5 a2 y5 + a3 y4 + 3ay4 + 2a2y3 + 2ay2 ; 5
3 a3 ; 1
5 a4 + 2ay6
+ 2
3 a3 y6 + 1
9 y9 + 6
5 y5 + 4
3 y3 + 4
7 y7 ; 184
35 a2 ; 1328
315 + 1
2 ay8 + 6
7 a2 y7
> expand(ig) # expand pr f r e
> simplify pour les produits (id dans ce cas)
;15
2 a+ y + 1
5 a4 y5 + 12
5 a2 y5 + a3 y4 + 3ay4 + 2a2y3 + 2ay2 ; 5
3 a3 ; 1
5 a4 + 2ay6
+ 2
3 a3 y6 + 1
9 y9 + 6
5 y5 + 4
3 y3 + 4
7 y7 ; 184
35 a2 ; 1328
315 + 1
2 ay8 + 6
7 a2 y7
> int(1/f4,x)
17
1
3
2x+ a
(4 ;a2)(x2 + xa+ 1)3
+
10
3
0
BBBBBBBBBBB@
1
2
2x+ a
(4; a2)(x2 + xa+ 1)2 +
3
0
BB@
2x+ a
(4 ;a2)(x2 + xa+ 1) ;
4arctanh( 2x+ ap
;4 + a2)
(4 ;a2)
p
;4 + a2
1
CCA
4 ;a2
1
CCCCCCCCCCCA
4 ;a2
> int(sqrt(1/f4),x) # Maple r ussit souvent !
(;2
p
;4 + a2 x;
p
;4 + a2 a+ 4arctanh( 2x+ ap
;4 + a2)x2 + 4arctanh( 2x+ ap
;4 + a2)xa
+ 4arctanh( 2x+ ap
;4 + a2))(x2 + xa+ 1)(1
.
(x8 + 4x7 a+ 6x6 a2 + 4x6 + 4x5a3
+ 12x5a+ x4 a4 + 12x4a2 + 6x4 + 4x3 a3 + 12x3a+ 6x2 a2 + 4x2 + 4xa+ 1))
(1=2)
.
(;4 + a2)(3=2)
> int(1/f^(1/3),x) # Maple essaie quand m me !
Z 1
(x2 + xa+ 1)(1=3) dx
Il existe une di rence entre valuation num rique et valuation formelle
> int(1/f4,x=1..2)
Z 2
1
1
.
(x8 + 4x7a+ 6x6a2 + 4x6 + 4x5 a3 + 12x5a+ x4 a4 + 12x4 a2 + 6x4 + 4x3a3
+ 12x3a+ 6x2 a2 + 4x2 + 4xa+ 1)dx
> int(1/f4,x)
1
3
2x+ a
(4 ;a2)(x2 + xa+ 1)3
+
10
3
0
BBBBBBBBBBB@
1
2
2x+ a
(4; a2)(x2 + xa+ 1)2 +
3
0
BB@
2x+ a
(4 ;a2)(x2 + xa+ 1) ;
4arctanh( 2x+ ap
;4 + a2)
(4 ;a2)
p
;4 + a2
1
CCA
4 ;a2
1
CCCCCCCCCCCA
4 ;a2
18
> fa:=subs(a=3,f4) # vacue le pb du param tre a
fa := x8 + 12x7 + 58x6 + 144x5 + 195x4 + 144x3 + 58x2 + 12x+ 1
> v:=int(1/fa,x=1..2) # r sultat avec partie r elle
v := 10946
499125 + 8
125
p
5<(arctanh(7
5
p
5)); 8
125
p
5<(arctanh(
p
5))
> evalc(v) # valuation/simplification d'un nombre complexe
10946
499125 + 2
125
p
5ln
0
BB@
(7
5
p
5 + 1)2
(7
5
p
5 ; 1)2
1
CCA ; 2
125
p
5ln((
p
5 + 1)2
(
p
5 ;1)2)
> evalf(v)
:00043687913
Seconde solution: Maple fait de l'int gration num rique et passe par un al-
gorithme pour trouver une approximation de l'int gration.
> evalf(Int(1/fa,x=1..2))
:0004368791081
L'int gration symbolique est exacte mais il arrive parfois qu'elle soit longue et
qu'elle ne marche pas toujours.
L'int gration num rique est approch e, en g n ral plus rapide, et marche tou-
jours en principe.
Sur l'exemple pr c dent, les deux r sultats sont di rents donc il y en a au
moins un qui est faux.
Si on demande Maple > evalf(int(...,x=1..2)), on s'attend un r sultat nu-
m rique. Maple essaie de trouver une primitive: s'il choue alors il utilise la
m thode num rique. Si on demande evalf(Int(...)) alors la m thode num rique
est appliqu e directement.
En conclusion, il faut donc trouver un bon compromis entre le temps et ce que
l'on attend.
7.4 Factorisation et d composition de fractions
> factor(f4)
(x2 + xa+ 1)4
> h:=diff(1/f4,x)
19
h := ;(8x7 + 28x6a+ 36x5a2 + 24x5 + 20x4a3 + 60x4a + 4x3 a4 + 48x3a2 + 24x3
+ 12x2 a3 + 36x2a+ 12xa2 + 8x+ 4a)
.
(x8 + 4x7 a+ 6x6 a2 + 4x6 + 4x5a3
+ 12x5 a+ x4 a4 + 12x4a2 + 6x4 + 4x3 a3 + 12x3a+ 6x2a2 + 4x2 + 4xa+ 1)2
> h:=factor(h)
h := ;4 2x+ a
(x2 + xa+ 1)5
> numer(h)
;8x; 4a
> denom(h)
(x2 + xa+ 1)5
Il n'y a pas de r gles quant l' criture: Maple limite l'expression ne pas
toujours faire con ance Maple, ne pas s'attendre ce que le d nominateur
soit toujours positif par exemple.
7.5 D veloppements
> ty:=taylor(h,x=1,8) : # tester sur son poste...
renvoie le d veloppement de Taylor de h au voisinage de 1 l'ordre 8.
> simplify(ty)
;4 1
(2 + a)4 + 4 8 + 5a
(2 + a)5 (x; 1); 60 1 + a
(2+ a)5 (x; 1)2 + 20 6 + 16a+ 7a2
(2 + a)6 (x;1)3;
20 1+ 21a+ 14a2
(2+ a)6 (x;1)4 + 12 ;24 + 49a+ 112a2 + 42a3
(2 + a)7 (x;1)5;
28 ;19 ;4a+ 54a2 + 30a3
(2+ a)7 (x; 1)6 + 40 ;25 ; 64a+ 96a3 + 33a4 + 36a2
(2+ 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 2x;2
(x2 ;2x+ 1)5
> simplify(qw)
;8 1
(x;1)(x2 ;2x+ 1)4
> factor(qw)
20
;8 1
(x; 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)
1
3 (x;1);1 ; 1
9 + 1
27 (x; 1); 1
81 (x;1)2 + 1
243 (x; 1)3 ; 1
729 (x;1)4 + 1
2187 (x; 1)5+
O((x;1)6)
Quelques compl ments sur les d veloppements de Taylor, limit , de Laurent
(extensions de d riv es limites).
> u2 := u*(exp(x-1)-1)
u2 := e(x;1) ;1
(x; 1)(x+ 2)
> subs(x=1,u2)
Error, numeric exception: division by zero
> limit(u2,x=1)
1
3
> limit(u2,x=1.0)
:3333333333
> subs(x=1.0,u2)
Float(1)e0:
;Float(1)
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 e et 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 1
(2+ a)5 + 20
(2+ a)4
> map(factor,st)
Error, (in factor) wrong number of arguments
On observe que les coe cients ne sont pas d nis si a=0. Maple trouve les
formules g n riques sans hypoth ses particuli res.
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)
M :=
2
64
x1 x12 x13
x2 x22 x23
x3 x32 x33
3
75
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
64
x12 + x12 x2 + x13 x3 x13 + x12 x22 + x13 x32 x14 + x12 x23 + x13 x33
x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33
x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36
3
75
> evalm(M &* M) # quivalent multiply(M,M)
2
64
x12 + x12 x2 + x13 x3 x13 + x12 x22 + x13 x32 x14 + x12 x23 + x13 x33
x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33
x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36
3
75
> 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
64
x12 + x12 x2 + x13 x3 x13 + x12 x22 + x13 x32 x14 + x12 x23 + x13 x33
x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33
x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36
3
75
> Minv:=evalm(M^(-1))
Minv :=
2
6666664
; x3 x2
%3x1
x1 x3
%2x2
x1 x2
%1x3
x3 + x2
%3x1
;x3 + x1
%2x2
;x1 + x2
%1x3
; 1
%3x1
1
%2x2
1
%1x3
3
7777775
%1 := ;x3 x1 + x2 x1 + x32 ;x2 x3
%2 := ;x2 x3 + x3 x1 + x22 ;x2 x1
%3 := ;x2 x3 + x3 x1 + x2 x1 ; x12
> simplify(%) # % dernier r sultat %% avant dernier
2
6666664
; x3 x2
%3x1
x1 x3
%2x2
x1 x2
%1x3
x3 + x2
%3x1
;x3 + x1
%2x2
;x1 + x2
%1x3
; 1
%3x1
1
%2x2
1
%1x3
3
7777775
%1 := ;x3 x1 + x2 x1 + x32 ;x2 x3
%2 := ;x2 x3 + x3 x1 + x22 ;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
66666664
; x2 x3
(;x2 + x1)(;x1 + x3)x1
x3 x1
(;x2 + x1)(x3 ; x2)x2
x2 x1
(;x1 + x3)(x3 ;x2)x3
x3 + x2
(;x2 + x1)(;x1 + x3)x1
; x3 + x1
(;x2 + x1)(x3 ;x2)x2
; x1 + x2
(;x1 + x3)(x3 ;x2)x3
; 1
(;x2 + x1)(;x1 + x3)x1
1
(;x2 + x1)(x3 ; x2)x2
1
(;x1 + x3)(x3 ;x2)x3
3
77777775
> evalm(M &* Minv) : # tester
> map(factor,evalm(M &* Minv))
2
64
1 0 0
0 1 0
0 0 1
3
75
Les vecteurs sont des matrices!
23
> b:=matrix(3,1, 1,2,0])
b :=
2
64
1
2
0
3
75
> evalm(M &* b)
2
64
x1 + 2x12
x2 + 2x22
x3 + 2x32
3
75
> transpose(b)
h
1 2 0
i
> val:=evalm(transpose(b) &* M &* b)
val :=
h
x1 + 2x2 + 2x12 + 4x22
i
> val 1,1] # scalaire
x1 + 2x2 + 2x12 + 4x22
> val 1]
Error, array defined with 2 indices, used with 1 indices
8.2 R solution de syst mes lin aires
> xs:=linsolve(M,b)
xs :=
2
666666664
;x3 (;2x3x12 + x22 x3 + 2x13 ; x23)
x2 x1 %1
;2x1 x32 + x2 x32 + 2x13 ;x23
x2 x1 %1
;2x12 ;2x1 x3 ;x22 + x2 x3
x1 %1x2
3
777777775
%1 := ;x3 x12 + x2 x12 ; x2 x32 + x1 x32 + x22 x3 ;x22 x1
Ce sont les solutions de Mx=b en x: la m me chose que x=M(-1)b, ce qui
n'est pas faux!
> xs2:=evalm(M^(-1) &* b)
24
xs2 :=
2
66666664
x2 x3
%2x1
; 2x1 x3
%1x2
;x2 + x3
%2x1
+ 2(x1 + x3)
%1x2
1
%2x1
; 2
%1x2
3
77777775
%1 := ;x1 x3 + x2 x1 ;x22 + x2 x3
%2 := x2 x3 ; x2 x1 ;x1 x3 + x12
> map(simplify,evalm(xs-xs2)) # pour voir que c'est identique
2
64
0
0
0
3
75
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 := z3 ;z2 x33 ;x22 z2 + zx22 x33 ; zx23 x32 ;x1 z2 + x1 zx33 + 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
> factor(cp)
z3 ;z2 x33 ; x22 z2 + zx22 x33 ; zx23 x32 ;x1 z2 + x1 zx33 + 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))
M2 :=
2
64
0 0 0
1 1 1
t t2 t3
3
75
> eigenvals(M2) # valeurs propres
0 1
2
+ 1
2
t3 + 1
2
p
1 ;2t3 + t6 + 4t2 1
2
+ 1
2
t3 ; 1
2
p
1 ;2t3 + t6 + 4t2
> eigenvects(M2) # vecteurs propres
1
2 + 1
2 t3 + 1
2 %1 1 f 0 1 ;1
2 + 1
2 t3 + 1
2 %1 g]
1
2 + 1
2 t3 ; 1
2 %1 1 f 0 1 ;1
2 + 1
2 t3 ; 1
2 %1 g] 0 1 f ; t
t + 1 1 ; 1
t + 1 g]
%1 :=
p
1 ; 2t3 + t6 + 4t2
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)
Error, (in inverse) singular matrix
Renvoie une erreur car il n'y a pas de solution ce syst me: il n'existe pas
de x tel que M2x=b, mais M2 est singuli re.
> zoro:=matrix(3,1, 0,0,0])
zoro :=
2
64
0
0
0
3
75
> linsolve(M2,zoro)
2
64
t11 t
; t11 (t + 1)
t11
3
75
Ce r sultat peut para tre trange mais il est correct! Il existe une in nit
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 xi
= 1 pour i
dimensions du vecteur.
> res:=linsolve(M2,zoro)
res :=
2
64
t11 t
; t11 (t+ 1)
t11
3
75
> total:=sum(res i,1],i=1..3)
total := ; t11 t
t + 1 + t11 ; t11
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]
total := ; t11 t
t + 1 + 2 t11 ; 3 t11
t + 1
26
> solu:=evalm(res/total)
solu :=
2
66666664
; t11 t
%1(t+ 1)
t11
%1
; t11
%1(t+ 1)
3
77777775
%1 := ; t11 t
t + 1 + 2 t11 ; 3 t11
t + 1
avec x tel que x1 + 2x2 + 3x3 = 1 soit x
1 tel que x1
s
+ 2x2
s
+ 3x3
s
= 1.
> map(simplify,solu)
2
66666664
; t
t ; 1
t+ 1
t; 1
; 1
t ; 1
3
77777775
> map(factor,solu)
2
66666664
; t
t ; 1
t+ 1
t; 1
; 1
t ; 1
3
77777775
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
2
; 1
2
q
5 + 4
p
2 5
2
+ 1
2
q
5 + 4
p
2 5
2
; 1
2
q
5 ;4
p
2 5
2
+ 1
2
q
5 ;4
p
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 := Z5 ;15 Z4 + 85 Z3 ;225 Z2 + 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)
:7449115882 2:349739682;:9370699874I 2:349739682+ :9370699874I
4:777804524;:4980352577I 4:777804524+ :4980352577I
Il renvoie des valeurs complexes mais num riques que l'ont peut v ri er gra-
phiquement.
> plot(p+10,z=0..2) # cf. Figure 1
> fsolve(p=sin(z))
1:038994656
On trouve une solution mais la question est de savoir s'il existe une autre
racine, soit par la r alisation de graphes, soit en s'aidant de l'analyse math -
matique, soit en trouvant (ou excluant) des intervalles contenant les racines.
Soit une fonction d'utilit que l'on cherche maximiser.
> ut:=-(x+2*y+2)^4-(3*x+y-2)^2
ut := ;(x+ 2y + 2)4 ;(3x+ y ;2)2
> maximize(ut,x,y)
28
Figure 1: Plot z
–100
–80
–60
–40
–20
0
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
z
0
> maximize(ut,location)
0 f fy = ;8
5 x = 6
5g 0]g
Maple crit les quations du 1er ordre et les r soud. Faisons le tape par tape.
> gr:=grad(ut, x,y]) # calcul du gradient
gr := ;4(x+ 2y + 2)3 ;18x;6y + 12 ;8(x+ 2y + 2)3 ;6x;2y + 4
> sys:={gr 1]=0,gr 2]=0}
sys := f;8(x+ 2y + 2)3 ;6x; 2y + 4 = 0 ;4(x+ 2y + 2)3 ; 18x;6y + 12 = 0g
Il s'agit d'un syst me d' quations de deux l ments: on prend le 1er l ment
de gradient=0 et le second de gradient=0.
> so:=solve(sys)
29
so := fy = ;8
5
x = 6
5
g
> so 1]
y = ;8
5
> subs(so 1],ut)
;(x; 6
5)4 ;(3x; 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 := ;8
5
Pour illustrer le propos de la con ance limit e accorder Maple quant aux
r sultats, il su t de faire l'exercice avec la fonction d'utilit suivante:
> ut:=-(x^2+2*y+2)^4-(3*x+y-2)^2
ut := ;(x2 + 2y + 2)4 ;(3x+ 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) = ky(x)(1;y(x))
> dsolve(ode1,{y(x)})
y(x) = 1
1+ e(;k x) C1
Cette solution est g n rique, C1 tant la constante d'int gration.
Pour avoir une solution particuli re, il faut mentionner que y(0) a une certaine
valeur et extraire la constante de l' quation. Le premier membre de la fonction
dsolve repr sente le syst me d' quations r soudre et le second concerne les
fonctions recherch es.
> dsolve({ode1,y(0)=y0},{y(x)})
y(x) = 1
1 ; e(;k x) (;1 + C1)
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) = y(0)+ ky(0)(1; y(0))x+ (;3
2
k2 y(0)2 + k2 y(0)3 + 1
2
k2 y(0))x2 + (
1
3 ky(0)(3
2 k2 y(0)2 ; k2 y(0)3 ; 1
2 k2 y(0)); 1
3 k3 y(0)2 (1; y(0))2
+ 1
3 k(;3
2 k2 y(0)2 + k2 y(0)3 + 1
2 k2 y(0))(1; y(0)))x3+
(25
12 k4 y(0)3 ; 5
2 k4 y(0)4 ; 5
8 k4 y(0)2 + k4 y(0)5 + 1
24 k4 y(0))x4+
(3
2 k5 y(0)3 ; 13
4 k5 y(0)4 ; 31
120 k5 y(0)2 + 3k5y(0)5 + 1
120 k5 y(0);k5 y(0)6)x5+
O(x6)
> Order:=10 # l'odre 10 ! avec majuscule
Order := 10
> dsolve(ode1,{y(x)},type=series) :# tester
> dsolve({ode1,y(0)=1/2},{y(x)},type=series)
y(x) = 1
2 + 1
4 kx; 1
48 k3 x3 + 1
480 k5 x5 ; 17
80640 k7 x7 + 31
1451520 k9 x9 + O(x10)
> ode2:=diff(y(x),x,x)-k*y(x)*(1-y(x)):
> dsolve({ode2,y(0)=1/2},{y(x)},type=series)
y(x) = 1
2 + D(y)(0)x+ 1
8 kx2 ; 1
12 kD(y)(0)2x4 ; 1
80 k2 D(y)(0)x5 ; 1
1920 k3 x6+
1
252 k2 D(y)(0)3x7 + 11
13440 k3 D(y)(0)2x8 + 1
17280 k4 D(y)(0)x9 + O(x10)
> D(y)(0) # d riv e de y valu e en 0
D(y)(0)
R cup ration de la partie polynomiale du d veloppement limit :
> solu:=dsolve({ode2,y(0)=1/2,D(y)(0)=1},{y(x)},type=series)
solu := y(x) = 1
2
+ x+ 1
8
kx2 ; 1
12
kx4 ; 1
80
k2 x5 ; 1
1920
k3 x6 + 1
252
k2 x7 + 11
13440
k3 x8+
1
17280 k4 x9 + O(x10)
> toto:=subs(solu,y(x))
31
toto := 1
2
+ x+ 1
8
kx2 ; 1
12
kx4 ; 1
80
k2 x5 ; 1
1920
k3 x6 + 1
252
k2 x7 + 11
13440
k3 x8 + 1
17280
k4
x9 + O(x10)
> toto:=convert(toto,polynom)
toto := 1
2
+ x+ 1
8
kx2 ; 1
12
kx4 ; 1
80
k2 x5 ; 1
1920
k3 x6 + 1
252
k2 x7 + 11
13440
k3 x8
+ 1
17280 k4 x9
> subs(x=4,toto)
9
2 ; 58
3 k + 16448
315 k2 + 5408
105 k3 + 2048
135 k4
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) = :1y(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)
curvs := proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc
proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc
proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc
proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc
proc(rkf45 x) ::: end proc
> odeplot n'accepte pas une liste de courbes, il faut extraire la 1i re :
> odeplot(curvs 1],x=0..100) # cf. Figure 2
Figure 2: Plot 1 seule courbe
0.2
0.4
0.6
0.8
1
y
0 20 40 60 80 100
x
33
> listgr:= seq(odeplot(curvs i],x=0..100),i=1..9)]:
> display (listgr) # cf. Figure 3
Figure 3: Plot plusieurs courbes
0.2
0.4
0.6
0.8
1
y
0 20 40 60 80 100
x
8.7 Syst me d' quations
M thode formelle:
> t:='t' : a:='a' : b:='b' : c:='c' :
> eq1:=diff(x(t),t)=a*x(t)+b*y(t)
eq1 := @
@t
x(t) = ax(t) + by(t)
> eq2:=diff(y(t),t)=c*x(t)+d*y(t)
eq2 := @
@t
y(t) = cx(t)+ dy(t)
> dsolve({eq1,eq2},{x(t),y(t)})
34
fy(t) = ;1
2
C1 %3a; C1 %3d; C1 %3%1 + C2 %2a; C2 %2d+ C2 %2%1
b
x(t) = C1 %3 + C2 %2g
%1 :=
p
a2 ;2ad+ d2 + 4cb
%2 := e(1=2(a+d;%1)t)
%3 := e((1=2a+1=2d+1=2%1)t)
> dsolve({eq1,eq2,x(0)=1,y(0)=0},{x(t),y(t)})
8
<
:y(t) = ;1
2
0
@1
2
(a; d+
p
%1)%3ap
%1
; 1
2
(a; d+
p
%1)%3dp
%1
; 1
2 (a; d+
p
%1)%3
; 1
2
(a;d;
p
%1)%2ap
%1
+
1
2 (a;d;
p
%1)%2d
p
%1
; 1
2 (a;d;
p
%1)%2
1
A
.
b
x(t) = 1
2
(a;d+
p
%1)%3p
%1
; 1
2
(a; d;
p
%1)%2p
%1
9
=
%1 := a2 ;2ad+ d2 + 4cb
%2 := e(1=2(a+d;
p
%1)t)
%3 := e((1=2a+1=2d+1=2p
%1)t)
M thode s rie:
> Order:=4 dsolve({eq1,eq2},{x(t),y(t)}, type=series)
Order := 4
fx(t) = x(0)+ (ax(0)+ by(0))t+ (1
2 a2 x(0)+ 1
2 aby(0)+ 1
2 bcx(0)+ 1
2 bdy(0))t2 + (
1
6
a3 x(0)+ 1
6
a2 by(0)+ 1
3
abcx(0)+ 1
6
abdy(0)+ 1
6
cb2y(0)+ 1
6
bdcx(0)
+ 1
6 bd2y(0))t3 + O(t4) y(t) = y(0) + (cx(0)+ dy(0))t+
(1
2 cax(0)+ 1
2 cby(0)+ 1
2 dcx(0)+ 1
2 d2 y(0))t2 + (1
6 ca2x(0) + 1
6 caby(0)
+ 1
6 bc2x(0)+ 1
3 cbdy(0)+ 1
6 dcax(0)+ 1
6 d2 cx(0)+ 1
6 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 + 2y(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
; C1 + t2 + 2t C2 + C22g fy(t) = 1
2 ( @
@t
x(t)); 1
2 x(t)2g]
> 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
4
(
x(t) = RootOf ;
Z Z RootOf(;e Z a2 ;4 C1 + 4Ei(1 ; Z))
4 + RootOf(;e Z a2 ;4 C1 + 4Ei(1 ; Z)) a2 d a + t + C2
!)
fy(t) = 1
2 ( @
@t
x(t)) ; 1
2 x(t)2g
3
5
En rajoutant des conditions initiales et la liste des proc dures, on obtient:
> ff:=dsolve({eq3,eq5,x(0)=1,y(0)=1},{x(t),y(t)},
> type=numeric,output=listprocedure)
:= t = (proc(t) ::: end proc) x(t) = (proc(t) ::: end proc )
y(t) = (proc(t) ::: end proc)]
> fx:=subs(ff,x(t))
fx := proc(t) ::: end proc
> fy:=subs(ff,y(t))
fy := proc(t) ::: end proc
> fx(0.0) fy(0.0)
> fx(1.0) fy(1.0)
1:
1:
Error, (in fx) cannot evaluate the solution further right of
.43053336, probably a singularity
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
2
4
6
8
10
12
x
0 0.1 0.2 0.3 0.4
t
f := ;(x+ 2y + 1)4 ; (x+ 3y ; 3)2
> plot3d(f,x=-2..2,y=-2..2,axes=boxed) # cf. Figure 5
Dans une fen tre graphique le menu contextuel du bouton droit de la sou-
ris est utilisable. Par exemple, une option des styles patches et contours fait
appara tre les lignes de niveaux.
> ?plot options] : # acc s aux options
La commande suivante permet de dessiner le gradient de la fonction.
> animate propose de superposer les graphiques sous la forme d'une animation.
> gradplot(f,x=-2..2,y=-2..2,grid= 10,10],arrows=SLIM)
gradplot(;(x+ 2y + 1)4 ;(x+ 3y ;3)2 x = ;2::2 y = ;2::2 grid = 10 10]
arrows = SLIM)
> implicitplot(f=-10,x=-2..2,y=-2..2,grid= 50,50])
37
Figure 5: Plot 3d
–2
–1
0
1
2
x
–2
–1
0
1
2
y
–2000
–1500
–1000
–500
0
implicitplot(;(x+ 2y + 1)4 ;(x+ 3y ;3)2 = ;10 x = ;2::2 y = ;2::2 grid = 50 50])
Par d faut la pr cision de lissage est donn e par le param tre grid= 25,25].
Il faut veiller choisir les bonnes dimensions du graphique.
> f:=x*x+cos(x)-x*y^3
f := x2 + cos(x);xy3
> plot(f,x=-1..1,y=-10..10) # utiliser plot3d
Plotting error, empty plot
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)
table( 1 = v0 + 1 2 = v0 + 5 3 = v0 + 14 4 = v0 + 30 5 = v0 + 55 6 = v0 + 91 7 = v0 + 140
8 = v0 + 204 9 = v0 + 285
10 = v0 + 385
])
> sum(j*j,j=1..N)
1
3 (N + 1)3 ; 1
2 (N + 1)2 + 1
6 N + 1
6
> factor(sum(j*j,j=1..N))
1
6 N (N + 1)(2N + 1)
La boucle descendante pr sentera un incr ment n gatif. Une boucle s'incr mente
tant que c'est inf rieur la borne (ou sup rieur si c'est une boucle descen-
dante).
> for i from 1 to 9 by 2
> do v i]:=v i-1]+i^3
> od
v1 := v0 + 1
v3 := v0 + 32
v5 := v0 + 155
v7 := v0 + 434
v9 := v0 + 933
> for i in 4, 7, 12] do toto i]:=i*i od
toto4 := 16
toto7 := 49
toto12 := 144
> a:='a' : b:='b' : # r initialisation
> l:= a,b,c] # quelle que soit la liste, ensemble, etc.
> for i in l do l2:= op(l2),i*i] od # initialisation d'une liste
vide
l := a b c]
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)localx2 x2 := x2 RETURN(x2)end proc
> carre(3)
9
> carre(3,4) # prend le 1er argument
9
> carre(truc)
truc2
> racine:=proc(x)
> if (x>=0) then
> RETURN(sqrt(x))
> else
> RETURN(Impossible !)
> fi
> end
racine := proc(x)
if0 xthenRETURN(sqrt(x))elseRETURN(Impossible!)end if
end proc
> racine(4)
2
> racine(-3)
Impossible!
> racine(sophie) # ne sait pas valuer sophie
Error, (in racine) cannot evaluate boolean: -sophie <= 0
> sqrt(-3)
I
p
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)
if0 xthenRETURN(sqrt(x))elseRETURN( Impossible! )end if
end proc
> racine(ab)
Error, invalid input: racine expects its 1st argument, x, to be of
type numeric, but received ab
> racine(carre(4,6)) # prend le 1er argument
4
11 Fichiers, entr es/sorties, sauvegardes
11.1 Sauvegarde des instructions
La sauvegarde d'une session correspond la sauvegarde des instructions. La
feuille de calcul Maple est sauvegard e avec les instructions et leurs r sultats.
La fonction save permet de sauvegarder des instructions telles on les taperait
en tant qu'instructions Maple. Le chier est ditable dans un diteur (Notepad,
Emacs) et chargeable dans Maple par le menu File> Open.
> M:=matrix(2,2, 0$4]) :
> save M,"C:toto.dat"
> read "c:toto.dat" # rapelle et ex cute les instructions
M :=
"
0 0
0 0
#
toto.dat contient les informations suivantes:
M: = array(1.. 2, 1 .. 2, (1, 1)=0,(1, 2)=0,(2, 1)=0,(2, 2)=0])
11.2 Utilisation des proc dures dans un chier externe
Le chier ascii peut contenir la proc dure maxvp qui recherche le maximum
des valeurs propres d'une matrice.
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
Un chier de commandes peut contenir de nombreuses instructions:
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 formatsreconnus
(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
modi cation 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
: =, 4
, 4
>, 3
? , 3
#, 4
$, 12
&*, 22
aide, 3
anames, 9
array, 11
boucle, 39, 41
charpoly, 13, 25
coe , 16
coe s, 16
coldim, 27
collect, 16
convert, 14
debug, 44
degree, 16
denom, 20
det, 22
diag, 26
di , 15
Digits, 6
display, 34
dsolve, 30
dition, 46
eigenvals, 25
eigenvects, 25
ensemble, 9
entries, 11
evalc, 19
evalf, 6
evalm, 22
exp, 21
expand, 16
exporter, 45
factor, 19
chiers, 43
for, 39
formats, 46
fsolve, 28
gif, 45
html, 45
if, 39
implicitplot, 37
indices, 11
int, 17
intersect, 9
limit, 21
linalg, 13, 22
linsolve, 24
liste, 9, 41
listlist, 15
listprocedure, 36
map, 23
maple2e, 45
matrice, 13
maximize, 28
multiply, 22
nops, 41
numer, 20
odeplot, 36
op, 10, 11
op rateurs arithm tiques, 5
op rateurs logiques, 5
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

Más contenido relacionado

La actualidad más candente

Mode Emploi 8510 8520 8530 8540
Mode Emploi 8510 8520 8530 8540Mode Emploi 8510 8520 8530 8540
Mode Emploi 8510 8520 8530 8540guest8e8f89
 
Les bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sqlLes bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sqlZineb Meryem
 
Modélisation & analyse des systèmes
Modélisation & analyse des systèmesModélisation & analyse des systèmes
Modélisation & analyse des systèmessarah Benmerzouk
 
Excel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formulesExcel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formulesClaudio Montoni
 
Twido guide materiel bases compactes & modulaires
Twido guide materiel   bases compactes & modulairesTwido guide materiel   bases compactes & modulaires
Twido guide materiel bases compactes & modulairesJohanna Mesa Torres
 
Twido guide materiel base extreme
Twido guide materiel   base extremeTwido guide materiel   base extreme
Twido guide materiel base extremeJohanna Mesa Torres
 
Alpha 9500 ml_french_manual
Alpha 9500 ml_french_manualAlpha 9500 ml_french_manual
Alpha 9500 ml_french_manualRoman Dulgarov
 

La actualidad más candente (15)

Stata pour les nuls
Stata pour les nulsStata pour les nuls
Stata pour les nuls
 
Mode Emploi 8510 8520 8530 8540
Mode Emploi 8510 8520 8530 8540Mode Emploi 8510 8520 8530 8540
Mode Emploi 8510 8520 8530 8540
 
Les bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sqlLes bases fondamentales du langage transact sql
Les bases fondamentales du langage transact sql
 
Modélisation & analyse des systèmes
Modélisation & analyse des systèmesModélisation & analyse des systèmes
Modélisation & analyse des systèmes
 
Poly
PolyPoly
Poly
 
Excel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formulesExcel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formules
 
Cours python
Cours pythonCours python
Cours python
 
Twido guide materiel bases compactes & modulaires
Twido guide materiel   bases compactes & modulairesTwido guide materiel   bases compactes & modulaires
Twido guide materiel bases compactes & modulaires
 
Twido guide materiel base extreme
Twido guide materiel   base extremeTwido guide materiel   base extreme
Twido guide materiel base extreme
 
Twido guide de programmation
Twido guide de programmationTwido guide de programmation
Twido guide de programmation
 
Compilation
CompilationCompilation
Compilation
 
Alpha 9500 ml_french_manual
Alpha 9500 ml_french_manualAlpha 9500 ml_french_manual
Alpha 9500 ml_french_manual
 
Maths
MathsMaths
Maths
 
C sharp
C sharpC sharp
C sharp
 
defour phd
defour phddefour phd
defour phd
 

Similar a Coursmp

Cours mass pascalllllllllllle
Cours mass pascalllllllllllleCours mass pascalllllllllllle
Cours mass pascalllllllllllleChawki Riadh
 
formation_latex
formation_latexformation_latex
formation_latexBui Loi
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesBenjamin Vidal
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Hadjer BENHADJ DJILALI
 
57277345 cours-matlab
57277345 cours-matlab57277345 cours-matlab
57277345 cours-matlabgeniem1
 
Analyse2 00 (1)
Analyse2 00 (1)Analyse2 00 (1)
Analyse2 00 (1)Dj-malik
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdfDendouga1
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfLamissGhoul1
 
Mat lab1
Mat lab1Mat lab1
Mat lab1fouadDD
 
Travaux dirigés avec corrections - soutien scolaire
Travaux dirigés avec corrections - soutien scolaireTravaux dirigés avec corrections - soutien scolaire
Travaux dirigés avec corrections - soutien scolaireOussamYony
 
Rapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleRapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleCibamboSteven
 

Similar a Coursmp (20)

Cours mass pascalllllllllllle
Cours mass pascalllllllllllleCours mass pascalllllllllllle
Cours mass pascalllllllllllle
 
formation_latex
formation_latexformation_latex
formation_latex
 
Cours matlab
Cours matlabCours matlab
Cours matlab
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
 
57277345 cours-matlab
57277345 cours-matlab57277345 cours-matlab
57277345 cours-matlab
 
Analyse2 00 (1)
Analyse2 00 (1)Analyse2 00 (1)
Analyse2 00 (1)
 
Graphes
GraphesGraphes
Graphes
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdf
 
cours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdfcours d'algorithmique et programmation 3sc final .pdf
cours d'algorithmique et programmation 3sc final .pdf
 
Algo
AlgoAlgo
Algo
 
Cours de Matlab
Cours de MatlabCours de Matlab
Cours de Matlab
 
Mat lab1
Mat lab1Mat lab1
Mat lab1
 
Travaux dirigés avec corrections - soutien scolaire
Travaux dirigés avec corrections - soutien scolaireTravaux dirigés avec corrections - soutien scolaire
Travaux dirigés avec corrections - soutien scolaire
 
cours_python.pdf
cours_python.pdfcours_python.pdf
cours_python.pdf
 
vanderpypendaniel_msc
vanderpypendaniel_mscvanderpypendaniel_msc
vanderpypendaniel_msc
 
Rapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleRapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche Opérationnelle
 
Guide latex.
Guide latex.Guide latex.
Guide latex.
 
Rapport
RapportRapport
Rapport
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 

Último

Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 

Último (19)

Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 

Coursmp

  • 1. Notes de cours maple Alain JEAN-MARIE Annie HOFSTETTERy Juin 2002 LIRMM Montpellier yINRA LAMETA Montpellier
  • 2. 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 Coe cients 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
  • 3. 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
  • 4. 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 a n 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
  • 5. 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'a ectation. 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'a chage du r sultat > f: = x^2 + x + 1: tandis que les deux points la place du point virgule n'a chent pas le r sultat. Ce qui peut tre utile en cas de r sultat interm diaire, bien qu'il y ait une a ectation 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'a che que la variable b et son a ectation. > 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 signi e qu'il n'y a rien en m moire dans une feuille Maple: charger la feuille ne su t 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
  • 6. Les chi res sont autoris s condition que le nom ne commence pas par un chi re. 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 := x+ 2 x;1 > u:=1/(x-1)/(x+2) u := 1 (x; 1)(x+ 2) 3 Ce que peut faire Maple Maple sait faire des manipulations alg briques sur les formules compos es de variables, de symboles. > f: = x + 2 Maple n'a pas besoin de savoir ce qu'est x, on suppose que x supporte l'addition, etc. Il sait faire des d riv es, int grales, factorisations ou r soudre des sys- t mes d' quations. Il sait faire des manipulations num riques, calculer des nombres, faire des graphiques. Il fait du calcul arbitraire sur les nombres entiers, rationnels, les poly- n mes. Maple essaie de faire du calcul exact autant que possible. > f:= a*x+b : solve(f,x) ;b a > (3/2)^100 515377520732011331036461129765621272702107522001 1267650600228229401496703205376 5
  • 7. > 1.5^100 :40656117751018 > r:=(3/2)^100 : evalf(r) :40656117751018 4 Ce que Maple ne peut pas faire Pour des raisons th oriques, on ne peut pas tester l' galit z ro. Si une expression est trop compliqu e (sin, lg) alors il n'est pas possible d'a rmer si elle vaut 0 ou non. Par contre si cette expression est un polyn me, alors c'est possible le polyn me nul vaut 0 tout le temps. Notons que si la formule utilise des sin, log, etc., on peut aboutir des formules qui ne se simpli eront jamais. Maple ne simpli e pas sponta- n ment les expressions. On le lui demande par l'appel de la fonction simplify(). > f := (x+1)^2 - 2*x - x^2 - 1 f := (x+ 1)2 ;2x; x2 ;1 > f:= simplify(f) f := 0 Maple fait de son mieux pour r soudre des quations ou factoriser des formules. S'il ne trouve pas de solution (pour solve par exemple), il ren- voie un r sultat vide. Dans le cas d'un polyn me de degr sup rieur ou gal 5, il n'existe pas de formule de calcul des racines. L'expression retourn e de type RootOf(...) est toutefois exploitable par Maple. > solve(f) Si la taille du symbole est trop grande ou si l'algoritme est troplong, alors c'est un chec. Il existe un bouton stop permettant d'interrompre un cal- cul trop long. Parfois ce bouton ne su t 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 chi res signi catifs est Digits: =10. Il faut donc faire attention aux manipulations de formules et autres inversions de matrices! > v:=(log(640320^3+744)/Pi)^2 v := ln(262537412640768744)2 2 > Digits := 20 evalf(v) 6
  • 8. Digits := 20 162:99999999999999999 > Digits := 40 evalf(v) Digits := 40 163:0000000000000000000000000000232167780 5 Probl me de l' valuation des symboles Maple value les formules le plus loin possible, c'est dire tant qu'il peut remplacer les symboles qui ont une valeur. > f:=x^2 f := x2 > x:=y x := y > f y2 > g:=x^2 g := y2 > x:=12 x := 12 > f # f n'a pas chang 144 > g # g non plus ! y2 Il faut donc faire attention l'ordre d'a ectation des symboles: le r sultat semble le m me, bien qu'en m moire ce soit di rent! > a:=val b:=a c:=b a b c a := val b := val c := val val val val > val:=10 a b c val := 10 10 10 7
  • 9. 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 l'initialisation est une solution! t := 10 z := 10 t := 100 Pour viter ces probl mes d' valuation, il vaut mieux ne jamais donner de valeurs num riques aux variables et utiliser la fonction de substitution. > f:=x^2+x+1 f := x2 + x+ 1 > subs(x=3,f) 13 > f f n'a pas chang de nature! x2 + x+ 1 Il est possible d'e ectuer plusieurs substitutions avec de nombreuses variables en m me temps. 8
  • 10. > f:=x^2 + 3*a*x +1 f := x2 + 3ax+ 1 > subs({x=3,a=2},f) 28 Attention aux substitutions r cursives... > subs({x=a^2,a=2},f) a4 + 6a2 + 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
  • 11. > 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 Error, invalid subscript selector Ajout d'un l ment une liste > l:= op(l),e5] l := 10 11] b d e5] Concat nation de deux listes, par exemple une liste avec elle-m me: dans une liste on peut avoir 2 fois le m me l ment, contrairement aux ensembles. > l:= op(l),op(l)] l := 10 11] b d e5 10 11] b d e5] Une fa on de fabriquer une "liste" est d'utiliser la fonction seq (s quence) qui produit une suite que l'on peut mettre dans une liste. > st:=seq(n*n,n=1..10) # cr ation de la s quence d' l ments st := 1 4 9 16 25 36 49 64 81 100 La s quence est constitu e des carr s des nombres allant de 1 10. > l:= st] # affectation une liste l := 1 4 9 16 25 36 49 64 81 100] 6.3 Les tables Les tables sont des objets g n raux qui assurent la correspondance entre deux valeurs (tableau indic ). > t 1]:=3 t1 := 3 L'instruction pr c dente vient de cr er implicitement le tableau t et d'assigner la valeur 3 dans le 3e l ment de ce tableau. > t 12]:=8 t12 := 8 > op(t) table( 1 = 3 12 = 8]) 10
  • 12. > t 6] t6 > t 1/2]:=7 t1=2 := 7 > t (a,b,c)]:=x # table d'une suite t10 11] b c := x Une table repr sente un espace de stockage ou encore une mani re d'associer une valeur une famille d'objets. C'est un tableau associatif o un indice correspond une valeur. La fonction op() permet d'obtenir une repr sentation de ce qu'il y a l'int rieur d'un tableau, mais elle n'est pas tr s pratique. La fonction indices retourne la liste des valeurs des indices et non pas le contenu. > tbl a,b,c]]:=x tbl 1/2]:=7 indices(tbl) tbl a b c] := x tbl1=2 := 7 a b c]] 1 2] 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 tab1 3 := y > tab 1] 3]:=y tab13 := y Le tableau est une structure puissante mais elle n'est pas forc ment la plus e cace. 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
  • 13. > a 3] a3 > a 13] # en dehors de l'intervalle Error, 1st index, 13, larger than upper array bound 10 > a 0] # l'intervalle commence 1 Error, 1st index, 0, smaller than lower array bound 1 > b:=array(0..2, x,y,z]) 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]) Error, (in index/fill) a list with 4 entries cannot be used to initialize the range 0 .. 2 Par exemple nous proposons de d clarer un tableau puis de le remplir de z ros. > n:= 10 # taille du tableau n := 10 > b:=array(1..n, 0$n]) # $ est l'op rateur de r p tition b := 0 0 0 0 0 0 0 0 0 0] Dans l'exemple suivant, la boucle qui remplit le tableau est cach e l'int rieur de la fonction de cr ation du tableau. On obtient la liste des valeurs i r p t es pour la valeur d'une variable allant de 1 n (n=10). > c:=array(1..n, i$i=1..n]) c := 1 2 3 4 5 6 7 8 9 10] Tableaux plusieurs dimensions: > d2:=array(1..3,1..4) 12
  • 14. d2 := array(1::3 1::4 ]) > d2 0,0] # en dehors des bornes Error, 1st index, 0, smaller than lower array bound 1 > d2 1,3]:=3 d21 3 := 3 > d2 2] # le tableau est deux dimensions Error, array defined with 2 indices, used with 1 indices > b2:=array(1..3,1..4, 0$12]) # non autoris Error, (in index/fill) a list with 12 entries cannot be used to initialize the range 1 .. 3 Cet exemple n cessite une liste de 3 l ments, chacun tant une liste de 4 autres l ments. > b2:=array(1..3,1..4, 0$4]$3]) b2 := 2 64 0 0 0 0 0 0 0 0 0 0 0 0 3 75 > b2:=array(1..4,1..3, 0$3]$4]) b2 := 2 6664 0 0 0 0 0 0 0 0 0 0 0 0 3 7775 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 ci que aux traitements d'alg bre lin aire. > with(linalg) : # ":" est moins bavard que " " > M := matrix(4,4, 0$16]) M := 2 6664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7775 > p:=charpoly(M,Z) # renvoie le d terminant (M-ZI) p := Z4 13
  • 15. 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 6664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7775 > 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 := " 0 0 0 0 0 0 # > convert(b,matrix) " 0 0 0 0 0 0 # > convert(b,list) # impossible Error, (in convert/list) can't convert array of dimension > 1 14
  • 16. > b:=matrix(3,3, i$i=1..9]) b := 2 64 1 2 3 4 5 6 7 8 9 3 75 > convert(b,listlist) # liste de listes 1 2 3] 4 5 6] 7 8 9]] > convert(tbl,list) x 7] > convert(tbl,array) # impossible Error, (in index/FillInitVals) unevaluated array index in assignment Il faut veiller ne pas perdre le contenu d'un tableau ou les autres donn es telles que les symboles importants! > c:=x # le contenu de c est perdu ! c := x 7 Manipulations sur les fonctions 7.1 Manipulations simples f est une fonction de x. > f:=x^2 + a*x +1 f := x2 + ax+ 1 > df:= diff(f,x) df := 2x+ a > dfa:=diff(f,a) dfa := x > dfg:=diff(f,g) # f ne d pend pas de > g dfg := 0 > df2:=diff(f,x,x) df2 := 2 > df2:=diff(f,x$2) # x$2 vaut x,x df2 := 2 > res:=diff(f,x,a)-diff(f,a,x) res := 0 > f4:=f**4 f4 := (x2 + ax+ 1)4 15
  • 17. > f4:=expand(f4) # pas de hi rarchisation des puissances f4 := 1 + 4a3x3 + 4x6 + 12x5a + 12x4a2 + x8 + 6x4 + 12x3 a+ 6a2 x2 + 4ax+ 6x6a2 + 4x5 a3 + a4 x4 + 4x7a + 4x2 > sort(f4,x) # puissances d croissantes par d faut x8 + 4ax7 + 4x6 + 6a2 x6 + 12ax5 + 4a3 x5 + 12a2x4 + a4 x4 + 6x4 + 4a3x3 + 12ax3 + 6a2x2 + 4x2 + 4ax+ 1 > sort(f4, x,a],plex) # tri en x et a, puiss. lexicographiques x8 + 4x7 a+ 6x6a2 + 4x6 + 4x5 a3 + 12x5a+ x4 a4 + 12x4 a2 + 6x4 + 4x3a3 + 12x3 a + 6x2a2 + 4x2 + 4xa+ 1 > collect(f4,x) # rassemble les coeff par puissances de x x8 + 4x7a + (6a2 + 4)x6 + (12a+ 4a3)x5 + (a4 + 12a2 + 6)x4 + (12a+ 4a3)x3 + (6a2 + 4)x2 + 4xa+ 1 > collect(f4,x,sort) x8 + 4x7a + (6a2 + 4)x6 + (4a3 + 12a)x5 + (a4 + 12a2 + 6)x4 + (4a3 + 12a)x3 + (6a2 + 4)x2 + 4xa+ 1 > collect(f4, x,a]) x8 + 4x7a + (6a2 + 4)x6 + (4a3 + 12a)x5 + (a4 + 12a2 + 6)x4 + (4a3 + 12a)x3 + (6a2 + 4)x2 + 4xa+ 1 7.2 Coe cients des polyn mes > coeff(f4,x,6) 6a2 + 4 > coeffs(f4,x) # liste de tous les coeffs 1 4a 6a2 + 4 a4 + 12a2 + 6 6a2 + 4 1 12a+ 4a3 12a+ 4a3 4a > 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
  • 18. 7.3 Int gration > int(f4,x) # polyn me r sultant de l'int gration 1 9 x9 + 1 2 x8 a+ 6 7 x7 a2 + 4 7 x7 + 2 3 x6 a3 + 2x6a+ 1 5 x5 a4 + 12 5 x5 a2 + 6 5 x5 + x4 a3 + 3x4 a + 2x3 a2 + 4 3 x3 + 2x2a + x > int(f4,x=1..y) 1 9 y9 ; 10 9 + 1 2 a(y8 ;1) + 1 7 (6a2 + 4)(y7 ; 1)+ 1 6 (4a3 + 12a)(y6 ; 1) + 1 5 (a4 + 12a2 + 6)(y5 ;1) + 1 4 (4a3 + 12a)(y4 ;1)+ 1 3 (6a2 + 4)(y3 ;1) + 2a(y2 ; 1)+ y > ig:=int(f4,x=1..y) ig := 1 9 y9 ; 10 9 + 1 2 a(y8 ; 1)+ 1 7 (6a2 + 4)(y7 ;1) + 1 6 (4a3 + 12a)(y6 ;1) + 1 5 (a4 + 12a2 + 6)(y5 ; 1)+ 1 4 (4a3 + 12a)(y4 ;1) + 1 3 (6a2 + 4)(y3 ; 1) + 2a(y2 ;1) + y > simplify(ig) # formule magique ;15 2 a+ y + 1 5 a4 y5 + 12 5 a2 y5 + a3 y4 + 3ay4 + 2a2y3 + 2ay2 ; 5 3 a3 ; 1 5 a4 + 2ay6 + 2 3 a3 y6 + 1 9 y9 + 6 5 y5 + 4 3 y3 + 4 7 y7 ; 184 35 a2 ; 1328 315 + 1 2 ay8 + 6 7 a2 y7 > expand(ig) # expand pr f r e > simplify pour les produits (id dans ce cas) ;15 2 a+ y + 1 5 a4 y5 + 12 5 a2 y5 + a3 y4 + 3ay4 + 2a2y3 + 2ay2 ; 5 3 a3 ; 1 5 a4 + 2ay6 + 2 3 a3 y6 + 1 9 y9 + 6 5 y5 + 4 3 y3 + 4 7 y7 ; 184 35 a2 ; 1328 315 + 1 2 ay8 + 6 7 a2 y7 > int(1/f4,x) 17
  • 19. 1 3 2x+ a (4 ;a2)(x2 + xa+ 1)3 + 10 3 0 BBBBBBBBBBB@ 1 2 2x+ a (4; a2)(x2 + xa+ 1)2 + 3 0 BB@ 2x+ a (4 ;a2)(x2 + xa+ 1) ; 4arctanh( 2x+ ap ;4 + a2) (4 ;a2) p ;4 + a2 1 CCA 4 ;a2 1 CCCCCCCCCCCA 4 ;a2 > int(sqrt(1/f4),x) # Maple r ussit souvent ! (;2 p ;4 + a2 x; p ;4 + a2 a+ 4arctanh( 2x+ ap ;4 + a2)x2 + 4arctanh( 2x+ ap ;4 + a2)xa + 4arctanh( 2x+ ap ;4 + a2))(x2 + xa+ 1)(1 . (x8 + 4x7 a+ 6x6 a2 + 4x6 + 4x5a3 + 12x5a+ x4 a4 + 12x4a2 + 6x4 + 4x3 a3 + 12x3a+ 6x2 a2 + 4x2 + 4xa+ 1)) (1=2) . (;4 + a2)(3=2) > int(1/f^(1/3),x) # Maple essaie quand m me ! Z 1 (x2 + xa+ 1)(1=3) dx Il existe une di rence entre valuation num rique et valuation formelle > int(1/f4,x=1..2) Z 2 1 1 . (x8 + 4x7a+ 6x6a2 + 4x6 + 4x5 a3 + 12x5a+ x4 a4 + 12x4 a2 + 6x4 + 4x3a3 + 12x3a+ 6x2 a2 + 4x2 + 4xa+ 1)dx > int(1/f4,x) 1 3 2x+ a (4 ;a2)(x2 + xa+ 1)3 + 10 3 0 BBBBBBBBBBB@ 1 2 2x+ a (4; a2)(x2 + xa+ 1)2 + 3 0 BB@ 2x+ a (4 ;a2)(x2 + xa+ 1) ; 4arctanh( 2x+ ap ;4 + a2) (4 ;a2) p ;4 + a2 1 CCA 4 ;a2 1 CCCCCCCCCCCA 4 ;a2 18
  • 20. > fa:=subs(a=3,f4) # vacue le pb du param tre a fa := x8 + 12x7 + 58x6 + 144x5 + 195x4 + 144x3 + 58x2 + 12x+ 1 > v:=int(1/fa,x=1..2) # r sultat avec partie r elle v := 10946 499125 + 8 125 p 5<(arctanh(7 5 p 5)); 8 125 p 5<(arctanh( p 5)) > evalc(v) # valuation/simplification d'un nombre complexe 10946 499125 + 2 125 p 5ln 0 BB@ (7 5 p 5 + 1)2 (7 5 p 5 ; 1)2 1 CCA ; 2 125 p 5ln(( p 5 + 1)2 ( p 5 ;1)2) > evalf(v) :00043687913 Seconde solution: Maple fait de l'int gration num rique et passe par un al- gorithme pour trouver une approximation de l'int gration. > evalf(Int(1/fa,x=1..2)) :0004368791081 L'int gration symbolique est exacte mais il arrive parfois qu'elle soit longue et qu'elle ne marche pas toujours. L'int gration num rique est approch e, en g n ral plus rapide, et marche tou- jours en principe. Sur l'exemple pr c dent, les deux r sultats sont di rents donc il y en a au moins un qui est faux. Si on demande Maple > evalf(int(...,x=1..2)), on s'attend un r sultat nu- m rique. Maple essaie de trouver une primitive: s'il choue alors il utilise la m thode num rique. Si on demande evalf(Int(...)) alors la m thode num rique est appliqu e directement. En conclusion, il faut donc trouver un bon compromis entre le temps et ce que l'on attend. 7.4 Factorisation et d composition de fractions > factor(f4) (x2 + xa+ 1)4 > h:=diff(1/f4,x) 19
  • 21. h := ;(8x7 + 28x6a+ 36x5a2 + 24x5 + 20x4a3 + 60x4a + 4x3 a4 + 48x3a2 + 24x3 + 12x2 a3 + 36x2a+ 12xa2 + 8x+ 4a) . (x8 + 4x7 a+ 6x6 a2 + 4x6 + 4x5a3 + 12x5 a+ x4 a4 + 12x4a2 + 6x4 + 4x3 a3 + 12x3a+ 6x2a2 + 4x2 + 4xa+ 1)2 > h:=factor(h) h := ;4 2x+ a (x2 + xa+ 1)5 > numer(h) ;8x; 4a > denom(h) (x2 + xa+ 1)5 Il n'y a pas de r gles quant l' criture: Maple limite l'expression ne pas toujours faire con ance Maple, ne pas s'attendre ce que le d nominateur soit toujours positif par exemple. 7.5 D veloppements > ty:=taylor(h,x=1,8) : # tester sur son poste... renvoie le d veloppement de Taylor de h au voisinage de 1 l'ordre 8. > simplify(ty) ;4 1 (2 + a)4 + 4 8 + 5a (2 + a)5 (x; 1); 60 1 + a (2+ a)5 (x; 1)2 + 20 6 + 16a+ 7a2 (2 + a)6 (x;1)3; 20 1+ 21a+ 14a2 (2+ a)6 (x;1)4 + 12 ;24 + 49a+ 112a2 + 42a3 (2 + a)7 (x;1)5; 28 ;19 ;4a+ 54a2 + 30a3 (2+ a)7 (x; 1)6 + 40 ;25 ; 64a+ 96a3 + 33a4 + 36a2 (2+ 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 2x;2 (x2 ;2x+ 1)5 > simplify(qw) ;8 1 (x;1)(x2 ;2x+ 1)4 > factor(qw) 20
  • 22. ;8 1 (x; 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) 1 3 (x;1);1 ; 1 9 + 1 27 (x; 1); 1 81 (x;1)2 + 1 243 (x; 1)3 ; 1 729 (x;1)4 + 1 2187 (x; 1)5+ O((x;1)6) Quelques compl ments sur les d veloppements de Taylor, limit , de Laurent (extensions de d riv es limites). > u2 := u*(exp(x-1)-1) u2 := e(x;1) ;1 (x; 1)(x+ 2) > subs(x=1,u2) Error, numeric exception: division by zero > limit(u2,x=1) 1 3 > limit(u2,x=1.0) :3333333333 > subs(x=1.0,u2) Float(1)e0: ;Float(1) 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 e et 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
  • 23. st := %1 %1 %1 %1 %1 %1 %1 %1 %1 := ;8 1 (2+ a)5 + 20 (2+ a)4 > map(factor,st) Error, (in factor) wrong number of arguments On observe que les coe cients ne sont pas d nis si a=0. Maple trouve les formules g n riques sans hypoth ses particuli res. 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) M := 2 64 x1 x12 x13 x2 x22 x23 x3 x32 x33 3 75 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 64 x12 + x12 x2 + x13 x3 x13 + x12 x22 + x13 x32 x14 + x12 x23 + x13 x33 x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33 x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36 3 75 > evalm(M &* M) # quivalent multiply(M,M) 2 64 x12 + x12 x2 + x13 x3 x13 + x12 x22 + x13 x32 x14 + x12 x23 + x13 x33 x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33 x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36 3 75 > 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
  • 24. 2 64 x12 + x12 x2 + x13 x3 x13 + x12 x22 + x13 x32 x14 + x12 x23 + x13 x33 x2 x1 + x23 + x23 x3 x12 x2 + x24 + x23 x32 x2 x13 + x25 + x23 x33 x3 x1 + x32 x2 + x34 x3 x12 + x32 x22 + x35 x13 x3 + x23 x32 + x36 3 75 > Minv:=evalm(M^(-1)) Minv := 2 6666664 ; x3 x2 %3x1 x1 x3 %2x2 x1 x2 %1x3 x3 + x2 %3x1 ;x3 + x1 %2x2 ;x1 + x2 %1x3 ; 1 %3x1 1 %2x2 1 %1x3 3 7777775 %1 := ;x3 x1 + x2 x1 + x32 ;x2 x3 %2 := ;x2 x3 + x3 x1 + x22 ;x2 x1 %3 := ;x2 x3 + x3 x1 + x2 x1 ; x12 > simplify(%) # % dernier r sultat %% avant dernier 2 6666664 ; x3 x2 %3x1 x1 x3 %2x2 x1 x2 %1x3 x3 + x2 %3x1 ;x3 + x1 %2x2 ;x1 + x2 %1x3 ; 1 %3x1 1 %2x2 1 %1x3 3 7777775 %1 := ;x3 x1 + x2 x1 + x32 ;x2 x3 %2 := ;x2 x3 + x3 x1 + x22 ;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 66666664 ; x2 x3 (;x2 + x1)(;x1 + x3)x1 x3 x1 (;x2 + x1)(x3 ; x2)x2 x2 x1 (;x1 + x3)(x3 ;x2)x3 x3 + x2 (;x2 + x1)(;x1 + x3)x1 ; x3 + x1 (;x2 + x1)(x3 ;x2)x2 ; x1 + x2 (;x1 + x3)(x3 ;x2)x3 ; 1 (;x2 + x1)(;x1 + x3)x1 1 (;x2 + x1)(x3 ; x2)x2 1 (;x1 + x3)(x3 ;x2)x3 3 77777775 > evalm(M &* Minv) : # tester > map(factor,evalm(M &* Minv)) 2 64 1 0 0 0 1 0 0 0 1 3 75 Les vecteurs sont des matrices! 23
  • 25. > b:=matrix(3,1, 1,2,0]) b := 2 64 1 2 0 3 75 > evalm(M &* b) 2 64 x1 + 2x12 x2 + 2x22 x3 + 2x32 3 75 > transpose(b) h 1 2 0 i > val:=evalm(transpose(b) &* M &* b) val := h x1 + 2x2 + 2x12 + 4x22 i > val 1,1] # scalaire x1 + 2x2 + 2x12 + 4x22 > val 1] Error, array defined with 2 indices, used with 1 indices 8.2 R solution de syst mes lin aires > xs:=linsolve(M,b) xs := 2 666666664 ;x3 (;2x3x12 + x22 x3 + 2x13 ; x23) x2 x1 %1 ;2x1 x32 + x2 x32 + 2x13 ;x23 x2 x1 %1 ;2x12 ;2x1 x3 ;x22 + x2 x3 x1 %1x2 3 777777775 %1 := ;x3 x12 + x2 x12 ; x2 x32 + x1 x32 + x22 x3 ;x22 x1 Ce sont les solutions de Mx=b en x: la m me chose que x=M(-1)b, ce qui n'est pas faux! > xs2:=evalm(M^(-1) &* b) 24
  • 26. xs2 := 2 66666664 x2 x3 %2x1 ; 2x1 x3 %1x2 ;x2 + x3 %2x1 + 2(x1 + x3) %1x2 1 %2x1 ; 2 %1x2 3 77777775 %1 := ;x1 x3 + x2 x1 ;x22 + x2 x3 %2 := x2 x3 ; x2 x1 ;x1 x3 + x12 > map(simplify,evalm(xs-xs2)) # pour voir que c'est identique 2 64 0 0 0 3 75 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 := z3 ;z2 x33 ;x22 z2 + zx22 x33 ; zx23 x32 ;x1 z2 + x1 zx33 + 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 > factor(cp) z3 ;z2 x33 ; x22 z2 + zx22 x33 ; zx23 x32 ;x1 z2 + x1 zx33 + 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)) M2 := 2 64 0 0 0 1 1 1 t t2 t3 3 75 > eigenvals(M2) # valeurs propres 0 1 2 + 1 2 t3 + 1 2 p 1 ;2t3 + t6 + 4t2 1 2 + 1 2 t3 ; 1 2 p 1 ;2t3 + t6 + 4t2 > eigenvects(M2) # vecteurs propres 1 2 + 1 2 t3 + 1 2 %1 1 f 0 1 ;1 2 + 1 2 t3 + 1 2 %1 g] 1 2 + 1 2 t3 ; 1 2 %1 1 f 0 1 ;1 2 + 1 2 t3 ; 1 2 %1 g] 0 1 f ; t t + 1 1 ; 1 t + 1 g] %1 := p 1 ; 2t3 + t6 + 4t2 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
  • 27. > 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) Error, (in inverse) singular matrix Renvoie une erreur car il n'y a pas de solution ce syst me: il n'existe pas de x tel que M2x=b, mais M2 est singuli re. > zoro:=matrix(3,1, 0,0,0]) zoro := 2 64 0 0 0 3 75 > linsolve(M2,zoro) 2 64 t11 t ; t11 (t + 1) t11 3 75 Ce r sultat peut para tre trange mais il est correct! Il existe une in nit 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 xi = 1 pour i dimensions du vecteur. > res:=linsolve(M2,zoro) res := 2 64 t11 t ; t11 (t+ 1) t11 3 75 > total:=sum(res i,1],i=1..3) total := ; t11 t t + 1 + t11 ; t11 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] total := ; t11 t t + 1 + 2 t11 ; 3 t11 t + 1 26
  • 28. > solu:=evalm(res/total) solu := 2 66666664 ; t11 t %1(t+ 1) t11 %1 ; t11 %1(t+ 1) 3 77777775 %1 := ; t11 t t + 1 + 2 t11 ; 3 t11 t + 1 avec x tel que x1 + 2x2 + 3x3 = 1 soit x 1 tel que x1 s + 2x2 s + 3x3 s = 1. > map(simplify,solu) 2 66666664 ; t t ; 1 t+ 1 t; 1 ; 1 t ; 1 3 77777775 > map(factor,solu) 2 66666664 ; t t ; 1 t+ 1 t; 1 ; 1 t ; 1 3 77777775 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
  • 29. 5 2 ; 1 2 q 5 + 4 p 2 5 2 + 1 2 q 5 + 4 p 2 5 2 ; 1 2 q 5 ;4 p 2 5 2 + 1 2 q 5 ;4 p 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 := Z5 ;15 Z4 + 85 Z3 ;225 Z2 + 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) :7449115882 2:349739682;:9370699874I 2:349739682+ :9370699874I 4:777804524;:4980352577I 4:777804524+ :4980352577I Il renvoie des valeurs complexes mais num riques que l'ont peut v ri er gra- phiquement. > plot(p+10,z=0..2) # cf. Figure 1 > fsolve(p=sin(z)) 1:038994656 On trouve une solution mais la question est de savoir s'il existe une autre racine, soit par la r alisation de graphes, soit en s'aidant de l'analyse math - matique, soit en trouvant (ou excluant) des intervalles contenant les racines. Soit une fonction d'utilit que l'on cherche maximiser. > ut:=-(x+2*y+2)^4-(3*x+y-2)^2 ut := ;(x+ 2y + 2)4 ;(3x+ y ;2)2 > maximize(ut,x,y) 28
  • 30. Figure 1: Plot z –100 –80 –60 –40 –20 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 z 0 > maximize(ut,location) 0 f fy = ;8 5 x = 6 5g 0]g Maple crit les quations du 1er ordre et les r soud. Faisons le tape par tape. > gr:=grad(ut, x,y]) # calcul du gradient gr := ;4(x+ 2y + 2)3 ;18x;6y + 12 ;8(x+ 2y + 2)3 ;6x;2y + 4 > sys:={gr 1]=0,gr 2]=0} sys := f;8(x+ 2y + 2)3 ;6x; 2y + 4 = 0 ;4(x+ 2y + 2)3 ; 18x;6y + 12 = 0g Il s'agit d'un syst me d' quations de deux l ments: on prend le 1er l ment de gradient=0 et le second de gradient=0. > so:=solve(sys) 29
  • 31. so := fy = ;8 5 x = 6 5 g > so 1] y = ;8 5 > subs(so 1],ut) ;(x; 6 5)4 ;(3x; 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 := ;8 5 Pour illustrer le propos de la con ance limit e accorder Maple quant aux r sultats, il su t de faire l'exercice avec la fonction d'utilit suivante: > ut:=-(x^2+2*y+2)^4-(3*x+y-2)^2 ut := ;(x2 + 2y + 2)4 ;(3x+ 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) = ky(x)(1;y(x)) > dsolve(ode1,{y(x)}) y(x) = 1 1+ e(;k x) C1 Cette solution est g n rique, C1 tant la constante d'int gration. Pour avoir une solution particuli re, il faut mentionner que y(0) a une certaine valeur et extraire la constante de l' quation. Le premier membre de la fonction dsolve repr sente le syst me d' quations r soudre et le second concerne les fonctions recherch es. > dsolve({ode1,y(0)=y0},{y(x)}) y(x) = 1 1 ; e(;k x) (;1 + C1) C1 30
  • 32. > 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) = y(0)+ ky(0)(1; y(0))x+ (;3 2 k2 y(0)2 + k2 y(0)3 + 1 2 k2 y(0))x2 + ( 1 3 ky(0)(3 2 k2 y(0)2 ; k2 y(0)3 ; 1 2 k2 y(0)); 1 3 k3 y(0)2 (1; y(0))2 + 1 3 k(;3 2 k2 y(0)2 + k2 y(0)3 + 1 2 k2 y(0))(1; y(0)))x3+ (25 12 k4 y(0)3 ; 5 2 k4 y(0)4 ; 5 8 k4 y(0)2 + k4 y(0)5 + 1 24 k4 y(0))x4+ (3 2 k5 y(0)3 ; 13 4 k5 y(0)4 ; 31 120 k5 y(0)2 + 3k5y(0)5 + 1 120 k5 y(0);k5 y(0)6)x5+ O(x6) > Order:=10 # l'odre 10 ! avec majuscule Order := 10 > dsolve(ode1,{y(x)},type=series) :# tester > dsolve({ode1,y(0)=1/2},{y(x)},type=series) y(x) = 1 2 + 1 4 kx; 1 48 k3 x3 + 1 480 k5 x5 ; 17 80640 k7 x7 + 31 1451520 k9 x9 + O(x10) > ode2:=diff(y(x),x,x)-k*y(x)*(1-y(x)): > dsolve({ode2,y(0)=1/2},{y(x)},type=series) y(x) = 1 2 + D(y)(0)x+ 1 8 kx2 ; 1 12 kD(y)(0)2x4 ; 1 80 k2 D(y)(0)x5 ; 1 1920 k3 x6+ 1 252 k2 D(y)(0)3x7 + 11 13440 k3 D(y)(0)2x8 + 1 17280 k4 D(y)(0)x9 + O(x10) > D(y)(0) # d riv e de y valu e en 0 D(y)(0) R cup ration de la partie polynomiale du d veloppement limit : > solu:=dsolve({ode2,y(0)=1/2,D(y)(0)=1},{y(x)},type=series) solu := y(x) = 1 2 + x+ 1 8 kx2 ; 1 12 kx4 ; 1 80 k2 x5 ; 1 1920 k3 x6 + 1 252 k2 x7 + 11 13440 k3 x8+ 1 17280 k4 x9 + O(x10) > toto:=subs(solu,y(x)) 31
  • 33. toto := 1 2 + x+ 1 8 kx2 ; 1 12 kx4 ; 1 80 k2 x5 ; 1 1920 k3 x6 + 1 252 k2 x7 + 11 13440 k3 x8 + 1 17280 k4 x9 + O(x10) > toto:=convert(toto,polynom) toto := 1 2 + x+ 1 8 kx2 ; 1 12 kx4 ; 1 80 k2 x5 ; 1 1920 k3 x6 + 1 252 k2 x7 + 11 13440 k3 x8 + 1 17280 k4 x9 > subs(x=4,toto) 9 2 ; 58 3 k + 16448 315 k2 + 5408 105 k3 + 2048 135 k4 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) = :1y(x)(1;y(x)) 32
  • 34. > 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) curvs := proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc proc(rkf45 x) ::: end proc > odeplot n'accepte pas une liste de courbes, il faut extraire la 1i re : > odeplot(curvs 1],x=0..100) # cf. Figure 2 Figure 2: Plot 1 seule courbe 0.2 0.4 0.6 0.8 1 y 0 20 40 60 80 100 x 33
  • 35. > listgr:= seq(odeplot(curvs i],x=0..100),i=1..9)]: > display (listgr) # cf. Figure 3 Figure 3: Plot plusieurs courbes 0.2 0.4 0.6 0.8 1 y 0 20 40 60 80 100 x 8.7 Syst me d' quations M thode formelle: > t:='t' : a:='a' : b:='b' : c:='c' : > eq1:=diff(x(t),t)=a*x(t)+b*y(t) eq1 := @ @t x(t) = ax(t) + by(t) > eq2:=diff(y(t),t)=c*x(t)+d*y(t) eq2 := @ @t y(t) = cx(t)+ dy(t) > dsolve({eq1,eq2},{x(t),y(t)}) 34
  • 36. fy(t) = ;1 2 C1 %3a; C1 %3d; C1 %3%1 + C2 %2a; C2 %2d+ C2 %2%1 b x(t) = C1 %3 + C2 %2g %1 := p a2 ;2ad+ d2 + 4cb %2 := e(1=2(a+d;%1)t) %3 := e((1=2a+1=2d+1=2%1)t) > dsolve({eq1,eq2,x(0)=1,y(0)=0},{x(t),y(t)}) 8 < :y(t) = ;1 2 0 @1 2 (a; d+ p %1)%3ap %1 ; 1 2 (a; d+ p %1)%3dp %1 ; 1 2 (a; d+ p %1)%3 ; 1 2 (a;d; p %1)%2ap %1 + 1 2 (a;d; p %1)%2d p %1 ; 1 2 (a;d; p %1)%2 1 A . b x(t) = 1 2 (a;d+ p %1)%3p %1 ; 1 2 (a; d; p %1)%2p %1 9 = %1 := a2 ;2ad+ d2 + 4cb %2 := e(1=2(a+d; p %1)t) %3 := e((1=2a+1=2d+1=2p %1)t) M thode s rie: > Order:=4 dsolve({eq1,eq2},{x(t),y(t)}, type=series) Order := 4 fx(t) = x(0)+ (ax(0)+ by(0))t+ (1 2 a2 x(0)+ 1 2 aby(0)+ 1 2 bcx(0)+ 1 2 bdy(0))t2 + ( 1 6 a3 x(0)+ 1 6 a2 by(0)+ 1 3 abcx(0)+ 1 6 abdy(0)+ 1 6 cb2y(0)+ 1 6 bdcx(0) + 1 6 bd2y(0))t3 + O(t4) y(t) = y(0) + (cx(0)+ dy(0))t+ (1 2 cax(0)+ 1 2 cby(0)+ 1 2 dcx(0)+ 1 2 d2 y(0))t2 + (1 6 ca2x(0) + 1 6 caby(0) + 1 6 bc2x(0)+ 1 3 cbdy(0)+ 1 6 dcax(0)+ 1 6 d2 cx(0)+ 1 6 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 + 2y(t) > eq4:=diff(y(t),t)=x(t)*y(t) eq4 := @ @t y(t) = x(t)y(t) 35
  • 37. > dsolve({eq3,eq4},{x(t),y(t)}) fx(t) = ;2 t+ C2 ; C1 + t2 + 2t C2 + C22g fy(t) = 1 2 ( @ @t x(t)); 1 2 x(t)2g] > 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 4 ( x(t) = RootOf ; Z Z RootOf(;e Z a2 ;4 C1 + 4Ei(1 ; Z)) 4 + RootOf(;e Z a2 ;4 C1 + 4Ei(1 ; Z)) a2 d a + t + C2 !) fy(t) = 1 2 ( @ @t x(t)) ; 1 2 x(t)2g 3 5 En rajoutant des conditions initiales et la liste des proc dures, on obtient: > ff:=dsolve({eq3,eq5,x(0)=1,y(0)=1},{x(t),y(t)}, > type=numeric,output=listprocedure) := t = (proc(t) ::: end proc) x(t) = (proc(t) ::: end proc ) y(t) = (proc(t) ::: end proc)] > fx:=subs(ff,x(t)) fx := proc(t) ::: end proc > fy:=subs(ff,y(t)) fy := proc(t) ::: end proc > fx(0.0) fy(0.0) > fx(1.0) fy(1.0) 1: 1: Error, (in fx) cannot evaluate the solution further right of .43053336, probably a singularity 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
  • 38. Figure 4: Plot t 2 4 6 8 10 12 x 0 0.1 0.2 0.3 0.4 t f := ;(x+ 2y + 1)4 ; (x+ 3y ; 3)2 > plot3d(f,x=-2..2,y=-2..2,axes=boxed) # cf. Figure 5 Dans une fen tre graphique le menu contextuel du bouton droit de la sou- ris est utilisable. Par exemple, une option des styles patches et contours fait appara tre les lignes de niveaux. > ?plot options] : # acc s aux options La commande suivante permet de dessiner le gradient de la fonction. > animate propose de superposer les graphiques sous la forme d'une animation. > gradplot(f,x=-2..2,y=-2..2,grid= 10,10],arrows=SLIM) gradplot(;(x+ 2y + 1)4 ;(x+ 3y ;3)2 x = ;2::2 y = ;2::2 grid = 10 10] arrows = SLIM) > implicitplot(f=-10,x=-2..2,y=-2..2,grid= 50,50]) 37
  • 39. Figure 5: Plot 3d –2 –1 0 1 2 x –2 –1 0 1 2 y –2000 –1500 –1000 –500 0 implicitplot(;(x+ 2y + 1)4 ;(x+ 3y ;3)2 = ;10 x = ;2::2 y = ;2::2 grid = 50 50]) Par d faut la pr cision de lissage est donn e par le param tre grid= 25,25]. Il faut veiller choisir les bonnes dimensions du graphique. > f:=x*x+cos(x)-x*y^3 f := x2 + cos(x);xy3 > plot(f,x=-1..1,y=-10..10) # utiliser plot3d Plotting error, empty plot 38
  • 40. 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
  • 41. 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) table( 1 = v0 + 1 2 = v0 + 5 3 = v0 + 14 4 = v0 + 30 5 = v0 + 55 6 = v0 + 91 7 = v0 + 140 8 = v0 + 204 9 = v0 + 285 10 = v0 + 385 ]) > sum(j*j,j=1..N) 1 3 (N + 1)3 ; 1 2 (N + 1)2 + 1 6 N + 1 6 > factor(sum(j*j,j=1..N)) 1 6 N (N + 1)(2N + 1) La boucle descendante pr sentera un incr ment n gatif. Une boucle s'incr mente tant que c'est inf rieur la borne (ou sup rieur si c'est une boucle descen- dante). > for i from 1 to 9 by 2 > do v i]:=v i-1]+i^3 > od v1 := v0 + 1 v3 := v0 + 32 v5 := v0 + 155 v7 := v0 + 434 v9 := v0 + 933 > for i in 4, 7, 12] do toto i]:=i*i od toto4 := 16 toto7 := 49 toto12 := 144 > a:='a' : b:='b' : # r initialisation > l:= a,b,c] # quelle que soit la liste, ensemble, etc. > for i in l do l2:= op(l2),i*i] od # initialisation d'une liste vide l := a b c] 40
  • 42. 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
  • 43. > # 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)localx2 x2 := x2 RETURN(x2)end proc > carre(3) 9 > carre(3,4) # prend le 1er argument 9 > carre(truc) truc2 > racine:=proc(x) > if (x>=0) then > RETURN(sqrt(x)) > else > RETURN(Impossible !) > fi > end racine := proc(x) if0 xthenRETURN(sqrt(x))elseRETURN(Impossible!)end if end proc > racine(4) 2 > racine(-3) Impossible! > racine(sophie) # ne sait pas valuer sophie Error, (in racine) cannot evaluate boolean: -sophie <= 0 > sqrt(-3) I p 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
  • 44. racine := proc(x:: numeric) if0 xthenRETURN(sqrt(x))elseRETURN( Impossible! )end if end proc > racine(ab) Error, invalid input: racine expects its 1st argument, x, to be of type numeric, but received ab > racine(carre(4,6)) # prend le 1er argument 4 11 Fichiers, entr es/sorties, sauvegardes 11.1 Sauvegarde des instructions La sauvegarde d'une session correspond la sauvegarde des instructions. La feuille de calcul Maple est sauvegard e avec les instructions et leurs r sultats. La fonction save permet de sauvegarder des instructions telles on les taperait en tant qu'instructions Maple. Le chier est ditable dans un diteur (Notepad, Emacs) et chargeable dans Maple par le menu File> Open. > M:=matrix(2,2, 0$4]) : > save M,"C:toto.dat" > read "c:toto.dat" # rapelle et ex cute les instructions M := " 0 0 0 0 # toto.dat contient les informations suivantes: M: = array(1.. 2, 1 .. 2, (1, 1)=0,(1, 2)=0,(2, 1)=0,(2, 2)=0]) 11.2 Utilisation des proc dures dans un chier externe Le chier ascii peut contenir la proc dure maxvp qui recherche le maximum des valeurs propres d'une matrice. 43
  • 45. 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 Un chier de commandes peut contenir de nombreuses instructions: 44
  • 46. # 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
  • 47. 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 formatsreconnus (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 modi cation 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
  • 48. Index : , 4 : =, 4 , 4 >, 3 ? , 3 #, 4 $, 12 &*, 22 aide, 3 anames, 9 array, 11 boucle, 39, 41 charpoly, 13, 25 coe , 16 coe s, 16 coldim, 27 collect, 16 convert, 14 debug, 44 degree, 16 denom, 20 det, 22 diag, 26 di , 15 Digits, 6 display, 34 dsolve, 30 dition, 46 eigenvals, 25 eigenvects, 25 ensemble, 9 entries, 11 evalc, 19 evalf, 6 evalm, 22 exp, 21 expand, 16 exporter, 45 factor, 19 chiers, 43 for, 39 formats, 46 fsolve, 28 gif, 45 html, 45 if, 39 implicitplot, 37 indices, 11 int, 17 intersect, 9 limit, 21 linalg, 13, 22 linsolve, 24 liste, 9, 41 listlist, 15 listprocedure, 36 map, 23 maple2e, 45 matrice, 13 maximize, 28 multiply, 22 nops, 41 numer, 20 odeplot, 36 op, 10, 11 op rateurs arithm tiques, 5 op rateurs logiques, 5 order, 35 47
  • 49. 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
  • 50. 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