taylorIntro.mws

Taylor Series

Definition of Taylor polynomials

Suppose the nth derivative of y = f(x) is defined at x = a . Then the nth Taylor polynomial for f at x = a is defined as follows:

> p[n](x) = sum((D@@i)(f)(a)/i!*(x-a)^i,i=0..n);

p[n](x) = sum(`@@`(D,i)(f)(a)*(x-a)^i/i!,i = 0 .. n...

The Taylor remainder function is defined as R[n](x) = abs(f(x)-p[n](x))

>

Warning, premature end of input

There is a word, taylor , in the Maple vocabulary already which compute Taylor polynomials. Suppose we want the 11 th Taylor polynomial of the sin function at x = 0.

> p11 := taylor(sin(x),x=0,12);

p11 := series(1*x-1/6*x^3+1/120*x^5-1/5040*x^7+1/36...

p11 is not actually a polynomial because of the term at the end which is used to signal which polynomial is represented (in case some of the coefficients are 0). We can convert to a polynomial.

> p11 := convert(p11,polynom);

p11 := x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9-...

The Taylor polynomials are usually good approximations to the function near a. Let's plot the first few polynomials for the sin function at x =0.

> sinplot := plot(sin,-Pi..2*Pi,thickness=2):

> tays:= plots[display](sinplot):
for i from 1 by 2 to 11 do
tpl := convert(taylor(sin(x), x=0,i),polynom):
tays := tays,plots[display]([sinplot,plot(tpl,x=-Pi..2*Pi,y=-2..2,
color=black,title=convert(tpl,string))]) od:

> plots[display]([tays],view=[-Pi..2*Pi,-2..2]);

[Maple Plot]

Animation of Taylor series convergence

The Taylor Polynomials gradually converge to the Taylor Series which is a representation of the original function in some interval of convergence. In this section, we'll see with our own eyes how this convergence takes place in an animation.

First we define a function and a generic Taylor polynomial. Then we define some constant so that our graph desplays for a =< x =< b, and c =<y =< d.

> restart; with(plots):

Warning, the name changecoords has been redefined

> f := x -> sin(x);

f := sin

> on := x -> piecewise( x <0, 0, x < 1, 1,1);

on := proc (x) options operator, arrow; piecewise(x...

> a := -6: b := 6: c := -3: d:= 4:

> g := (x,k) -> convert(series(f(x), x, k), polynom):

> display( plot( f(x), x = a..b, y = c..d, thickness = 3, color = blue), animate( on(t-1)*g(x,2) , x = a..b, t = 0..7, view = c..d, color = cyan), animate( on(t-2)*g(x,4) , x = a..b, t = 0..7, view = c..d, color = coral),animate( on(t-3)*g(x,6) , x = a..b, t = 0..7, view = c..d, color = green), animate( on(t-4)*g(x,8) , x = a..b, t = 0..7, view = c..d, color = violet), animate( on(t-5)*g(x,10) , x = a..b, t = 0..7, view = c..d, color = red), animate( on(t-6)*g(x,12) , x = a..b, t = 0..7, view = c..d, color = coral) );

[Maple Plot]

>

Taylor remainder theorem

Theorem: (Taylor's remainder theorem) If the (n+1)st derivative of f is defined and bounded in absolute value by a number M in the interval from a to x, then R[n](x) <= M/(n+1)!*abs(x-a)^(n+1)

This theorem is essential when you are using Taylor polynomials to approximate functions, because it gives a way of deciding which polynomial to use. Here's an example.

Problem Find the 2nd Taylor polynomial p[2] of f(x) = ln(x)*sin(exp(x))+1 at x = 1. Plot both the polynomial and f on the interval [.5,1.5]. Determine the maximum error in using p[2] to approximate ln(x) in this interval.

Solution:

> f := x -> ln(x)*sin(exp(x))+1;

f := proc (x) options operator, arrow; ln(x)*sin(ex...

> fplot := plot(f,.5..1.5,thickness = 2):

> p[2] := x -> sum((D@@i)(f)(1.)/i!*(x-1.)^i,i=0..2);

p[2] := proc (x) options operator, arrow; sum(`@@`(...

> p[2](x);

.5892187091+.4107812909*x-2.683740378*(x-1.)^2

> t2 := unapply( convert(taylor(f(x),x=1,3),polynom),x);

t2 := proc (x) options operator, arrow; 1+sin(exp(1...

> tplot := plot(t2,1..1.5,color=black):

> plots[display]([fplot,tplot]);

[Maple Plot]

In order to use Taylor's remainder theorem, we need to find a bound M on the 3rd derivative of the function f. In this case, we could just plot the third derivative and eyeball an appropriate value for M.

> plot((D@@3)(f),.5..1.5) ;

[Maple Plot]

We could use M = 75.

> M := 75;

M := 75

So the remainder R2 = abs(f(x)-p2(x)) is bounded by

> M/3!*(1.5-1)^3;

1.562500000

We can see from the plot of f and the polynomial that the actual error is never more than about .1 on the interval [.5,1.5].

Another example :

Which Taylor polynomial would you use to approximate the sin function on the interval from -Pi to Pi to within 1/10^6?

Solution:

Well, 1 is a bound on any derivative of the sin on any interval. So we need to solve the inequality

> ineq := 1/n!*Pi^n <= 1/10^6;

ineq := Pi^n/n! <= 1/1000000

for n. Solve will not be much help here because of the factorial, but we can find the smallest n by running through a loop.

> n := 1: while evalf(1/n!*Pi^n) > 1/10^6 do n := n+1 od: print (`take n to be `,n);

`take n to be `, 17

> (seq(evalf( 1/n!*Pi^n) ,n=15..20));

.2191535349e-4, .4303069596e-5, .7952054018e-6, .13...

> restart;

> t17 := convert(taylor(sin(x),x=0,18),polynom);

t17 := x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9-...

> plot(t17,x=-Pi..Pi);

[Maple Plot]

Looks pretty much like the sin function.