Manuel maxima
Daniel ALIBERT
Petit manuel pour lemploi du logiciel maxima : partie 1
(sera complt au fur et mesure de l'avancement du cours)
Le logiciel maxima est un logiciel libre quon peut tlcharger ladresse suivante
http://maxima.sourceforge.net/download.html
Il est dun usage simple, dispose dune aide trs utile et peut tre utilis pour faire des mathmatiques, en
particulier des calculs et tracs relatifs de nombreuses questions abordes dans les premires annes dtudes
universitaires.
Bien entendu, son usage va bien au-del de ce qui est prsent ici, le lecteur pourra tendre son utilisation
selon ses besoins, entre autres laide de documents que lon trouve en ligne.
Ci-dessous un petit catalogue dinstructions ou de mini-programmes, pour dbuter, toujours illustrs dun
exemple que le lecteur pourra copier dans une feuille de calcul maxima.
La meilleure faon dapprendre est de faire des essais !
Plan :
Gnralits.
Programmer.
Tracer.
Calculer avec des matrices, rsoudre des systmes linaires.
Calculer avec des polynmes.
Etudier des quations diffrentielles.
Driver.
Utiliser les dveloppements limits.
Intgrer.
Chercher la limite d'une fonction.
Etudier une fonction.
( suivre dans les prochaines annexes)
2
Manuel maxima
Gnralits :
Lorsque vous avez crit des instructions maxima , terminez en tapant shift-entre pour les excuter, ou
dans le menu cell slectionnez rvaluer la cellule ou rvaluer toutes les cellules.
Le rsultat saffiche sous la cellule.
Les instructions graphiques provoquent louverture dune nouvelle fentre, pour afficher un trac par exemple.
Pour voir lexcution des cellules suivantes, il faut fermer cette nouvelle fentre.
Pour affecter une valeur une variable, on crit V : valeur, par exemple linstruction ci-dessous affecte C la
matrice qui suit :
C: matrix([0,1,0],[1,-1,-1],[-1,1,1])
Une liste est une suite de valeurs, spares par des virgules, et encadre par des crochets, par exemple :
L:[0,2,4] $ L[1];L[3];
Signifie que L est la liste forme de 0,2, 4. L[1] est le premier terme, soit 0 ici le signe $ aprs L[0,2,4]
empche laffichage, par contre les ; provoquent laffichage.
Pour dfinir une nouvelle fonction f, de la variable x par exemple, on crit
f(x) : = expression en x :
Comparer avec :
Cette instruction affecte la variable p la valeur dun polynme (formel) qui est une expression, que maxima
ne confond pas avec une fonction polynme.
3
Manuel maxima
Programmer
Lorsqu'on excute plusieurs fois une srie d'instructions, on peut tre gn car certaines variables ont reu une
valeur. Pour vider la mmoire, taper simplement kill(all) .
Si vous trouvez cela trop radical, vous pouvez vider une variable, a par exemple, par kill(a).
Pour travailler sur une expression, vous disposez de pickapart(expression, n), n est un entier adapter en
fonction de vos besoins.
Observer les instructions ci-dessous : il s'agit d'un banal programme de dichotomie. En (%i1) on affecte
diffrentes variables, en (%i5) on crit une "boucle for" ; comme on le voit, l'indice i a une valeur initiale (i:1)
mais pas de valeur finale. Ce n'est pas indispensable dans maxima. Mais il faut prvoir une condition d'arrt
suivie de "return".
Ce que l'on demande de faire chaque itration est contenu dans la parenthse qui suit do, chaque action
spare par une virgule ; vous observerez aussi une instruction "if then else "
4
Manuel maxima
On peut aussi prciser le nombre d'itrations, avec "thru", le pas "step"
Par exemple ci-dessous (mthode de point fixe prs d'un point rpulsif, la condition contenue dans le if n'est
jamais atteinte, la boucle s'arrte au bout de 5 itrations :
5
Manuel maxima
p(x) et pprime(x) ont t dfinis auparavant.
6
Manuel maxima
Tracer
plot, draw sont les principales commandes, avec de multiples options et variantes : plot2d, draw2d ..
Exemple : la suite dinstructions ci-dessous trace le graphe de sin(x) entre 0 et /2, et remplit la zone entre la
courbe et laxe des abscisses en bleu, ainsi que plusieurs rectangles emplis de rouge.
Noter %pi pour dsigner le nombre .
load(draw)$
draw2d(fill_color = blue,
filled_func = true,
explicit(sin(x^2),x,0,%pi/2),fill_color = red,
rectangle([0,0],[%pi/8,sin(0)]),
rectangle([%pi/8,0],[%pi/4,sin(%pi/8)]),
rectangle([%pi/4,0],[3*%pi/8,sin(%pi/4)]),
rectangle([3*%pi/8,0],[%pi/2,sin(3*%pi/8)]) )$
Maxima trace le champ de vecteur associ une quation diffrentielle : ci-dessous lquation y = -2y. Sur
la reprsentation du champ de vecteur, on peut, en cliquant sur un point, faire apparatre le trac de la solution
passant par ce point.
plotdf comprend de nombreuses options.
7
Manuel maxima
Avec cette instruction, par exemple, maxima va tracer dans le plan (v,z) la solution de z=v, v=-kz/m, passant
par (6,0) en prenant comme paramtres de dpart m=2 et k=2. Mais la reprsentation comprend un glisseur
(sliders) permettant de faire varier m de 1 5.
plot2d a comme argument une ou plusieurs expressions (rassembles dans une liste), et au moins une liste
prcisant entre quelles valeurs doit varier la variable, et trace la ou les fonctions dfinies dans la premire liste,
ici, sur le mme dessin, y = x^3, y = 12(x-2)+8, y = 10(x-2)+8 Ces graphes sont tracs avec des couleurs
diffrentes, prcises sur le dessin. Nombreuses options (voir laide de maxima).
Tracer des segments de droite : ici f(x) est une fonction qui a t dfinie dans une instruction prcdente, on
trace une partie de son graphe, et quelques segments verticaux (cf. plus loin l'exemple de programme de
dichotomie)
En cliquant sur les petits ciseaux situs en haut du dessin on peut faire apparatre certaines des parties
seulement.
8
Manuel maxima
Pour faire tracer le dessin immdiatement aprs la cellule d'instruction (au lieu d'une nouvelle fentre), utilisez
wxplo2d la place de plot2d. Mais le graphe trac par plot2d vous offre plusieurs possibilits d'interaction,
ce que ne fait pas wxplot2d. A vous de voir.
9
Manuel maxima
Matrices
Une matrice est dfinie comme un ensemble de listes qui reprsentent ses lignes.
On peut calculer linverse dune matrice, le produit de deux ou plusieurs matrices :
charpoly(C,x) calcule le polynme caractristique (det(C-xI)) avec lindtermine x. Pour le dvelopper,
utiliser expand ; pour le factoriser, factor ;
eigenvalues(C) renvoie une liste de deux listes, la premire ([-1,1,0] ci-dessus ) est la liste des valeurs propres,
la seconde ([1,1,1] ci-dessus) est la liste des multiplicits de chaque valeur propre de la premire liste.
10
Manuel maxima
eigenvectors(C) renvoie une liste de deux listes : la premire liste est le rsultat de eigenvalues(C), la seconde
liste est la liste des vecteurs propres correspondant chaque valeur propre, lorsquil y en a plusieurs
(indpendants !), cest la liste de ces vecteurs propres qui apparat.
Ici, chaque vecteur propre est unique, cest pourquoi il figure comme une liste un lment, ce qui explique
les doubles crochets.
determinant(C) calcule le dterminant (attention ! pas daccent dans les instructions de maxima).
Diagonalisation :
Noter comment on peut rcuprer les vecteurs propres, et les mettre en colonne dans la matrice de passage
(avec transpose). Laffichage des noms aussi,"P"=P par exemple.
Systmes dquations linaires :
Maxima peut les rsoudre avec linsolve
11
Manuel maxima
Dans le premier systme, il y a une infinit de solutions dpendant dun paramtre quelconque, not ici %r1.
Dans le second systme, maxima donne la solution en fonction de b, qui figure dans les quations. Maxima
est un logiciel de calcul formel, il peut traiter des expressions littrales.
12
Manuel maxima
Polynmes
Dvelopper, factoriser, faire la division euclidienne, calculer le PGCD
divide a pour arguments dabord deux polynmes, puis le nom dune variable. Le rsultat est une liste dont le
premier terme est le quotient de la division euclidienne de p par q et le second terme est le reste.
Dans linstruction ci-dessus, on a affect le rsultat de divide une liste de deux listes, d et r (en vue de les
rutiliser par la suite).
gcd(p,q) calcule le pgcd unitaire des deux polynmes p et q.
D'autres calculs sur les polynmes existent, comme ezgcd(p,q) qui renvoie une liste de trois polynmes : leur
pgcd unitaire, et les quotients de p et q par ce pgcd. Voir ci-dessous un programme qui reproduit l'algorithme
de Yun, d'ailleurs intgr dans maxima sous le nom de sqfr(p) :
Pour chercher des racines :
Ici, %i dsigne le nombre complexe i, racine carre de -1.
Il y a diffrentes options pour l'affichage des rsultats.
13
Manuel maxima
Polynmes d'interpolation de Lagrange :
Noter load(interpol) qui charge une bibliothque spciale pour ce domaine, p est une liste de points du plan,
ratsimp(%) simplifie (?) le rsultat prcdent qui est le polynme d'interpolation dfini par les points p (4
points, d'o un polynme de degr 3).
14
Manuel maxima
Equations diffrentielles
Une quation diffrentielle du second ordre et sa rsolution; remarquer les quotes (') avant diff, et, dans ode2,
le % qui dsigne le dernier rsultat valu (ici l'quation). Pour appliquer des conditions initiales, on utilise
ic2.
Cas d'une quation du premier ordre. Remarquer l'utilisation de ode2 dans ce cas galement. Pour trouver la
solution particulire correspondant des conditions initiales, on utilise ic1. Pour utiliser la solution comme
une fonction, et non une expression, remarquer l'utilisation de rhs pour slectionner le membre de droite, et
de subst ; une variante utilise ev
15
Manuel maxima
Drivation,
diff(f(x),x,n) calcule la drive n-ime de f(x); si n=1, il peut tre omis.
Mais attention, les choses ne sont pas toujours ce qu'elles semblent : observez les instructions ci-dessous
f(x) est sin(x), sa drive est cos(x). Malgr les apparences, h(x) = cos(x) mais ce n'est pas la fonction x
cos(x), car pour calculer h(1), maxima remplace x par 1 dans diff(f(x),x), ce qui fait diff(f(1),1), d'o l'erreur.
Si on essaie de contourner cette difficult par k(x), le problme reste le mme. Il faut procder comme dans
g(t) car dans subst(t,x,h(x)), la substitution se fait dans le rsultat h(x).
Dveloppements limits :
Par exemple, celui de cos(x), en 0, l'ordre 6
Pour calculer la valeur d'un dveloppement limit, et plus gnralement en faire une fonction :
Intgration :
Calculer une intgrale dfinie
16
Manuel maxima
Ou une primitive :
Mais maxima n'a pas toujours de rponse : en effet, certaines primitives ne peuvent pas s'crire l'aide des
fonctions usuelles ;
Maxima peut faire des calculs assez compliqus :
Pour utiliser une primitive comme fonction, on rencontre la mme difficult que pour les drives, avec la
mme solution :
17
Manuel maxima
Limite de fonction
Etude de fonctions, variations, maximum, minimum
Pour tudier une fonction, on calcule traditionnellement la drive, en cherchant les points o elle s'annule et
le signe entre deux points d'annulation.
On utilise diff et solve pour ces deux problmes. Noter que s est une liste (ici un seul terme), et la manire
d'affecter l'unique valeur de cette liste une variable a. Pour le signe de la drive en dehors de a, on calcule
la valeur de fprime en a-1 et a+1 (par exemple). Ici on voit que f admet un minimum. Dans (%i40) noter le
calcul de la valeur d'une fonction en diffrents lments d'une liste. Noter l'usage de numer pour forcer une
valuation numrique.
18
Manuel maxima