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