Cálculo de pi mediante la fórmula de Euler
El pasado 6 de marzo se publicó en Twitter un mensaje con una fórmula de Euler para el cálculo de pi
Definir las funciones
1 2 |
aproximacionPi :: Int -> Double grafica :: [Int] -> IO () |
tales que
- (aproximacionPi n) es la n-ésima aproximación de pi con la fórmula de Euler. Por ejemplo,
1 2 3 4 5 6 7 8 |
aproximacionPi 1 == 2.449489742783178 aproximacionPi 10 == 3.04936163598207 aproximacionPi 100 == 3.1320765318091053 aproximacionPi 1000 == 3.1406380562059946 aproximacionPi 10000 == 3.1414971639472147 aproximacionPi 100000 == 3.141583104326456 aproximacionPi 1000000 == 3.1415916986605086 pi == 3.141592653589793 |
- (grafica xs) dibuja la gráfica de las k-ésimas aproximaciones de pi para k en xs. Por ejemplo, (grafica [1..100]) dibuja
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 |
import Graphics.Gnuplot.Simple (Attribute (Key, PNG), plotList) aproximacionPi :: Int -> Double aproximacionPi n = sqrt (6 * sum [1/k^2 | k <- [1.0..fromIntegral n]]) grafica :: [Int] -> IO () grafica xs = plotList [ Key Nothing -- , PNG "Calculo_de_pi_mediante_la_formula_de_Euler_1.png" ] [(k,aproximacionPi k) | k <- xs] |
Nuevas soluciones
- En los comentarios se pueden escribir nuevas soluciones.
- El código se debe escribir entre una línea con <pre lang="haskell"> y otra con </pre>