0 calificaciones0% encontró este documento útil (0 votos)
8 vistas4 páginas
El Maxima es un programa para resolver expresiones simbólicas y numéricas con orígenes en 1967. Se puede instalar Maxima y wxMaxima para proporcionar una interfaz gráfica. Maxima permite realizar operaciones básicas, funciones trigonométricas, hiperbólicas y más mediante comandos como sin, cos, log y expand. El usuario puede controlar variables y el formato de salida para personalizar los resultados.
El Maxima es un programa para resolver expresiones simbólicas y numéricas con orígenes en 1967. Se puede instalar Maxima y wxMaxima para proporcionar una interfaz gráfica. Maxima permite realizar operaciones básicas, funciones trigonométricas, hiperbólicas y más mediante comandos como sin, cos, log y expand. El usuario puede controlar variables y el formato de salida para personalizar los resultados.
El Maxima es un programa para resolver expresiones simbólicas y numéricas con orígenes en 1967. Se puede instalar Maxima y wxMaxima para proporcionar una interfaz gráfica. Maxima permite realizar operaciones básicas, funciones trigonométricas, hiperbólicas y más mediante comandos como sin, cos, log y expand. El usuario puede controlar variables y el formato de salida para personalizar los resultados.
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