MAXIMA est un programme de calcul formel assez complet.
Il a été réalisé en COMMON LISP par William F. Schelter, à partir de la version originale de Macsyma réalisée au MIT et qui fut distribuée par le Department of Energy. Le DOE ayant accordé la permission à W. Schelter d'en faire des copies dérivées, et en particulier de le distribuer sous license publique GNU (voyez le fichier COPYING inclus dans la distribution), les fichiers de MAXIMA peuvent désormais être redistribués selon les termes de la licence publique GNU.
Traduction française : André Jaccomard, Armand Osselet, Daniel Duparc et Michel
Lavaud.
Dernière mise à jour : 1er mai 2003.
La version la plus récente de ce document peut être obtenue sur le site web
de l'association AsTeX, http://www.univ-orleans.fr/EXT/ASTEX
Infrastructure de MAXIMA
Assistance pour des domaines spécifiques des mathématiques
Ressources avancées et programmation
Index
--- Liste détaillée des noeuds ---
Introduction
Aide
Ligne de commande
Opérateurs
Expressions
Simplification
Tracé de courbe
Entrée et sortie
Virgule flottante
Contexte
Polynômes
Constantes
Logarithmes
Trigonométrie
Fonctions spéciales
Polynômes orthogonaux
Limites
Différentiation
Intégration
Equations
Equations différentielles
Calcul numérique
Statistiques
Tableaux et tables
Matrices et algèbre linéaire
Affine
Tenseur
Ctenseur
Séries
Théorie des nombres
Symétries
Groupes
Environnement d'exécution
Options diverses
Règles et modèles
Listes
Définition de fonction
Flot du programme
Débogage
Lancez MAXIMA avec la commande "maxima". MAXIMA va afficher son numéro de version et une invite. Terminez chaque commande de MAXIMA par un point-virgule. Terminez la session avec la commande "quit();". Voici un exemple de session:
sonia$ maxima GCL (GNU Common Lisp) Version(2.3) Tue Mar 21 14:15:15 CST 2000 Licensed under GNU Library General Public License Contains Enhancements by W. Schelter Maxima 5.4 Tue Mar 21 14:14:45 CST 2000 (enhancements by W. Schelter) Licensed under the GNU Public License (see file COPYING) (C1) factor(10!); 8 4 2 (D1) 2 3 5 7 (C2) expand((x+y)^6); 6 5 2 4 3 3 4 2 5 6 (D2) y + 6 x y + 15 x y + 20 x y + 15 x y + 6 x y + x (C3) factor(x^6-1); 2 2 (D3) (x - 1) (x + 1) (x - x + 1) (x + x + 1) (C4) quit(); sonia$
MAXIMA peut rechercher les pages d'information. Utilisez la commande describe pour afficher toutes les commandes et variables contenues dans une chaîne, et optionnellement leur documentation:
(C1) describe(factor); 0: DONTFACTOR :(maxima.info)Definitions for Matrices and .. 1: EXPANDWRT_FACTORED :Definitions for Simplification. 2: FACTOR :Definitions for Polynomials. 3: FACTORFLAG :Definitions for Polynomials. 4: FACTORIAL :Definitions for Number Theory. 5: FACTOROUT :Definitions for Polynomials. 6: FACTORSUM :Definitions for Polynomials. 7: GCFACTOR :Definitions for Polynomials. 8: GFACTOR :Definitions for Polynomials. 9: GFACTORSUM :Definitions for Polynomials. 10: MINFACTORIAL :Definitions for Number Theory. 11: NUMFACTOR :Definitions for Special Functions. 12: SAVEFACTORS :Definitions for Polynomials. 13: SCALEFACTORS :Definitions for Miscellaneous Options. 14: SOLVEFACTORS :Definitions for Equations. Enter n, all, none, or multiple choices eg 1 3 : 2 8; Info from file /d/linux/local/lib/maxima-5.4/info/maxima.info: - Function: FACTOR (EXP) factors the expression exp, containing any number of variables or functions, into factors irreducible over the integers. FACTOR(exp, p) factors exp over the field of integers with an element adjoined whose minimum polynomial is p. FACTORFLAG[FALSE] if FALSE suppresses the factoring of integer factors of rational expressions. DONTFACTOR may be set to a list of variables with respect to which factoring is not to occur. (It is initially empty). Factoring also will not take place with respect to any variables which are less important (using the variable ordering assumed for CRE form) than those on the DONTFACTOR list. SAVEFACTORS[FALSE] if TRUE causes the factors of an expression which is a product of factors to be saved by certain functions in order to speed up later factorizations of expressions containing some of the same factors. BERLEFACT[TRUE] if FALSE then the Kronecker factoring algorithm will be used otherwise the Berlekamp algorithm, which is the default, will be used. INTFACLIM[1000] is the largest divisor which will be tried when factoring a bignum integer. If set to FALSE (this is the case when the user calls FACTOR explicitly), or if the integer is a fixnum (i.e. fits in one machine word), complete factorization of the integer will be attempted. The user's setting of INTFACLIM is used for internal calls to FACTOR. Thus, INTFACLIM may be reset to prevent MACSYMA from taking an inordinately long time factoring large integers. NEWFAC[FALSE] may be set to true to use the new factoring routines. Do EXAMPLE(FACTOR); for examples. - Function: GFACTOR (EXP) factors the polynomial exp over the Gaussian integers (i. e. with SQRT(-1) = %I adjoined). This is like FACTOR(exp,A**2+1) where A is %I. (C1) GFACTOR(X**4-1); (D1) (X - 1) (X + 1) (X + %I) (X - %I) (D1) FALSE
Pour utiliser un résultat dans un calcul ultérieur, vous pouvez l'affecter à une variable ou y faire référence en lui donnant automatiquement une étiquette. De plus, % fait référence au résultat de calcul le plus récent:
(C2) u:expand((x+y)^6); 6 5 2 4 3 3 4 2 5 6 (D2) y + 6 x y + 15 x y + 20 x y + 15 x y + 6 x y + x (C3) diff(u,x); 5 4 2 3 3 2 4 5 (D3) 6 y + 30 x y + 60 x y + 60 x y + 30 x y + 6 x (C4) factor(d3); 5 (D4) 6 (y + x)
MAXIMA connaît les nombres complexes et les constantes numériques:
(C6) cos(%pi); (D6) - 1 (C7) %e^(%i*%pi); (D7) - 1
MAXIMA peut exécuter du calcul différentiel et intégral:
(C8) u:expand((x+y)^6); 6 5 2 4 3 3 4 2 5 6 (D8) y + 6 x y + 15 x y + 20 x y + 15 x y + 6 x y + x (C9) diff(%,x); 5 4 2 3 3 2 4 5 (D9) 6 y + 30 x y + 60 x y + 60 x y + 30 x y + 6 x (C10) integrate(1/(1+x^3),x); 2 x - 1 2 ATAN(-------) LOG(x - x + 1) SQRT(3) LOG(x + 1) (D10) - --------------- + ------------- + ---------- 6 SQRT(3) 3
MAXIMA peut résoudre des systèmes linéaires et des équations cubiques:
(C11) linsolve( [ 3*x + 4*y = 7, 2*x + a*y = 13], [x,y]); 7 a - 52 25 (D11) [x = --------, y = -------] 3 a - 8 3 a - 8 (C12) solve( x^3 - 3*x^2 + 5*x = 15, x); (D12) [x = - SQRT(5) %I, x = SQRT(5) %I, x = 3]
MAXIMA peut résoudre des ensembles non liléaires d'équations. Notez que si vous ne voulez pas afficher un résultat, vous pouvez terminer votre commande avec un $ au lieu d'un ;.
(C13) eq1: x^2 + 3*x*y + y^2 = 0$ (C14) eq2: 3*x + y = 1$ (C15) solve([eq1, eq2]); 3 SQRT(5) + 7 SQRT(5) + 3 (D15) [[y = - -------------, x = -----------], 2 2 3 SQRT(5) - 7 SQRT(5) - 3 [y = -------------, x = - -----------]] 2 2
Sous le système X window, MAXIMA peut générer des tracés d'une ou plusieurs fonctions:
(C13) plot2d(sin(x)/x,[x,-20,20]); (YMIN -3.0 YMAX 3.0 0.29999999999999999) (D13) 0 (C14) plot2d([atan(x), erf(x), tanh(x)], [x,-5,5]); (YMIN -3.0 YMAX 3.0 0.29999999999999999) (YMIN -3.0 YMAX 3.0 0.29999999999999999) (YMIN -3.0 YMAX 3.0 0.29999999999999999) (D14) 0 (C15) plot3d(sin(sqrt(x^2+y^2))/sqrt(x^2+y^2),[x,-12,12],[y,-12,12]); (D15) 0
Placer le curseur au coin haut gauche de la fenêtre de tracé fait surgir un menu qui, parmi d'autres choses, vous permettra de créer un fichier PostScript du tracé (il sera placé par défaut dans votre répertoire personnel). Vous pouvez appliquer une rotation à un tracé en 3D.
La plus utile des commandes de l'aide en ligne est DESCRIBE qui fournit de
l'aide sur toutes les commandes contenant une chaîne particulière. Ici par
commande nous entendons un opérateur intégré tel que INTEGRATE ou FACTOR etc.
Comme raccourci vous pouvez taper ? fact
au lieu de describe("fact")
(C3) ? inte; 0: (maxima.info)Integration. 1: Introduction to Integration. 2: Definitions for Integration. 3: INTERRUPTS. 4: ASKINTEGER :Definitions for Simplification. 5: DISPLAY_FORMAT_INTERNAL :Definitions for Input et Output. 6: INTEGERP :Definitions for Miscellaneous Options. 7: INTEGRATE :Definitions for Integration. 8: INTEGRATION_CONSTANT_COUNTER :Definitions for Integration. 9: INTERPOLATE :Definitions for Numerical. Enter n, all, none, or multiple choices eg 1 3 : 7 8; Info from file /d/linux2/local/share/info/maxima.info: - Function: INTEGRATE (EXP, VAR) integrates exp with respect to var or returns an integral expression (the noun form) if it cannot perform the integration (see note 1 below). Roughly speaking three stages are used: ...Dans cet exemple l'utilisateur demande les items 7 et 8. Notez le
;
qui suit les deux nombres. Il aurait pu taper all
pour avoir de l'aide
sur tous les items.
Aide
Tout Maxima est évidemment écrit en lisp.
Il existe une convention pour nommer fonctions et variables: tous les symboles
commençant par un signe "$" au niveau lisp, sont lus avec le "$" enlevé
au niveau Macsyma.
Par exemple, il y a deux fonctions lisp TRANSLATE et $TRANSLATE.
Si au niveau macsyma vous entrez TRANSLATE(FOO);
la fonction qui sera appelée est $translate.
Pour accéder à l'autre fonction vous devez la préfixer par un "?".
Notez que vous ne pouvez pas mettre un espace après le ?
puisque
cela indiquerait que vous demandez de l'aide!
(C1) ?TRANSLATE(FOO);
Bien sûr, ceci peut ne pas faire ce que vous vouliez puisque c'est une fonction complètement différente.
Pour entrer une commande lisp vous pouvez utiliser
(C1) :lisp (foo 1 2)ou pour obtenir une invite lisp utilisez
to_lisp();
, ou encore tapez
Ctrl-c
pour entrer en mode débogage.
Ceci provoquera l'entrée dans une boucle lisp break.
Vous pouvez maintenant évaluer $d2 et voir la valeur de la ligne étiquettée D2,
dans son format lisp interne.
Taper :q
quittera le niveau haut, si vous êtres dans une boucle "break"
de débogage.
Si vous avez quitté maxima avec to_lisp();
alors vous pourriez taper
MAXIMA>(run)à l'invite lisp, pour redémarrer la session Maxima.
Si vous avez l'intention d'écrire des fonctions lisp à appeler au niveau
macsyma vous devriez les nommer par des noms commençant par un "$".
Notez que tous les symboles tapés au niveau lisp sont automatiquement lus en
majuscules, sauf si vous faites quelque chose comme |$odeSolve|
pour
forcer le respect de la casse.
Maxima interprète les symboles en casse mixte, si le symbole a déjà été lu ou
lorsqu'il a été lu pour la première fois il n'y avait pas un symbole portant
les mêmes lettres mais en majuscules.
Ainsi si vous tapez
(C1) Integrate; (D1) INTEGRATE (C2) Integ; (D2) IntegLe symbole
Integrate
existe déjà en majuscules puisque c'est une primitive
de Maxima, mais pas INTEG, qui n'existe pas encore, donc Integ est permis.
Cela peut sembler un peu bizarre, mais nous voulons que l'ancien code de Maxima
fonctionne encore, ce qui fait que les primitives de Maxima peuvent être en
minuscules ou en majuscules.
Un avantage de ce système est que si vous tapez en minuscules, vous verrez
immédiatement quelles sont les fonctions et mots-clé de maxima.
Pour entrer des formes de Maxima au niveau lisp, vous pouvez utiliser la macro #$
.
(setq $foo #$[x,y]$)
Cela aura le même effet que d'entrer
(C1)FOO:[X,Y];
sauf que foo n'apparaîtra pas dans la liste VALUES. Afin de voir foo au format affiché de macsyma vous pouvez taper
(displa $foo)
Dans cette documentation lorsque nous voulons nous référer à un symbole macsyma nous omettrons en général $ juste comme vous le feriez en entrant au niveau macsyma. Cela provoquera des confusions lorsque nous voudrons aussi nous référer à un symbole lisp. Dans ce cas nous essaierons d'utiliser les minuscules pour le symbole lisp et les majuscules pour le symbole macsyma. Par exemple LIST pour $list et list pour le symbole lisp dont le nom affiché est "list".
Comme les fonctions définies en langage MAXIMA ne sont pas des fonctions lisp ordinaires, vous devez utiliser mfuncall pour les appeler. Par exemple:
(D2) FOO(X, Y) := X + Y + 3
puis au niveau lisp
CL-MAXIMA>>(mfuncall '$foo 4 5) 12
Un certain nombre de fonctions lisp sont masquées dans le package maxima, car leur utilisation dans maxima n'est pas compatible avec leur définition en tant que fonction système. Par exemple typep se comporte différemment en common lisp et en Maclisp. Si vous voulez vous référer à la zeta typep de lisp dans le package maxima vous devrez utiliser global:typep (ou cl:typep en common lisp). Ainsi
(macsyma:typep '(1 2)) ==> 'list (lisp:typep '(1 2))==> error (lisp:type-of '(1 2))==> 'cons
Pour voir quels symboles sont masqués regardez dans "src/maxima-package.lisp" ou faites un describe du package au niveau lisp.
Le calcul symbolique a tendance à créer beaucoup de résultats intermédiaires qui encombrent inutilement la mémoire, et il peut être nécessaire de les éliminer pour que certains programmes puissent être exécutés avec succès.
Sous GCL, sur les systèmes UNIX où l'appel système mprotect est disponible (y compris sous SUN OS 4.0 et certaines variantes de BSD) un ramasse-miettes stratifié est disponible. Ce qui limite le ramassage aux pages le plus récemment écrites. Voyez la documentation GCL sous ALLOCATE et GBC. Au niveau lisp faire (setq si::*notify-gbc* t) vous aidera à déterminer quelles zones vont avoir besoin de plus d'espace.
La source de la documentation est dans .texi
au format texinfo.
\`A partir de ce format nous pouvons produire les fichiers info utilisés par les
commandes en ligne ?
et describe
. Des fichiers html
et pdf
peuvent aussi être produits.
Il y a de plus des exemples qui vous permettent de faire
example(integrate); (C4) example(integrate); (C5) test(f):=BLOCK([u],u:INTEGRATE(f,x),RATSIMP(f-DIFF(u,x))); (D5) test(f) := BLOCK([u], u : INTEGRATE(f, x), RATSIMP(f - DIFF(u, x))); (C6) test(SIN(x)); (D6) 0 (C7) test(1/(x+1)); (D7) 0 (C8) test(1/(x^2+1)); (D8) 0 (C9) INTEGRATE(SIN(X)^3,X); ...
DEMO (file) | Function |
est la même chose que BATCH mais fait une pause après chaque ligne de commande
et continue lorsqu'un espace est tapé (vous pouvez devoir taper
; suivi d'un saut de ligne, si vous êtes sous xmaxima).
Les fichiers de demo ont le suffixe .dem
|
DESCRIBE (cmd) | Function |
Cette commande affiche la documentation sur toutes les commandes qui contiennent la sous-chaîne "cmd". Ainsi (C1) describe("integ"); 0: (maxima.info)Integration. 1: Introduction to Integration. 2: Definitions for Integration. 3: ASKINTEGER :Definitions for Simplification. .. Enter n, all, none, or multiple choices eg 1 3 : 2 3; Info from file /d/linux2/local/share/info/maxima.info: Definitions for Integration =========================== - Function: CHANGEVAR (EXP,F(X,Y),Y,X) ...see Introduction à l'aide |
EXAMPLE (command) | Function |
démarre une démonstration sur la façon dont command travaille sur certaines expressions. Après chaque ligne de commande elle fait une pause et attend qu'un espace soit tapé, comme avec la commande DEMO. |
%TH (i) | Function |
est le i-ème calcul précédent: si l'expression suivante à calculer est D(j), %TH est D(j-i). C'est utile dans les fichiers BATCH ou pour faire référence à un groupe d'expressions D. Par exemple, si SUM est initialisée à 0 alors FOR I:1 THRU 10 DO SUM:SUM+%TH(I) donnera à SUM la somme des dix dernières expressions D. |
"'" | operator |
- (apostrophe, guillemet simple) a pour effet d'empêcher l'évaluation. E.g. '(F(X)) signifie "ne pas évaluer l'expression F(X)". 'F(X) signifie "retourner la forme nominale de F appliquée à [X]". |
"''" | operator |
- (deux apostrophes) provoque une évaluation supplémentaire. E.g. "c4; ré-exécutera la ligne C4. "(F(X)) signifie "évaluer l'expression F(X) une fois de plus". "F(X) signifie "retourner la forme verbale de F appliquée à [X]". |
ALIAS (nouveaunom1, anciennom1, nouveaunom2, anciennom2, ...) | Function |
fournit un nom alternatif (utilisateur ou système) pour une fonction, une variable, un tableau, etc. Un nombre pair quelconque d'arguments peut être utilisé. |
DEBUG () | Function |
LISPDEBUGMODE(); DEBUGPRINTMODE(); et DEBUG(); donnent à l'utilisateur les possibilités de débogageutilisées par les programmeurs système. Ces outils sont puissants, et bien que certaines conventions soient différentes de celles du niveau macsyma usuel il semble que leur utilisation soit très intuitive. [Certains affichages peuvent être verbeux pour des terminaux lents, mais il y a des commutateurs pour contrôler cela.] Ces commandes ont été conçues pour un utilisateur devant déboguer du code macsyma traduit, comme telles elles sont précieuses. Voyez MACDOC;TRDEBG USAGE pour plus d'information. Consultez GJC pour davantage d'aide. |
DEBUGMODE | Variable |
défaut: [FALSE] - fait entrer MACSYMA dans une boucle d'interruption dès qu'une erreur MACSYMA se produit si TRUE et termine ce mode si FALSE. Si fixé à ALL alors l'utilisateur peut examiner BACKTRACE qui contient la liste des fonctions actuellement entrées. |
DEBUGPRINTMODE () | Function |
LISPDEBUGMODE(); DEBUGPRINTMODE(); et DEBUG(); donnent à l'utilisateur les possibilités de débogageutilisées par les programmeurs système. Ces outils sont puissants, et bien que certaines conventions soient différentes de celles du niveau macsyma usuel il semble que leur utilisation soit très intuitive. [Certains affichages peuvent être verbeux pour des terminaux lents, mais il y a des commutateurs pour contrôler cela.] Ces commandes ont été conçues pour un utilisateur devant déboguer du code macsyma traduit, comme telles elles sont précieuses. Voyez MACDOC;TRDEBG USAGE pour plus d'information. Consultez GJC pour davantage d'aide. |
EV (exp, arg1, ..., argn) | Function |
est l'une des plus puissantes commandes de MACSYMA, et l'une des plus souples. Elle évalue l'expression exp dans l'environnement spécifié par l'argi. S'éxécute par étapes, comme ceci:
Exemples (C1) SIN(X)+COS(Y)+(W+1)**2+'DIFF(SIN(W),W); d 2 (D1) COS(Y) + SIN(X) + -- SIN(W) + (W + 1) dW (C2) EV(%,SIN,EXPAND,DIFF,X=2,Y=1); 2 (D2) COS(W) + W + 2 W + COS(1) + 1.90929742 Une syntaxe alternative de haut niveau a été fournie pour EV, par laquelle il suffit d'entrer ses arguments, sans le EV(). C'est à dire qu'on peut écrire simplement exp, arg1, ...,argn. Ce n'est pas permis en tant que partie d'une autre expression, i.e. dans les fonctions, les blocs, etc. (C4) X+Y,X:A+Y,Y:2; (D4) Y + A + 2 (Notez le procédé de liaison en parallèle) (C5) 2*X-3*Y=3$ (C6) -3*X+2*Y=-4$ (C7) SOLVE([D5,D6]); SOLUTION 1 (E7) Y = - - 5 6 (E8) X = - 5 (D8) [E7, E8] (C9) D6,D8; (D9) - 4 = - 4 (C10) X+1/X > GAMMA(1/2); 1 (D10) X + - > SQRT(%PI) X (C11) %,NUMER,X=1/2; (D11) 2.5 > 1.7724539 (C12) %,PRED; (D12) TRUE |
EVFLAG | Variable |
défaut: [] - la liste des choses connues de la fonction EV. Un item sera lié à TRUE pendant
l'exécution de EV s'il est mentionné dans l'appel à EV, e.g. EV(%,numer);. Les drapeaux initiaux evflags sont:
FLOAT, PRED, SIMP, NUMER, DETOUT, EXPONENTIALIZE, DEMOIVRE, KEEPFLOAT, LISTARITH, TRIGEXPAND, SIMPSUM, ALGEBRAIC, RATALGDENOM, FACTORFLAG, %EMODE, LOGARC, LOGNUMER, RADEXPAND, RATSIMPEXPONS, RATMX, RATFAC, INFEVAL, %ENUMER, PROGRAMMODE, LOGNEGINT, LOGABS, LETRAT, HALFANGLES, EXPTISOLATE, ISOLATE_WRT_TIMES, SUMEXPAND, CAUCHYSUM, NUMER_PBRANCH, M1PBRANCH, DOTSCRULES, et LOGEXPAND. |
EVFUN | Variable |
- la liste des fonctions connues de la fonction EV qui seront appliquées si leur nom est mentionné. Les drapeaux initiaux evfuns sont FACTOR, TRIGEXPAND, TRIGREDUCE, BFLOAT, RATSIMP, RATEXPAND, RADCAN, LOGCONTRACT, RECTFORM, et POLARFORM. |
INFEVAL | symbole spécial |
mène à un mode d'"évaluation infinie". EV évalue de façon répétée une expression jusqu'à ce qu'elle cesse de changer. Pour empêcher une variable, disons X, d'être évaluée dans ce mode, il suffit d'inclure X='X comme argument à EV. \'Evidemment des expressions comme EV(X,X=X+1,INFEVAL); vont créer une boucle infinie. CAVEAT EVALUATOR. |
KILL (arg1, arg2, ...) | Function |
élimine ses arguments du système MACSYMA. Si argi est une variable (y compris un simple élément de tableau), une fonction, ou un tableau, l'item désigné avec toutes ses propriétés est enlevé du noyau. Si argi=LABELS alors toute entrée, intermédiaire, et lignes en sortie jusqu'à présent (mais pas d'autres items nommés) sont éliminés. Si argi=CLABELS alors seules les lignes en sortie seront éliminées; si argi=ELABELS alors seules les lignes intermédiaires E-lines seront éliminées; si argi=DLABELS seules les lignes en sortie seront éliminées. Si argi est le nom de tout autre liste d'information (les éléments de la variable INFOLISTS de MACSYMA), alors tout item de cette classe (et ses propriétés) est KILLé et si argi=ALL alors chaque item de chaque liste d'information précédemment définie ainsi que toutes les LABELS est KILLé. Si argi=un nombre (disons n), alors les n dernières lignes (i.e. les lignes portant les derniers n numéros) sont supprimées. Si argi est de la forme [m,n] alors toutes les lignes portant des numéros entre m et n inclus sont tuées. Notez que KILL(VALUES) ou KILL(variable) ne libéreront pas l'espace occupé sauf si les étiquettes qui pointent sur les mêmes expressions sont aussi KILLées. Ainsi si une grosse expression a été affectée à X sur la ligne C7 on doit faire KILL(D7) ainsi que KILL(X) pour libéré l'espace occupé. KILL(ALLBUT(nom1,...,nomk) fera un KILL(ALL) sauf qu'il ne supprimera pas les noms spécifiés. (Note: nomi représente un nom tel que U, V, F, G, pas une liste d'info telle que FUNCTIONS). KILL ôte toutes les propriétés de l'argument donné, ainsi KILL(VALUES) supprimera toutes les propriétés associées à chaque item de la liste VALUES alors que l'ensemble de fonctions REMOVE (REMVALEUR,REMFONCTION,REMARRAY,REMRULE) enlève une propriété spécifique. Et cette dernière affiche aussi une liste de noms ou FALSE si l'argument spécifique n'existe pas alors que KILL a toujours la valeur "DONE" même si l'item nommé n'existe pas. Notez que supprimer des expressions n'aidera pas le problème qui survient sur MC indiqué par "NO CORE - FASLOAD" lorsque trop de fichiers FASL ont été chargés ou lorsque le niveau alloué est devenu trop haut. Dans aucun de ces cas, aucune quantité de suppression ne fera décroître la taille de ces espaces. Supprimer des expressions ne fait que vider certains de ces espaces sans les rendre plus petits. |
LABELS (char) | Function |
prend un "char" C, D, ou E comme argument et génère une liste de toutes les étiquettes C-, D-, ou
E-, respectivement. Si vous avez créé beaucoup d'étiquettes E- avec SOLVE, alors
FIRST(REST(LABELS(C)))vous rappelle quelle était la dernière étiquette C. LABELS prendra comme arg tout nom symbolique, aussi si vous avez remis à zéro INCHAR, OUTCHAR, ou LINECHAR, elle retournera la liste des étiquettes dont le premier caractère correspond au premier caractère de l'argument que vous avez donné à LABELS. La variable, LABELS, par défaut: [], est une liste de lignes C, D, et E qui sont liées. |
LASTTIME | Variable |
- le temps mis pour calculer la dernière expression, en millisecondes, présentée comme une liste de "time" et "gctime". |
LINENUM | Variable |
- le numéro de la ligne de la dernière expression. |
MYOPTIONS | Variable |
par défaut: [] - toutes les options remises à zéro par l'utilisateur (qu'elles soient ou non remises à leur valeur par défaut). |
NOLABELS | Variable |
par défaut: [FALSE] - si TRUE alors aucune étiquette ne sera liée, sauf pour les lignes E générées par les fonctions solve. C'est surtout utile dans le mode "BATCH" où il élimine le besoin de faire un KILL(LABELS) afin de récupérer de l'espace. |
OPTIONSET | Variable |
par défaut: [FALSE] - si TRUE, MACSYMA n'affichera pas de message lorsqu'une option MACSYMA est restaurée. Utile si l'utilisateur n'est pas sûr de l'orthographe d'une certaine option et veux s'assurer que la variable à laquelle il affecte une valeur est vraiment une variable d'option. |
PLAYBACK (arg) | Function |
"rejoue" des lignes d'entrée et de sortie. Si arg=n (un nombre) les n dernières expressions (Ci, Di, et Ei compte chacune pour 1) sont "rejouées", alors que si arg est omis, toutes le sont. Si arg=INPUT seules les lignes en entrée sont rejouées. Si arg=[m,n] toutes les lignes portant les numéros m à n inclus sont rejouées. Si m=n alors [m] est un argument suffisant. Arg=SLOW place PLAYBACK en un mode lent semblable à celui de DEMO (comme opposé au BATCH "rapide"). Utile avec SAVE ou STRINGOUT lors de la création d'un fichier de stockage en second afin de désigner des expressions utiles. Si arg=TIME alors les temps de calcul sont affichés ainsi que les expressions. Si arg=GCTIME ou TOTALTIME, alors le détail complet des temps de calcul est affiché, comme avec SHOWTIME:ALL;. Arg=STRING échelonne (voir la fonction STRING) toutes les lignes en entrée lors du "play back" plutôt que de les afficher. Si ARG=GRIND le mode "grind" peut aussi être activé (pour le traitement des lignes en entrée) (voir GRIND). On peut inclure un nombre quelconque d'options comme dans PLAYBACK([5,10],20,TIME,SLOW). |
PRINTPROPS (a, i) | Function |
affiche la propriété de l'indicateur i associé à l'atome a. a peut aussi être une liste d'atomes ou l'atome ALL auquel cas tous les atomesayant la propriété donnée seront utilisés. Par exemple, PRINTPROPS([F,G],ATVALEUR). PRINTPROPS est réservé aux propriétés qui ne pourraient autrement être affichées, i.e. pour ATVALEUR, ATOMGRAD, GRADEF, et MATCHDECLARE. |
PROMPT | Variable |
par défaut: [_] est le symbomle d'invite de la fonction DEMO, du mode PLAYBACK(SLOW), et de (MACSYMA-BREAK). |
QUIT () | Function |
supprime le MACSYMA actuel mais n'affecte pas les autres tâches de l'utilisateur; équivaut à la sortie de DCL en arrêtant le processus MACSYMA. On peut "quitter" le niveau haut de MACSYMA en tapant Contrôle-C Contrôle-G; Contrôle-C donne l'invite d'interruption NIL, sur laquelle on peut taper Contrôle-G ou juste G. Taper X à l'invite d'interruption provoque l'arrêt d'un calcul commencé dans un MACSYMA-BREAK sans perturber le falcul principal suspendu. |
REMFONCTION (f1, f2, ...) | Function |
enlève de MACSYMA les fonctions définies par l'utilisateur f1,f2,... . S'il n'y a qu'un argument ALL alors toutes les fonctions sont enlevées. |
RESET () | Function |
remet à leurs valeurs par défaut toutes les options de MACSYMA. (Notez que ceci n'inclut pas les particularités des terminaux comme LINEL qui ne peuvent être modifiés que par affectation puisqu'ils ne sont pas considérés comme des particularités calculables de MACSYMA.) |
RESTORE (spécification-de-fichier) | Function |
réinitialise toutes les quantités classées par les fonctions SAVE ou STORE, dans une session précédente de MACSYMA, du fichier donné par la spécification-de-fichier, sans les mettre dans le noyau. |
SHOWTIME | Variable |
par défaut: [FALSE] - si TRUE le temps de calcul sera automatiquement affiché avec chaque expression sortie. Avec SHOWTIME:ALL, en plus du temps cpu MACSYMA affiche aussi maintenant (si non zéro) le temps passé en ramasse-miettes (gc) au cours du calcul. Ce temps est bien sûr inclus dans la durée affichée "time=". Il faut noter que comme "time=" ne comprend que le temps de calcul et non le temps d'affichage intermédiaire ou celui qu'il faut pour charger des fichiers hors du noyau, et comme il est difficile d'en tenir gc pour "responsable", le gctime affiché va inclure tout le temps gc supporté au cours du calcul et par conséquent peut dans de rares cas être même plus grand que "time=". |
SSTATUS (caractéristique,package) | Function |
- signifie SET STATUS. Peut être utilisé en SSTATUS(FEATURE, HACK_PACKAGE) de sorte que STATUS( FEATURE, HACK_PACKAGE) retourne alors TRUE. Ce qui peut être utile au rédacteurs de package, pour garder une trace de ce qu'ils y ont mis. |
TOBREAK () | Function |
provoque la ré-entrée dans une interruption MACSYMA, qui avait été quittée en tapant TOPLEVEL;. Si un argument quel qu'il soit est donné à TOBREAK, alors l'interruption sera abandonnée, ce qui est équivalent à TOBREAK() suivi immédiatement de EXIT;. |
TOPLEVEL () | Function |
Pendant une interruption on peut taper TOPLEVEL;, qui provoque une entrée récursive au niveau haut dans MACSYMA. Les étiquettes seront alors liées comme habituellement. Tout sera identique à l'état du niveau haut précédent sauf que le calcul interrompu est sauvegardé. |
TO_LISP () | Function |
entre dans le système LISP sous MACSYMA. Utile sur les systèmes où la touche Contrôle-flèche-haute n'est pas disponible pour cette fonction. |
TTYINTFUN | Variable |
par défaut: [FALSE] - Gouverne la fonction qui sera lancée dès que le caractère Interruption-Utilisateur est frappé. Pour utiliser cette possibilité, on définit TTYINTFUN (le défaut FALSE signifie possibilité non utilisée) sur une fonction sans argument. Alors dès que, par exemple, ^U (contrôle-U) est frappé, cette fonction est exécutée. Supposons que vous ayez une instruction de boucle FOR avec incréments I, et que vous vouliez une méthode simple de vérifier la valeur de I pendant que l'instruction FOR s'exécute. Vous pouvez faire: TTYINTFUN:PRINTI$ PRINTI():=PRINT(I)$ , alors dès que vous tapez ^U vous obtenez le test désiré. |
TTYINTNUM | Variable |
par défaut: [21] (la valeur ascii de Contrôle-U (^U), U étant la 21ème lettre de l'alphabet). Ceci contrôle quel caractère devient celui de l'Interruption-Utilisateur. ^U a été choisi pour sa valeur mnémonique. La plupart des utilisateurs ne redéfiniront pas TTYINTNUM à moins qu'ils utilisent déjà ^U pour autre chose. |
VALUES | Variable |
défaut:[] - tous les atomes liés, i.e. les variables utilisateur, pas les options ou les commutateurs de MACSYMA, (définis par : , :: , ou une liaison fonctionnelle). |
- Un opérateur NARY est utilisé pour représenter une fonction d'un nombre quelconque d'arguments, chacun d'eux étant séparé par une occurrence de l'opérateur, e.g. A+B ou A+B+C. La fonction NARY("x") est une fonction d'extension de syntaxe qui déclare x comme étant un opérateur NARY. Faites DESCRIBE(SYNTAX); pour avoir plus de détails. Les fonctions peuvent être déclarées (avec DECLARE) comme étant NARY. Si DECLARE(J,NARY); est lancée sur, par exemple, J(J(A,B),J(C,D)), le simplificateur renverra J(A, B, C, D).
- les opérateurs NOFIX sont utilisés pour représenter des fonctions sans argument. La simple présence d'un tel opérateur dans une commande provoque l'évaluation de la fonction correspondante. Par exemple, si on frappe "exit;" pour sortir d'une interruption MACSYMA, "exit" se comporte comme un opérateur NOFIX. La fonction NOFIX("x") est une fonction d'extension de syntaxe qui déclare x comme étant un opérateur NOFIX. Faites DESCRIBE(SYNTAX); pour avoir plus de détails.
- Voir OPERATORS
- les opérateurs POSTFIX, comme la variété PREFIX, représentent des fonctions à un seul argument, mais dans ce cas l'argument précède immédiatement une occurrence de l'opérateur dans la chaîne en entrée, e.g. 3!. La fonction POSTFIX("x") est une fonction d'extension de syntaxe qui déclare x comme étant un opérateur POSTFIX. Faites DESCRIBE(SYNTAX); pour avoir plus de détails.
- Un opérateur PREFIX signale une fonction à un argument, lequel suit immédiatement une occurrence de l'opérateur. PREFIX("x") est une fonction d'extension de syntaxe qui déclare x comme étant un opérateur PREFIX. Faites DESCRIBE(SYNTAX); pour avoir plus de détails.
@'erateur "!" | op |
L'opérateur factoriel est le produit de tous les entiers de 1 à son argument. Ainsi 5! = 1*2*3*4*5 = 120. La valeur de l'option FACTLIM (par défaut: [-1]) donne le plus grand factoriel qui est automatiquement développé. Si elle vaut -1 alors tous les entiers sont développés. Voir aussi les commandes FACTORIAL, MINFACTORIAL, et FACTCOMB. |
@'erateur "!!" | op |
Représente le double factoriel qui est défini comme produit de tous les entiers consécutifs impairs (ou pairs) de 1 (ou 2) à l'argument impair (ou pair). Ainsi 8!! est 2*4*6*8 = 384. |
@'erateur "#" | op |
L'opérateur logique "Non égal". |
@'erateur "." | op |
L'opérateur point, pour la multiplication (non-commutative) de matrices. Lorsque "." est utilisé de cette façon, des espaces devront être laissés des deux côtés, e.g. A . B. Ceci le distingue entièrement d'un point décimal dans un nombre en virgule flottante. Faites APROPOS(DOT); pour avoir la liste des commutateurs qui affectent l'opérateur point. DESCRIBE(nom-commutateur); les expliquera. |
@'erateur ":" | op |
L'opérateur d'affectation. Par exemple A:3 donne à la variable A la valeur 3. |
@'erateur "::" | op |
Opérateur d'affectation. :: assigne la valeur de l'expression à sa droite à la valeur de la quantité à sa gauche, qui doit s'évaluer en une variable atomique ou une variable indicée. |
@'erateur "::=" | op |
Le "::=" est utilisé au lieu de ":=" pour indiquer que ce qui suit est une définition de macro, plutôt qu'une définition fonctionnelle ordinaire. Voir DESCRIBE(MACROS). |
@'erateur ":=" | op |
L'opérateur de définition de fonction. Par exemple F(X):=SIN(X) définit une fonction F. |
@'erateur "=" | op |
indique une équation de MACSYMA. Pour le filtreur ("pattern matcher") de MACSYMA il dénote une relation totale entre deux expressions qui est vraie si et seulement si les expressions sont syntaxiquement identiques. |
ADDITIVE | symbole sp@'ecial |
- Si DECLARE(F,ADDITIVE) a été exécutée, alors: (1) Si F n'a qu'un argument, dès que le simplificateur rencontre F appliquée à une somme, F sera distribuée sur cette somme, i.e. F(Y+X); sera simplifiée en F(Y)+F(X). (2) If F est une fonction à 2 arguments ou davantage, l'additivité est définie comme additivité sur le premier argument de F, comme dans le cas de 'SUM ou 'INTEGRATE, i.e. F(H(X)+G(X),X); sera simplifiée en F(H(X),X)+F(G(X),X). Cette simplification ne se produit pas lorsque F est appliquée à des expressions de la forme SUM(X[I],I,limite-inf,limite-sup). |
ALLBUT | mot-clé |
travaille avec les commandes PART (i.e. PART, INPART, SUBSTPART,
SUBSTINPART, DPART, et LPART). Par exemple,
if EXPR is E+D+C+B+A, then PART(EXPR,[2,5]); ==> D+A alors que PART(EXPR,ALLBUT(2,5))==>E+C+B Fonctionne aussi avec la commande KILL, KILL(ALLBUT(nom1,...,nomk)) fera un KILL(ALL) sauf qu'il ne supprime pas les noms spécifiés. Note: nomi signifie un nom comme celui d'une fonction: U, F, FOO, ou G, mais pas une liste d'information telle que FUNCTIONS. |
@'eclaration ANTISYMMETRIC | d |
- La déclaration DECLARE(H,ANTISYMMETRIC); dit au simplificateur que H est antisymmétrique, p. ex. H(X,Z,Y) sera simplifiée en -H(X, Y, Z): c'est à dire qu'il donnera (-1)^n fois le résultat donné par SYMMETRIC ou COMMUTATIVE, où n est le nombre d'échanges entre deux arguments nécessaire pour le convertir sous cette forme. |
CABS (exp) | Function |
retourne la valeur complexe absolue (le modulo complexe) de exp. |
@'eclaration COMMUTATIVE | d |
- La déclaration DECLARE(H,COMMUTATIVE); dit au simplificateur que H est une fonction commutative. E.g. H(X,Z,Y) sera simplifiée en H(X, Y, Z). C'est la même chose que SYMMETRIC. |
ENTIER (X) | Function |
le plus grand entier <= X où X est numérique. FIX (comme dans FIXnum) en est un synonyme, ainsi FIX(X); est précisement le même. |
EQUAL (expr1,expr2) | Function |
utilisé avec un "IS", retourne TRUE (ou FALSE) si et seulement si expr1 et expr2
sont égales (ou non égales) pour toutes les valeurs possibles de leurs variables
(déterminées par RATSIMP).
Ainsi IS(EQUAL((X+1)**2,X**2+2*X+1)) retourne TRUE alors que si X n'est pas lié
IS((X+1)**2=X**2+2*X+1) retourne FALSE.
Notez aussi que IS(RAT(0)=0) donne FALSE mais IS(EQUAL(RAT(0),0)) donne TRUE.
Si une détermination ne peut être faite avec EQUAL alors une forme simplifiée
mais équivalente est retournée, alors que = renvoie toujours TRUE ou FALSE.
Toutes les variables se produisant dans exp sont supposées être à valeurs réelles.
EV(exp,PRED) est équivalente à IS(exp).
(C1) IS(X**2 >= 2*X-1); (D1) TRUE (C2) ASSUME(A>1); (D2) DONE (C3) IS(LOG(LOG(A+1)+1)>0 ET A^2+1>2*A); (D3) TRUE |
EVAL | Function |
provoque une post-évaluation supplémentaire de exp. |
EVENP (exp) | Function |
est TRUE si exp est un entier pair. FALSE est retournée dans tous les autres cas. |
FIX (x) | Function |
un synonyme de ENTIER(X) - le plus grand entier <= X où X est numérique. |
FULLMAP (fn, exp1, ...) | Function |
est semblable à MAP mais il retardera l'application aux sous-expressions jusqu'à
ce que les principaux opérateurs ne soient plus les mêmes. L'utilisateur doit être
conscient que FULLMAP est utilisé par le simplificateur de MACSYMA lors de certaines
manipulations de matrices; ainsi, l'utilisateur peut voir un message d'erreur
concernant FULLMAP alors même qu'il ne l'a pas explicitement appelée.
(C1) A+B*C$ (C2) FULLMAP(G,%); (D2) G(B) G(C) + G(A) (C3) MAP(G,D1); (D3) G(B C) + G(A) |
FULLMAPL (fn, list1, ...) | Function |
est semblable à FULLMAP mais ne réalise l'application que dans les listes et les matrices.
(C1) FULLMAPL("+",[3,[4,5]],[[A,1],[0,-1.5]]); (D1) [[A + 3, 4], [4, 3.5]] |
IS (exp) | Function |
tente de déterminer si exp (qui doit s'évaluer en un prédicat) est démontrable selon les faits contenus dans la base de données actuelle. IS renvoie TRUE si le prédicat est vrai pour toutes les valeurs de ses variables consistentes avec la base de données et retourne FALSE s'il est faux pour toutes ces valeurs. Autrement, son action dépend des paramètres du commutateur PREDERROR (par défaut: TRUE). IS se trompe si la valeur de PREDERROR is TRUE et retourne UNKNOWN si PREDERROR est FALSE. |
ISQRT (X) | Function |
prend un argument entier et retourne la racine carrée entière de sa valeur absolue. |
MAX (X1, X2, ...) | Function |
retourne le plus grand de ses arguments (ou une forme simplifiée si certains de ses arguments ne sont pas numériques). |
MIN (X1, X2, ...) | Function |
retourne le plus petit de ses arguments (ou une forme simplifiée si certains de ses arguments ne sont pas numériques). |
MOD (poly) | Function |
convertit le polynôme poly en une représentation modulaire respectant le modulo actuel qui est la valeur de la variable MODULUS. MOD(poly,m) spécifie un MODULUS m à utiliser pour convertir poly, en écrasant la valeur globale actuelle non désirée de MODULUS. Voir DESCRIBE(MODULUS); . |
ODDP (exp) | Function |
est TRUE si exp est un entier impair. FALSE est retourné dans tous les autres cas. |
@'erateur PRED | op |
(EVFLAG) provoque l'évaluation des prédicats (expressions qui s'évaluent en TRUE ou FALSE). |
RANDOM (X) | Function |
retourne un entier aléatoire entre 0 et X-1. Si aucun argument n'est donné alors un entier aléatoire entre -2^(29) et 2^(29) -1 est retourné. Si X est FALSE alors la suite aléatoire est relancée depuis le début. Notez que la plage de valeurs du résultat retourné lorsqu'aucun argument n'est donné diffère dans NIL MACSYMA de celle de PDP-10 et Multics MACSYMA, qui est -2^(35) à 2^(35) -1. Cette plage est celle du type de donnée FIXNUM du LISP sous-jacent. |
SIGN (exp) | Function |
tente de déterminer le signe de son expression spécifiée en s'appuyant sur les faits de la base de données actuelle. Elle retourne l'une des réponses suivantes: POS (positive), NEG (négative), ZERO, PZ (positive ou zéro), NZ (négative ou zéro), PN (positive ou négative), ou PNZ (positive, négative, ou zéro, i.e. ne sait pas). |
SIGNUM (X) | Function |
si X<0 alors -1 sinon si X>0 alors 1 sinon 0. Si X n'est pas numérique alors une forme simplifiée mais équivalente est retournée. Par exemple, SIGNUM(-X) donne -SIGNUM(X). |
SORT (liste,pr& |