I1M2015: El TAD de los conjuntos en Haskell

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado el tipo abstracto de datos de los conjuntos y tres de sus implementaciones en Haskell.

Se ha seguido el mismo patrón que en los anteriores tipos de datos:

  • elección de las operaciones básicas,
  • especificación de sus propiedades,
  • implementación en Haskell mediante no ordenadas con duplicados,
  • implementación en Haskell mediante listas no ordenadas sin duplicados,
  • implementación en Haskell mediante listas ordenadas sin duplicados,
  • análisis de la complejidad de las definiciones de las operaciones básicas en las tres implementaciones y
  • verificación con QuickCheck de sus propiedades características.

Las transparencias usadas en la clase son las del tema 17.

También se ha comentado el uso de la librería de conjuntos de Haskell y la complejidad de sus operaciones.

Finalmente, se ha comentado la librería de conjuntos de Maxima.

I1M2015: Introducción a la programación con Maxima

El objetivo fundamental de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas ha sido presentar una introducción a la programación con Maxima.

En la primera parte, se ha presentado

A continuación, usando wxMaxima se ha mostrado cómo usar Maxima como calculadora científica avanzado viendo cómo realizar cálculos aritméticos, expansiones y simplificaciones e expresiones algebraicas, soluciones de ecuaciones, cálculo de límites, cálculo con matrices y representación de gráficas.

En la segunda parte de la clase se ha realizado la introducción a la programación con Maxima usando como entorno Emacs en lugar de wxMaxima. El contenido de la presentación está aquí se corresponde con el siguiente guión:

  1. Maxima como calculadora
  2. Variables y asignaciones
  3. Bloques de instrucciones
  4. Definición de funciones
  5. Escritura y lectura
  6. La estructura condicional: condicionales simples y múltiple.
  7. Estructuras iterativas: bucles mientras, hasta y para.
  8. Recursión

Finalmente, se ha comentado un resumen de las principales funciones de Maxima.

Las tablas de equivalencia entre funciones de Maxima y Haskell se encuentran aquí.

Libro de introducción al cálculo simbólico con Maxima (versión 2)

En una entrada anterior anuncié la publicación de la primera versión de un libro de introducción al cálculo simbólico con Maxima.

He publicado una nueva versión del libro en la que he eliminado erratas e incluidos los comentarios recibidos.

Esta nueva versión es la que usaré este curso en la asignatura de Informática de 1º de Matemáticas.

En el libro se hace una presentación de Maxima a través de ejercicios resueltos (que se comentan en clases) y propuestos (para resolver por los alumnos en la wiki de la asignatura y, posteriormente, comentar as soluciones en clase).

Esta es la segunda versión del libro y he incluido también las soluciones de los ejercicios propuestos. Espero vuestros comentarios para las siguientes versiones.

Programas compactos para calcular pi con la fórmula de Leibniz

En artículos anteriores hemos comparado la eficiencia de programas en distintos lenguajes. En este vamos a comparar la simplicidad de los programas para resolver un problema.

Como ejemplo he elegido el problema del cálculo compacto del número \pi mediante la fórmula de Leibniz


<br />    \pi = 4 \times \left(1 - \dfrac{1}{3} + \dfrac{1}{5} - \dfrac{1}{7} + \dots\right)<br />

El enunciado de problema es el siguiente

Escribir un programa, con el menor número posible de caracteres, para calcular el número \pi usando la fórmula de Leibniz con un error menor que 0.00001.

El problema se ha planteado en Code Golf: Leibniz formula for Pi y se han escrito distintas respuestas que resumo al final del artículo. Antes voy a presentar programas compactos en nuestros lenguajes habituales (Haskell, Maxima y Common Lisp).

Read More “Programas compactos para calcular pi con la fórmula de Leibniz”