Está en la página 1de 14

SMB: 2.

Clculo cientco con Python


J. Rafael Rodrguez Galvn

OSLUCA (Ocina de Software Libre de la Universidad de Cdiz)


III Curso intensivo i-MATH de software libre orientado a ciencias e ingeniera: Software Matemtico Bsico (SMB)

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

i-MATH, Santiago 2010

1 / 14

(c) Rafael Rodrguez Galvn. Se autoriza la utilizacin de este documento segn la licencia GFDL, sin secciones invariantes, texto de portada ni de respaldo.
http://ciencialibre.forja.rediris.es

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

i-MATH, Santiago 2010

2 / 14

Seccin 1. Introduccin a Python

1 Introduccin a Python

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

i-MATH, Santiago 2010

3 / 14

Qu es Python?

Lenguaje de programacin claro y sencillo de aprender Elevada productividad (gran velocidad de desarrollo) Mltiples paradigmas: programacin orientada a objetos / estructurada / funcional Portable (Linux, Windows, Max), licencia libre Fcilmente extensible, usando C/C++, Fortran, .NET, Java,... Numerosos mdulos, en particular para clculo cientco: Comunidad de usuarios: numerosa y muy activa Bien documentado

scipy

http://www.python.org/doc http://www.scipy.org/doc

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

i-MATH, Santiago 2010

4 / 14

Cmo usar Python?

1 2

Ventanas de comandos

$ python $ ipython

Editores:

# recomendado !

spe eric boa-constructor Eclipse (+ python plugin, ejemplo: pydev) Emacs Vim ...
i-MATH, Santiago 2010 5 / 14

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

Python como una calculadora (I)



Operadores numricos:

+, -, *, /, **
Parntesis para modicar la preferencia Re-editar rdenes:

, ,

(Maysculas +)

Para comentarios se usa

y para nueva

, , [tabulador] lnea \

Ctrl-D

quit():

salir del entorno Python

>> 1+3*1.5 5.5 >> (2+3) **10 9765625 >> a = 2 >> a = " hola " >> print a , " a todos "
J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python i-MATH, Santiago 2010 6 / 14

Ms sobre tuplas

Para denir tuplas, se escribe una secuencia de objetos, separados por comas y entre parntesis,

( )

Para acceder a sus elementos, se utilizan corchetes,

[ ]

>>> t = (2 , -3 ,4 , ' hola ') >>> print t (2 , -3 ,4 , ' hola ') >>> t [0] # Primer elemento 2 >>> t [ -1] # Ultimo elemento ' hola ' >>> len (t) # Longitud (n\ ' umero de elementos ) 4 >>> s = 1 ,2 ,3 ,4 # Se pueden omitir par \' entesis >>> s [2]=1 Error : ' tuple ' object doesn 't support assignment
J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python i-MATH, Santiago 2010 7 / 14

Listas

Similares a las tuplas, pero

su contenido es modicable
[ ]

Se escriben entre corchetes,

>>> l =[2./3. , -7, 55] >>> l [0] 0.66663 >>> l [0:2] # Desde 0 hasta (2 -1) [0.66663 , -7] >>> l [0]=1 # Podemos modificarlas >>> print l [1 , -7, 55] >>> l. append (33) # A \~ nadir elementos >>> print l [1 , -7, 55 , 33] >>> l. remove (55) # Borrar elementos , ... etc .
J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python i-MATH, Santiago 2010 8 / 14

Bucles

Editar un chero llamado Ejecutarlo con

puntos.py con "$ python puntos.py"

el siguiente contenido

puntos = [] # Lista vac \ ' ia for i in range (10) : x = 0.1* i y = x /(1+ x*x) puntos . append ([x , y ]) print puntos

La funcin

range(N)

devuelve la tupla

(0,1,...,N)

El contenido del bucle

for...

comienza a partir de los dos puntos, : se delimita mediante el sangrado de las lneas (tabulador)
J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python i-MATH, Santiago 2010 9 / 14

Funciones, condicionales

def valorabs (x): if x >0: return x else : return -x

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

i-MATH, Santiago 2010

10 / 14

Mdulos adicionales

Se pueden cambiar mdulos adicionales

1 mediante la orden

import
Existen cientos de mdulos y libreras para python

string Manejo de cadenas de caracteres time Funciones de medida del tiempo numpy Manejo de arrays para clculo cientco scipy Mtodos numricos, incluye a numpy MatPlotLib Representacin de grcas 3D mayavi2 Representacin de grcas 2D y 3D (basadas en VTK)

>>> import math >>> print ' Seno de 3: ', math . sin (3) Seno de 3: 0.14112000805986721
1
J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

Los mdulos deben estar en le variable de entorno PYTHONPATH

i-MATH, Santiago 2010

11 / 14

Numpy I

1 2 3

Numpy aporta a Python tipos de datos array Un array se puede construir a travs de una lista

>>> from numpy import * # Acceso a todo numpy >>> a = array ( [0 , -3, 0.5 , 7 ] ) # 1D >>> b = array ( [[ -1 , 1] , [3 , 0]] ) # 2D

Algunas funciones (de numpy) que devuelven arrays:

1 2 3 4 5

>>> >>> >>> >>> >>>

c d e f g

= = = = =

zeros (3) zeros ([4 ,5]) ones (4) eye (5) linspace (a ,b ,n)

# # # # #

Vector de 3 ceros Matriz de ceros Vector de unos Matriz identidad Por defecto , n =50
i-MATH, Santiago 2010 12 / 14

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

Numpy: Operaciones con arrays


>>> from numpy import * >>> a = ones ([3 ,4]) >>> # random es un sub -m \' odulo de numpy >>> b = random . rand (4 ,3) # array aleatorio 4 x3 >>> c = a*a # Producto elemento a elemento >>> d = dot (a ,b) # Producto de matrices >>> inverse (d) >>> print b. shape # Orden de b (4 , 3) >>> print transpose (b). shape (3 ,4) >>> v = arange (3) >>> w = 2* v + 1 >>> inner (v ,w) # array ( range (3) ) # Producto escalar
i-MATH, Santiago 2010 13 / 14

J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python

Scipy: algunos mdulos numricos incluidos


linalg: lgebra lineal, sistemas lineales interpolate: interpolacin (lineal, spines cbicos) integrate: integracin numrica, resolucin de EDO's optimize: optimizacin, resolucin de ecuaciones no lineales,
mnimos cuadrados, simplex... matrices huecas

sparse: ...

from pylab import * x = arange ( -10 ,10 ,0.5) y = -x **2 plot (x ,y) show ()
Podemos especicar las propiedades de la curva, al estilo MATLAB
J. Rafael Rodrguez Galvn (OSLUCA) SMB: 2. Clculo cientco con Python i-MATH, Santiago 2010 14 / 14

También podría gustarte