Introducción a la Computación Científica con Python
Diego Passarella Víctor Viana
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
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.
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.
02/10/2020 5
02/10/2020 6
02/10/2020 7
Requisitos para la Computación Científica
Replicación y reproducibilidad son dos pilares del método científico.
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.
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.
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.
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.
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.
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
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
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
02/10/2020 16
Contenido del curso (III)
● Gráficos 2D y 3D en Python– Librería Matplotlib
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.
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.
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.
02/10/2020 20
¿Qué es Python?Guido van Rossum, creador (1991)
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.
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.
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.
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.
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
02/10/2020 26
¿Qué hace a Python adecuado para 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.
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:
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
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/
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.
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.
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
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.
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.
02/10/2020 36
Entornos GUI● Spyder● https://github.com/
spyder-ide/spyder
● Jupyter (IPython) notebook
● http://ipython.org/notebook.html
02/10/2020 37
Algunas pruebas
Para probar código Python sin instalar nada, lo podemos hacer en:
https://repl.it/languages/python3
02/10/2020 38
Con el comando print podemos pedirle al intérprete que escriba lo que queramos:
02/10/2020 39
02/10/2020 40
Top Related