numpy

download numpy

of 30

Transcript of numpy

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