Sucesión con radicales en Haskell

Uno de los problemas de las Olimpiadas matemáticas de este año es el siguiente

Dada la sucesión, definida por
x_0 = 1
x_{n+1} = 2x_n+\sqrt{3x_n^2 -2},
calcular el término 2013 de la misma.

A partir del problema he elaborado, con la colaboración de María J. Hidalgo, la siguiente relación de ejercicios en Haskell para la asignatura de Informática (de 1º del Grado en Matemáticas).

En la relación se presenta 5 definiciones distintas de la sucesión:

  • la primera es traducción directa usando números flotantes con doble precisión,
  • la segunda es una adaptación de la anterior usando números enteros,
  • la tercera es una definición sin radicales basada en propiedades de la sucesión conjeturadas usando la segunda definición,
  • la cuarta es una versión con memoria de la anterior y
  • la quinta es una traducción directa usando números construibles mediante la librería Data.Real.Constructible.

Se observa que las dos primeras definiciones son incorrectas (debido a errores de redondeo), la tercera es correcta pero basada en propiedades no evidentes y además es ineficiente, la cuarta es más eficiente y la quinta es correcta, elemental y eficiente.

La relación de ejercicios, y sus soluciones, es la siguiente
Read More “Sucesión con radicales en Haskell”

Sucesiones auto descriptivas en Haskell

En las Olimpiadas de Matemáticas del 2001 se propuso el siguiente problema

Buscar todas las sucesiones finitas (x(0), x(1),…,x(n)) tales que para todo j, 0 ≤ j ≤ n, x(j) es igual al número de veces que aparece j en la sucesión.

Las sucesiones que cumplen la anterior condición se llaman auto descriptivas. Un ejemplo de sucesión auto descriptiva es [5,2,1,0,0,1,0,0,0] ya que

  • el 0 aparece 5 veces,
  • el 1 aparece 2 veces,
  • el 2 aparece 1 vez,
  • el 3 aparece 0 veces,
  • el 4 aparece 0 veces,
  • el 5 aparece 1 vez,
  • el 6 aparece 0 veces,
  • el 7 aparece 0 veces y
  • el 8 aparece 0 veces.

En la siguiente relación de ejercicios, elaborada para la asignatura de Informática (de 1º del Grado en Matemáticas) y para la siguiente versión del libro Piensa en Haskell, se resuelve el problema con Haskell.
Read More “Sucesiones auto descriptivas en Haskell”