0votos

Calcular la integral definida de una función en Haskell

por josejuan hace 6 años

Mi solución, paraleliza el cálculo de forma eficiente.

Dada una función "f(x)" con dominio e imagen reales, calcular la integral definida entre los puntos "a" y "b" por el método del trapecio realizando "n" divisiones.

1
2
3
4
5
6
7
8
9
10
11
12
13
-- La aplicación directa de la definición, sería la siguiente: 
integrator f a b n = sum.map((e*).f).take n $ [a + m, a + m + e..] 
  where e = (b - a) / fromIntegral n 
        m = e / 2 
 
 
 
-- Paralelizar el caso anterior, requiere establecer un valor de corte para la paralelización 
integrator'' f a b n = if n < 1000 then integrator f a b n else u `par` v `pseq` (u + v) 
           where u = integrator'' f a m n2 
                 v = integrator'' f m b n2 
                 m = (a + b) / 2 
                 n2 = n `div` 2 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.