# Tema 14: Introducción a Maxima

Maxima es un sistema de cálculo simbólico que puede manipular símbolos y
obtener soluciones exactas a muchos problemas matemáticos.   

## Primeros pasos con Maxima

Las órdenes que van a a ser evaluadas se escriben en el entorno apropiado
(pulsar F5). 

Cada línea de comando termina con (;) que no es necesario escribir. 

Para calcular 5+(2/3)^(-2)
* Pulsar F5 para entrar en el entorno de evaluación.
* Escribir la expresión 5+(2/3)^(-2) y pulsar (Mayus.+Enter). 
* Después, pulsar F6 para volver a un entorno de texto.

5+(2/3)^(-2);

## Maxima como calculadora

Vamos a proporcionar una idea rápida de los diferentes tipos de comandos que se
utilizan para comunicarse con Maxima. El objetivo no es de ser exhaustivos,
sino de empezar a realizar cálculos simples.  

100!;

Observad que no se han mostrado todas las cifras. Para poder ver todas las
cifras, se escribe: 

set_display(ascii)$ 100!; set_display(xml)$

sqrt(4);

 sqrt(5);

Observad que la segunda raiz la muestra de forma simbólica. La razón es que
Maxima sólo realiza los cálculos exactos, salvo que se especifique lo
contrario. Por ejemplo, con el comando float: 

float(%);

El símbolo % recupera el último resultado calculado.

Para denotar una variable pueden usarse minúsculas, mayúsculas y  cifras. Para
asignar un valos a una variable, Maxima utiliza los dos puntos : y no el signo
=, que se reserva para representar ecuaciones.  

a : 5^2;

Una variable se puede usar en cálculos posteriores: 

sqrt(a)+1/a;

No es necesario que una variable tenga un valor asignado para usarla en
expresiones. 

c:b^2;

sqrt(c);

Observad que Maxima puede trabajar a nivel simbólico. Hay que tener en cuenta 
que Maxima distingue entre letras minúsculas y mayúsculas.

a+A;

Exp(0); exp(0);

Maxima tiene algunas constantes predefinidas: %pi, %e (base del logaritmo
neperiano), %i (unidad compleja), inf (más infinito) y minf (menos infinito) 

log(%e);

%pi;

float(%pi);

## Los complejos

z:(1+%i)^2/(1-2*%i);

Para escribir z en forma algebraica, se utiliza el comando:

rectform(z);

rectform(z);

Obtención de las partes real e imaginaria de un número complejo:

realpart(z); imagpart(z);

Módulo y argumento de z :

abs(z) ; carg(z);

## Cálculos algebraicos básicos

Desarrollar, factorizar o simplificar una expresión

y : (a+b)^4;

expand(%o33);

factor(%);

factor(x^4-1);

Para sustituir x por 3/z en la expresión anterior,  se utiliza la función subst

subst(3/z,x,%);

La función ratsimp(f) realiza una simplificación racional de f y de todas sus
subexpresiones, devolviendo una expresión con un denominador común. 

ratsimp(%);

## Ecuaciones y símbolos de ecuaciones

solve(1+z+z^2=0,z);

Es posible anular el valor asignado a una variable mediante la función kill.
Para introducir un sistema de ecuaciones se una la función syst y para
resolverlo, la función solve. 

kill(y)$ syst : [m*x+y=1, x-m^2*y=m];

solve(syst,[x,y]);

solve(A*x^2+B*x+C=0,x);

Maxima realiza una resolución aproximada de una ecuación mediante el comando
find_root(ecuación,incógnita,ex_inf,ex_sup); 

find_root(cos(x)=x,x,0,%pi);

find_root(sin(x)=x, x, 0, %pi);

## Obtención de la ayuda para una función

Para obtener ayuda sobre una función, basta situarse sobre la función y pulsar
F1. Por ejemplo, para la función "is": 

is(sqrt(t^2)=t);

is(sqrt(t^2)=abs(t));

is(t>0);

Fin.