Taylor's Theorem
Taylor polynomials
> p[n](x) = sum((D@@i)(f)(a)/i!*(x-a)^i,i=0..n);
The Taylor remainder function is defined as
> p11 := taylor(sin(x),x=0,12);
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);
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]);
Just how close the polynomials are to the function is determined using Taylor's theorem below.
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
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 at . 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;
> 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](x);
> t2 := unapply( convert(taylor(f(x),x=1,3),polynom),x);
> tplot := plot(t2,1..1.5,color=black):
> plots[display]([fplot,tplot]);
> plot((D@@3)(f),.5..1.5) ;
We could use M = 75.
> M := 75;
So the remainder is bounded by
> M/3!*(1.5-1)^3;
>
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;
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);
> (seq(evalf( 1/n!*Pi^n) ,n=15..20));
> restart;
> t17 := convert(taylor(sin(x),x=0,18),polynom);
> plot(t17,x=-Pi..Pi);
Looks pretty much like the sin function.
Problems
Exercise: Show that is approximated to within 7 decimals by for all x in .
at x=1, on the interval [-1,3].
at x =0 on the interval [-2,2]
at x = 0 on the interval [-2..2]
Exercise: Write a procedure to compute sin(x) for any x by using p[5]. restricted to the interval [0,Pi/4].
Outline of solution : If x is negative, replace x with and use the oddness property. If x is greater than or equal to 2*Pi, then replace x with x-2*Pi and use the periodicity . Repeat this step until [0, 2*Pi ). If Pi/4 < x < Pi/2 , then use the trig indentity
and approximate by . If and , then . If and , then .
>
>
>
or so to do this problem.)
>
>