Résumé |
Ce document présente en quelques pages le logiciel de calcul formel Maxima. Son but est de donner quelques fonctions pour pouvoir utiliser Maxima rapidement. Par conséquent, il est incomplet et n'aborde pas l'aspect programmation.
Le programme Maxima est un logiciel permettant de :
C'est un logiciel libre sous licence GPL que l'on peut charger à l'adresse suivante :
http://www.ma.utexas.edu/maxima.html
Si vous utilisez Linux Mandrake ou RedHat, alors je vous conseille d'installer le package rmp qu'on peut trouver à l'adresse suivante :
On peut exécuter Maxima d'au moins 3 manières différentes :
Voici un aperçu de xmaxima :
Dans ce document, écrit avec TeXmacs, nous allons utiliser des sessions maxima :
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) quit();
The end
Pour quitter la session, cliquer sur l'icône puis cliquer sous le texte de la session Maxima à l'endroit du nouveau paragraphe.
La fonction describe("") permet d'obtenir une description de function. Cette fonction pose quelques problèmes si on l'utilise via TeXmacs.
La fonction example() donne des exemples d'utilisation d'une fonction :
Exemple 1
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) example(log);
Not Found. You can look at:
(D1) (C2) Quit();
The end
Exemple 2
Voici un simple calcul :
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) 1+1;
(D1) 2
(C2) quit();
The end
On remarque que les lignes sont numérotées (C1) et (D1) .... :
Cette notation permet de rappeler les commandes, il faut utiliser deux ' précédant les numéros d'une commande, par exemple ''C1.
Pour qu'une instruction soit exécutée, elle doit se terminer par ; ou $, si elle se termine par $ alors le résultat n'est pas affiché. Pour quitter Maxima il faut taper l'instruction QUIT(); Les fonctions ne sont pas sensibles à la case, mais les variables le sont.
Exemple 3
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) x :1;
(D1) 1
(C2) X :0$
(C3) x;
(D3) 1
(C4) Quit()$
The end
Remarquer que l'affectation se fait par le symbole ":".
Voici la façon de faire les principales opérations :
Opération |
Symbole Maxima |
Addition |
+ |
Soustraction |
- |
Multiplication |
* |
Division |
/ |
Puissance |
ou ** |
Multiplication Matriciel |
. |
Racine carrée |
sqrt() |
Exemple 4
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) 1/2 + 1/3;
(D1)
(C2) 132 ^ (1/2);
(D2) 2
(C3) Quit();
The end
Remarquer que Maxima fait des calculs exacts et qu'il simplifie les expressions. Pour obtenir un calcul numérique, il faut rajouter ,numer La précision des calculs est donnée par la variable fpprec Pour que les calculs se fassent avec une grande précision, il faut utiliser la fonction bfloat().
Exemple 5
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) fpprec ;
(D1) 16
(C2) bfloat(1/234);
4.273504273504274B-3
(C3) fpprec :100;
(D3) 100
(C4) ''C2;
4.2735042735042735042735042735042735042735042735042735042735042735042
73504273504273504273504273504274B-3
(C5) Quit();
The end
Le programme Maxima permet de développer, de factoriser des polynômes à coefficients entiers à l'aide des fonctions expand() et factor(). Les fractions rationnelles peuvent être réduites au même dénominateur par la fonction ratsimp().
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) expand((x+1)^2+(3*x+5)^3);
(D1) 27x3 + 136x2 + 227x + 126
(C2) factor(%);
(D2)
(C3) f : ((x+3)^2+5)/(x-5) + x^3/(x^2+1);
(D1) +
(C2) ratsimp(%);
(D2)
Remarquer que les calculs sont faits en réel. La fonction factor() peut avoir un second argument qui est un polynôme irréductible. Ceci permet d'étendre l'anneau sur lequel on fait la factorisation.
Exemple 6
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) factor(X^4-1,I^2+1);
(D1)
(C2) Quit();
The end
On peut calculer le quotient de deux polynômes avec la fonction quotient(p1,p2,var);
Exemple 7
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) QUOTIENT(X^3+3*X^2+3*X+1,X+1,X);
(D1) X2 + 2X + 1
(C2) Quit();
The end
La fonction ALGSYS([p1,p2,...],[var1,var2,...]) permet de résoudre le système de p1,p2,... polynômes avec var1,var2,... variables.
Exemple 8
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) P1 : X^2+Y^2-1$
(C2) P2 : X+Y$
(C3) ALGSYS([P1,P2],[X,Y]);
(D3)
(C4)
La fonction ALLROOTS(poly) donne les racines d'un polynôme.
Exemple 9
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) ALLROOTS(X^4-1);
(D1)
(C2)
Remarque 1 Les coefficients ne sont pas des entiers mais des réels. Le calcul se fait donc de manière approché.
La fonction solve(expr,var) permet de résoudre des équations algébriques.
Exemple 10
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) SOLVE(COS(X)^3-1,X);
SOLVE is using arc-trig functions to get a solution.
Some solutions will be lost.
(D1)
(C2) SOLVE(X^4-1);
(D2)
(C3) SOLVE(COS(X)*SIN(X)-1,X);
(D3)
(C4) TRIGREDUCE(COS(X)*SIN(X));
(D4)
(C5) SOLVE(%-1,X);
SOLVE is using arc-trig functions to get a solution.
Some solutions will be lost.
(D5)
(C6)
Remarque 2 Le résultat (D2) montre que nous obtenons des solutions exactes, contrairement au cas précédent. Le dernier exemple montre que selon la forme de l'équation nous obtenons des solutions différentes.
La fonction solve() peut être contrôlée pas certaines variables. Par exemple mettre SOLVERADCAN à TRUE permet d'obtenir de meilleurs résultats avec les fonctions logarithmes et exponentielles.
Exemple 11
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) SOLVE(5^X-125,X);
(D1)
(C2) SOLVERADCAN : TRUE $
(C3) ''C1;
(D3)
(C4)
Remarque 3 Vous trouverez d'autres variables pour contrôler solve() dans le manuel de Maxima.
La fonction LINSOLVE([L1,L2,...],[var1,var2,...]) permet de résoudre des systèmes linéaires.
Exemple 12
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) L1 : X+Z=Y$
(C2) L2 : 2*A*X-Y=2*A^2$
(C3) L3 : Y-2*Z=2$
(C4) LINSOLVE([L1,L2,L3],[X,Y,Z]);
(D4)
(C5) GLOBALSOLVE : TRUE$
(C6) ''C4;
(D6)
(C7)
Remarque 4 Si variable GLOBALSOLVE est à TRUE, alors la solution est donnée comme une affectation aux variables.
On peut saisir une matrice à l'aide de la fonction entermatrix(ligne,colonnes).
Exemple 13
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) m : entermatrix(3,3);
Is the matrix 1. Diagonal 2. Symmetric 3. Antisymmetric 4. General
Answer 1, 2, 3 or 4 : 4
Row 1 Column 1: 1;
Row 1 Column 2: 0;
Row 1 Column 3: -1;
Row 2 Column 1: 0;
Row 2 Column 2: 1;
Row 2 Column 3: a;
Row 3 Column 1: 1;
Row 3 Column 2: -1;
Row 3 Column 3: a;
Matrix entered.
(D1)
(C2)
La fonction MATRIX(L1,L2,...) permet à partir des listes L1,L2,... de créer une matrice avec comme lignes L1,L2,...
Exemple 14
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) L1 : [1,0,-1]$
(C2) L2 : [0,1,a]$
(C3) L3 : [1,-1,a]$
(C4) m : MATRIX(L1,L2,L3);
(D4)
(C5)
La fonction DIAGMATRIX(n,X) permet de créer une matrice n × n diagonale avec X comme élément diagonal. La fonction IDENT(n) permet de créer une matrice identité de taille n × n.
Exemple 15
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) d : DIAGMATRIX(5,COS(X));
(D1)
(C2) IDENT(2);
(D2)
La fonction GENMATRIX(Tableau,i2,j2,i1,j1) permet de créer une matrice à partir d'un tableau tel que Tableau(i1,j1) soit le premier élément ( en haut a gauche) et Tableau(i2,j2) soit le dernier élément ( en bas à droite). Si j1 = i1 alors on peut omettre j1 et si j1 = i1 = 1 on peut omettre i1 et j1.
Exemple 16 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) H[I,J]:=1/(I+J+1)$
(C2) GENMATRIX(H,4,4);
(D2)
(C3)
La fonction DETERMINANT(m) permet de calculer le déterminant de m. La fonction TRANSPOSE(m) permet de calculer sa transposée. TRIANGULARIZE(m) triangularise m qui n'est pas forcément une matrice carrée. INVERT(m) calcule l'inverse de la matrice carrée m. Si l'on rajoute l'option ,detout alors l'inverse du déterminant de m est mis en facteur. La fonction RANK(m) calcule le rang de m, dans certain cas cette fonction donne un résultat faux.
Exemple 17 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) L1 : [1,0,-1]$
(C2) L2 : [0,1,a]$
(C3) L3 : [-1,0,a]$
(C4) m : MATRIX(L1,L2,L3);
(D4)
(C5) TRANSPOSE(M);
(D5) TRANSPOSE
(C6) TRANSPOSE(m);
(D6)
(C7) DETERMINANT(m);
(D7) a - 1
(C8) RANK(m);
(D8) 3
(C9) INVERT(m);
(D9)
(C10) INVERT(m),detout;
(D10)
(C11) TRIANGULARIZE(m);
(D11)
(C12)
La fonction ADJOINT(M) calcule la matrice adjoint de M. La fonction ECHELON(M) échelonne la matrice M.
Exemple 18 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) L1 : [1,0,-1]$
(C2) L2 : [0,1,a]$
(C3) L3 : [-1,0,a]$
(C4) M : MATRIX(L1,L2,L3);
(D4)
(C5) ADJOINT(M);
(D5)
(C6) ECHELON(M);
(D6)
La fonction ADDCOL(M,L1,L2,...) permet d'ajouter à M les colonnes données par les listes L1,L2,.... La fonction ADDROW(M,L1,L2,...) permet d'ajouter à M les lignes données par les listes L1,L2,.... La fonction COL(M,i) (resp. ROW(M,i)) permet d'extraire la ie me colonne (resp. ligne) de M.
Exemple 19 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) m: MATRIX([1,2]);
(D1)
(C2) ADDCOL(m,[3]);
(D2)
(C3) ADDROW(m,[4,5,6]);
Incompatible structure - ADDROW//ADDCOL
-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)
(C4) n : ADDROW(m,[4,5]);
(D4)
(C5) COL(n,2);
(D5)
(C6) ROW(n,1);
(D6)
(C7)
Remarque 5 Les fonctions ADDCOL(M,L) et ADDROW(M,L) ne modifient pas le contenu de M.
Dans cette rubrique, on va utiliser le package eigen. Pour cela on utilise la commande LOAD(EIGEN). Cette bibliothèque contient des fonctions pour le calcul de vecteurs propres et de valeurs propres. On peut obtenir une description de ce package à l'aide de la fonction PRINTFILE("eigen.usg"). Pour le moment, le descriptif ne fonctionne que dans xmaxima.
La fonction COLUMNVECTOR(L) permet de définir un vecteur donné par la liste L. La fonction INNERPRODUCT(L1,L2) permet de calculer le produit scalaire ou hermitien des vecteurs L1 et L2.
Exemple 20 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) LOAD(EIGEN);
Warning - you are redefining the MACSYMA function EIGENVALUES
Warning - you are redefining the MACSYMA function EIGENVECTORS
(D1) /usr/lib/maxima-5.6/share/eigen.mc
(C2) V : COLUMNVECTOR([a,b,c]);
(D2)
(C3) INNERPRODUCT(V,[1,2,3]);
(D3)
(C4) INNERPRODUCT([a,b,c],[1,2,3]);
(D4) 3c + 2b + a
(C5)
Remarque 6 Si les arguments de INNERPRODUCT(V,[a,b,c]) sont un vecteur et une liste, alors le résultat est la matrice formée par les colonnes . En fait, cette fonction calcule simplement le produit V.(a,b,c).
La fonction UNITVECTOR(L) permet
de créer un vecteur unitaire. La fonction EIGENVALUES(M)
donne la liste des valeurs propres de M et la liste
de leur multiplicité. La fonction CHARPOLY(M,var)
permet de calculer le polynôme charatéristique de M
avec la variable var. La fonction EIGENVECTORS(M)
permet de calculer le résultat de la fonction EIGENVALUES()
avec les vecteurs propres en prime.
Exemple 21
GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) m : MATRIX([1,0,1],[0,1,2],[0,0,2]);
(D1)
(C2) p : CHARPOLY(m,X);
(D2) 2
(C3) EIGENVALUES(m);
Warning - you are redefining the MACSYMA function EIGENVALUES
Warning - you are redefining the MACSYMA function EIGENVECTORS
(D3)
(C4) EIGENVECTORS(m);
(D4)
(C5) V : UNITVECTOR([1,2,1]);
(D5)
(C6) m.V;
(D6)
(C7) ''c6/2;
(D7)
(C8)
La fonction DIFF(f,x) permet de calculer la dérivée de f par rapport à x. Elle se généralise en DIFF(f(v1,v2,...),v1,n1,v2,n2,...) où f est une fonction des variables v1,v2,... et la dérivation est d'ordre n1 pour v1, n2 pour v2, etc ... La fonction AT(f(X,Y,..),[X=v1,Y=v2,...]) permet de calculer la valeur de la dérivée au point (v1,v2,....).
Exemple 22 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) f : %E^(X^2)*cos(X)+X^2+3*X;
(D1) eX2 cos X + X2 + 3X
(C2) DIFF(f,X);
(D2) - eX2 sin X + 2XeX2 cos X + 2X + 3
(C3) DIFF(f,X,2);
(D3) - 4XeX2 sin X + 4X2eX2 cos X + eX2 cos X + 2
(C4) g : cos(Y)*f+1/Y;
(D4) cos Y +
(C5) DIFF(g,Y);
(D5) - sin Y -
(C6) DIFF(g,X,Y);
(D6)
(C7) DIFF(g,X,1,Y,1);
(D7) - sin Y
(C8) AT(''c7,[X=0,Y=%Pi/2]);
(D8) - 3
(C9)
La fonction 'DIFF(f(v1,v2,...),v1,n1,v2,n2,...) permet d'écrire les dérivées de f(v1,v2,....). Attention, la fonction f doit être explicitement avec ses variables. Ceci permet d'écrire des équation différentielles. La fonction DESOLVE([eq1,eq2,...,eqn],[var1,var2,...varn]) permet dans certain cas de résoudre ces équations. Si elle n'arrive pas, elle retourne le résultat FALSE.
La fonction ATVALUE(g(x,y,...), [x=v1,y=v2,...],V) permet de donner la valeur V à la fonction g au point (v1,v2,...). Ceci permet de définir des conditions initiales.
Exemple 23 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) df : 'DIFF(f(x),x);
(D1) f
(C2) eq : df + 3* f(x) = 0;
(D2) f + 3f = 0
(C3) DESOLVE(eq,f(x));
(D3) f = fe-3x
(C4) ddf : 'DIFF(f(x),x,2);
(D4) f
(C5) eq2 : ddf + 3 *df + f(x) = x^2+1;
(D5) f + 3 + f = x2 + 1
(C6) DESOLVE(eq2,f(x));
(D6) f = e
-3x2 + x2 - 6x + 17
(C7) ATVALUE(df,x=0,A);
(D7) A
(C8) ''c6;
(D8) f (x) = e- 3x 2 ( (2(A+3f(0)-45)-3(f(0)-17)) sinh( __5x 2 )5 + (f (0) - 17) cosh (5x 2 ) ) + x2 - 6x + 17
(C9)
La fonction TAYLOR(f,var,pt,n) calcule le développement de Taylor (ou de Laurent) de f(var) au point pt à l'ordre n.
Exemple 24 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) f : (cos(X)-1)/X;
(D1)
(C2) TAYLOR(f,X,0,3);
(D2) - + +
(C3) g : sin(X)/(X^2);
(D3)
(C4) TAYLOR(g,X,0,2);
(D4) - +
(C5)
La fonction LIMIT(f,X,val,dir) calcule la limite de f(X) quand X val. dir peut prendre les valeurs PLUS ou MINUS selon que X tend vers val par valeur supérieure ou inférieure. On a aussi les mots INF pour +, MINF pour - et INFINITY pour l'infini complexe. La fonction TLIMIT(f,X,val,dir) à la même fonctionnalité que LIMIT(), mais utilise les séries de Taylor.
Le résultat peut être UND pour un résultat indéfini et IND pour un résultat indéfini mais borné.
Exemple 25 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) LIMIT((COS(x)+1)/x,x,INF);
(D1) 0
(C2) LIMIT(1/X,X,0,PLUS);
(D2)
(C3) LIMIT(1/X,X,0,MINUS);
(D3) -
(C4) LIMIT(1/X,X,0);
(D4) UND
(C5) LIMIT(COS(Z),Z,INFINITY);
(D5) UND
(C6) LIMIT(COS(X),X,INF);
(D6) IND
(C7)
Le package ODE permet de résoudre des EDP du premier et second ordre. La fonction ODE2(edp,vard,vari) permet de résoudre l'edp avec les variables dépendantes vard et les variables indépendantes vari. Le résultat, s'il est obtenu, sera donné à l'aide des variables dépendantes.
Exemple 26 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) edp : X^2*'DIFF(Y,X)+3*X*Y=sin(X)/X;
(D1) X2 + 3XY =
(C2) ODE2(edp,Y,X);
(D2) Y =
(C3)
Les fonctions IC1(S1,v1,v2) et IC2() permettent de fixer des conditions initiales. La fonction BC2() permet de fixer des conditions aux limites.
Exemple 27 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) X^2*'DIFF(Y,X)+3*X*Y=sin(X)/X;
(D1) X2 + 3XY =
(C2) ODE2(%,Y,X);
(D2) Y =
(C3) IC1(D2,X=%Pi,Y=0);
(D3) Y = -
(C4) eqd : 'DIFF(Y,X,2)+Y*'DIFF(Y,X)^3=0;
(D4) Y + Y % DERIVATIVE3 = 0
(C5) ODE2(eqd,Y,X);
(D5) = X + %K2
(C6) RATSIMP(IC2(D5,X=0,Y=0,'DIFF(Y,X)=2));
(D6) - = X
(C7) BC2(D5,X=0,Y=1,X=1,Y=3);
(D7) = X -
(C8)
La fonction INTEGRATE(exp,var) permet de calculer la primitive de l'expression exp en fonction de la variable var. Si maxima ne sait pas répondre, il donne la notation "intégrale" de la fonction :
Exemple 28 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) INTEGRATE(COS(X)*SIN(X)^4,X);
(D1)
(C2) INTEGRATE(1/(COS(X)+LOG(X)),X);
(D2) dX
(C3)
La fonction INTEGRATE(exp,var,var0,var1) permet de calculer l'intégrale de l'expression exp où la variable var parcourt l'intervalle [var 0, var 1]. La fonction DEFINT(exp,var,var0,var1) donne le même résultat en utilisant des méthodes exclusivement symboliques.
Exemple 29 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) INTEGRATE(LOG(X),X,1,4);
(D1) 4 log 4 - 3
(C2) DEFINT(LOG(X),X,1,4);
(D2) 4 log 4 - 3
(C3) INTEGRATE(COS(X)/LOG(X),X,2,4);
(D3) 24 dX
(C4)
La fonction ROMBERG(exp,var,var0,var1) permet de calculer une valeur numérique de l'intégrale de l'expression exp où la variable var parcourt l'intervalle [var 0, var 1].
Exemple 30 GCL (GNU Common Lisp) Version(2.4.0) Wed May 9 12:02:00 CDT 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Wed May 9 12:01:49 CDT 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) ROMBERG(COS(X)/LOG(X),X,2,4);
(D1) - 1.560726568870818
(C2)
On peut définir des bornes infinies par INF pour + et MINF pour -.
Exemple 31 GCL (GNU Common Lisp) Version(2.4.0) Fri Dec 7 15:30:59 CST 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Fri Dec 7 15:30:47 CST 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) INTEGRATE(EXP(-X^2),X,MINF,INF);
(D1)
Il est possible de calculer des intégrales à paramètres. Il se peut alors que Maxima demande le signe de certaines expressions. Les réponses possibles sont POS;, NEG; ou ZERO;.
Exemple 32
La fonction PLOT2D([exp1,exp2,...],range,opts); permet de tracer des courbes.
Exemple 33 GCL (GNU Common Lisp) Version(2.4.0) Fri Dec 7 15:30:59 CST 2001
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter
Maxima 5.6 Fri Dec 7 15:30:47 CST 2001 (with enhancements by W. Schelter).
Licensed under the GNU Public License (see file COPYING)
(C1) PLOT2D(SIN(x),[x,-5,5]);
(D1) 0
(C2)
Voici le résultat :
La commande PLOT3d(expr,xrange,yrange,opts) permet de tracer des surfaces.
Exemple 34
La commande
plot3d([cos(x)*(3+y*cos(x/2)),sin(x)*(3+y*cos(x/2)),y*sin(x/2)],[x,-%Pi,%pi],[y,-1,1],['grid,50,15]);
permet de tracer un anneau de Moebius.
Le dernier argument des fonctions PLOT2D et PLOT3D permet de donner des options pour le traçage des courbes ou des surfaces. En voici les principales options disponibles :
La fonction SET_PLOT_OPTION(options) permet de définir les options par défaut.