La serie de Taylor

La serie de Taylor

 

Si la función f y sus primeras n+1 derivadas son continuas, en un intervalo que contiene a y x, entonces el valor de la función esta dado por:

 

 

Con frecuencia es conveniente simplificar la serie de Taylor definiendo un paso h = xi+1 - xi  expresando la serie de Taylor como:

 

 

Uso de la expansión en serie de Taylor para aproximar una función con un número infinito de derivadas.

 

Utilizar los términos de la serie de Taylor con n= 0 hasta 6 para aproximar la función f(x) = cos(x) en xi+1 = p/3 y sus derivadas en xi = p/4. Esto significa que h = p/3- p/4 = p/12, los valores de las derivadas y el error de aproximación se presenta en la siguiente tabla.

 

Orden n

fn(x)

fn(p/4)

error (%)

0

cos(x)

0.707106781

-41.4

1

-sen(x)

0.521986659

-4.4

2

-cos(x)

0.497754491

0.449

3

sen(x)

0.499869147

2.62x10-2

4

cos(x)

0.500007551

-1.51x10-3

5

-sen(x)

0.500000304

-6.08x10-5

6

-cos(x)

0.499999988

2.40x10-6

 

 

Note, que a medida que se introducen más términos, la aproximación se vuelve más exacta y el porcentaje de error disminuye. En general podemos tener una aproximación polinomial de la función coseno, con sus derivadas en cero dada por

 

Orden n

fn(x)

fn(0)

0

cos(x)

1

1

-sen(x)

0

2

-cos(x)

-1

3

sen(x)

0

4

cos(x)

1

5

-sen(x)

0

6

-cos(x)

-1

7

sen(x)

0

8

cos(x)

1

9

-sen(x)

0

10

-cos(x)

-1

 

La aproximación polinomial final queda:

 

 

La implementación en Java es:

 

class funciones

{

 

  public static double coseno(double x)

  {

    int i;

    double s = 0;

    int signo = 1;

 

    for(i=0; i<10; i+=2)

    {

      s += signo*pow(x, i) / factorial(i);

      signo *= -1;

    }

 

    return s;

  }

 

  public static double seno(double x)

  {

    int i;

    double s = 0;

    int signo = 1;

 

    for(i=1; i<10; i+=2)

    {

      s += signo*pow(x, i) / factorial(i);

      signo *= -1;

    }

 

    return s;

  }

 

  public static double factorial(int x)

  {

    int i;

    double fact = 1;

 

    for(i=1; i<=x; i++)

      fact *= i;

 

    return fact;

  }

 

  public static double pow(double x, int n)

  {

 

    int i;

    double pow =1;

 

    if(x==0) return 0;

 

    for(i=1; i<=n; i++)

      pow = pow*x;

 

    return pow;

  }

}

 

El programa principal para realizar el llamado es:

 

public class ej053 {

  public static void main(String[] args) {

 

    int i,N;

 

    double inicio = -3.1416, fin = 3.1416, incremento = 0.1;

    N = (int)((fin - inicio)/incremento) + 1;

 

    double x[] = new double [N];

    double y[] = new double [N];

    double z[] = new double [N];

 

    for(i=0;  i<N; i++)

    {

      x[i] = inicio + incremento *i;

      y[i] = funciones.seno(x[i]);

      z[i] = funciones.coseno(x[i]);

    }

 

    grafica g = new grafica("Funcion seno");

    g.Datos(x,y);

    g.Datos(x,z);

    g.show();

  }

}

 

Note en este último código, el uso de la función gráfica que permite desplegar una función dada como dos arreglos de datos.

 

Uso de la serie de Taylor para estimar errores de Truncamiento.

 

La serie de Taylor es muy útil para hacer la estimación de errores de truncamiento. Esta estimación ya la realizamos en los ejemplos anteriores. Recordemos que la serie de Taylor la podemos representar como:

 

 

Ahora, truncando la serie después del término con la primera derivada, se obtiene:

 

 

Despejando el valor de v’, tenemos:

 

 

El primer término de la ecuación represente la aproximación de la derivada y el segundo el error de truncamiento.  Note que el error de truncamiento se hace más pequeño a medida que ti+1 – ti (incremento) se hace pequeño. Así que podemos hacer una buena aproximación de derivadas utilizando el primer término, siempre y cuando se utilicen incrementos pequeños.

 

Regresar.