He estado realizando un traductor entre Maxima y Octave. Maxima es un programa de cálculo simbólico. Octave es un programa de cálculo numérico. Este traductor permite combinar el cálculo simbólico con el cálculo numérico.Veamos un ejemplo, vamos a hacer una derivada, por ejemplo la derivada de asin(x)*x**2:En QtOctave tecleamos:
d = maxima(”diff(asin(x)*x**2,x)”)
Si todo marcha bien nos responderá:
d = ((2)*(x))*(asin(x))+(x)**(2)/sqrt(1-(x)**(2))
Se puede evaluar cuánto vale esta derivada para x=2:
x=2;
eval(d)
Responderá:
ans = 6.2832 + 2.9584i
Es decir, se ha calculado la derivada de forma simbólica (usando Maxima) y después se ha evaluado en x=2 usando Octave.
En casos como las derivadas, combiene usar este esquema, pues las derivadas numéricas son muy inexactas (y en algunos casos totalmente erróneas).
Como se puede ver en el ejemplo anterior, se ha introducido un nuevo comando en Octave, el comando maxima. Este comando tiene la siguiente sintaxis:
resultado= maxima(comando)
En comando se introduce una cadena que representa el comando que se le va a enviar a maxima. Debe ser un comando de Maxima y no de Octave. Maxima permite hacer derivadas, integrales, autovalores, ecuaciones diferenciales,…
Por ejemplo, para calcular una integral:
integral_x = maxima(”integrate(sin(x)*cos(x),x)”)
En este caso calculará la integral de sin(x)*cos(x).
Todavía está en fase de pruebas, lo que se llama una versión alfa. Está recien codificada y llena de fallos. La mayoría de los fallos ni son conocidos. Por ello es conveniente no usarla para producción. Además su proceso de compilación, no es acto para novatos. Por lo que he decidido no colgarlo en la red. El que desee probarlo, puede dejar un comentario en este articulo y yo le enviaré las fuentes.