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?

Ventanas de comandos

$ python
$ ipython

1
2

# recomendado !

Editores:

spe
eric
boa-constructor
Eclipse (+ python plugin, ejemplo: pydev)
Emacs
Vim
...

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

i-MATH, Santiago 2010

5 / 14

Python como una calculadora (I)

Operadores numricos:

+, -, *, /, **

Parntesis para modicar la preferencia

Re-editar rdenes:

Para comentarios se usa

Ctrl-D

quit():

, ,

(Maysculas +)

y para nueva

, , [tabulador]
lnea \

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
puntos.py con
"$ python puntos.py"

Editar un chero llamado

Ejecutarlo con

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

range(N)

La funcin

El contenido del bucle

devuelve la tupla

(0,1,...,N)

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

1 mediante la orden

Se pueden cambiar mdulos adicionales

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

Los mdulos deben estar en le variable de entorno PYTHONPATH

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

i-MATH, Santiago 2010

11 / 14

Numpy I

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

1
2
3

1
2
3
4
5

Algunas funciones (de numpy) que devuelven arrays:

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

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

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

i-MATH, Santiago 2010

12 / 14

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

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

i-MATH, Santiago 2010

13 / 14

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

sparse:
...

matrices huecas

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