introducción a la computación científica

40
Introducción a la Computación Científica con Python Diego Passarella Víctor Viana

Upload: others

Post on 11-Apr-2022

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a la Computación Científica

Introducción a la Computación Científica con Python

Diego Passarella Víctor Viana

Page 2: Introducción a la Computación Científica

02/10/2020 2

Contenido● Computación Científica● Características del curso

● Objetivos● Estructura● Contenido

● ¿Qué es Python?● ¿Por qué Python?● Instalación y configuración● Entornos de desarrollo

Page 3: Introducción a la Computación Científica

02/10/2020 3

Computación CientíficaEs el campo de estudio relacionado con la construcción de modelos matemáticos y técnicas numéricas para resolver problemas científicos, de ciencias sociales y problemas de ingeniería.

Page 4: Introducción a la Computación Científica

02/10/2020 4

El rol de la computación en las Ciencias

La computación científica está a menudo muy relacionada con la teoría, pero posee también muchas características comunes con el trabajo experimental.

Page 5: Introducción a la Computación Científica

02/10/2020 5

Page 6: Introducción a la Computación Científica

02/10/2020 6

Page 7: Introducción a la Computación Científica

02/10/2020 7

Requisitos para la Computación Científica

Replicación y reproducibilidad son dos pilares del método científico.

Page 8: Introducción a la Computación Científica

02/10/2020 8

Requisitos para la Computación Científica● Replicación: Un(a) autor(a) de un artículo científico que

involucra cálculos numéricos debería ser capaz de reproducir los resultados.

● Reproducibilidad: Otrxs científicxs deberían ser capaces de realizar las mismas simulaciones numéricas y obtener los mismos resultados, dada la información acerca de los métodos usados en una publicación.

Page 9: Introducción a la Computación Científica

02/10/2020 9

Para alcanzar estos objetivos, necesitamos:

1) Mantener y documentar exactamente qué código fuente y qué versión fue usada para producir los datos y figuras en artículos publicados.

2) Registrar información sobre qué versión de software externos ha sido usada. Mantener acceso al entorno que fue usado.

3)Asegurarse que los códigos antiguos son respaldados y mantenidos para futura referencia.

Page 10: Introducción a la Computación Científica

02/10/2020 10

Para alcanzar estos objetivos, necesitamos:

4) Estar preparado para suministrar información adicional sobre los métodos usados, y tal vez adicionalmente los códigos de simulación, a un lector interesado que lo solicite.5) Idealmente, los códigos deberían ser publicados en la red, para facilitar que otrxs científicxs interesadxs en el código puedan tener acceso a él.

Page 11: Introducción a la Computación Científica

02/10/2020 11

Objetivos del curso● Desarrollar la habilidad para construir y evaluar

algoritmos que permitan resolver problemas de investigación.

● En particular, se hace énfasis en problemas de modelado y su formulación en un lenguaje de programación para lograr su resolución numérica.

● Se busca además desarrollar las habilidades de evaluar e interpretar resultados numéricos.

Page 12: Introducción a la Computación Científica

02/10/2020 12

Habilidades adquiridas● Metodología para expresar problemas de ingeniería en

lenguaje de programación● Técnicas y prácticas asociadas a la programación

cientifica.● Experiencia en uso de bibliotecas y algoritmos de

computación científica (incluyendo cálculo numérico, optimización y álgebra lineal, gráficas, entre otros)

● Metodología para la presentacion interpretacion de resultados asociados.

Page 13: Introducción a la Computación Científica

02/10/2020 13

Estructura del curso● Presentaciones teóricas y realización de ejemplos● Lectura adicional por parte de los estudiantes● Entrega de ejercicios prácticos

Page 14: Introducción a la Computación Científica

02/10/2020 14

Contenido del curso (I)

● El lenguaje de programación Python– Entornos de programación– Elementos básicos– Variables y asignaciones. Operadores y comparaciones– Tipos de datos– Estructuras de control: condicionales, ciclos y funciones

Page 15: Introducción a la Computación Científica

02/10/2020 15

Contenido del curso (II)

● Vectores y Matrices Multidimensionales– Librería Numpy– Arreglos (vectores) y matrices– Resolución de sistemas de ecuaciones lineales

Page 16: Introducción a la Computación Científica

02/10/2020 16

Contenido del curso (III)

● Gráficos 2D y 3D en Python– Librería Matplotlib

Page 17: Introducción a la Computación Científica

02/10/2020 17

Contenido del curso (IV)

● SciPy - Librería de algoritmos científicos para Python– SciPy contiene módulos para optimización, álgebra lineal,

integración, interpolación, funciones especiales, transformadas rápidas de Fourier, procesamiento de señales y de imagen, resolución de Ecuación Diferencial Ordinaria y otras tareas para la ciencia e ingeniería.

Page 18: Introducción a la Computación Científica

02/10/2020 18

Contenido del curso (V)

● Pandas - Manipulación y análisis de datos – Ofrece estructuras de datos y operaciones para manipular tablas

numéricas y series temporales.

Page 19: Introducción a la Computación Científica

02/10/2020 19

¿Qué es Python?

● Es un lenguaje de programación interpretado, que permite tipado dinámico y es multiplataforma (https://www.python.org)

● Es un lenguaje multiparadigma:● soporta orientación a objetos.● programación imperativa.● programación funcional.

Page 20: Introducción a la Computación Científica

02/10/2020 20

¿Qué es Python?Guido van Rossum, creador (1991)

Page 21: Introducción a la Computación Científica

02/10/2020 21

Características generales de Python● Lenguaje fácil de aprender.● Lenguaje versátil en su utilización.● Lenguaje limpio y simple: código fácil de leer e intuitivo● Incorpora una colección de herramienta básicas para el

tratamiento y visualización de datos.● Suministra un "entorno" unificado e interactivo.● Requiere un tiempo de desarrollo reducido y un tiempo

de ejecución razonable.

Page 22: Introducción a la Computación Científica

02/10/2020 22

Detalles técnicos● Tipado dinámico: No se necesita definir el tipo de las

variables, argumentos de funciones, ni tipos de retorno.

● Manejo de memoria automático: No se necesita reservar explícitamente memoria para las variables y los arreglos de datos.

● Interpretado: No se requiere compilar el código. El intérprete Python lee y ejecuta el código directame.

Page 23: Introducción a la Computación Científica

02/10/2020 23

Ventajas de Python● Facilidad de programar, minimizando el tiempo

requerido para desarrollar, depurar y mantener el código.

● Lenguaje bien diseñado que fomenta muchas buenas prácticas de programación:

● Programación modular y orientada al objeto, buen sistema para empaquetar y reusar código. Esto a menudo resulta en un código más transparente, mantenible, y libre de bugs.

● Documentación estréchamente integrada al código.● Un gran librería estandar, y una gran colección de

paquetes externos.

Page 24: Introducción a la Computación Científica

02/10/2020 24

¿Por qué aprender Python?● Fácil de aprender.● Un conjunto gigante de librerías.● ¡Soporte científico excelente!● Se puede desarrollar software bastante rápido.● Posee una licencia de código abierto.● Una comunidad gigante desarrollando con la cual

realmente se puede contar.

Page 25: Introducción a la Computación Científica

02/10/2020 25

¿Qué hace a Python adecuado para la Computación Científica?

● Gran comunidad de usuarios. Es fácil encontrar ayuda y documentación.

● Extenso ecosistema de librerías científicas y entornos● Numpy: Python Numérico.● Scipy: Python Científico.● Matplotlib: Librerías Gráficas.● Pandas: analisis de datos

Page 26: Introducción a la Computación Científica

02/10/2020 26

¿Qué hace a Python adecuado para la Computación Científica?

Page 27: Introducción a la Computación Científica

02/10/2020 27

¿Qué hace a Python adecuado para la Computación Científica?

● Procesamiento en paralelo.● Comunicación entre procesos (MPI).● Cálculo con GPU (OpenCL y CUDA).● Disponible y apropiado para uso con cluster de cálculo

de alto desempeño (HPC clusters).● ¡Sin costos de licencia y de código abierto!.● Creciente y pujante comunidad apoyando el desarrollo

y evolución del lenguaje.

Page 28: Introducción a la Computación Científica

02/10/2020 28

Instalación de Python (Linux)● Es muy posible que ya esté Python instalado. ● Para verificar que ya lo tienes instalado (y qué versión

es), en una consola y se tipea el siguiente comando:

Page 29: Introducción a la Computación Científica

02/10/2020 29

Instalación de Python (Linux)● Ubuntu

● Tipea este comando en tu consola:– sudo apt install python3.5

● Fedora● Usa este comando en tu consola:

– sudo dnf install python3.5● openSUSE

● Usa este comando en tu consola:– sudo zypper install python3

Page 30: Introducción a la Computación Científica

02/10/2020 30

Instalación de Python (Windows/OS X)● Descargar el .msi (para Windows) o el .dmg (para OS X)

desde https://www.python.org/downloads/

Page 31: Introducción a la Computación Científica

02/10/2020 31

Entornos Python● Python no es sólo un lenguaje de programación, sino

que también la implementación estándar del intérprete que realmente ejecuta el código Python en un computador.

● Existen también muchos entornos distintos a través de los cuales se puede usar el intérprete Python. Cada entorno tiene distintas ventajas y es adecuado para diferentes rutinas de trabajo.

Page 32: Introducción a la Computación Científica

02/10/2020 32

Intérprete de comandos● La forma estándar de usar el lenguaje de programación

es usar el intérprete Python para ejecutar código. ● El intérprete Python es un programa que lee y ejecuta

el código en archivos, que son pasados como argumentos.

● En la consola de comandos, el comando Python se usa para invocar al intérprete Python.

Page 33: Introducción a la Computación Científica

02/10/2020 33

Intérprete de comandos Por ejemplo, para ejecutar un archivo mi-programa.py, que contiene código Python, desde la consola de comandos, use:

$ python mi-programa.py

Page 34: Introducción a la Computación Científica

02/10/2020 34

Intérprete de comandos Podemos también iniciar el intérprete simplemente escribiendo Python en la consola, y escribiendo interactivamente código en el intérprete.

Page 35: Introducción a la Computación Científica

02/10/2020 35

Intérprete de comandos● Las expresiones pueden ser introducidas una a una

para ver el resultado de su evaluación inmediatamente.● Posibilidad de probar porciones de código en el modo

interactivo antes de integrarlo como parte de un programa.

Page 36: Introducción a la Computación Científica

02/10/2020 36

Entornos GUI● Spyder● https://github.com/

spyder-ide/spyder

● Jupyter (IPython) notebook

● http://ipython.org/notebook.html

Page 37: Introducción a la Computación Científica

02/10/2020 37

Algunas pruebas

Para probar código Python sin instalar nada, lo podemos hacer en:

https://repl.it/languages/python3

Page 38: Introducción a la Computación Científica

02/10/2020 38

Con el comando print podemos pedirle al intérprete que escriba lo que queramos:

Page 39: Introducción a la Computación Científica

02/10/2020 39

Page 40: Introducción a la Computación Científica

02/10/2020 40