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

Post on 27-Sep-2018

232 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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/ ˜ dsandersdps@fciencias.unam.mx

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

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

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?

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

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

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

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”

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

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:

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

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

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

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

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

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

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

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

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

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?

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

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

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

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

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"

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:

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

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

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 = []

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)

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

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

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

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

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' )

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

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

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

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

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

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)

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)

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

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()

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

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 )

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]) )

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)

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

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)

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()

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

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()

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

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

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!

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)) )

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

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' )

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,. . .

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 = []

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)

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

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

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

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()

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

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

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

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

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)

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)

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)

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)

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

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

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)

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

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

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()

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))

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

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

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

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

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

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

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

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

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”

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/ ˜ dsandersdps@fciencias.unam.mx

top related