introduccion a python para el c´ omputo´...

90
Python para el c ´ omputo cient´ ıfico – David P. Sanders p. 1 Introducci ´ on a Python para el C ´ omputo Cient´ ıfico David P. Sanders Departamento de F´ ısica Facultad de Ciencias, UNAM http://sistemas.fciencias.unam.mx/ ˜ dsanders [email protected] Seminario de F´ ısica y C ´ omputo 11/03/2010

Upload: phungphuc

Post on 27-Sep-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python para el computo cientıfico – David P. Sanders p. 1

Introducci on a Python para el C omputoCientıfico

David P. Sanders

Departamento de FısicaFacultad de Ciencias, UNAM

http://sistemas.fciencias.unam.mx/ ˜ [email protected]

Seminario de Fısica y C omputo11/03/2010

Page 2: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Contenido

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 2

❏ Computo cientıfico y Python

❏ Herramientas de visualizacion en 2D

❏ Herramientas de computo cientıfico

❏ Herramientas de visualizacion en 3D

❏ Entornos integrados

❏ Conclusiones

Page 3: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Computo cientıfico moderno

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 3

❏ ¿Que necesitamos para computo cientıfico moderno?

Page 4: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Computo cientıfico moderno

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 3

❏ ¿Que necesitamos para computo cientıfico moderno?

❏ Lenguaje de alto nivel

❏ Pensemos en algoritmo, no detalles de implementacion

Page 5: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Computo cientıfico moderno

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 3

❏ ¿Que necesitamos para computo cientıfico moderno?

❏ Lenguaje de alto nivel

❏ Pensemos en algoritmo, no detalles de implementacion

❏ Codigo facil de entender, isomorfo al problema matematico

Page 6: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Computo cientıfico moderno

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 3

❏ ¿Que necesitamos para computo cientıfico moderno?

❏ Lenguaje de alto nivel

❏ Pensemos en algoritmo, no detalles de implementacion

❏ Codigo facil de entender, isomorfo al problema matematico

❏ Soluciones: Python, C++, Fortran90

Page 7: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Computo cientıfico moderno

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 3

❏ ¿Que necesitamos para computo cientıfico moderno?

❏ Lenguaje de alto nivel

❏ Pensemos en algoritmo, no detalles de implementacion

❏ Codigo facil de entender, isomorfo al problema matematico

❏ Soluciones: Python, C++, Fortran90

❏ Esta platica: presentar Python y su “ecosistema”

Page 8: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

El lenguaje Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 4

Page 9: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 5

❏ Lenguaje de programacion interpretado:

Page 10: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 5

❏ Lenguaje de programacion interpretado:

muy bueno

Page 11: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 5

❏ Lenguaje de programacion interpretado:

muy bueno muy bonito

Page 12: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 5

❏ Lenguaje de programacion interpretado:

muy bueno muy bonito. . . muy, pero muy barato

Page 13: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 5

❏ Lenguaje de programacion interpretado:

muy bueno muy bonito. . . muy, pero muy barato

Software librehttp://www.python.org

Page 14: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 5

❏ Lenguaje de programacion interpretado:

muy bueno muy bonito. . . muy, pero muy barato

Software librehttp://www.python.org

❏ Sencillo de aprender

❏ Facil de utilizar

❏ Poderoso

Page 15: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Entorno interactivo

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 6

❏ Entorno interactivo: ipython

❏ sudo apt-get install ipython

Page 16: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Entorno interactivo

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 6

❏ Entorno interactivo: ipython

❏ sudo apt-get install ipython

2 + 22 ** 2 ** 2 ** 2

Page 17: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Entorno interactivo

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 6

❏ Entorno interactivo: ipython

❏ sudo apt-get install ipython

2 + 22 ** 2 ** 2 ** 2

2 ** 2 ** 2 ** 2 ** 2

Page 18: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Entorno interactivo

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 6

❏ Entorno interactivo: ipython

❏ sudo apt-get install ipython

2 + 22 ** 2 ** 2 ** 2

2 ** 2 ** 2 ** 2 ** 2

❏ Variables:

x = -3.2 + 1j # numeros complejosy = x ** 2 - 7.5print y

Page 19: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Listas y bucles

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 7

❏ Listas:

l = [3, 4, 5]l. <TAB>l.append?

Page 20: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Listas y bucles

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 7

❏ Listas:

l = [3, 4, 5]l. <TAB>l.append?

❏ Introspeccion: examinar objetos

Page 21: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Listas y bucles

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 7

❏ Listas:

l = [3, 4, 5]l. <TAB>l.append?

❏ Introspeccion: examinar objetos

❏ Bucles:

for i in l:print 2* i

Page 22: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Listas y bucles

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 7

❏ Listas:

l = [3, 4, 5]l. <TAB>l.append?

❏ Introspeccion: examinar objetos

❏ Bucles:

for i in l:print 2* i

❏ Estructura: espacio en blanco

Page 23: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Listas y bucles

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 7

❏ Listas:

l = [3, 4, 5]l. <TAB>l.append?

❏ Introspeccion: examinar objetos

❏ Bucles:

for i in l:print 2* i

❏ Estructura: espacio en blanco

a, b = 1, 1while a < 100:print a,a, b = b, a+b

Page 24: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Condicionales y funciones

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 8

❏ Condicionales:

a = 1000; b = -3if a > 0 and b > 0:print "Positivos"

else:print "Al menos uno negativo"

Page 25: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Condicionales y funciones

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 8

❏ Condicionales:

a = 1000; b = -3if a > 0 and b > 0:print "Positivos"

else:print "Al menos uno negativo"

❏ Funciones:

Page 26: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Condicionales y funciones

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 8

❏ Condicionales:

a = 1000; b = -3if a > 0 and b > 0:print "Positivos"

else:print "Al menos uno negativo"

❏ Funciones:

def duplicar(x):return 2* x

duplicar(3)duplicar( "David" )

❏ Tipos son automaticos

❏ Todo tiene un valor

Page 27: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Programas y librerıas

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 9

❏ Poner comandos en archivo: script

❏ Incluir bibliotecas con import

Page 28: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Programas y librerıas

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 9

❏ Poner comandos en archivo: script

❏ Incluir bibliotecas con import

❏ Calculo de e:

import mathee = 1.0factorial = 1resultados = []

Page 29: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Programas y librerıas

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 9

❏ Poner comandos en archivo: script

❏ Incluir bibliotecas con import

❏ Calculo de e:

import mathee = 1.0factorial = 1resultados = []

for i in range(1, 10):factorial * = i # factorial = factorial * iee += 1. / factorialresultados.append(math.exp(1) - ee)

Page 30: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Programas y librerıas

• Moderno

El lenguaje Python

• Python

• Interactivo

• Listas y bucles• Condicionales yfunciones• Programas ylibrerıas

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 9

❏ Poner comandos en archivo: script

❏ Incluir bibliotecas con import

❏ Calculo de e:

import mathee = 1.0factorial = 1resultados = []

for i in range(1, 10):factorial * = i # factorial = factorial * iee += 1. / factorialresultados.append(math.exp(1) - ee)

❏ Lista es estructura de datos flexible e importante

❏ Correr desde ipython con run exp

Page 31: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visualizaci on en 2D

• Moderno

El lenguaje Python

Visualizaci on en 2D

• Graficas en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 10

Page 32: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Graficas en 2D

• Moderno

El lenguaje Python

Visualizaci on en 2D

• Graficas en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 11

❏ Paquete: matplotlib / pylab

❏ Parecido a MATLAB

❏ ipython -pylab

Page 33: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Graficas en 2D

• Moderno

El lenguaje Python

Visualizaci on en 2D

• Graficas en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 11

❏ Paquete: matplotlib / pylab

❏ Parecido a MATLAB

❏ ipython -pylab

plot(res, 'o' ) # puntosplot(res, 'o-' ) # puntos y lineas

xlabel( 'Numero terminos $n$' )ylabel( 'Aproximacion $\sum_ { i=0 } ˆn x_i$' )

clf() # limpiar pantallasemilogy(res, 'o' )

❏ Posibilidad de utilizar etiquetas estilo LATEX

Page 34: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Graficas en 2D

• Moderno

El lenguaje Python

Visualizaci on en 2D

• Graficas en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 11

❏ Paquete: matplotlib / pylab

❏ Parecido a MATLAB

❏ ipython -pylab

plot(res, 'o' ) # puntosplot(res, 'o-' ) # puntos y lineas

xlabel( 'Numero terminos $n$' )ylabel( 'Aproximacion $\sum_ { i=0 } ˆn x_i$' )

clf() # limpiar pantallasemilogy(res, 'o' )

❏ Posibilidad de utilizar etiquetas estilo LATEX

❏ Trivial de guardar en calidad para publicacion (PDF):

savefig( 'exp.pdf' )

Page 35: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Computo cientıfico

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 12

Page 36: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Arreglos, vectores, matrices

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 13

❏ Paquete numpy provee arreglos, vectores y matrices

❏ sudo apt-get install python-numpy

Page 37: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Arreglos, vectores, matrices

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 13

❏ Paquete numpy provee arreglos, vectores y matrices

❏ sudo apt-get install python-numpy

❏ Objeto basico: array :

from numpy import *x = array([3., 4.])v = array([0.1, 2.])dt = 0.1

x = x + v * dtx += v * dt

Page 38: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Arreglos, vectores, matrices

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 13

❏ Paquete numpy provee arreglos, vectores y matrices

❏ sudo apt-get install python-numpy

❏ Objeto basico: array :

from numpy import *x = array([3., 4.])v = array([0.1, 2.])dt = 0.1

x = x + v * dtx += v * dt

❏ Concepto basico en programacion cientıfica moderna:

Tratar a vectores como unidad indivisible

Page 39: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Caminatas aleatorias en 1D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 14

❏ Cada caminante brinca a la izquierda o derecha al azar

Page 40: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Caminatas aleatorias en 1D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 14

❏ Cada caminante brinca a la izquierda o derecha al azar

from pylab import *N = 1e6pos = zeros(N)for t in range(10):

pos += uniform(-1, 1, N)h = hist(pos, 100)

Page 41: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Caminatas aleatorias en 1D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 14

❏ Cada caminante brinca a la izquierda o derecha al azar

from pylab import *N = 1e6pos = zeros(N)for t in range(10):

pos += uniform(-1, 1, N)h = hist(pos, 100)

❏ Discreto:

from pylab import *N = 1e5pos = zeros(N)for veces in range(10):for t in range(1):

pos += 2 * (uniform(-1, 1, N) > 0) - 1h = hist(pos, 100, histtype= 'step' , normed= True)

Page 42: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Caminatas aleatorias en 1D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 14

❏ Cada caminante brinca a la izquierda o derecha al azar

from pylab import *N = 1e6pos = zeros(N)for t in range(10):

pos += uniform(-1, 1, N)h = hist(pos, 100)

❏ Discreto:

from pylab import *N = 1e5pos = zeros(N)for veces in range(10):for t in range(1):

pos += 2 * (uniform(-1, 1, N) > 0) - 1h = hist(pos, 100, histtype= 'step' , normed= True)

❏ Utilizar timeit para ver cual es mas rapido

Page 43: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Caminatas aleatorias en 2D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 15

❏ Animar con pylab :

from pylab import *ion()N = 1e5pos = zeros((N,2))

figure(figsize=(10,10))p, = plot(pos[:,0], pos[:,1], ',' )axis([-30,30,-30,30])

for t in range(1000):pos += 2 * uniform(-1,1,N * 2).reshape(N,2)p.recache()draw()

Page 44: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Valores propios

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 16

❏ Matriz aleatoria, hacer simetrica:

M = rand(1000, 1000)M = M + M.T

Page 45: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Valores propios

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 16

❏ Matriz aleatoria, hacer simetrica:

M = rand(1000, 1000)M = M + M.T

❏ Encontrar valores propios y ordenar:

time lamb = eigvalsh(M)lamb.sort()lamb = lamb[:-1] # remover ultimo

❏ Encontrar diferencias de valores propios consecutivos:

diff = lamb[1:] - lamb[:-1]hist(diff, 100, normed= True )

Page 46: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Valores propios

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 16

❏ Matriz aleatoria, hacer simetrica:

M = rand(1000, 1000)M = M + M.T

❏ Encontrar valores propios y ordenar:

time lamb = eigvalsh(M)lamb.sort()lamb = lamb[:-1] # remover ultimo

❏ Encontrar diferencias de valores propios consecutivos:

diff = lamb[1:] - lamb[:-1]hist(diff, 100, normed= True )

❏ Repetir para mejor estadıstica:

diff.extend( list (lamb[1:] - lamb[:-1]) )

Page 47: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Metodo de Euler

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 17

❏ Resolver x = f (x,t) con metodo de Euler

from pylab import *

def paso_euler(x, t, f):return f(x,t)

Page 48: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Metodo de Euler

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 17

❏ Resolver x = f (x,t) con metodo de Euler

from pylab import *

def paso_euler(x, t, f):return f(x,t)

def integrar(x0, t_final, h, f):lista_t = []; lista_x = []x = x0; t = 0.

while t < t_final:lista_t.append(t); lista_x.append(x)

derivada = paso_euler(x, t, h, f)x += h * derivada; t += h

return lista_t, lista_x

Page 49: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Euler II

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 18

❏ Definir funcion que integrar:

def logistica(x, t):return x* (5. - x)

Page 50: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Euler II

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 18

❏ Definir funcion que integrar:

def logistica(x, t):return x* (5. - x)

❏ Integrar y dibujar:

dt = 0.2; t_final = 5; x0 = 0.1t, x = integrar(x0, t_final, dt, logistica, euler)plot(t, x, 'bo-' , label= 'euler' )show()

Page 51: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Extendiendo a m as metodos

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 19

❏ Runge–Kutta II:

def rk2(x, t, h, f):k1 = f(x,t)k2 = f(x + 0.5 * h* k1, t+0.5 * h)return k2

Page 52: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Extendiendo a m as metodos

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 19

❏ Runge–Kutta II:

def rk2(x, t, h, f):k1 = f(x,t)k2 = f(x + 0.5 * h* k1, t+0.5 * h)return k2

❏ Tratar funciones como objetos:

metodos = [euler, rk2, rk4]

for metodo in metodos:t, x = integrar(x0, t_final, dt, logistica, \

metodo)plot(t, x, 'o-' , label=metodo.__name__)

legend(); show()

Page 53: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ecuaciones diferenciales vectoriales

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 20

❏ Funcion 2D:

def harmonico(x_vec, t):xx, yy = x_vec # separar componentesreturn array([yy, -xx]) # regresar vector

Page 54: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ecuaciones diferenciales vectoriales

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 20

❏ Funcion 2D:

def harmonico(x_vec, t):xx, yy = x_vec # separar componentesreturn array([yy, -xx]) # regresar vector

❏ Cambiar lista_x.append(x) alista_x.append(array(x)) – crea copia

Page 55: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ecuaciones diferenciales vectoriales

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 20

❏ Funcion 2D:

def harmonico(x_vec, t):xx, yy = x_vec # separar componentesreturn array([yy, -xx]) # regresar vector

❏ Cambiar lista_x.append(x) alista_x.append(array(x)) – crea copia

❏ Punto:

¡Mismısimo codigo funciona para escalares o vectores!

Page 56: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Librerıas para c omputo cientıfico

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 21

❏ Librerıa scipy : apt-get install python-scipy

❏ Funciones especiales:

from scipy import specialt = arange(0., 30., 0.1)plot( t, special.j0(t), t, zeros( len(t)) )

Page 57: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Librerıas para c omputo cientıfico

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 21

❏ Librerıa scipy : apt-get install python-scipy

❏ Funciones especiales:

from scipy import specialt = arange(0., 30., 0.1)plot( t, special.j0(t), t, zeros( len(t)) )

❏ Diferencias finitas:

N = 20; A = zeros( (N, N) )for i in range(1,N-1):

A[i, i-1:i+2] = 1, -2, 1

Page 58: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Librerıas para c omputo cientıfico

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 21

❏ Librerıa scipy : apt-get install python-scipy

❏ Funciones especiales:

from scipy import specialt = arange(0., 30., 0.1)plot( t, special.j0(t), t, zeros( len(t)) )

❏ Diferencias finitas:

N = 20; A = zeros( (N, N) )for i in range(1,N-1):

A[i, i-1:i+2] = 1, -2, 1

lamb, v = eig(A)v = v.Tindice = argsort(lamb)lamb = lamb[indice]; v = v[indice]plot(v[-3], 'o' )

Page 59: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Librerıas para c omputo cientıfico

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 21

❏ Librerıa scipy : apt-get install python-scipy

❏ Funciones especiales:

from scipy import specialt = arange(0., 30., 0.1)plot( t, special.j0(t), t, zeros( len(t)) )

❏ Diferencias finitas:

N = 20; A = zeros( (N, N) )for i in range(1,N-1):

A[i, i-1:i+2] = 1, -2, 1

lamb, v = eig(A)v = v.Tindice = argsort(lamb)lamb = lamb[indice]; v = v[indice]plot(v[-3], 'o' )

❏ Contiene estadıstica, raıces, optimizacion, transformadasde Fourier,. . .

Page 60: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python como pegamento

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 22

❏ Uso muy comun (e.g. Google): “pegamento”

❏ Mejor shell para correr simulaciones:

import (s)nombre = "wang_landau"L = 10; traslape = 3pos = 0ventanas = []

Page 61: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Python como pegamento

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

• Numpy

• Caminatas

• Caminatas 2D

• Valores propios

• Euler

• Euler II

• Mas metodos

• Vectorial

• Scipy

• Pegamento

Visualizaci on en 3D

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 22

❏ Uso muy comun (e.g. Google): “pegamento”

❏ Mejor shell para correr simulaciones:

import (s)nombre = "wang_landau"L = 10; traslape = 3pos = 0ventanas = []

for i in range(10):ventanas.append( (pos, pos+L) )pos += L - traslape

for i in ventanas:comando = "%s %d %d" % (nombre, i[0], i[1])print comandoos.system(comando)

Page 62: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visualizaci on en 3D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 23

Page 63: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visual Python

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 24

❏ Visual Python: Herramienta para animaciones en 2D y 3D

❏ Sumamente facil de utilizar desde el primer momento

Page 64: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visual Python

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 24

❏ Visual Python: Herramienta para animaciones en 2D y 3D

❏ Sumamente facil de utilizar desde el primer momento

❏ sudo apt-get install python-visual

Page 65: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visual Python

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 24

❏ Visual Python: Herramienta para animaciones en 2D y 3D

❏ Sumamente facil de utilizar desde el primer momento

❏ sudo apt-get install python-visual

from visual import *s = sphere()

Page 66: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visual Python

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 24

❏ Visual Python: Herramienta para animaciones en 2D y 3D

❏ Sumamente facil de utilizar desde el primer momento

❏ sudo apt-get install python-visual

from visual import *s = sphere()

s.color = color.red()s.pos = 1, 0, 0

Page 67: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visual Python

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 24

❏ Visual Python: Herramienta para animaciones en 2D y 3D

❏ Sumamente facil de utilizar desde el primer momento

❏ sudo apt-get install python-visual

from visual import *s = sphere()

s.color = color.red()s.pos = 1, 0, 0

❏ Animacion: mover un poco cada vez

Page 68: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visual Python

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 24

❏ Visual Python: Herramienta para animaciones en 2D y 3D

❏ Sumamente facil de utilizar desde el primer momento

❏ sudo apt-get install python-visual

from visual import *s = sphere()

s.color = color.red()s.pos = 1, 0, 0

❏ Animacion: mover un poco cada vez

b = box(); b.height = 0.1s = sphere(radius = 0.2)s2 = sphere(radius=0.2)s2.color = color.bluefor i in xrange(1000):

rate(100) # limitar velocidad de animacions.pos = i/1000., 0, 0

Page 69: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visualizaci on de datos en 3D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 25

❏ MayaVi2: visualizacion de datos en 3D, equivalente depylab

❏ sudo apt-get install mayavi2

❏ Interactivo con ipython -wthread

Page 70: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visualizaci on de datos en 3D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 25

❏ MayaVi2: visualizacion de datos en 3D, equivalente depylab

❏ sudo apt-get install mayavi2

❏ Interactivo con ipython -wthread

from enthought.mayavi import mlabx = rand(10); y = rand(10); z = rand(10)mlab.points3d(x, y, z)c = rand(10)mlab.points3d(x, y, z, c)

Page 71: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Visualizaci on de datos en 3D

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 25

❏ MayaVi2: visualizacion de datos en 3D, equivalente depylab

❏ sudo apt-get install mayavi2

❏ Interactivo con ipython -wthread

from enthought.mayavi import mlabx = rand(10); y = rand(10); z = rand(10)mlab.points3d(x, y, z)c = rand(10)mlab.points3d(x, y, z, c)

Page 72: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

MayaVi avanzado

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 26

❏ Partıcula en potencial 3D:

import numpy as npdef V(x, y, z):return np.cos(10 * x) + np.cos(10 * y) + \np.cos(10 * z) + 2 * (x ** 2 + y ** 2 + z ** 2)

Page 73: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

MayaVi avanzado

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 26

❏ Partıcula en potencial 3D:

import numpy as npdef V(x, y, z):return np.cos(10 * x) + np.cos(10 * y) + \np.cos(10 * z) + 2 * (x ** 2 + y ** 2 + z ** 2)

from enthought.mayavi import mlabmlab.contour3d(X, Y, Z, V)

Page 74: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

MayaVi avanzado

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

• Visual

• MayaVi

• MayaVi

Entornos integrados

Python para el computo cientıfico – David P. Sanders p. 26

❏ Partıcula en potencial 3D:

import numpy as npdef V(x, y, z):return np.cos(10 * x) + np.cos(10 * y) + \np.cos(10 * z) + 2 * (x ** 2 + y ** 2 + z ** 2)

from enthought.mayavi import mlabmlab.contour3d(X, Y, Z, V)

❏ Clic en ıcono para interactuar

Page 75: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Entornos integrados

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 27

Page 76: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

Page 77: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

❏ Incluye numpy, scipy

❏ Incluye calculos simbolicos

Page 78: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

❏ Incluye numpy, scipy

❏ Incluye calculos simbolicos

❏ Interfaz por web –no necesario instalar– e.g. para cursos

Page 79: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

❏ Incluye numpy, scipy

❏ Incluye calculos simbolicos

❏ Interfaz por web –no necesario instalar– e.g. para cursos

x, y = var( 'x y' )s = (x+y) ** 2s.expand()

Page 80: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

❏ Incluye numpy, scipy

❏ Incluye calculos simbolicos

❏ Interfaz por web –no necesario instalar– e.g. para cursos

x, y = var( 'x y' )s = (x+y) ** 2s.expand()

plot(x ** 2, (-2, 2) )def f(x,y): return xˆ2 + yˆ2 - xˆ3plot3d(f, (-2, 2), (-2, 2))

Page 81: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

❏ Incluye numpy, scipy

❏ Incluye calculos simbolicos

❏ Interfaz por web –no necesario instalar– e.g. para cursos

x, y = var( 'x y' )s = (x+y) ** 2s.expand()

plot(x ** 2, (-2, 2) )def f(x,y): return xˆ2 + yˆ2 - xˆ3plot3d(f, (-2, 2), (-2, 2))

❏ Cambiar de manera interactiva

Page 82: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Sage

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 28

❏ Interfaz “pitonico” para software libre de matematicas

❏ http://www.sagemath.org (no por paquete)

❏ Incluye numpy, scipy

❏ Incluye calculos simbolicos

❏ Interfaz por web –no necesario instalar– e.g. para cursos

x, y = var( 'x y' )s = (x+y) ** 2s.expand()

plot(x ** 2, (-2, 2) )def f(x,y): return xˆ2 + yˆ2 - xˆ3plot3d(f, (-2, 2), (-2, 2))

❏ Cambiar de manera interactiva

❏ Otros: spyder, pythonxy, Enthought Python Distribution

Page 83: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ensenanza

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 29

❏ Python es perfecto como primer (y casi ultimo) lenguaje

Page 84: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ensenanza

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 29

❏ Python es perfecto como primer (y casi ultimo) lenguaje

❏ Ensenar desde primer semestre

Page 85: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ensenanza

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 29

❏ Python es perfecto como primer (y casi ultimo) lenguaje

❏ Ensenar desde primer semestre

❏ Herramientas de visualizacion, calculos

Page 86: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Ensenanza

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 29

❏ Python es perfecto como primer (y casi ultimo) lenguaje

❏ Ensenar desde primer semestre

❏ Herramientas de visualizacion, calculos

❏ Facil de experimentar

Page 87: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Conclusiones

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 30

❏ Conjunto de herramientas poderosas

Page 88: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Conclusiones

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 30

❏ Conjunto de herramientas poderosas

❏ Ideal para ensenanza de fısica

Page 89: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Conclusiones

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 30

❏ Conjunto de herramientas poderosas

❏ Ideal para ensenanza de fısica

❏ Ideal como entorno para investigacion

❏ Para todo excepto simulaciones “hard-core”

Page 90: Introduccion a Python para el C´ omputo´ Cient´ıficosistemas.fciencias.unam.mx/~dsanders/talks/python-computo... · El lenguaje Python Visualizacion en 2D ... Listas y bucles

Conclusiones

• Moderno

El lenguaje Python

Visualizaci on en 2D

Computo cientıfico

Visualizaci on en 3D

Entornos integrados

• Sage

• Ensenanza

• Conclusiones

Python para el computo cientıfico – David P. Sanders p. 30

❏ Conjunto de herramientas poderosas

❏ Ideal para ensenanza de fısica

❏ Ideal como entorno para investigacion

❏ Para todo excepto simulaciones “hard-core”

❏ Contacto:http://sistemas.fciencias.unam.mx/ ˜ [email protected]