Olimpíada Matemática Argentina

Investigación y docencia

Apuntes

Matemáticas y programación

Primera versión: 12/1/2019, revisado: 17/5/2021

Descripción

Introducción a la programación de algoritmos matemáticos con Python usando el “entorno” Idle, concretada en los apuntes del curso Computación para carreras de ingeniería de la Facultad de Ingeniería Química de la Universidad Nacional del Litoral (Santa Fe).

La “distribución” consta de un archivo pdf, algunos módulos para Python y dos archivos de texto para practicar.

También hay “películas” mostrando distintos recorridos de un grafo (sólo versiones pdf) y módulos de Python y archivos de GeoGebra para visualizar la convergencia de los métodos numéricos iterativos para resolver ecuaciones.

Instalando Python e Idle

La página Instalando Python y el entorno Idle tiene instrucciones para los ansiosos que no pueden esperar a leer el apunte (¡o no quieren!) y prefieren instalar Python antes.

Archivo pdf
  • apuntes.pdf

    El archivo tiene un formato como para imprimir dos páginas en una carilla de hoja A4, o leerse en pantalla ocupando una franja vertical con vínculos incorporados.

Archivos Python (codificación UTF-8)
Archivos de texto (codificación UTF-8)
“Películas” ilustrando distintos recorridos de grafos

Las “películas” muestran el resultado de hacer recorrido a lo ancho (fifo), en produndidad (lifo) y una variante de lifo que llamé “dfs” donde se agrega a la cola sólo un vecino cada vez. Los dos primeros recorridos se describen en el apunte, mientras que el tercero se puede obtener a partir del recorrido recursivo, también descripto en el apunte.

Los recorridos están hechos tanto en un árbol binario como en una “circulante” donde los vecinos son dos antes y dos después sobre un ciclo.

Con la notación del apunte, la lista de aristas del árbol binario es:

aristas = [[1, 2], [1, 3], [2, 4], [2, 5], [3, 6],
           [3, 7], [4, 8], [4, 9], [5, 10], [5, 11],
           [6, 12], [6, 13], [7, 14], [7, 15]]

mientras que en la circulante, la lista de aristas es:

aristas = [[1, 2], [1, 3], [1, 8], [1, 9], [2, 3],
           [2, 4], [2, 9], [3, 4], [3, 5], [4, 5],
           [4, 6], [5, 6], [5, 7], [6, 7], [6, 8],
           [7, 8], [7, 9], [8, 9]]
  • Recorrido en profundidad (LIFO): lifo-arbol, lifo-circ.
  • Recorrido a lo ancho (FIFO): fifo-arbol, fifo-circ.
  • Variante de LIFO: dfs-arbol, dfs-circ.

    La diferencia con el recorrido LIFO anterior es que el vértice sale de la cola recién cuando ya se han examinado todos sus vecinos que entraron después a la cola y ya no están más allí sino en el árbol.

Visualización de métodos numéricos con Python

Módulos Python para visualizar funciones y la convergencia de métodos numéricos iterativos, eligiendo distintos puntos iniciales.

  • graficar es el módulo básico que usan todos los módulos siguientes.

    Usarlo como “caja negra” (ni se mira ni se toca).

  • “Plantillas” para el gráfico de funciones, ¡estos se pueden mirar y tocar!
    • grseno: gráfico del seno.
    • grexplog: gráfico de una función y su inversa (la exponencial y el logaritmo).
    • gr1sobrex: muestra cómo graficar una función discontinua.
  • Las siguientes son “plantillas” para el uso de méotodos de punto fijo descriptos en el apunte: ¡otras que se pueden mirar y tocar!

    Estos tres módulos necesitan tanto del módulo graficar como del módulo grnumerico, en el que se definen las funciones para graficar los métodos (ponerlos en un directorio/carpeta apropiado pero no cambiar estos dos últimos módulos).

  • Hay fractales que se obtienen a partir de la convergencia o no de métodos de punto fijo. En el apunte se ilustran el conjunto de Mandelbrot y uno asociado al método de Newton, ambos en el plano complejo.

    Como en computadoras viejas estos gráficos pueden tardar en completarse, incluimos versiones pdf:

Visualización de métodos numéricos con GeoGebra

En la página personal de GeoGebra, hay algunas activides que pueden ser de interés:

  • Los métodos bisección, punto fijo y Newton para resolver ecuaciones no lineales, son traducciones de los correspondientes módulos de Python con graficar (dentro de Gráficos de puntos y curvas, a su vez dentro de Python).
  • Simpson es una ilustración del método de Simpson para aproximar el valor de integrales.
  • Fichas armónicas es una ilustración de cómo las sumas parciales de la serie armónica crecen sin cota, ejemplificada haciendo una “pila” de fichas que se extienden todo lo que se quiera más allá de la mesa que las sostiene.

    Es una de las actividades del apunte Hasta el infinito... y más acá.