Cálculo de primitivas (I)

Ayuda mútua para calcular primitivas

 

ÍNDICE
  1. Experiencias con funciones racionales (I)
  2. Experiencias con funciones racionales (II)
  3. Cambio de variable (I)
  4. Cambio de variable (II)

Maxima es capaz de realizar las primitivas de muchas funciones. Pero ¡que nadie se llame a engaño! son sólo unas pocas. Y no puede ser de otro modo porque Maxima no tiene una varita mágica, sólo sabe hacer algunas de las que son capaces de realizar los humanos y los humanos no sabemos, ni remotamente, hacerlas todas. En el material de clase que utilizamos http://ocw.um.es/ciencias/analisis-matematico-i/material-de-clase en el capítulo «Primitivas» se incluyen pautas precisas para calcular primitivas de determinados tipos de funciones que resultan muy útiles cuando se pueden aplicar.

Pero incluso para funciones racionales, que constituyen el tipo de referencia (por cuanto que la mayor parte de las estrategias que se utilizan tienen como objetivo transformar la primitiva propuesta en una racional) y para las que existe un procedimiento absolutamente pautado de cálculo, se presentan problemas. Desde un punto de vista teórico el procedimiento es impecable: se apoya en el teorema fundamental del Álgebra que establece que cualquier polinomio puede ser factorizado como producto de polinomios de primer grado y de segundo grado sin ceros. El problema es que no dice como realizar esa factorización, que luego permita una descomposición en fracciones simples que es el camino a seguir para garantizar el éxito.

En estas notas sobre «Cálculo de primitivas» aprenderá que Maxima puede ayudarle a calcular primitivas, pero que en muchas ocasiones usted tendrá que colaborar con Maxima para sacar partido de sus posibilidades de ayuda: la mutua colaboración será la clave del éxito. Ese es el sentido del subtítulo de esta sección.

 

Experiencias con funciones racionales (I)

Maxima puede calcular primitivas de funciones racionales que usted sabe hacer incluso antes de iniciar sus estudios universitarios, como es el caso de los ejemplos que siguen.

integrate(1/(1+x)^2,x); tiene por primitiva ¿?
 
integrate(1/(1+x^2),x); tiene por primitiva ¿?

Hay otras, como la que aparece a continuación, que si usted se ha estudiado el material de clase también puede realizar, desde luego no en el tiempo que lo hace Maxima.

integrate(1/(x^4-3*x^3-x+3),x); tiene por primitiva ¿?

porque en última instancia se trata únicamente de factorizar el polinomio y hacer una descomposición en fracciones simples de forma que para cada una de tales fracciones podamos calcular su primitiva de forma elemental. Maxima puede factorizar polinomios usando el comando

y descomponer en fracciones simples usando el comando


factor(x^4-3*x^3-x+3); se factoriza como ¿?

y se descompone en fracciones simples

partfrac(1/(x^4-3*x^3-x+3),x); dando origen a ??

Las primitivas de cada uno de los anteriores sumandos son elementales, por lo cual usted puede hacerla sin dificultad; y también Maxima.

integrate(%,x); obteniendo ??

lo mismo que Maxima había ya calculado al principio sin seguir, aparentemente, estos pasos o siguiéndolos pero sin detallarlos explícitamente.

 

Sin embargo es adecuado señalar que, a pesar de la imagen que proyecta el relato anterior, la situación es «inestable» en el sentido de que pequeñas perturbaciones en la función pueden crear dificultades insalvables desde un punto de vista práctico. Vamos a cambiar en el polinómio x^4-3*x^3-x+3 alguno de los coeficientes, por ejemplo el último, sustituyéndolo por 1.

factor(x^4-3*x^3-x+1); da como respuesta ¿?

lo cual significa que Maxima no sabe factorizarlo... pero la factorización existe ¡lo garantiza el Teorema Fundamental del Álgebra!

Para factorizarlo hay que calcular los ceros o raíces y la estrategia de probar con los divisores del término independiente (que aquí son 1,-1) no da resultado, ya que haciendo las correspondientes evaluaciones obtenemos

ev(x^4-3*x^3-x+1,x=1); da como respuesta ¿? ev(x^4-3*x^3-x+1,x=-1); da como respuesta ¿?

Maxima tiene las mismas dificultades que usted. Pero como él trabaja muy rápido, podemos tratar de ver el aspecto de la gráfica del polinomio.

plot2d(x^4-3*x^3-x+1,[x,-10,10]);

Lo cual nos muestra visualmente algo que ya podríamos saber, sin más que reflexionar un instante: para valores de x alejados de 0 el polinomio es positivo y toma valores grandes. Por tanto tenemos que ir modificándo el intervalo de variación de x a fin de determinar que el polimio tiene dos raíces reales y dos complejas. Las raíces reales las podemos calcular «visualmente» de forma aproximada... pero eso no es suficiente para poder factorizar. Y esa es la razón del fracaso de Maxima y también del nuestro.

 

Experiencias con funciones racionales (II)

Las experiencias anteriores no deben fustrarnos ni hacernos desconfiar de Maxima. Simplemente nos ayudan a tener una mirada más profunda sobre los problemas que abordamos y a ser más críticos. Pero quede claro que Maxima es capaz de hacer muy bien su trabajo, y las siguientes primitivas, que también usted puede calcular a mano, lo demuestran.

integrate((2*x+1)/(x^9 + 3*x^8+3*x^7-x^6-6*x^5-6*x^4-x^3+3*x^2+3*x+1),x); tiene por primitiva ¿?

Que usted puede hacer a mano descomponiendo en fracciones simples

partfrac((2*x+1)/(x^9 + 3*x^8+3*x^7-x^6-6*x^5-6*x^4-x^3+3*x^2+3*x+1),x);

integrate(1/(x^4+x^2+1),x); tiene por primitiva ¿?

partfrac(1/(x^4+x^2+1),x); y su descomposición en fracciones simples es ¿?

Si ahora cambiamos el término de grado cero por el valor 3 la situación cambia completamente ¡Maxima parece no poder hacer nada!

partfrac(1/(x^4+x^2+3),x); produce en Maxima¿?

integrate(1/(x^4+x^2+3),x); produce en Maxima ¿?

Pero x^4+x^2+3 es un polinomio de cuarto grado sin ceros y por tanto sus cuatro raíces son todas complejas. Además al ser la función par, si a+bi es una raíz también lo es -a-bi y por supuesto sus correspondiente complejas conjugadas, a-bi y -a+bi, puesto que el polinomio es de coeficientes reales.

En consecuencia el polinomio se factoriza como

( expand((x-a+b*%i)*(x-a-b*%i)) )* ( expand((x+a+b*%i)*(x+a-b*%i))); produce
((x - a)^2 + b^2) ((x + a)^2 + b^2 )

y sólo falta ya calcular los valores a,b. Pero siendo un polinomio bicuadrado podemos hacer un cambio de variable t=x^2 para reducirlo a un polinomio de segundo grado en t.

subst([x^2=t,x^4=t^2], x^4+x^2+3); obteniendo ¿? cuyas soluciones son solve(%)

El valor de x que corresponde a cada una de las soluciones t anteriores se puede expresar en la forma a+bi y por tanto identificando coeficientes podemos obtener la solución a+bi buscada.

expand( (a+b*%i)^2 ); produce en Maxima ¿?=t

lo cual conduce al siguiente sistema de dos ecuaciones con incognitasa,b

solve( [a^2 -b^2= -1/2, 2*a*b=-sqrt(11)/2],[a,b] ); cuyas soluciones son ¿?

y para lo que estamos buscando nos basta con una de ellas. La factorización del polinomio queda entonces del siguiente modo

x^4+x^2+3=((x - a)^2 + b^2) * ((x + a)^2 + b^2)

En nuestro caso
a= -(sqrt(2*sqrt(3) - 1))/2, b=(sqrt(2* sqrt(3) - 1)* (2* sqrt(3) + 1)* sqrt(11))/22 y por tanto el primero de los factores es

ev(((x - a)^2 + b^2) , a= -(sqrt(2*sqrt(3) - 1))/2, b=(sqrt(2* sqrt(3) - 1)* (2* sqrt(3) + 1)* sqrt(11))/22 ); ¿?

que una vez desarrollado coincide con

P1:expand(%);¿?

Y análogamente para el segundo tenemos

ev( ((x + a)^2 + b^2), a= -(sqrt(2*sqrt(3) - 1))/2, b=(sqrt(2* sqrt(3) - 1)* (2* sqrt(3) + 1)* sqrt(11))/22 ); ¿?

que una vez desarrollado coincide con

P2:expand(%);¿?

Es ahora sencillo comprobar que el producto de estos dos polinomios recupera el polinomio original.

expand(P1*P2); x^4 +x^2 + 3

Por último veamos como Maxima es ahora ya capaz de calcular la primitiva con la ayuda que le hemos prestado

partfrac(1/(P1*P2),x)¿?

Para que el resultado de la primitiva sea más legible para un humano, le hemos dicho a Maxima que la escriba en formato TeX (para lo cual basta poner tex(%)) y luego hemos compilado con TeX el resultado producido por Maxima.

Indice