Maxima es capaz de hacer primitivas e integrales para funciones de una variable. También puede realizar integrales utilizando métodos numéricos.
La función erf
, que ha aparecido en los ejemplos es conocida y utilizada por Maxima, se llama función de error de Gauss y aunque está demostrado que no puede ser escrita en términos de las funciones elementales (polinomios, fracciones, senos, cosenos...) es una función muy importante para la probabilidad y la estadística. Dibuje su gráfica con los comandos usando el comando draw2d o
plot2d (véase la sección de gráficos)
Otro ejemplo de función cuya primitiva no puede ser expresada en términos de funciones elementales es sin(x)/x
. Pero la primitiva existe para cualquier valor de x al ser una función continua. El único punto en el que la continuidad no es directa es para x=0.
Pero el cálculo anterior despeja las dudas: definiendo la función en el punto x=0 como 1, la función sin(x)/x
es continua. Pedimos a Maxima que calcule la primitiva, y el resultado lo expresa en términos de una nueva función que, como la precente, posiblemente sea desconocida para usted, pero no para Maxima. Las cuentas siguientes justifican la afirmación.
En ocasiones, como ocurre en ejemplo que viene a continuación, que contiene parámetros, puede suceder que Maxima requiera información adicional sobre los mismos para poder calcular la integral.
Existe un paquete abs_integrate
que permite calcular la integral definida de ciertos integrandos que contienen valores absolutos. Lo ilustramos a continuación con un ejemplo trivial, pero la cuestión no es tan simple como el ejemplo sugiere. El lector interesado debe buscar en el manual de Maxima las posibilidades y limitaciones del paquete.
Empezamos con ejemplo sencillo
Pero Maxima no siempre es capaz de calcular la primitiva por sí sólo.
devuelve una primitiva simbólica a pesar de que, en este caso, puede obtenerse, mediante integración por partes, una primitiva expresable a través de funciones elementales haciendo el cambio de variable y=asin(x) .
Vamos a "guiar" a Maxima para que sea capaz de calcular la primitiva: un ejemplo interesante de mútua y fructífera colaboración.
El algoritmo de Risch es un algoritmo utilizado para el cálculo de primitivas que transforma el problema original en un problema algebraico. Para usarlo en Maxima la sintaxis coincide con la del comando integrate
risch(función,variable)
Ayudando a Maxima adecuadamente el comando integrate también puede obtener el mismo resultado
De hecho, para tratar de calcular una primitiva, Maxima realiza una batería de pruebas heurísticas y si con ninguna de ellas consigue su propósito, entonces emplea el algoritmo de Risch. Utilizando el comando risch
tales pruebas heurísticas se evitan. Dos formas diferentes para conseguir el mismo efecto aparecen a continuación (la segunda es más fácil de recordar).
La respuesta obtenida mediante un comando integrate
puede contener, además de las funciones elementales, otras funciones especiales, entre ellas erf
y beta
En http://en.wikipedia.org/wiki/Error_function puede encontrar más información sobre la función de error erf
y la función beta
http://en.wikipedia.org/wiki/Beta_function.
El cálculo de primitivas (integrales indefinidas) no siempre es posible y por ende hay ocasiones en que la imposibilidad de aplicar la fórmula de Barrow para calcular integrales definidas requiere la utilización de métodos numéricos para poder calcular de integrales.
Maxima implementa de forma nativa dos comandos con esa finalidad: romberg
y quad_qags
; tales comandos corresponden a métodos numéricos conocidos: el método de Romberg (véase http://en.wikipedia.org/wiki/Romberg%27s_method)
y el método QUADPACK (http://en.wikipedia.org/wiki/QUADPACK).
Los argumentos opcionales (encerrados entre los corchetes []) que quad_qags, pueden especificarse en cualquier orden.
Todos ellos toman la forma argumento=valor
. Los argumentos admisibles son:
Se trata de aproximaciones y los decimales coinciden sólo en las primeras cifras.
Puede ser necesario prestar atención a las funciones e intervalos en que se aplica: para la función sin(x)/x
el punto 0 resulta problemático para el comando romberg
, aunque se trate de una función continua en dicho punto.
Comparemos en el caso de la integral de Gauss
En el caso de romberg el valor 100
no puede incrementarse de forma significativa, lo cual no ocurre con quad_qags
áreas de figuras planas.
Para una función f(x)>0
integrable en [a,b] el valor de integrate(f(x),x,a,b) representa el "área bajo la curva" en el sentido que muestra el dibujo de la izquierda. Restando las correspondientes áreas (integrales) puede determinarse el área encerrada entre dos curvas g>f
, que muestra la figura de la derecha.
Los códigos para crear los gráficos que aparecen más abajo forman parte de los ejemplos de la sección Gráficos con draw.
Volúmenes de sólidos de revolución.
Rotaciones en torno al eje 0Y, o al eje 0X, de regiones planas delimitadas por una función f
como las que las imágenes muestran, generan sólidos de revolución cuyo volumen puede ser calculado usando las fórmulas integrales que aparecen.
áreas de sólidos de revolución.
También pueden ser calculada el área de superficie de revolución obtenida girando la curva definida por una función
f(x)>0
en torno al eje 0X.
Integrales múltiples
El cálculo de integrales dobles (o triples) puede ser realizado, cuando el teorema de Fubini es aplicable, mediante integrales iteradas. Nos centraremos en el caso de integrales dobles para las que la intuición geométrica es más sencilla. Se trata de calcular integrales dobles
donde A y B son recintos planos similares a los que se muestran en las figuras siguientes, junto a las cuales se muestra el modelo de integral iterada a utilizar.