1)
#e^1 n = 4
1 + 1 + 1/factorial(2) + 1/factorial(3) + 1/factorial(4)
## [1] 2.708333333333333
#e^3 n = 4
1 + 3 + 3^2/factorial(2) + 3^3/factorial(3) + 3^4/factorial(4)
## [1] 16.375
2)
pol_exp = function(x,n){
if((n<0)||(n%%1 != 0)) stop("n tem que ser um natural")
if(!is.numeric(x)) stop("x tem que ser real")
soma = 1
for(i in 1:n){
soma = soma + x^(i)/factorial(i)
}
return(soma)
}
{plot(exp,-4,4)
grid()
segments(x0=0,y0=0,x1=0,y1=150,lty=2)
curve(pol_exp(x,n=2),add=T,col="violet")
curve(pol_exp(x,n=3),add=T,col="red")
curve(pol_exp(x,n=4),add=T,col="blue")
curve(pol_exp(x,n=5),add=T,col="green")}

3)
pol_exp_delta = function(x,delta = 0.001){
if(!is.numeric(x)) stop("x tem que ser real")
soma = 1
for(i in 1:10){
soma = soma + x^(i)/factorial(i)
}
i = 11
while(TRUE){
incre = x^(i)/factorial(i)
if(abs(incre) < delta){
return(soma)
}else{
soma = soma + incre
}
i = i + 1
}
}
pol_exp_delta(1/2)
## [1] 1.6487212706873655
## [1] 1.6487212707001282
## [1] 1480.2987408255419
## [1] 1480.299927584545
4)
pol_exp_delta_n = function(x,delta = 0.001){
if(!is.numeric(x)) stop("x tem que ser real")
soma = 1
for(i in 1:10){
soma = soma + x^(i)/factorial(i)
}
i = 11
while(TRUE){
incre = x^(i)/factorial(i)
if(abs(incre) < delta){
return(list("Soma" = soma,
"Interações" = i))
}else{
soma = soma + incre
}
i = i + 1
}
}
data.frame("x" = c(1/2,7.3),
"exp" = c(exp(1/2),exp(7.3)),
"aprox_ex" = c(pol_exp_delta_n(1/2)[[1]],pol_exp_delta_n(7.3)[[1]]),
"interações" = c(pol_exp_delta_n(1/2)[[2]],pol_exp_delta_n(7.3)[[2]]))
## x exp aprox_ex interações
## 1 0.5000000000000000 1.6487212707001282 1.6487212706873655 11
## 2 7.2999999999999998 1480.2999275845450029 1480.2987408255419268 24
5)
(1/10 - 1) - (1/10 -1)^2 / 2 + (1/10 -1)^3 / 3 - (1/10 - 1)^4 / 4
## [1] -1.7120250000000004
(3/5 - 1) - (3/5 -1)^2 / 2 + (3/5 -1)^3 / 3 - (3/5 -1)^4 /4
## [1] -0.50773333333333337
(4 - 1) - (4 -1)^2 / 2 + (4 -1)^3 / 3 - (4-1)^4 / 4
## [1] -12.75
# A aproximação mais precisa é aquela que está mais próxima de x0 = 1. Então, temos mais precisão no ponto 3/5 = 0.6, comparado a 1/10 = 0.1 .
6)
pol_ln = function(x,n){
if((n<0)||(n%%1 != 0)) stop("n tem que ser um natural")
if(!is.numeric(x)) stop("x tem que ser real")
soma = 0
for(i in 0:n){
soma = soma + (-1)^i * (((x-1)^(i+1))/(i+1))
}
return(soma)
}
{plot(log,0,4)
grid()
segments(x0=1,y0=-4,x1=1,y1=10,lty=2)
curve(pol_ln(x,n=2),add=T,col="violet")
curve(pol_ln(x,n=3),add=T,col="red")
curve(pol_ln(x,n=4),add=T,col="blue")
curve(pol_ln(x,n=5),add=T,col="green")}

7)
pol_ln_delta = function(x,delta = 0.001){
if(x<=0) stop("X precisa ser maior que 0")
if(!is.numeric(x)) stop("x tem que ser real")
if(x>=2) return(-pol_ln_delta(1/x,delta))
soma = 0
for(i in 0:10){
soma = soma + ((-1)^i) * (((x-1)^(i+1))/(i+1))
}
i = 11
while(TRUE){
incre = ((-1)^i) * (((x-1)^(i+1))/(i+1))
if(abs(incre) < delta){
return(soma)
}else{
soma = soma + incre
}
i = i + 1
}
}
data.frame("x" = c(0.1,2,10,3.8),
"ln(x)" = c(log(0.1),log(2),log(10),log(3.8)),
"aprox_ln(x)" = c(pol_ln_delta(0.1),pol_ln_delta(2),
pol_ln_delta(10),pol_ln_delta(3.8)))
## x ln.x. aprox_ln.x.
## 1 0.10000000000000001 -2.30258509299404546 -2.29493382048387318
## 2 2.00000000000000000 0.69314718055994529 0.69310924535533891
## 3 10.00000000000000000 2.30258509299404590 2.29493382048387318
## 4 3.79999999999999982 1.33500106673233998 1.33176135671266427
8)
aprox_ln_base = function(x,b,delta = 0.001){
return(pol_ln_delta(x,delta)/pol_ln_delta(b,delta))
}
aprox_ln_base(100,10)
## [1] 1.9761165952155055
9)
aprox_sen = function(x,delta = 0.001){
if(x > pi) return(aprox_sen(x - 2*pi, delta))
if(x < -pi) return(aprox_sen(x + 2*pi, delta))
soma = 0
for(i in 0:10){
soma = soma + ((-1)^(i))*(x^(2*i + 1))/factorial(2*i + 1)
}
i = 11
while(TRUE){
incre = ((-1)^(i))*(x^(2*i + 1))/factorial(2*i + 1)
if(abs(incre) < delta){
return(soma)
}else{
soma = soma + incre
}
i = i + 1
}
}
data.frame("x" = c(2,25,50,pi/3),
"sen(x)" = c(sin(2),sin(25),sin(50),sin(pi/3)),
"aprox_sen(x)" = c(aprox_sen(2),aprox_sen(25),aprox_sen(50),aprox_sen(pi/3)))
## x sen.x. aprox_sen.x.
## 1 2.0000000000000000 0.90929742682568171 0.90929742682568204
## 2 25.0000000000000000 -0.13235175009777303 -0.13235175009777206
## 3 50.0000000000000000 -0.26237485370392877 -0.26237485370392682
## 4 1.0471975511965976 0.86602540378443860 0.86602540378443849
10)
aprox_cos = function(x, delta = 0.001){
return(aprox_sen(x + pi/2, delta))
}
data.frame("x" = c(1,54,45,pi/3),
"cos(x)" = c(cos(1),cos(54),cos(45),cos(pi/3)),
"aprox_cos(x)" = c(aprox_cos(1),aprox_cos(54),aprox_cos(45),aprox_cos(pi/3)))
## x cos.x. aprox_cos.x.
## 1 1.0000000000000000 0.54030230586813977 0.54030230586824313
## 2 54.0000000000000000 -0.82930983286315019 -0.82930983286314786
## 3 45.0000000000000000 0.52532198881772973 0.52532198881784797
## 4 1.0471975511965976 0.50000000000000011 0.50000000000015721