Está en la página 1de 4

Referencia rápida de Maxima En el paquete de instalación vienen disponibles usual- Para obtener ayuda, basta con teclear ?

r ayuda, basta con teclear ? tema o bien


mente el maxima, el wxmaxima y el gnuplot, Vale la con el mouse dar click en 1 para visualizar la ventana
El Maxima es un programa que permite resolver ex- pena revisar las instrucciones de instalación que vienen de ayuda y en 2 teclear el “tema” de interés.
presiones simbólicas y numéricas, su origen se remonta en el archivo “How to install ” para evitar conflictos al
a los 60’s (1967) cuando los investigadores del MIT AI momento de utilizar el software.
Lab trabajaban sobre el proyecto MAC (Machine Aided Una vez instalado, la ventana inicial puede ser
Cognition).

En aquel entonces, le bautizaron como Macsyma


(MAC’s SYmbolic MAnipulatior), del cual el MIT man-
darı́a una copia en 1982 al DOE (Department Of
Energy, quien aportó con la lana) y posteriormente el
Por ejemplo para solicitar ayuda de la función seno (sin:
DOE concede la licencia a Symbolics quien lo sigue
una función periódica o trigonométrica) basta con te-
desarrollando durante años.
clear ? sin para obtener
En 1992 el programa lo adquiere Macsyima Inc., pe-
ro paralelamente aparecen en el mercado dos programas
similares (Maple y Mathematica) y una de estas co-
pias la conservó el Profesor William F. Schelter de la
Universidad de Texas y en 1998 Shelter obtiene permi-
so del DOE para distribuir el código fuente del DOE-
Macsyima bajo licencia GNU-GLP para que, en el 2000
se diera inicio al proyecto Maxima en SourceForge
con el fin de mantener y seguir desarrollando el DOE-
Macsyma, conocido ahora como Maxima.
El maxima se puede trabajar directamente en con- Controlando el formato de salida
sola, pero para quienes nos agrada trabajar en un am- pero lo más recomendable es cerrar las secciones que
biente gráfico, está el wxmaxima, que interactúa con el están en ambos lados de la ventana del wxmaxima para Maxima sólo muestra los primeros y últimos 30 dı́gitos
maxima, ofreciendo un ambiente muy práctico y acce- aprovechar la ventana de comandos en la que se resuel- del resultado para números muy grandes. Para obte-
sible para el usuario. ven operaciones con el maxima ner todos los dı́gitos se debe modificar el formato de
salida; en el menú superior seleccionar Maxima +
Cambiar pantalla 2D y elegir el formato de salida as-
cii.

Y aquı́, el paso inicial para resolver una expresión es


Para instalar el wxmaxima+maxima, se puede descar- teclearla directamente, por ejemplo 2+3 y presionar
gar dando click en la página http://andrejv.github. en forma simultánea las teclas Shift + Enter para ob-
io/wxmaxima/download.html. tener el resultado.
Operaciones básicas toma como una variable simbólica. Administrando variables
+(−) suma (algebraica) kill(var) elimina los valores de var
El logaritmos de cualquier base se puede obtener con
∗ producto remvalue(var) elimina los valores de var
/ división log(x) value(var) muestra los valores de var
∧ logb (x) =
o ∗∗ potencia log(b)
sqrt(x) raı́z cuadrada de x se puede usar kill(all) o remvalue(all) para
Trigonométricas e hiperbólicas borrar todas los valores de las variables.
La salida en formato ascii es la salida por defecto de sin(x), asin(x) seno, arcoseno
Maxima y la salida xml es una mejora del wxMaxima cos(x), acos(x) coseno, arcocoseno
de modo que, si se trabaja con wxMaxima no se de- tan(x), atan(x) tangente, arcotangente
be olvidar regresar al formato xml del Maxima con el sec(x), csc(x), cot(x) secante,cosecante,cotangente Álgebra elemental
mismo procedimiento. sinh(x), asinh(x) seno,arcoseno hiperbólicos expand(var) expande productos y poten-
float(x) expresión decimal del valor x cosh(x), acosh(x) coseno, arcocoseno hi- cias de la variable var
numer:true expresión decimal del resultado perbólicos expand(var, n, m) expande productos y sólo las
bfloat(x) expresión decimal larga del valor x tanh(x), atanh(x) tangente, arcotangente hi- potencias entre −m y n
perbólicos factor(expr) factoriza expr
Tomando en cuenta que si se aplica el comando nu-
ev(expr, var = val) evalúa la expresión expr asig-
mer:true, se debe aplicar posteriormente numer:false Otras funciones nando el valor val a la varia-
para obtener nuevamente el resultado exacto que pro- n! factorial de n ble var
porciona Maxima por defecto. entier(x) parte entera de x
Constantes abs(x) valor absoluto de x Expresiones racionales
%pi número π %e número e m!
√ binomial(m, n) C(m, n) = ratexpand(var) expande productos y poten-
1+ 5 n!(m − n)! cias de una expresión racional
%i imaginario %phi razón aurea random(n) número aleatorio entre 0 y n
2 polinomial var
signum(x) signo de x
Maxima da la posibilidad de re-utilizar la entrada ( %i ratsimp(expr) simplifica expresiones racio-
max(x1 , x2 , . . .) máximo de {x1 , x2 , . . .}
n ≡ input n) o salida ( %o n ≡ output n) n−ésima nales
min(x1 , x2 , . . .) mı́nimo de {x1 , x2 , . . .}
tecleándola directamente en cualquier operación. num(f rac) presenta el numerador de
Para la función exponencial, se puede utilizar la cons- Operadores lógicos y relaciones f rac
tante %e (ex ) o bien exp(x), en lo personal, lo más re- is(expr) decide si la expr es falsa o no denom(f rac) presenta el denominador de
comendable es la función exp(x). assume(expr) supone que expr es cierta f rac
forget(expr) olvida el supuesto. fullratsimp(expr) simplifica expresiones racio-
A manera de ejemplo, usando la constante %e y el con- and conectivo lógico y nales con más eficiencia y a
trol de salida numer, en la siguiente salida se puede ver or conectivo lógico o. un mayor costo comp.
que el segundo caso ( %i3) muestra el valor numérico de = = partfrac(f rac, var) descompone fracciones par-
la constante, mientras que el primero muestra sólo la notequal 6= ciales de f rac respecto de la
constante x ≶ y menor/mayor variable var
>= ≤
<= ≥ Expresiones con radicales
Variables y funciones1 radexpand(var) expande radicales de una ex-
presión var
Maxima reconoce cualquier letra como variable, basta radcan(expr) simplifica expresiones con ra-
con usar el sı́mbolo “ : ” para asignarle un expresión y dicales
operarla.
var : val asigna el valor val a la variable var Expresiones con logaritmos
Maxima sólo tiene definido el logaritmo natural con la o bien. . . logexpand(var) expande logaritmos de una
función log(x), ln(x) no está definido, y Maxima lo y : f (x) asigna la expresión f (x) en la variable y expresión var
Trigonométricas e hiperbólicas matrix([a11 , a12 , . . . , a1n ], . . . , [am1 , am2 , . . . , amn ]) eigenvalues(M ) genera los eigenvalores de M
trigexpand(expr) desarrolla eivals(M )
trigsimp(expr) simplifica eigenvectors(M ) genera los eigenvectores de M
 
a11 a12 ... a1n
trigreduce(expr) simplifica  a21 a22 ... a2n  eivects(M )
para obtener  .
 
.. .. .. ..
 . . . . 
diagmatrix(n, x) genera una matriz diagonal
Listas, vectores y matrices am1 am2 ... amn de tamaño n con x en cada
elemento diagonal
Para introducir una lista basta con escribir sus elemen- Se tienen además: ident(n) genera una matriz identidad
tos entre corchetes. de tamaño n
addcol( ) teclee ayuda (? addcol) para
list[r] muestra el r−ésimo elemento de la zeromatrix(n, m) genera una matriz nula de ta-
conocer los valores de entrada
lista con nombre list maño n × m
addrow( ) teclee ayuda (? addcol) para
last(list) muestra el último elemento de list conocer los valores de entrada Sistemas de ecuaciones lineales
part(list) busca un elemento dando su posi- col(M, n) muestra la n−ésima columna algsys([expr1,. . . , sistemas expresiones si-
ción en list. de M exprm],[x1,. . . , multáneas
length(list) muestra la liongitud de list row(M, n) muestra el n−ésimo renglón xn]);
sort(list) presenta la lista en órden ascendente de M linsolve([expr1, sistema de ecuaciones lineales
invierte la lista submatrix(i, M, j) genera una submatriz elimi- ...,
reverse(list) nando la fila i y la columna exprm],[x1,. . . ,
unifica las listas list1 , list2 , . . . j xn])
flatten(list1 , submatrix(ip , . . . , ir , genera una submatriz elimi- solve([expr1,. . . , sistema de ecuaciones
list2 , . . .) matriz, jq , . . . , js ) nando las filas ip , . . . , ir y las exprm],[x1,. . . ,
unique(list) muestra el elemento que aparece columnas jq , . . . , is xn])
sólo una vez en list augcoefmatrix( ) matriz aumentada del siste-
hace una lista en donde cada ele- Operaciones con matrices ma de coeficientes
makelist(expr, mento se obtiene sustituyendo var M1 + M2 suma de matrices
Funciones2
var, n, m) desde n hasta m, en donde expr se k∗M producto escalar.
f(x1,. . . ):=[expr1, define f(x1,. . . )
obtiene a partir de la variable var M 1.M 2 producto de matrices
. . . ];
apply(f un, aplica la f un a todos los elementos M ∧∧ r Eleva M a la potencia r
define(f,[expr1, define f(x1, . . . )
makelist(exp, de la lista. . . . ])
var, n, m) M1 ∗ M2 es un producto elemento a elemento
fundef(f ) muestra la definición
M 1/M 2 divide matrices elemento a elemento
en este caso, un vector es una lista de números. de f
M ∧r Eleva cada elemento de M a la po-
functions presenta la lista de fun-
Operaciones con vectores tencia r
ciones
v1 + v2 suma de vectores
remfunction(f1, borra f1,. . .
k ∗ v producto escalar. y otras funciones matriciales son:
...)
v1.v2 producto interior de vectores
v1 ∗ v2 producto término a término de vectores adjoint(M ) matriz adjunta de M Graficas 2D
transpose (M ) matriz transpuesta de M wxplot2d(f(x), [x,a,b]); Grafica de
Se puede destacar que el producto ∗ no tiene nada que
invert(M ) matriz inversa de M una función
ver con el producto escalar o con el producto interior.
rank(M ) rango de M plot2d(f(x), [x,a,b]);
Además, nótese que sqrt(v1.v1) permite calcular la
determinant(M ) determinante de de M
norma de v1.
mattrace(M ) traza de la matriz M wxplot2d([f1(x),. . . ],[x,a,b]); Grafica de n
Las matrices son una simple generalización de vectores minor(M, i, j) menor correspondiente a la funciones
o listas, de hecho Maxima reconoce matrices mediante entrada i, j de la matriz M plot2d([f1(x),. . . ], [x,a,b]);
Graficas 3D calcula el lı́mite de expr para la variable x superior ( %i12) wxplot2d(cos(x), [x, −3* %pi, 3* %pi])
wxplot3d(f(x,y),[x,a,b],[y,c,d]); Grafica de dir=plus o inferior dir=minus.
una función
Diferenciación Partiendo de los conceptos vistos en la sesión uno (álge-
plot2d(f(x,y),[x,a,b],[y,c,d]);
diff(expr, x1 ,n1 , . . . , xm ,nm ) bra de números complejos) y aprovechando que el octa-
diff(expr, x,n) ve tiene una
wxplot3d([f1(x,y),. . . ],[x,a,b], Grafica de n
diff(expr, x) √ constante i para imaginarios (recordando
[y,c,d]); funciones lo que i = −1); para operar números complejos con-
diff(expr) sideremos el caso en que z1 = 3 + 2i, z2 = −5 + 7i y
plot3d([f1(x,y),. . . ],[x,a,b],
[y,c,d]); muestra la (n, ni )−ésima derivada de la expr, con res- z3 = 3 − 5i. Luego,
pecto a la(s) variable(s) (x, xi ).
con opciones para gráfica polares, funciones paramétri- ( %i1) z1:3+2* %i$ z2:-5+7* %i$ z3:3-5* %i$
cas, de variable discreta, entre otras. Integración
integrate(expr, x, a, b) integral definida z1+z2; /* Suma de complejos */
para a<x<b z1-z2; /* Resta de complejos */
Gráficos usando draw integrate(expr, x) integral indefinida
expand(z2*z3); /* Producto de complejos */
Se han desarrollado en Maxima algunos paquetes adi- z2/z3; /* Cociente de complejos */
cionales que se pueden cargar con la función load(); Programando en Maxima
conjugate(z3);
por mencionar algunos, está disponible por ejemplo:
Bernstein, Draw, Fourie, stats, entre otros, y de If - then - elseif - else realpart(z3);
ellos, la dinámica consiste primero en cargarlo usando for i:a thru b step c do expr
imagpart(z3);
load(draw); ya cargado. resuelve expr desde que i vale a hasta b cada c unidades.
abs(z2); /* Módulo de un complejo */
Opciones: for i:a while i <= b do expr
color color de la gráfica for i:a unless i > b do expr carg(z2); /* Ángulo de número complejos */
line width ancho de la lı́nea. ( %o4) 9 %i−2
nticks partición (tamaño ( %o5) 8−5 %i
de paso) Jugando un poco con Maxima
xlabel, ylabel etiquetas de los ejes ( %o6) 46 %i+20
Sólo a manera de juego (hay muchos foros, trabajos y
xrange, yrange rango de los ejes 7 %i − 5
algunos videos en youtube) y suponiendo que no se sabe ( %o7)
nada. Para las operaciones elementales, se puede verifi- 3 − 5 %i
expresión a graficar: ( %o8) 5 %i+3
car que
explicit(expr,var,a,b) relación explı́cita,
a≤var≤b ( %o9) 3
( %i5) 7+3; 3−10; 7*3; 7/3; 2∧ 3;
parametric(expr,param, relación paramétri- ( %o10) −5
a,b) ca, a≤param≤b ( %o1) 10 √
( %o11) 74
implicit(expr,var1,a,b, relación implı́ci- ( %o2) −7  
var2,c,d) ta, a≤var1≤b, 7
( %o3) 21 ( %o12) π − atan
c≤var2≤d. 5
7
( %o4)
3
Cálculo ( %o5) 8
Lı́mites
limits(expr, x, val, dir) En tanto que, para obtener una representación gráfica
limits(expr, x, val) de una función, digamos el coseno por ejemplo, en el
limits(expr) rango [−3π, 3π], se obtiene tecleando

También podría gustarte