I1M2018: Cálculo numérico en Haskell

En la tercera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios de la relación 19, en la que se definen funciones para resolver los siguientes problemas de cálculo numérico:

  • diferenciación numérica,
  • cálculo de la raíz cuadrada mediante el método de Herón,
  • cálculo de los ceros de una función por el método de Newton y
  • cálculo de funciones inversas.

Un aspecto a destacar desde el punto de vista de la programación es el uso de la abstracción de procedimientos.

Los ejercicios, y sus soluciones, se muestran a continuación.
Read More “I1M2018: Cálculo numérico en Haskell”

I1M2018: Introducción a la programación imperativa con Maxima y Python

En la primera parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas se ha presentado una introducción a la programación con Maxima.

En la presentación se ha seguido 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

Además, se ha comentado

En la segunda parte, se ha presentado una introducción a la programación con Python.

En la presentación se ha seguido el mismo guión con con Maxima reslatando la analogía entre ambos lenguajes y entre sus entornos (WxMaxima y Colaboratory).

El cuaderno de la presentación se encuentra Colaboratory.

I1M2018: Cálculo simbólico con Maxima

En la clase de hoy de Informática de 1º del Grado en Matemáticas se ha mostrado el uso de Maxima como sistema de cálculo simbólico.

La presentación se ha realizado como una serie de relaciones de ejercicios resueltos. En concreto,

Finalmente se ha comentado la bibliografía disponible en la página de la asignatura:

I1M2018: Programación dinámica en Haskell

En la clase hoy de Informática de 1º del Grado en Matemáticas se ha explicado cómo transformar definiciones recursivas en otras con programación dinámica y la mejora en eficiencia obtenida con la transformación.

Para la explicación se han elegido 6 ejemplos:

  • Los números de Fibonacci
  • Coeficientes binomiales
  • Longitud de la subsecuencia común máxima
  • Subsecuencia común máxima
  • Distancia de Levenshtein

El estudio de cada uno de los ejemplos ha consistido en

  • Enunciar el problema
  • Definir una solución por recursión.
  • Transformar la definición recursiva en otra con programación dinámica.
  • Comparar experimentalmente la eficencia de las dos definiciones.

Los apuntes correspondientes a la clase son