Revisar las notas de Tere: 4.4 Rendimiento en R | Estadística Computacional para analizar el uso de recursos computacionales en los métodos de integración del rectángulo, trapecio y Simpson de 1.5.Integracion_numerica.
También podemos medir tiempos con el paquete tictoc:
In [ ]:
install.packages("tictoc",lib="/usr/local/lib/R/site-library/",
repos="https://cran.itam.mx/",verbose=TRUE)
Ejemplo:
In [1]:
library(tictoc)
In [2]:
f<-function(x)exp(-x**2)
In [3]:
a<-0
b<-1
n<-10**6
h_hat<-(b-a)/n
Forma secuencial
In [4]:
Rcf1<-function(f,a,b,n){
#Compute numerical approximation using rectangle or mid-point method in
#an interval.
#Nodes are generated via formula: x_i = a+(i+1/2)h_hat for i=0,1,...,n-1 and h_hat=(b-a)/n
#Args:
# f (function): function of integrand
# a (int): left point of interval
# b (int): right point of interval
# n (int): number of subintervals
#Returns:
# Rcf (float)
h_hat<-(b-a)/n
sum_res<-0
for(j in 0:(n-1)){
x<-a+(j+1/2.0)*h_hat
sum_res<-sum_res+f(x)
}
h_hat*sum_res
}
In [5]:
system.time(aprox<-Rcf1(f,a,b,n))
In [6]:
err_relativo<-function(aprox,obj)abs(aprox-obj)/abs(obj)
In [7]:
obj<-integrate(Vectorize(f),a,b) #en la documentación de integrate
#se menciona que se utilice Vectorize
In [8]:
err_relativo(aprox,obj$value)
In [12]:
tic("medición de sleep + regla del trapecio secuencial")
tic("medición de tiempo de regla de trapecio secuencial con tictoc")
tic()
Rcf1(f,a,b,n)
toc()
Sys.sleep(1)
toc()