Ir al contenido principal

Números de Catalan

Los números de Catalan forman la sucesión cuyo término general es

Números de Catalan

Los primeros números de Catalan son

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786

Los números de Catalan satisfacen la siguiente relación de recurrencia:

Números de Catalan

Asintóticamente, los números de Catalan crecen como:

Números de Catalan

considerando que el cociente entre el n-ésimo número de Catalan y la expresión de la derecha tiende hacia 1 cuando n tiende a infinito.

Definir las funciones

catalan :: [Integer]
grafica :: Int -> Int -> IO ()

tales que

  • catalan es la lista de términos de la sucesión de Catalan. Por ejemplo,
λ> take 12 catalan
[1,1,2,5,14,42,132,429,1430,4862,16796,58786]
λ> length (show (catalan !! 50000))
30096
  • (grafica a b) dibuja los n-ésimos términos de la sucesión de Catalan, para n entre a y b, junto con los de la expresión de la derecha de

Números de Catalan

Por ejemplo, (grafica 5 10) dibuja

Números de Catalan

y (grafica 55 60) dibuja

Números de Catalan


Soluciones

import Graphics.Gnuplot.Simple

catalan :: [Integer]
catalan = scanl (\c n -> c*2*(2*n-1) `div` (n+1)) 1 [1..]

grafica :: Int -> Int -> IO ()
grafica a b =
  plotLists [Key Nothing]
            [[(fromIntegral n, fromIntegral (catalan !! n)) | n <- [a..b]]
            ,[(n,4**n/(n**(3/2)*(sqrt pi))) | n <- [c..d]]]
  where c, d :: Double
        c = fromIntegral a
        d = fromIntegral b