Suma de inversos de potencias de cuatro
Esta semana se ha publicado en Twitter una demostración visual de la suma de inversos de potencias de 4:
1/4 + 1/4² + 1/4³ + ... = 1/3
Definir las funciones
sumaInversosPotenciasDeCuatro :: [Double] aproximacion :: Double -> Int
tales que
- sumaInversosPotenciasDeCuatro es la lista de las suma de la serie de los inversos de las potencias de cuatro. Por ejemplo,
λ> take 6 sumaInversosPotenciasDeCuatro [0.25,0.3125,0.328125,0.33203125,0.3330078125,0.333251953125]
- (aproximacion e) es el menor número de términos de la serie anterior que hay que sumar para que el valor absoluto de su diferencia con 1/3 sea menor que e. Por ejemplo,
aproximacion 0.001 == 4 aproximacion 1e-3 == 4 aproximacion 1e-6 == 9 aproximacion 1e-20 == 26 sumaInversosPotenciasDeCuatro !! 26 == 0.3333333333333333
Soluciones
sumaInversosPotenciasDeCuatro :: [Double] sumaInversosPotenciasDeCuatro = [sum [1 / (4^k) | k <- [1..n]] | n <- [1..]] aproximacion :: Double -> Int aproximacion e = length (takeWhile (>=e) es) where es = [abs (1/3 - x) | x <- sumaInversosPotenciasDeCuatro]