Advertisement
Guest User

Untitled

a guest
May 16th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module integral
  2.  
  3.     contains
  4.  
  5.     function calcIntegral (n,sigma,mu) result(integral)
  6.         implicit none
  7.  
  8.         real(8), intent (in) :: sigma, mu
  9.         integer, intent(in) :: n
  10.  
  11.         real(8) :: x, s, h, e, pi, a, b, integral
  12.         integer :: i, subintervalos
  13.  
  14.         !Damos valores a PI, e
  15.         pi=acos(-1d0)
  16.         e=exp(1d0)
  17.  
  18.         !Establecemos los valores de a, b, y el número de subintervalos
  19.         subintervalos=500
  20.         a = dble(n)
  21.         b = 300.0
  22.  
  23.         !Establecemos el valor de h, o "paso"
  24.         h=(b-a)/dble(subintervalos)
  25.  
  26.         !Realizamos el cálculo del sumatorio desde f(a+1) hasta f(b-1)
  27.         s = 0.0
  28.         do i = 1, subintervalos - 1
  29.             x = a + h * dble(i)
  30.             s = s + f(x, sigma, mu)
  31.         end do
  32.  
  33.         !Aplicamos la fórmula del trapecio, una vez hallados todos los datos necesarios
  34.         integral = h * (0.5 * f(a, sigma, mu) + 0.5 * f(b, sigma, mu) + s)
  35.     end function
  36.  
  37.  
  38.     function f(x, sigma, mu) result(myresult)
  39.         implicit none
  40.         real(8), intent (in) :: x, sigma, mu
  41.         real(8) :: myresult, e, pi
  42.  
  43.         e=exp(1.0)
  44.         pi=acos(-1.0)
  45.  
  46.         myresult = 1.0 / (sigma*sqrt(2*pi)) * e**((-(x-mu)**2)/(2*(sigma)**2))
  47.     end function
  48.  
  49. end module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement