Professional Documents
Culture Documents
1 / 28
Los modulos numpy, scipy, ipython y matplotlib se han convertido en una suite para computo cientco.
numpy
numpy
Librera 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.]])
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 son
ndarray.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
numpy
Hay 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
scipy
Scipy es una librera de herramientas cientcas para python. Scipy esta basado en numpy
Estadstica 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.
Ejemplos
1 2 3 4 5
Anlisis de error y diferencias nitas Aproximar Cuadratura adaptativa Calcular nmeros de Fibonacci Mapeo logstico
16 / 28
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
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 datos
El lenguaje de programacion python: (parte 2 de 2) 18 / 28
Introduccion
numpy
scipy
ipython
matplotlib
Ejemplos
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 nita
Debido 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)
Introduccion
numpy
scipy
ipython
matplotlib
Ejemplos
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
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...
Cuadratura adaptativa
Sea f : R, [a, b] R. Queremos aproximar
b
I (f ) =
a
f (x)dx
I (f ) Qn(f ) =
i=1
wif (xi)
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
Cuadratura adaptativa
De 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 + ...
Cuadratura adaptativa
El error se puede aproximar E (f ) T (f ) M (F ) 3
A partir de los resultados anteriores, se deriva una cuadratura adaptativa. Aqu muestro los programas
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