El lenguaje de programacin python
02 de diciembre del 2011
1 / 28
Libreras para computo cientco en python
Los modulos numpy, scipy, ipython y matplotlib se han convertido en una suite para computo cientco.
El lenguaje de programacion python: (parte 2 de 2) 2 / 28
numpy
Librera fundamental para hacer computo cientco con pythonUn poderoso arreglo de dimension N (ndarray) Metodos avanzados para seleccionar elementos de los arreglos Libreria basica de algebra lineal Libreria basica de transformada de Fourier Librera avanzada de generacion de numeros aleatorios Herramientas para extender Numpy con codigo en C y en Fortran.
El lenguaje de programacion python: (parte 2 de 2) 3 / 28
numpyLibrera para trabajar con arreglos multidimensionales El arreglo es un conjunto de elementos de un mismo tipo, indexados por un vector de enteros no negativos. Los arreglos se pueden crear de diferentes maneras >>> from numpy import * >>> a = array( [ 10, 20, 30, 40 ] ) >>> a array([10, 20, 30, 40]) >>> b = arange(4) >>> b array([0, 1, 2, 3]) >>> c = linspace(-pi,pi,3) >>> c array([-3.14159265,0.0,3.14159265])El lenguaje de programacion python: (parte 2 de 2) 4 / 28
numpy
Se puede construir arreglos a partir de otros arreglos >>> d = a+b**2 >>> d array([10, 21, 34, 49])
5 / 28
numpy
Los arreglos pueden tener mas de una dimension >>> x = ones( (3,4) >>> x array([[1., 1., 1., [1., 1., 1., [1., 1., 1., >>> x.shape (3, 4) ) 1.], 1.], 1.]])
El lenguaje de programacion python: (parte 2 de 2) 6 / 28
numpy
Se puede cambiar la dimensin de un arreglo existente >>> y = arange(12) >>> y array([ 0, 1, 2, 3, 4, >>> y.shape = 3,4 >>> y array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
5,
6,
7,
8,
9, 10, 11])
7 / 28
numpy
Es posible operar arreglos de dimensiones diferentes si la operacin tiene sentido (broadcasting) >>> 3*a # multiplica a por 3 array([ 30, 60, 90, 120]) >>> a+y # suma a a cada renglon de y array([[10, 21, 32, 43], [14, 25, 36, 47], [18, 29, 40, 51]])
8 / 28
numpy
Los arreglos se pueden acceder mediante indexing, slicing o iteracion >>> a[2:4] = -7,-3 >>> for i in a: ... print i ... 10 20 -7 -3
9 / 28
numpy
Cuando se accede un arreglo de dos o mas dimensiones mediante indexing, los ndices se separan por comas >>> x[1,2] = 20 >>> x[1,:] array([ 1, 1, 20, 1]) >>> x[0] = a >>> x array([[10, 20, -7, -3], [ 1, 1, 20, 1], [ 1, 1, 1, 1]])
10 / 28
Introduccion
numpy
scipy
ipython
matplotlib
Ejemplos
numpy
El arreglo (ndarray) es una clase. Los atributos mas importantes de la clase arreglo sonndarray.ndim El nmero de ejes (dimensiones) del arreglo. arreglo.shape Las dimensiones del arreglo. Una tupla de enteros que indica el tamao del arreglo en cada dimensin. ndarray.size El nmero total de elementos del arreglo. ndarray.dtype Un objeto que describe el tipo de elementos del arreglo. Booleanos, otantes, etc. ndarray.itemsize El tamao en bytes de cada elemento del arreglo ndarray.data El buer que contiene los elementos del arreglo
11 / 28
numpyHay numerosas funciones implementadas como metodos de la clase array. En general es preferible usar arreglos, pero tambien es posible trabajar con matrices. Aqu muestro un ejemplo... >>> a = random.random((2,3)) >>> a array([[ 0.6903007 , 0.39168346, [ 0.48819875, 0.77188505, >>> a.sum() 3.4552372100521485 >>> a.min() 0.16524768654743593 >>> a.max() 0.9479215542670073
0.16524769], 0.94792155]])
12 / 28
scipyScipy es una librera de herramientas cientcas para python. Scipy esta basado en numpyEstadstica Optimizacion Integracion numerica Algebra lineal Transformada de Fourier Procesamiento de senales Procesamiento de imagenes Funciones especiales Interpolacion otros...
ipython
ipython es un shell interactivo que aade funcionalidades extra al modo interactivo incluido con python, como resaltado de lneas y errores mediante colores, una sintaxis adicional para el shell, autocompletado mediante tabulador de variables, modulos y atributos; entre otras funcionalidades.
matplotlib
matplotlib es una biblioteca para la generacin de gracos a partir de datos contenidos en listas o arrays. Proporciona una API (pylab) diseada para recordar a la de MATLAB.
E
Ejemplos
1 2 3 4 5
Anlisis de error y diferencias nitas Aproximar Cuadratura adaptativa Calcular nmeros de Fibonacci Mapeo logstico
16 / 28
Anlisis de error y diferencias nitas
Error absoluto y error relativoError absoluto: valor aproximado valor exacto Error relativo: error absoluto valor exacto
valor aproximado = (valor exacto)(1 + (error relativo)) El valor exacto es desconocido. Nos limitamos a estimar o acotar el error en vez de calcularlo A veces se usa el residuo relativo en vez del error relativo
El lenguaje de programacion python: (parte 2 de 2) 17 / 28
Anlisis de error y diferencias nitasError en los datos y error en los clculosProblema tpico: Dados una funcin f : R R y un argumento x R, evaluar f (x)x valor del argumento (exacto) f (x) resultado deseado (exacto) x valor aproximado del argumento (inexacto) f(x) resultado calculado (inexacto)
Error total: f(x) f (x) = f(x) f (x) + f (x) f (x) error computacional + error en los datos El algoritmo no afecta el error en los datosEl lenguaje de programacion python: (parte 2 de 2) 18 / 28
Introduccion
numpy
scipy
ipython
matplotlib
Ejemplos
Analisis de error y diferencias nitasError de truncacion y Error de redondeoError de truncacion: Es la diferencia entre el resultado exacto y el resultado producido por un algoritmo dado usando aritmetica exacta.Debido a aproximaciones tales como truncar series innitas o terminar sucesiones iterativas antes de que ocurra convergencia.
Error de redondeo: Es la diferencia entre el resultado producido por un algoritmo dado usando aritmetica exacta y el resultado producido por el mismo algoritmo usando aritmetica con precision nitaDebido a representacion inexacta de numeros reales y a operaciones aritmeticas entre ellos
Error computacional: Es la suma de los errores de truncacion y de redondeo (uno de ellos domina)
El lenguaje de programacion python: (parte 2 de 2) 19 / 28
Introduccion
numpy
scipy
ipython
matplotlib
Ejemplos
Analisis de error y diferencias nitasEjemplo: Diferencias nitasEl error en la aproximacion por diferencias nitas f (x) f (x + h) f (x) h
exhibe compensacion entre error de redondeo y error de truncacion El error de truncacion esta acotado por M h/2, donde |f (t)| M para t x El error de redondeo esta acotado por 2 /h, donde f (x) El error total se minimiza cuando h 2 /M .
20 / 28
Anlisis de error y diferencias nitasEjemplo: Diferencias nitasf (x) =1 1+x
El error crece cuando h es pequea por el error de redondeo, y crece cuando h es grande por el error de truncacion
Aproximar Usamos la identidad
= 4
n=0
1n 2n + 1
Nota: Puesto que es una serie alternante, el error al truncar la serie esta dominado por el valor absoluto del primer termino truncado Podemos usar este hecho para determinar cuando dgitos de aproximacin queremos al aproximar Tambin podemos calcular numricamente el costo computacional de nuestro enfoque para aproximar . Aqu muestro los programas...
El lenguaje de programacion python: (parte 2 de 2) 22 / 28
Cuadratura adaptativaSea f : R, [a, b] R. Queremos aproximarb
I (f ) =a
f (x)dx
En computo cientco es estandar aproximar mediante una regla de cuadratura Qnn
I (f ) Qn(f ) =i=1
wif (xi)
Se tiene la estimacion |I (f ) Qn| 1 n+1 h 4 ||f (n)||
donde h = max{xi+1 xi|i = 1, ..., n 1}
Cuadratura adaptativa
Regla del punto medio M (f ) = (b a)f Regla trapezoidal T (f ) = Regla de Simpson S (f ) = ba 6 (f (a) + 4f a+b 2 + f (b)) ba 2 (f (a) + f (b)) a+b 2
El lenguaje de programacion python: (parte 2 de 2) 24 / 28
Cuadratura adaptativaDe la expansion de f en serie de Taylor al rededor de m = (a + b)/2 f (x) = f (m) + f (m)(x m) + Se tiene I (f ) = f (m)(b a) + f (4)(m) f (m) (b a)3 + 2 1920 = M (f ) + E (f ) + F (f ) + ... (b a)5 + ... f (m) 2 (x m)2 + ...
donde E (f ) es el error Similarmente I (f ) = T (f ) 2E (f ) + 4F (f ) + ...
Cuadratura adaptativaEl error se puede aproximar E (f ) T (f ) M (F ) 3
Se cumplen las siguientes identidades para la regla de Simpson I (f ) = 2 1 2 M (f ) + T (f ) F (f ) 3 3 3 2 = S (f ) F (f ) 3
A partir de los resultados anteriores, se deriva una cuadratura adaptativa. Aqu muestro los programas
Calcular numeros de Fibonacci
No siempre es una buena idea la recursion En este ejemplo es preferible calcular las potencias de una matriz. Aqu muestro los programas
)
El mapeo logstico
El mapeo logstico esta denido por xn+1 = rxn(1 xn) Es un ejemplo tpico de comportamiento caotico y complejo que puede surgir en sistemas dinamicos no lineales aun en ejemplos simples Construiremos un diagrama de bifurcacion de (1) usando Pylab Aqu muestro el programa (1)
) 8
Top Related