Publicado el 3 de Febrero del 2017
2.651 visualizaciones desde el 3 de Febrero del 2017
2,5 MB
114 paginas
Creado hace 14a (06/03/2011)
INTRODUCCI ÓN A
PARA C ÁLCULO CIENTÍFICO
Luis Rández
Universidad de Zaragoza
6 de marzo de 2011
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
1 / 114
Instituto Universitario de Investigación y Aplicacionesde Matemáticas1
Introducción
2 Tipos básicos
3 Controles de flujo
4 Funciones
5 Excepciones
6 Ficheros
7
ipython
8 Numpy
9 Gráficos
10 Referencias
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
2 / 114
Instituto Universitario de Investigación y Aplicacionesde Matemáticas¿Qué es PYTHON?
PYTHON es un lenguaje de programación de tipo script creado por
Guido van Rossum a principios de los años 90, cuyo nombre proviene
del grupo ((Monty Python)). El objetivo es un lenguaje con una sintaxis
muy limpia y con un código legible.
Figura: Los humoristas británicos Monty Python
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
3 / 114
Características de PYTHON
interpretado
tipado dinámico: una misma variable puede tomar valores de distinto tipo en
distintos momentos
multiplataforma: Symbian, Unix, Windows, . . .
conexiones con otros lenguajes (FORTRAN, CUDA, . . . )
manejo de excepciones
orientado a objetos
código abierto
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
4 / 114
f2py: PYTHON & FORTRAN
! definición de la función fcn en FORTRAN
real*8 function fcn(x)
real*8 x
fcn = sin(x*cos(x**2))
return
end
unix$ f2py --fcompiler=gfortran -c -m modulo fcn.f
unix$ python
>>> import modulo
>>> modulo.fcn(5.0)
-0.97046990369101838
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
5 / 114
f2py: PYTHON & FORTRAN
subroutine fun(x,n,m,s) ! pasar vectores
real*8 x(n), s
integer i,n,m
!f2py intent(in) n,m,x,s
!f2py intent(out) s
!f2py depend(n) x
print*, n,m
do i=1,m
! x depende de n
s = s + x(i)
end do
return
end
unix$ f2py --fcompiler=gfortran -c -m modulo fun.f90
unix$ ipython
In[1]: import modulo
In[2]: t=0
In[3]: modulo.fun(array([1.,2.,3.,4.,5.,6.]),6,5,t)
Out[3]: 15.0
6
5
¿Por qué PYTHON?
desarrollo rápido de código
lenguaje de muy alto nivel
sintaxis clara y sencilla. Mantenimiento fácil
gran cantidad de librerías
lenguaje de propósito general
Figura: TiraEcol sobre PYTHON
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
7 / 114
palabras clave de PYTHON
as
continue def
else
and
class
elif
finally for
if
lambda
print
while
import
not
raise
with
assert break
del
except exec
from
in
or
return try
yield
global
is
pass
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
8 / 114
Quién usa PYTHON
Google
Yahoo
Industrial Light & Magic
Walt Disney
NASA
SGI, Inc.
...
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
9 / 114
Librerías útiles para cálculo científico
PYTHON: Para empezar
NUMPY Librería: proporciona herramientas para la generación y
manipulación de arrays.
SCIPY Librería: optimización, Fourier, cuadratura e integración
numérica, . . . (depende de NUMPY)
SYMPY Librería: cálculo simbólico
MATPLOTLIB Librería: Gráficos 2D y 3D
PIL Librería: Python Imaging Library
IPYTHON Intérprete mejorado de PYTHON
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
10 / 114
De http://www.sagemath.org
Sage is a free open-source mathematics software system licensed
under the GPL. It combines the power of many existing open-source
packages into a common PYTHON-based interface.
Mission: Creating a viable free open source alternative to Magma,
Maple, Mathematica and Matlab.
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
11 / 114
Cónsola
Intérprete básico de comandos
ubuntu-laptop:> python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" ...
>>>
Intérprete mejorado de comandos
ubuntu-laptop:> ipython
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
Type "copyright", "credits" or "license"
...
-> Introduction and overview of IPython’s features.
IPython 0.10 -- An enhanced Interactive Python.
?
%quickref -> Quick reference.
help
object?
In [1]:
-> Python’s own help system.
-> Details about ’object’. ?object also works, ...
Módulos
Los módulos son programas que amplian las funciones y clases de
PYTHON para realizar tareas específicas. Por ejemplo, el módulo os
permite usar muchas funciones del sistema operativo.
Los módulos se pueden cargar de la forma from módulo import *
o bien con import módulo o import módulo as modu. En estos
últimos casos, una función de módulo hay que llamarla
modulo.función o modu.función respectivamente, mientras que
en el primero basta con función.
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
13 / 114
Módulos
>>> import os # Modulo que provee funciones del s.o.
>>> help (os) # lista todas las funciones (q para salir)
>>> os.listdir("/home/randez") # directorio
['.cache', '.wine', '.kde', '.thunderbird', 'tmp', ...
>>> print os.getcwd() # directorio actual
/home/randez
>>> os.mkdir("ejemplo") # Crea un directorio
#
>>> import time
>>> time.strftime(" %Y- %m- %d %H: %M: %S")
'2011-01-09 20:19:23'
Modulo para trabajar con fechas/horas
# fecha y/o hora actual con formato
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
14 / 114
Tipos numéricos y lógico
entero
coma flotante
int y long
float
complejo
complex
lógico
bool
tipo entero
# L indica long, precision arbitraria
>>> i=2 #
>>> i=pow(2,130)
>>> i=2**130
1361129467683753853853498429727072845824L
>>> float(_) # _ es el equivalente a Ans en matlab
1.3611294676837539e+39
>>> a=2.1 # tipo coma flotante
>>> int(a)
2
>>> long(a)
2L
>>> z=1.5 + 3j #
>>> z=1.5 + 3*1j
(1.5+3j)
z=complex(1.5,3) tipo complejo
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
15 / 114
Tipos numéricos y lógico
>>> z.real, z.imag
(1.5, 3.0)
>>> z.conjugate()
(1.5-3j)
>>> abs(z)
3.3541019662496847
>>> z=(3>4) # tipo logico
>>> print z
False
>>> type(z)
<type 'bool'>
El tipo de una variable puede cambiar varias veces en el mismo
programa.
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
16 / 114
Operaciones aritméticas +,−,∗, /,∗∗, %
ojo! division entre enteros (fortran?)
ahora funciona
>>> 3/2 #
1
# para que no ocurra lo anterior
>>> from __future__ import division
>>> 3/2 #
1.5
>>> 11 %7 # resto de la division
4
>>> q, r=divmod(11,7) # cociente y resto
>>> print q, r
1 4
>>>
1+2
# CUIDADO CON EL SANGRADO EN PYTHON
File "<stdin>", line 1
1+2
ˆ
IndentationError: unexpected indent
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
17 / 114
Más operaciones aritméticas
Además existen en PYTHON notación compacta para modificar el valor
de una variable.
+= c += a
-= c -= a
*= c *= a
/= c /= a
%= c %= a
**= c **= a c = c**a potencia
//= c //= a c = c//a cociente entero
suma
resta
producto
cociente
resto del cociente c/a
c = c+a
c = c-a
c = c*a
c = c/a
c = c %a
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
18 / 114
Operaciones lógicas y comparaciones
Operaciones lógicas
x or y x and y not x
Comparaciones
igualdad menor o igual mayor o igual distinto
==
<=
>=
!=
>>> (3<4) or (1>0)
True
>>> not (3<4)
False
>>> 4 == 9
False
>>> 4 != 9
True
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
19 / 114
Colecciones de tipos. Listas
Una lista es una colección de objetos que pueden ser de varios tipos.
>>> lista=[1,2,2<1,1+3*1j] # se define entre corchetes
>>> type(lista)
<type 'list'>
# CUIDADO programadores fortran/matlab
>>> lista[0] # ojo! los indices empiezan en cero
1
>>> lista[-1]
(1+3j)
>>> lista[1:3] # notacion : igual que en matlab?
[2, False]
>>> lista[1:]
[2, False, (1+3j)]
>>> lista[::2]
[1, False]
# ultimo elemento
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
20 / 114
a[0] a[1] a[2] a[3]
. . . a[n-1]
índices
0
1
2
3
4
n
a[i:j] contiene los elementos entre los índices i y j y consta de
(j-i) elementos.
Propiedades
El índice de una lista empieza en 0 como en C.
Las listas son mutables a.
Los elementos de una lista pueden ser de tipos distintos.
Se pueden añadir y quitar elementos con append y pop
respectivamente.
Se pueden concatenar listas con + y ∗.
aLos objetos inmutables no pueden ser cambiados tras su definición. Todos los
tipos de números son inmutables.
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
21 / 114
# quita el elemento list[4]
>>> lista=[1,2,3,4,False]
>>> lista.pop(4)
False
>>> print lista
[1, 2, 3, 4]
>>> lista.append(True) # poner al final de la lista
>>> print lista
[1, 2, 3, 4, True]
>>> lista+lista[::-1]
[1, 2, 3, 4, True, True, 4, 3, 2, 1]
>>> lista*2
[1, 2, 3, 4, True, 1, 2, 3, 4, True]
>>> lista.sort()
>>> lista
[1, True, 2, 3, 4]
>>> lista = [ [1,2,3],[[[[1j,2]],'a']]] # anidar listas
>>> print lista
[[1, 2, 3], [[[[1j, 2]], 'a']]]
# True == 1
y
False == 0
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
22 / 114
Algunas funciones sobre listas
Dimensión de la lista L
Añade el elemento x al final de L
len(L)
L.append(x)
L2.extend(L1) Añade la lista L1 al final de la lista L2
L.insert(i,x) Inserta el elemento x en la posición dada de L
Borra la primera aparición del elemento x en L
L.remove(x)
Borra el elemento en la posición dada de la lista
L.pop([i])
L
Devuelve el índice en la lista de la primera apa-
rición del elemento x, y si no está se produce
un error.
Número de veces que aparece x en L
Ordenar la lista L
Devuelve la lista L al revés.
L.index(x)
L.count(x)
L.sort()
L.reverse()
Luis Rández (IUMA)
Introducción a PYTHON
6 de marzo de 2011
23 / 114
Variables mutables/inmutables
Al ejecutar las sentencias siguientes, las variables a y b apuntan hacia
la misma dirección de memoria. Al redefinir a=a+1 hace que PYTHON
redirija el nuevo valor de a hacia otra dirección de memoria donde
está el resultado a+1.
a = 5
b = a
a = a+1
a
a
Comentarios de: INTRODUCCIÓN A PYTHON PARA CÁLCULO CIENTÍFICO (0)
No hay comentarios