Desarrollos de Taylor y series de potencias

 

 

indice

Desarrollos de Taylor en una variable

Los desarrollos de Taylor son instrumentos muy valiosos para el estudio de las funciones. Pueden ser utilizados para calcular límites o valores aproximados de funciones. Maxima los emplea internamente para determinadas tareas y los comandos siguientes están a disposición de los usuarios:

El comando taytorat ordena las potencias del polinomio de mayor a menor, que es lo que hace, por defecto, Maxima con cualquier polinomio, independientemente del orden en el que se haya escrito el "input". Ese comportamiento está controlado por la variable powerdisp cuyo valor por defecto es false; para conseguir un orden creciente basta usar
powerdisp: true$, cuyo uso es muy recomendable al usar desarrollos de Taylor.

  1. taylor( (log(1+x))^2, x, 0, 4 );
  2. trunc( taylor( (log(1+x))^2, x, 0, 4 ));
  3. expand( taylor( (log(1+x))^2, x, 0, 4 ));
  4. taytorat( taylor( (log(1+x))^2, x, 0, 4 ));
  5. Si la Función es de la forma f(x)/g(x) y g(x) no tiene términos hasta de grado n, entonces taylor intenta expandir g(x) hasta el grado 2 n. Si aún así no hay términos no nulos, taylor dobla el grado de la expansión de g(x) hasta que el grado de la expansión sea menor o igual que n 2^taylordepth
    taylor (1/(cos(x) - sec(x))^3, x, 0, 5);

Aparentemente la salida los dos primeros es la misma, sin embargo, la comparación de las etiqueta %o da pie a pensar que debe haber alguna diferencia. En el tercero y el cuarto hacen desaparecer los puntos suspensivos.
Realizar operaciones algebraicas usando únicamente el comando taylor puede producir resultados inesperados y erróneos, por lo que es aconsejable utilizarlo dentro de alguno de los otros tres comandos anteriormente indicados. Los ejemplos que vienen a continuación justifican esa forma de operar.

  1. powerdisp: true$ f(x):= sin(x); g(x):= tan(x);
  2. taylor(f(x),x,0,5); taylor(g(x),x,0,5); taylor(g(x),x,0,5)-taylor(f(x),x,0,5);
  3. f(x)- taylor(f(x),x,0,5);
  4. (f(x)-trunc(taylor(f(x),x,0,5)));
  5. (f(x)-expand(taylor(f(x),x,0,5)));

 

Desarrollos de Taylor con resto de Lagrange

Aunque no exista un comando específico para ello, también puede calcularse la expresión del resto de Taylor. Basta con hacer que Maxima realice las operaciones que habría que hacer manualmente. Así, por ejemplo, podemos definir el resto genérico de orden n para una función f(x)


R(n):=diff(subst(c,x,f(x)),c,n)*x^n /n!;

Como aplicación vamos a calcular, para una función concreta, el polinomio de Taylor de orden 4 y el resto de Lagrange de orden 5, donde t está entre 0 y x.


f(x):= log(1+x); taylor(f(x),x,0,4); R(5); f(x) = expand( trunc(taylor(f(x),x,0,4)) ) + R(5);

También podemos construir un nuevo comando, FormulaTaylor, que genere el desarrollo de Taylor con resto de Lagrange, sin hacer uso del comando taylor de Maxima.

Una posible construcción puede ser el siguiente código
(la variable de la función f ha de ser x necesariamente):

/* Definición de un nuevo comando */ FormulaTaylor(f,x0,n):=block([w,PoliTay,R], PoliTay:ev(f,x=x0)+sum(diff(f,x,i)/i!*(z-x)^i,i,1,n), R:ev( diff(f,x,n+1),x=c ), ev(PoliTay,x=x0,z=x)+R*x^(n+1) /(n+1)!);

El comando anterior, de nueva creación, permite calcular la Fórmula de Taylor con resto de Lagrange de orden n para una función f, en el punto x0, donde t está entre x0 y x.

FormulaTaylor(sin(x),0,5);

Una vez verificado su funcionamiento, si necesitamos usarlo regularmente, podemos guardarlo en un fichero independiente y recuperar y ejecutar el código de la definición al comienzo de la sesión.

 

indice

Desarrollos de Taylor en varias variables

  1. taylor(sin(x+y),[x,y],0,5); trunc(%);
  2. taylor(1/sin(x+y),[x,y],0,3);

 

indice

Series de potencias

Maxima es también capaz de realizar desarrollos en serie (infinita) para ciertas funciones mediante

Algunos ejemplos:

  1. powerseries( log(1+x), x, 0 );
  2. powerseries( sin(x)*cos(x), x, 0 );
  3. powerseries( sec(x), x, 0 );

Si ha ejecutado los comandos "powerseries" anteriores habrá podido observar que la apariencia resulta incómoda. Un comando que puede resultar útil en tales casos es

  1. niceindices( powerseries( sin(x)*cos(x), x, 0) );
  2. niceindices( powerseries( -log(x), x, 1) );
  3. atan(1); niceindices( powerseries( atan(x), x, 0) ); subst(x=1,%);

Los últimos cálculos establecen que %pi=4*sum( (-1)^i/(2*i+1),i,0,inf) y como se trata de una serie alternada, el error que se comete al tomar como aproximación de la serie el valor de la suma finita hasta el término n es inferior al valor absoluto del término n+1.
Eso nos permite calcular aproximaciones de %pi haciendo sumas finitas (grandes). Hay series que requieren menos sumandos. Pero la cuestión ahora es ver como hacer sumas finitas en una serie.
Vamos a calcular una aproximación de %pi con error inferior a 10^(-6) utilizando la serie anterior


4*sum( (-1)^i/(2*i+1),i,0,500000),numer; %pi,numer;

 


  1. Ap_Taylor.wxmx
  2. Ap_GenerarAnimaciones.wxmx Muestra visualmente la aproximación de los polinomios de Taylor a la función
  3. Ap_Taylor.wxmx Muestra una aplicación al estudio de desigualdades.