Week14 discussion Taylor Series Expansion

f(x)=e^x

Taylorf<-function(x,n){
  y=0
  for (i in 0:n) y=y+sum(x^i/factorial(i)) 
  return (y)
} 
Taylorf(1,0)
## [1] 1
Taylorf(1,1)
## [1] 2
Taylorf(1,2)
## [1] 2.5
Taylorf(1,3)
## [1] 2.666667
Taylorf(1,4)
## [1] 2.708333
Taylorf(1,8)
## [1] 2.718279
Taylorf(1,9)
## [1] 2.718282
Taylorf(1,10)
## [1] 2.718282
exp(1)
## [1] 2.718282

Now, find n s.t. the nth Taylor polynomial of \(p_n\)(1) approximates to f(1) to within 0.001 of the actual answer.

library(Ryacas)
## Warning: package 'Ryacas' was built under R version 3.3.3
f <- function(x)  exp(x)
findn<- function(f){
    err=10
    n=0
    while(err>0.001){
      yacas(f) # register f with yacas
      Df <- f
      body(Df) <- yacas(expression(deriv(f(x))))[[1]]
      err=Df(0)/factorial(n+1)*1^(n+1)
      print(err)
      n=n+1
      print(n)
      f<-Df
      print(f)
    }
    return(n)
}
num=findn(f)
## [1] 1
## [1] 1
## function (x) 
## exp(x)
## [1] 0.5
## [1] 2
## function (x) 
## exp(x)
## [1] 0.1666667
## [1] 3
## function (x) 
## exp(x)
## [1] 0.04166667
## [1] 4
## function (x) 
## exp(x)
## [1] 0.008333333
## [1] 5
## function (x) 
## exp(x)
## [1] 0.001388889
## [1] 6
## function (x) 
## exp(x)
## [1] 0.0001984127
## [1] 7
## function (x) 
## exp(x)
num
## [1] 7