f<-function(s){log(s^2*sin(s) + cos(s))}
curve(f,0,2.5)

d2fn<-function(s){h=10^{-6};(f(s+h)-2*f(s)+f(s-h))/(h^2)} # Derivada segunda numérica
curve(d2fn,0,2.5) # Vemos graficamente que a derivada tem módulo menor que 5 nesse intervalo.

Trap<-function(f,a,b,n){ # Regra dos traézios 
h=(b-a)/n
x=seq(a,b,by=h)
p=0 
for ( i in 1:n){
p=p+( f(x[i])+f(x[i+1]) )*(x[i+1]-x[i])/2
}
return(p)
}

n=1000000
a=0; b=2.5
h=(b-a)/n; h

print("Aproximacao da integral");Trap(f,a,b,n) # Isso nos diz que a integral, no intervalor [0,2.5] é maior que 1, com erro limitado a segurir.
Erro=5*(b-a)^3/(2*n^2); print("Com erro menor que"); Erro

# Definimos o seguinte processo para determinar a solução da equação g(t)=1, com erro menor que 10^{-4}>h.
f<-function(s){log(s^2*sin(s) + cos(s))}
curve(f,0,2.5)

d2fn<-function(s){h=10^{-6};(f(s+h)-2*f(s)+f(s-h))/(h^2)} # Derivada segunda numérica
curve(d2fn,0,2.5) # Vemos graficamente que a derivada tem módulo menor que 5 nesse intervalo.

Trap<-function(f,a,b,n){ # Regra dos traézios 
h=(b-a)/n
x=seq(a,b,by=h)
p=0 
for ( i in 1:n){
p=p+( f(x[i])+f(x[i+1]) )*(x[i+1]-x[i])/2
}
return(p)
}

n=250000
a=0; b=2.5
h=(b-a)/n; h

print("Aproximacao da integral");Trap(f,a,b,n) # Isso nos diz que a integral, no intervalor [0,2.5] é maior que 1, com erro limitado a segurir.
Erro=5*(b-a)^3/(2*n^2); print("Com erro menor que"); Erro

# Definimos o seguinte processo para determinar a solução da equação g(t)=1, com erro menor que 10^{-4}>h.
x=seq(a,b,by=h)
i=1
p=0
q=p
while ( p<1 ){
q=p
p=p+( f(x[i])+f(x[i+1]) )*(x[i+1]-x[i])/2
i=i+1}
print("t aproximado");print(x[i-1],digits=22);print("Aproximação para g(t)");print(q,digits=22)
Erro=5*(x[i-1]-a)^3/(2*i^2); print("Com erro na integral menor que"); Erro

# Segunda estimativa 
print("t aproximado");print(x[i],digits=22);print("Aproximação para g(t)");print(p,digits=22)
Erro=5*(x[i]-a)^3/(2*i^2); print("Com erro na integral menor que"); Erro

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: