Tp Metodos Numericos
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Tp Metodos Numericos

  • 398 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
398
On Slideshare
398
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. M´todos Num´ricos 2011 - Trabajos Pr´cticos e e a Ing. Diego R. Tramontina 26 de abril de 2012Ejercicios:1. Calcular las ra´ıces del polinomio x7 + 6x6 + 6x5 − 21x4 − 36x3 + 3x2 + 13x + 3 = 0Resoluci´n o En este ejercicio primeramente analizaremos las caracter´ ısticas del polinomio, para luego definir la meto-dolog´ a seguir. Podemos inferir que la cantidad de ra´ ıa ıces ser´ igual a 7, dado que es el orden del polinomio. aSabemos tambi´n que el l´ e ımite superior para el valor de todas las ra´ ıces esta dado por: Σn |Ai | i=0 > Ai , A0Para nuestro caso particular alcanza el valor de 29, 66. Tambi´n sabemos que An es impar, por lo que podemos esuponer que existe al menos una ra´ real. Dado que la cantidad de ra´ reales positivas es menor o igual a la ız ıcescantidad de cambios de signo, que para nuestro caso es de dos, podemos decir que podr´ existir una segunda ra´ ıa ızpositiva. Adem´s, como todos los coeficientes de nuestro polinomio se encuentran en el campo real, si existieran ara´ ıces complejas, estas estar´n dispuestas en forma de pares conjugados. a Si analizamos su gr´fica[1], podremos observar que existe una zona de aparente inflexi´n en el entorno de cero a opara el espacio imagen de la funci´n. Dado el grado del polinomio, en esta zona pueden aparecer valores para los ocuales la derivadas primeras se anulan, aportando ra´ conjugadas al resultado, por lo que la implementaci´n ıces ode un algoritmo de intervalo cerrado no ser´ pr´ctico. 1 ıa a Figura 1: Representaci´n del polinomio o Para encontrar todas las ra´ de este polinomio, se implement´ un script en python para calcular los valores ıces opropios de la matriz asociada a este polinomio. Para el polinomio P (x) = xn + cn−1 xn−1 + cn−2 xn−2 + ... + c1 x + c0, se define como: 1
  • 2.   0 0 0 0 0 0 −3 ··· −c0   0 0 0 1 0 0 0 0 0 −13 1  0 ··· 0 −c1   0 1 0 0 0 0  −3  Cn = 0  1 ··· 0 −c2  , C = 0  0 1 0 0 0  36  7  . . .. . .    .. . . . . . .  . 0  0 0 1 0 0 21   0 0 ··· 1 −cn−1 0 0 0 0 1 0 −6  0 0 0 0 0 1 −6 La matriz a la derecha muestra nuestro caso particular. A continuaci´n se muestra el algoritmo utilizado. o1 # −∗− c o d i n g : u t f −8 −∗− i m p o r t p y l a b a s NX3 def roots (p) :5 # S i l a e n t r a d a e s un e s c a l a r , c o n v i e r t e a a r r a y #p = a t l e a s t 1 d ( p )7 i f l e n ( p . s h a p e ) != 1 : r a i s e V a l u e E r r o r , ” La e n t r a d a d e b e s e r un a r r a y de rango 1. ”9 # I d e n t i f i c a r e l e m e n t o s no n u l o s11 n o n z e r o = NX. n o n z e r o (NX. r a v e l ( p ) ) [ 0 ]13 # Devuelve r a i c e s nulas si los coeficientes del polinomio son todos nulos i f l e n ( n o n z e r o ) == 0 :15 r e t u r n NX. a r r a y ( [ ] )17 # I d e n t i f i c a l o s c e r o s a l a i z q u i e r d a . Este es el numero de raices en 0. t r a i l i n g z e r o s = l e n ( p ) − n o n z e r o [ −1] − 119 # Elimina c e r o s a i z q u i e r d a y derecha21 p = p [ i n t ( n o n z e r o [ 0 ] ) : i n t ( n o n z e r o [ − 1 ] ) +1]23 # C o n v i e r t o e l a r r a y en p u n t o f l o t a n t e s i no f u e i n g r e s a d o de e s t a f o r m a . i f n o t i s s u b c l a s s ( p . d t y p e . t y p e , (NX. f l o a t i n g , NX. c o m p l e x f l o a t i n g ) ) :25 p = p . astype ( f l o a t )27 N = len (p) i f N > 1:29 # C o n s t r u y o l a m a t r i z a s o c i a d a y computo los eigenvalores ( las ˜ raA ces ) A = d i a g (NX. o n e s ( ( N−2 ,) , p . d t y p e ) , −1)31 A [ 0 , : ] = −p [ 1 : ] / p [ 0 ] r o o t s = e i g v a l s (A)33 else : r o o t s = NX. a r r a y ( [ ] )35 # F i j o l o s c e r o s nuevamente en l a m a t r i z o r i g i n a l37 r o o t s = h s t a c k ( ( r o o t s , NX. z e r o s ( t r a i l i n g z e r o s , r o o t s . d t y p e ) ) ) return roots39 i n n = a r r a y ( −3 , −13 , −3 ,36 ,21 , −6 , −6)41 p r i n t r o o t s ( inn ) Problema1.py El resultado que arroja el mismo es el siguiente:   −2,61803401   −2,61803396     1,52294987   X7 =   0,54518398     −0,40146718    0,38196601 + 6,00106627e − 08j  −0,38196601 − 6,00106627e − 08j El vector de resultados obtenido confirma todas las presunciones iniciales a partir de las propiedades carac- ter´ ısticas de esta forma polin´mica. Las dos ultimas ra´ constituyen un par conjugado en , mientras que las o ´ ıces dos primeras muestran una proximidad considerable, lo que hizo necesario establecer una precisi´n superior a o 10−6 . 2. ıces en la la ecuaci´n zez = 1+i adem´s de z1 = 0, 6+0, 3i? Existen ra´ o a Resoluci´n o Esta funci´n es un caso particular de la familia tipo Lambertiana W ( W (z)eW (z) = z ). Este tipo de o ecuaciones ha sido aplicado en campos tales como la f´ ısica cu´ntica, el comportamiento de diodos y transistores a ideales, agujeros negros, la cin´tica de la regeneraci´n de los pigmentos en el ojo humano, sistemas din´micos e o a con decaimiento, etc´tera. Es bien conocido que este tipo de funciones no pueden resolverse por m´todos e e ınf n tradicionales. Puesto que ez puede ser escrito como Σ´ z , se puede afirmar que esta es una serie r´pidamente i=0 n! a convergente. La soluci´n a esta ecuaci´n fue propuesta inicialmente por E.M. Wright [10]. Para mapear las ra´ o o ıces en esta ecuaci´n se utiliz´ el m´todo de Newton-Raphson en modo iterativo a lo largo del rango (−50 − 50i) : o o e (50 + 50i) como valores iniciales. El resultado arroj´ 88 ra´ o ıces en este dominio restringido para una tolerancia de 10−8 . Los valores se muestran en forma de arreglo, donde la primer columna corresponde a la ra´ hallada, y ız la segunda, al valor inicial utilizado como primer aproximaci´n. N´tese que la ra´ mencionada en el enunciado o o ız 2
  • 3. corresponde a la hallada por el m´todo utilizando como primer aproximaci´n el valor 0. Evidentemente los e o resultados mostrados no representan ra´ ıces sino los m´ ımimos locales de cada intervalo propuesto.   −1000 − 1000j   −1000 − 1000j     −900 − 900j     −900 − 900j     −800 − 800j     −800 − 800j   −1,7566e + 84 + 3,1675e + 84j      −200 − 200j   −2,3227e + 41 + 1,3796e + 41j  z=    −100 − 100j     0,6569 + 0,3254j)]     0j     −4,2565 + 99,7029j     100 + 100j     −4,9533 + 200,2518j     200 + 200j    −5,3599 + 300,7896j  300 + 300j1 # −∗− c o d i n g : u t f −8 −∗− i m p o r t s c i p y , numbers , numpy3 import s c i p y . optimize . z e r o s as sc5 def newton ( f u n c , x0 , f p r i m e , a r g s =() , t o l =1e −30 , m a x i t e r =500) : p0 = 1 . 0 ∗ x07 f o r i t e r in range ( maxiter ) : myargs = ( p0 , ) + a r g s9 f d e r = f p r i m e ( ∗ myargs ) i f f d e r == 0 :11 r e t u r n p0 p = p0 − f u n c ( ∗ myargs ) / f p r i m e ( ∗ myargs )13 i f a b s ( p − p0 ) < t o l : return p15 p0 = p17 d e f Fx ( x ) : f x = x∗ s c i p y . exp ( x ) −(1. 0 + 1 . 0 j )19 return fx d e f dFx ( x ) :21 d f x = s c i p y . exp ( x )+x∗ s c i p y . exp ( x ) return dfx23 Roots = [ ] p r i n t s c . b r e n t h ( Fx , − 1 0 0 , 1 0 0 )25 for i i n numpy . c o r e . m u l t i a r r a y . a r a n g e ( − 1 0 0 0 , 1 0 0 0 , 1 0 0 ) :27 r u t = newton ( Fx , c o m p l e x ( i , i ) , dFx , ) i f i s i n s t a n c e ( r u t , numbers . Number ) :29 try : i f r u t not i n Roots :31 R o o t s += [ [ r u t ] , [ c o m p l e x ( i , i ) ] ] except :33 print rut p r i n t Roots Problema2.py 3. Interpolar los datos a continuaci´n mediante un polinomio y un o spline. Comparar los resultados −1000 −0,960 −0,860 0,500 0,772 0,790 0,970 X7 = −1000 −0,151 0,894 0,500 0,895 0,986 −0,306 Resoluci´n o Para generar una funci´n que contenga a estos puntos, puede utilizarse el m´todo de interpolaci´n polin´mica, o e o o que consiste en hacer pasar un polinomio de grado n por un conjunto de n puntos conocidos de la funci´n. o Para realizar esto existen varias t´cnicas, entre las que podemos citar las diferencias divididas de Newton, la e interpolaci´n de Lagrange o la de Hermite. El pen´ltimo puede considerarse un caso particular de Hermite, donde o u no se conocen derivadas de la funci´n, y el primero, resulta el m´s c´modo de programar ya que es altamente o a o algor´ ıtmico y no requiere de informaci´n sobre las derivadas en los puntos dados. Adem´s su complejidad no es o a creciente con la cantidad de informaci´n. Para nuestro caso utilizaremos la aproximaci´n mediante polinomios o o 3
  • 4. de Lagrange. Un polinomio de de grado n queda definido entonces como n x − xi fj lj (x), con lj (x) = j=0 xj − xi i=jdonde los coeficientes lj son los llamados polinomios de Lagrange. El c´digo 3 muestra una implementaci´n en o oPython. Este c´digo es relativamente simple y funciona bien para orden 15 como m´ximo. Este c´digo produce o a oel polinomio: y = −0,04721x6 − 47,19x5 + 12,65x4 + 78x3 − 26,98x2 − 31,75x + 14,05 Para cotejar el fitting de la funci´n obtenida, hemos graficado el comportamiento de la misma. En la figura o[2a] puede verse la funci´n polin´mica en el rango de puntos, la misma llega a un m´ximo del orden de 105 o o aentre el punto [−1000, −1000] y el resto de los datos. El alejamiento inusual de ´ste, respecto del resto del grupo ede datos genera una distorsi´n considerable en las dos t´cnicas, aunque por splines la desviaci´n es de unos o e o10 ´rdenes menor. En este caso, la funci´n tiende a un m´ o o ınimo en esta misma zona 2b. En la figura 3a puedeobservarse la gran dispersi´n del punto, respecto del resto del conjunto. En cuanto al comportamiento de los odos m´todos en la regi´n con mayor densidad de datos, se puede observar que el la funci´n polin´mica pasa e o o opor todos los puntos, por cuanto el error depender´ tanto del orden del mismo, como del alejamiento de cada adato4a. Por otro lado, la caracter´ıstica del ajuste mediante splines se obserba claramente en la figura 4b, dondeel intento es de justamente minimizar las desviaciones en las alejadas de los datos. (a) Estructura del resultado por interpolaci´n polin´mica o o (b) Estructura del resultado por splines Figura 2 (a) Vista de los datos (b) Ajuste comparativo de las dos t´cnicas (sin punto ’-1000;- e 1000’) Figura 3 En segunda instancia interpolaremos este conjunto de datos mediante splines c´bicos. Generalmente se pre- ufiere esta t´cnica debido a que el error de interpolaci´n es menor respecto a la t´cnica mostrada inicialmente, e o einclusive cuando se utilizan splines de bajo orden. Adem´s evita el fen´meno de Runge, que aparece cuando en a ola interpolaci´n polin´mica se realiza en puntos equidistantes con polinomios de alto grado. Un aspecto intere- o osante a resaltar cuando se comparan las dos t´cnicas, es que la primera de ellas genera una funci´n convexa en e o 4
  • 5. (a) Comportamiento del polinomio (sin punto ’-1000;-1000’) (b) Comportamiento del spline (sin punto ’-1000;-1000’) Figura 4 el intervalo (−1000, 0)[2a], con un m´ximo en (−835, 3,16 · 1015 ) mientras que la segunda propuesta muestra a un comportamiento c´ncavo en este intervalo[2b], con un m´ o ınimo en (−665, −1,94 · 105 ). En cualquiera de los dos casos, la dispersi´n del primer punto respecto del resto genera en la funci´n interpolante una incertidumbre o o considerable. # −∗− c o d i n g : u t f −8 −∗−2 i m p o r t m a t p l o t l i b . p y p l o t a s p l ; i m p o r t numpy . l i b . p o l y n o m i a l a s np i m p o r t numpy . c o r e . m u l t i a r r a y a s np2 ; i m p o r t math4 d e f p o l l a g r a n g e ( x1 , x2 ) : ” ” ” Genera e l p o l i n o m i o i n t e r p o l a n t e p a r a l o s d a t o s ( x1 , x2 )6 ””” M = l e n ( x1 ) ; p = np . p o l y 1 d ( 0 . 0 )8 f o r j i n x r a n g e (M) : p t = np . p o l y 1 d ( x2 [ j ] )10 f o r k i n x r a n g e (M) : i f k == j : c o n t i n u e12 f a c = x1 [ j ]− x1 [ k ] p t ∗= np . p o l y 1 d ( [ 1 . 0 , − x1 [ k ] ] ) / f a c14 p += p t return p16 Px = [ −1000 , − 0 . 9 6 0 , − 0 . 8 6 0 , 0 . 5 0 0 , 0 . 7 7 2 , 0 . 7 9 0 , 0 . 9 7 0 ] Py = [ −1000 , − 0 . 1 5 1 , 0 . 8 9 4 , 0 . 5 0 0 , 0 . 8 9 5 , 0 . 9 8 6 , − 0 . 3 0 6 ]18 d e f w r i t e d a t a ( oudt , xdat , y d a t ) : f o r i i n range ( l e n ( xdat ) ) :20 linestrout = ’ ’ ; l i n e s t r o u t = s t r ( ’ % 1 0 . 4E ’ % dat [ i ] ) x + ’ ’ l i n e s t r o u t += s t r ( ’ % 1 0 . 4 E ’ % d a t [ i ] ) + ’ y ’22 linestrout . strip () ; l i n e s t r o u t += ’ n ’ ; oudt . w r i t e ( linestrout ) P o l = p o l l a g r a n g e ( Px , Py )24 a b s 1 = np2 . a r a n g e ( −1100 , −1 ,5) ; a b s 1 t l = a b s 1 . t o l i s t ( ) a b s 2 = np2 . a r a n g e ( − 1 , 1 . 1 , 0 . 0 0 1 ) ; a b s 2 t l = a b s 2 . t o l i s t ( )26 f o r i in range ( len ( a b s 2 t l ) ) : a b s 1 t l . append ( a b s 2 t l [ i ] )28 o u t f i l e = open ( ’ P r o b l e m a 3 a . o u t ’ , ’w ’ ) ; w r i t e d a t a ( o u t f i l e , a b s 1 t l , Pol ( a b s 1 t l ) ) ; outfile . close () #f i g = p l . f i g u r e ( )30 #ax1 = f i g . a d d s u b p l o t ( 1 1 1 ) #ax1 . p l o t ( a b s 1 t l , P o l ( a b s 1 t l ) , ’ b . ’ )32 #ax1 . p l o t ( Px , Py , ’ r o ’ ) Problema3a.py # −∗− c o d i n g : u t f −8 −∗−2 import m a t p l o t l i b . pyplot as pl ; import s c i p y . i n t e r p o l a t e as sc i m p o r t numpy . c o r e . m u l t i a r r a y a s np2 ; i m p o r t math4 Px = [ −1000 , − 0 . 9 6 0 , − 0 . 8 6 0 , 0 . 5 0 0 , 0 . 7 7 2 , 0 . 7 9 0 , 0 . 9 7 0 ] Py = [ −1000 , − 0 . 1 5 1 , 0 . 8 9 4 , 0 . 5 0 0 , 0 . 8 9 5 , 0 . 9 8 6 , − 0 . 3 0 6 ]6 d e f w r i t e d a t a ( oudt , xdat , y d a t ) : f o r i i n range ( l e n ( xdat ) ) :8 linestrout = ’ ’ ; l i n e s t r o u t = s t r ( ’ % 1 0 . 4E ’ % dat [ i ] ) + ’ x ’ l i n e s t r o u t += s t r ( ’ % 1 0 . 4 E ’ % d a t [ i ] ) + ’ y ’10 linestrout . strip () ; l i n e s t r o u t += ’ n ’ ; oudt . w r i t e ( l i n e s t r o u t ) P o l = s c . U n i v a r i a t e S p l i n e ( Px , Py )12 a b s 1 = np2 . a r a n g e ( −1100 , −1 ,5) ; a b s 1 t l = a b s 1 . t o l i s t ( ) a b s 2 = np2 . a r a n g e ( − 1 , 1 . 1 , 0 . 0 0 1 ) ; a b s 2 t l = a b s 2 . t o l i s t ( )14 f o r i in range ( len ( a b s 2 t l ) ) : a b s 1 t l . append ( a b s 2 t l [ i ] )16 o u t f i l e = open ( ’ Problema3b . o u t ’ , ’w ’ ) ; w r i t e d a t a ( o u t f i l e , a b s 1 t l , P o l ( a b s 1 t l ) ) ; outfile . close () #f i g = p l . f i g u r e ( )18 #ax1 = f i g . a d d s u b p l o t ( 1 1 1 ) #ax1 . p l o t ( a b s 1 t l , P o l ( a b s 1 t l ) , ’ b . ’ )20 #ax1 . p l o t ( Px , Py , ’ r o ’ ) Problema3b.py 4. Integrar utilizando la regla de Simpson: 1 log(1 − x) √ dx, (valor = −2,3078) 0,8 1 − x2 5
  • 6. Resoluci´n o 1 Existen dos variantes de este m´todo, llamadas regla de 3 de Simpson, y la variante, denominada regla de e38. La primera se aplica a un n´mero par de intervalos, mientras que la segunda, a un n´mero que sea m´ltiplo u u ude 3. Cuando el n´mero de intervalos es impar, pero sin ser m´ltiplo de 3, puede utilizarse la regla de 3 en los u u 8 1extremos, y luego la de 3 en el resto del espacio de c´lculo. No obstante ello, lo m´s relevante es que el orden a ade error de ambas variantes es el mismo, por cuanto no se ganar´ exactitud aplicando una u otra regla en el amismo n´mero de intervalos. El m´todo puede describirse matem´ticamente de la siguiente forma: u e a b n hi xi + xi+1 h5 IV I= f (x)dx [f (xi ) + 4f ( + f (xi+1 )] + E, con E − f (x), hi = xi+1 − xi a i=1 6 2 90 Cuadro 1: Detalle de corridas realizadas Resultado n error[ %] tiempo s -1.7883E+00 100 5.9391E-01 0 -2.1595E+00 2350 2.2509E+0 0 -2.2438E+00 17452 6.4265E+00 0 -2.2716E+00 65859 2.7738E+00 2 -2.2838E+00 169217 1.5694E+00 5 -2.2902E+00 345497 1.0417E+00 11 -2.2941E+00 608822 7.6217E-01 35 -2.2966E+00 970406 5.9391E-01 48 -2.2984E+00 1439430 4.8333E-01 90 -2.2998E+00 2023469 4.0574E-01 122 -2.3008E+00 2728856 3.4860E-01 149 -2.3015E+00 3562083 3.0534E-01 222 -2.3022E+00 4527631 2.7106E-01 274 -2.3027E+00 5630398 2.4356E-01 300 -2.3031E+00 6875504 2.2114E-01 362 -2.3035E+00 8263763 2.0191E-01 397 -2.3038E+00 9796512 1.8548E-01 528 -2.3041E+00 11493719 1.7325E-01 642 -2.3043E+00 13320345 1.5892E-01 782 -2.3045E+00 15334580 1.5121E-01 882 -2.3047E+00 17538101 1.4370E-01 1081 -2.3048E+00 19900197 1.3468E-01 1107 -2.3052E+00 22502478 1.3077E-01 1332 -2.3050E+00 25031794 1.1240E-01 1364 -2.3078E+00 60000000 8.9709E-04 3239 Estudiando la funci´n, podemos afirmar que la misma es asint´tica en x = |1|, adem´s el rango a evaluar o o ase encuentra dentro del intervalo de negatividad de la funci´n N = (0, 1), cruzando el eje de coordenadas en el oorigen. Otro detalle es que la funci´n no es anti-sim´trica, aunque parece serlo a simple vista. Su numerador o etiende a −∞ cuando x → 1. Si intent´ramos un procedimiento integrando directamente hasta 1, tendr´ a ıamos o 1una indeterminaci´n ∞ en este punto, por lo que nuestro primer intento ser´ aproximarnos a este punto con auna proximidad aceptable. Como era de esperarse, el resultado que arroj´ con n = 100 sub-intervalos estuvo obastante lejos del valor exacto, aproximadamente un 59 %(−1,7883).Tras realizar algunas pruebas, decid´ armar un proceso iterarivo que fuera adaptando la cantidad de sub- ıintervalos para evaluar la integral, en funci´n del error estimado, tomando como base el valor exacto. De ono haber sido proporcionado este valor, lo natural hubiera sido emplear como referencia el cambio en cadaiteraci´n, y realizar el corte una vez verificado que el error es menor que cierto valor aceptable. Para este caso, o ımite propuesto fue de 10−4 . En la tabla 1 se muestran los resultados obtenidos, la cantidad de sub-intervalosel l´empleados, el error, y el tiempo que insumi´ el c´lculo. Como puede apreciarse, fueron necesarios 60 millones o ade sub-intervalos para lograr un error aceptable ( 10−4 ) en la cantidad de cifras significativas propuesta eneste ejercicio. El tiempo de c´lculo de esta ultima etapa fue de 54 minutos, y de 3 horas 36 minutos en total. a ´Cabe aclarar que en esta ejecuci´n, el valor de n fue seteado manualmente en base a los datos proporcionados opor el c´digo, para llegar m´s r´pidamente a la convergencia y optimizar el tiempo de c´lculo. Este hecho puede o a a avisualizarse en la figura 6a, donde el error alcanzado por la ultima iteraci´n no sigue el comportamiento de las ´ ocorridas anteriores. En el apartado 4 se detalla el programa en c´digo python empleado para producir la salida oanterior 1. 6
  • 7. # −∗− c o d i n g : u t f −8 −∗−2 i m p o r t math , numpy . c o r e . m u l t i a r r a y ; f r o m p y l a b i m p o r t ∗ ; f r o m t i m e i m p o r t t i m e d e f simpson ( f , a , b , n ) :4 S = 0 . 0 ; h = ( b−a ) / n ; x = a r a n g e ( a , b , h ) f o r i i n r a n g e ( l e n ( x ) −1) :6 S += h /6 ∗ ( f ( x [ i ] ) +4∗ f ( ( x [ i ]+ x [ i + 1 ] ) / 2 )+f ( x [ i + 1 ] ) ) i f ( i %10000 == 0 ) :8 p r i n t ’ % 1 / 1 0 0 c o m p l e t a d o ’ %(s t r ( i ∗ 1 0 0 / ( l e n ( x ) −1) ) ) s return S10 def func ( x ) : r e t u r n l o g (1−x ) / s q r t (1−x ∗ ∗ 2 )12 a , b , n = 0 . 8 , 1 , 6 e 7 # l i m i t e s p a r a e l c a l c u l o de l a i n t e g r a l y num . de s u b i n t e r v a l o s ˜ c o n v l i m i t , e x s o l = 1 . 0 e −4 , −2.3078 # p a r A ¡ m e t r o s de c o n v e r g e n c i a y i n i c i a l i z a c i o n de p a r a m e t r o de convergencia14 s t a r t = t i m e ( ) ; s o l = s i m p s o n ( f u n c , a , b , n ) ; end = t i m e ( ) # nueva s o l u c i o n o u t d a t = open ( ’ out− ’ + s t r ( c o n v l i m i t ) + ’ . s i m p s o n ’ , ’w ’ )16 o u t d a t . w r i t e ( ’#I n t e g r a c i o n de una f u n c i o n p o r Simpson n ’ ) o u t d a t . w r i t e ( ’#r e s u l t a d o t n t e r r o r [ %] t tiempo [ s ] n ’ )18 p r i n t ’#r e s u l t a d o t n t e r r o r [ %] t tiempo [ s ] n ’ p r i n t ’ % 1 0 . 4 E t %11d t % 1 0 . 4 E t %11dn ’ %(s o l , n , n a d j , ( end−s t a r t ) )20 w h i l e ( a b s ( ( s o l −e x s o l ) / e x s o l ) >= c o n v l i m i t ) : s t a r t = t i m e ( ) #t i m e p o i n i c i a l22 n a d j = a b s ( ( s o l −e x s o l ) / e x s o l ) ∗100 #p a r a m e t r o de a j u s t e d e l numero de i n t e r v a l o s n = i n t ( n + n ∗ n a d j ) #a j u s t e d e l numero de s u b i n t e r v a l o s en f u n c i o n d e l e r r o r24 s o l = simpson ( func , a , b , n ) ; end = t i m e ( ) #t i e m p o f i n a l o u t d a t . w r i t e ( ’ % 1 0 . 4 E t %11d t % 1 0 . 4 E t %11dn ’ %(s o l , n , n a d j , ( end−s t a r t ) ) )26 p r i n t ’ % 1 0 . 4 E t %11d t % 1 0 . 4 E t %11dn ’ %(s o l , n , n a d j , ( end−s t a r t ) ) else :28 p r i n t ’ Se l l e g o a l a s o l u c i o n , v a l o r= % 1 0 . 4 E c o n e r r o r d e l % 1 0 . 4 E 1 / 1 0 0 nSe e m p l e a r o n % s s u b i n t e r v a l o s n ’ %(s o l , nadj , n ) p r i n t ’ D e t a l l e s de c a l c u l o en % ’ %(o u t d a t . name ) ; o u t d a t . c l o s e ( ) s Ej4.py (a) Convergencia del error en funci´n del tiempo de c´lculo (semi- o a (b) Error en base a sub-intervalos utilizados log) Figura 5: C´lculo de una funci´n con m´todo de Simpson a o e 5. Hallar una funci´n de mapeo para una matriz Hessenberg (trian- o gular superior con una sub-diagonal, o triangular inferior con una super-diagonal Resoluci´n o Frecuentemente nos encontramos ante arreglos matriciales donde existen elementos nulos. A menudo, las mediciones reales proporcionan matrices de baja densidad. Cuando nos hallamos ante este tipo de situaciones, sobre todo en casos que superen varios miles de elementos, el costo computacional de almacenar todos los ele- mentos ser´ importante, a la vez de in´til, dado que almacenar elementos nulos no proporciona ninguna mejora, a u y solo emplear´ grandes espacios de memoria. a Para estos casos es conveniente hacer uso de alg´n tipo de transformaci´n que permita solamente guardar u o los elementos de inter´s, pero evitando la p´rdida de informaci´n. A menudo, para el caso de matrices ralas, e e o donde los elementos no-nulos no siguen un patr´n de distribuci´n dado, se suele emplear una transformaci´n o o o Rpxq → Rrx2 donde se coloca en la primer columna todos los elementos no-nulos, y en la segunda, su direcci´n. o De esta manera, es simple reconstruir la forma original, ya que esta operaci´n es reversible al no mediar p´rdida o e alguna de informaci´n. o 7
  • 8. 100 error 10 1 log error[%] 0.1 0.01 0.001 0.0001 100 1000 10000 100000 1e+06 1e+07 1e+08 log n (a) Error relativo en funci´n del numero de sub-intervalos (papel logar´ o ıtmico) Sin embargo, cuando la distribuci´n sigue alg´n tipo de l´gica, se puede evitar el uso de una segunda columna, o u oy emplear una funci´n de mapeo Rpxq → Rr ya que la informaci´n sobre su posici´n original estar´ guardada o o o aen el ordinal del vector. Consideremos una matriz Hessenberg superior [6], a0,0 a0,1 a0,2 ··· a0,n−1   a1,0  a1,1 a1,2 ··· a1,n−1    0 a2,1 a2,2 ··· a2,n−1  sup Hn,n = 0    0 a3,2 ··· a3,n−1    . . . .. .  . . . .  . . . . .  0 0 0 ··· an−1,n−1 Los elementos no-nulos de esta matriz son aquellos que cumplen estas condiciones: i=0 0<i<n−1∧i−1<j <n−1 El orden a seguir en este procedimiento ser´ primero almacenar la primera fila, luego la segunda y a conti- anuaci´n la tercera sin el primer elemento, seguido de la cuarta fila sin los dos primeros elementos, hasta llegar oa la ultima fila, donde s´lo almacenaremos el ultimo elemento. Todos ellos se disponen en un vector fila que ´ o ´puede escribirse de la siguiente manera: H ∗ = [a0,0 , a0,1 , a0,2 , · · · , a0,n−1 , a1,0 , a1,1 , a1,2 , · · · , a1,n−1 , a2,1 , a2,2 , · · · , a2,n−1 , a3,2 , · · · , a3,n−1 , · · · , · · · , an−1,n−1 ] Considerando que la cantidad de elementos por encima de la diagonal en una matriz cuadrada est´ dada apor la cantidad (n ∗ (n − 1))/2, y que en la diagonal hay n elementos no-nulos, la cantidad total sera la sumade estos dos t´rminos, dando un total de n(n+1) elementos. e 2 Una forma b´sica de representar un mapeo unidimensional de una matriz, es a trav´s de una combinaci´n a e olineal del tipo k = in + j, donde k es el sub-´ ındice del vector resultante. Dado en nuestro caso buscamosparticularmente una funci´n que omita todos los elementos nulos de H sup deberemos restar del total de elementos ode una matriz, la cantidad de elementos no nulos descriptos anteriormente. Esto da como resultado una funci´n ode la forma: i(i − 1) kh = (in) + j − 2 Como ejemplo, consideremos una matriz como la que se muestra a continuaci´n: o 8
  • 9.   3 −4 12 −1 17 6  −5 2 11 −1 sup 0 2 7 −4 −9 H5,5 = 0   0 21 11 12   0 0 0 −7 3 0 0 0 0 2 Esta, luego de la transformaci´n, dar´ lugar al vector: o a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 H∗ = 3 −4 12 −1 17 6 −5 2 11 −1 2 7 −4 −9 21 11 12 −7 3 2 Si quisi´ramos acceder al elemento a2,3 (−4), la transformaci´n apuntar´ al elemento mapeado k = (2 ∗ 5) + e o ıa 2(2−1)3 − 2 = 12, resultando en el mismo elemento, ahora en el vector de mapeado.6. Dado el siguiente sistema:     1 1 1 5 1 2 4 4     1 3 9,D =  3    A · X = D, con : A =  1  4 16 2   1 5 25  1 1 6 36 106.1. Calcular soluci´n usando Cholesky: oResoluci´n o Este m´todo es aplicable a matrices cuadradas sim´tricas y definidas positivas. En primera medida el rango e ede aplicaci´n parece acotado, sin embargo, a menudo suelen encontrarse matrices de este tipo en la pr´ctica, o apor cuanto su conocimiento es interesante. Para esta clase de arreglos matriciales, los autovalores ser´n siempre apositivos. Este m´todo es aproximadamente un orden m´s eficiente que el resto de los m´todos de resoluci´n de e a e oecuaciones lineales.El factor que destaca a este m´todo es que en vez de buscar factores triangulares arbitrarios L, U , esta des- ecomposici´n construye un factor L cuya transpuesta LT puede utilizarse como la parte triangular superior. Es odecir, que logramos la transformaci´n L LT = A. o En nuestro caso particular, estamos ante un sistema super-definido cuyo rango es 3. Debido a ello, no esposible aplicar directamente esta transformaci´n a la matriz A. No obstante, si pre-multiplicamos a ambos lados ode la ecuaci´n matricial por AT , en el lado izquierdo tendremos como resultado una matriz de coeficientes que oreunir´ las condiciones necesarias para aplicar el m´todo. Esto es, una matriz Hermitiana [?]. a e AT · A = α AT · D = β α·X =β Luego, descomponiendo la matriz α resolvemos el sistema con el siguiente cambio de variables: α = LT · L L · Y = β =⇒ LT · X = Y Los resultados son los siguientes:     6 21 91 25 α = 21 91 441  β =  95  91 441 2275 465       2,44948974 8,5732141 37,15059443 10,20620726 11 L= 0 4,18330013 29,28310093 Y =  1,79284291  X = −5,82142857 0 0 6,11010093 5,45544726 0,89285714 9
  • 10. Estos valores no son satisfactorios. A este respecto, puedo interpretar que la matriz de coeficientes se en- cuentra mal condicionada cond(A) = 102,69, luego, el proceso es divergente. Como se dijo al principio, este es un sistema superdeterminado, donde se espera que todas las ecuaciones representen al mismo sistema (podr´ ıa asumirse que como todas las ecuaciones siguen un patr´n definido, excepto la ultima, podr´ existir alg´n error o ´ ıa u de observaci´n). Si para nuestro caso particular, todas las ecuaciones est´n correctamente definidas, es muy o a probable que exista un comportamiento subyacente que requiere de mayor observaci´n, previo a la utilizaci´n o o de este m´todo. Si en cambio, pudi´ramos determinar que en la confecci´n alguna de las ecuaciones no siguen e e o el comportamiento observado (como por ejemplo la ultima ecuaci´n) y decidi´ramos retirarla del sistema, o ´ o e determin´ramos que el valor correcto para el ultimo valor del vector D era cero (con lo que ahora el sistema a ´ mostrar´ un comportamiento m´s simple), los el proceso ser´ convergente y los resultados ser´ los siguientes: ıa a ıa ıan   6 X= −1  1,02603473e − 15 Este nuevo vector soluci´n verifica correctamente en el sistema. N´tese que en esta modificaci´n, no cambia o o o la condici´n de la matriz de coeficientes, ya que el ejemplo se bas´ en una modificaci´n del vector D. o o o 6.2. Calcular soluci´n usando una transformaci´n ortogonal: o o Resoluci´n o A menudo este tipo de sistemas no tienen soluci´n. Cuando esto ocurre, el caso se transforma en un problema o de optimizaci´n, donde se pretende minimizar la norma euclidiana m´ A · x − b 2 ). Queda claro que b´sica- o ın( a mente al no haber soluci´n, se busca aproximar un vector soluci´n tal que se minimice esa funci´n objetivo, y o o o este hecho es el que engloba y da nombre a los procedimientos de resoluci´n que surgen de este paradigma, a o los que llamamos m´ ınimos cuadrados. Mediante la obtenci´n de valores singulares se puede llegar a la expresi´n; o o −1 0 x=V r UT b 0 0 −1 Aqu´ el elemento r es una submatriz diagonal que contiene todos los valores singulares de la matriz ı, original. Puede demostrarse que la ecuaci´n anterior constituye la soluci´n del problema m´ A · x − b 2 ). El o o ın( segundo miembro de la misma es conocido como la matriz de Moore-Penrose [5]. Haciendo uso de las condiciones de Penrose se llega a la expresi´n A† = (AT · A)−1 · AT . Por otro lado, el vector o x ser´ unico si AT · A es invertible, o sea que la transformaci´n lineal es inyectiva. De esta manera, el sistema a´ o puede plantearse como: x = (AT · A)−1 · AT · b . Para nuestro caso, la matriz de Moore-Penrose adopta la forma: −1 0 A† = (AT · A)−1 · AT = V r UT 0 0 Este m´todo genera los mismos resultados que los de 6.1. El apartado 6.2 muestra la implementaci´n del e o algoritmo en Python. 1 # −∗− c o d i n g : u t f −8 −∗− f r o m math i m p o r t ∗ ; f r o m s c i p y . l i n a l g i m p o r t ∗ ; i m p o r t numpy a s np ; f r o m numpy . m a t l i b import ∗ 3 d e f C h o l e s k y (A, z t o l = 1 . 0 e −5) : ””” 5 Computa l a m a t r i z t r i a n g u l a r s u p e r i o r p o r f a c t o r i z a c i o n de C h o l e s k y en una m a t r i z h e r m i t i a n a . 7 ””” n r o w s = l e n (A) ; mrows = l e n ( l e n (A) ) 9 t = z e r o s ( ( nrows , n r o w s ) ) ; S = z e r o s ( ( nrows , n r o w s ) ) ; d = z e r o s ( ( nrows , mrows ) ) f o r i i n r a n g e ( nrows ) :11 S = sum ( [ ( t [ k ] [ i ] ) ∗∗2 f o r k i n r a n g e ( i ) ] ) d = A [ i ] [ i ] −S13 i f abs ( d ) < z t o l : t [ i ] [ i ] = 0.015 else : if d < 0.0:17 r a i s e V a l u e E r r o r , ” La M a t r i z no e s d e f i n i d a p o s i t i v a ” t [ i ] [ i ] = sqrt (d)19 f o r j i n r a n g e ( i +1 , n r o w s ) : S = sum ( [ t [ k ] [ i ] ∗ t [ k ] [ j ] f o r k i n r a n g e ( i ) ] )21 i f abs ( S ) < z t o l : S = 0.023 t [ i ] [ j ] = (A [ i ] [ j ] − S ) / t [ i ] [ i ] return t25 A = m a t r i x ( np . a r r a y ( [ [ 1 , 1 , 1 ] , [ 1 , 2 , 4 ] , [ 1 , 3 , 9 ] , [ 1 , 4 , 1 6 ] , [ 1 , 5 , 2 5 ] , [ 1 , 6 , 3 6 ] ] ) ) D = m a t r i x ( np . a r r a y ( [ [ 5 ] , [ 4 ] , [ 3 ] , [ 2 ] , [ 1 ] , [ 1 0 ] ] ) )27 a l p h a = t r a n s p o s e (A) ∗A ; b e t a = t r a n s p o s e (A) ∗D L = c h o l e s k y ( a l p h a ) ; Y = s o l v e ( t r a n s p o s e ( L ) , b e t a ) ; X = s o l v e ( L , Y) Problema6a.py 10
  • 11. 6.3. Calcular error y desviaci´n est´ndar: o aResoluci´n o Una forma de estimar el error de un SEL, es expresarlo en la siguiente forma: A · X − D = R,donde el vector R acumular´ los residuos. Dado que en este ejercicio he realizado muchas asunciones, calcular´ los a evalores del sistema original, y modificado. Para el primer caso, el SEL con el c´lculo de residuos queda en la aforma:     1 1 1 5   1 2 4    4 1,0714e + 00  1 3 9   11    −1,0714e + 00   · −5,8214 −  3  = −1,4285e + 00 − 2,1316e − 14      1 4 16 2    1 5 25  0,8928    1 3,2142e + 00  −1,7857e + 00 1 6 36 10Para los valores originales, y:       1 1 1 5 8,8817e − 15 1 2 4   4  8,8817e − 16    6      − 3 = −3,9968e − 15 1 3 9       1 · −1 2 −5,3290e − 15 4 16  1  1,0260e − 15    1 −3,5527e − 15  5 25 1 6 36 0 2,6645e − 15si hubi´ramos tenido un vector D con esta otra forma (aclaro que esta alternativa, al igual que al principio edel ejercicio s´lo se muestra con fines comparativos). Los valores correspondientes a las desviaciones de los o Rt · Rresiduos pueden calcularse como σ 2 = , donde los valores del denominador corresponden a las dimensiones m−ncorrespondientes de la matriz A, que para nuestro caso es 6 − 3 = 3, por lo que el c´lculo queda en 5,95238095 apara el caso real, y en 4,79233000e − 29(≈ 0) para el ejemplo propuesto.6.4. Calcular las matrices de covarianza y de correlaci´n: oResoluci´n o La matriz de covarianza contiene la covarianza entre los elementos de un vector. Es la generalizaci´n natural oa dimensiones superiores del concepto de varianza de una variable aleatoria escalar. Representa la influenciaque una variable tiene sobre otra y de los pares ordenados del resultado de un experimento aleatorio. Se definematem´ticamente como: a σij = E[(Xi − µi )(Xj − µj )] donde µi = E(Xi ) En la pr´ctica, esta matriz generalmente se calcula a partir de su definici´n en funci´n de su transpuesta. a o oAl no ser una matriz nula, se infiere que las variables no son independientes.   0 0 0 σij = cov(A) = (AT · A)−1 = 0 3,5 24,5  0 24,5 178,966 Los coeficientes de correlaci´n de esta matriz indican que hay una fuerte correlaci´n entre las variables x2 y o ox3 :   ∅ ∅ ∅ corr(A) = ∅ 1 0,97891726 ∅ 0,97891726 16.5. Hay datos discordantes?:Resoluci´n o Es evidente que el ultimo vector fila no sigue el patr´n del resto de las ecuaciones. Si se lo retirara del ´ osistema, el mismo quedar´ con cond(A) = 85,8932 Desde el punto de vista anal´ ıa ıtico, es posible que D5 = 10 seadiscordante. Anulando este valor, el SEL completo seguir´ el mismo patr´n de comportamiento. Otra forma de ıa omejorar la condici´n del sistema ser´ directamente retirar la ultima ecuaci´n, logrando el mismo resultado. o ıa ´ o 11
  • 12. 7. Para la siguiente matriz de Pascal 5x5:   1 1 1 1 1 1 2 3 4 5   P = 1  3 6 10 15 1 4 10 20 35 1 5 15 35 70 7.1. Calcular los autovalores de la matriz: Resoluci´n o Para calcular los autovalores de esta matriz, debemos primero diagonalizar la matriz. Para ello haremos uso del algoritmo QR, de manera de convertir esta matriz en una de tipo tridiagonal. Es posible para ello efectuar transformaciones de Householder del tipo ak+1 = Hk AkHk , k = 1..n En cada iteraci´n, la matriz Hk es una matriz identidad, cuya submatriz inferior derecha es una matriz de o Householder de (n − k) ∗ (n − k) elementos para n = 5. Las transformaciones sucesivas de Householder [2] producen una matriz tridiagonal porque la matriz original A es sim´trica. Una vez obtenida la matriz tridiagonal resultante del procedimiento anterior, se utiliza el e algoritmo QR en forma iterativa. Esto es, descomponer la matriz, obtener una nueva con T = R ∗ Q y continuar la operaci´n hasta su convergencia. o En cada iteraci´n se verifica si el algoritmo converge. Consideramos que hay convergencia cuando la variaci´n o o en el valor de todos los elementos por debajo de la diagonal principal, respecto de los valores de la iteraci´n o anterior, es menor a 1−10 . Cuando se alcanza convergencia, los autovalores quedan en la diagonal principal de la matriz. De esta manera se obtiene el siguiente arreglo:   92,2904  5,5175    Λ =  1,0000     0,1812  0,0108 # −∗− c o d i n g : u t f −8 −∗−2 i m p o r t numpy . c o r e a s np1 ; i m p o r t numpy . c o r e . f r o m n u m e r i c a s np2 ; i m p o r t math P s c a l = np1 . a r r a y ( [ [ 1 , 1 , 1 , 1 , 1 ] , [ 1 , 2 , 3 , 4 , 5 ] , [ 1 , 3 , 6 , 1 0 , 1 5 ] ,4 [ 1 , 4 , 1 0 , 2 0 , 3 5 ] , [ 1 , 5 , 1 5 , 3 5 , 7 0 ] ] ) #M a t r i z de D a t o s d e f q r (A, method=”gramm” ) :6 i f method == ”gramm” : Q = gramm (A) ; R = np1 . d o t ( np2 . t r a n s p o s e (Q) ,A)8 r e t u r n Q, R d e f gramm (X, i n p l a c e = F a l s e ) :10 i f not i n p l a c e : V = [ row [ : ] f o r row i n X ]12 else : V = X14 k = l e n (X [ 0 ] ) ; n = l e n (X) f o r j in range ( k ) :16 f o r i in range ( j ) : D = sum ( [ V [ p ] [ i ] ∗V [ p ] [ j ] f o r p i n r a n g e ( n ) ] )18 f o r p in range (n) : V [ p ] [ j ] −= (D ∗ V [ p ] [ i ] )20 invnorm = 1 . 0 / math . s q r t ( sum ( [ ( V [ p ] [ j ] ) ∗∗2 f o r p i n r a n g e ( n ) ] ) ) f o r p in range (n) :22 V [ p ] [ j ] ∗= invnorm # o r t o g o n a l i z a c i o n Gramm −S c h m i d t return V24 Q, R = q r ( P s c a l ) ; p r i n t P s c a l ; p r i n t Q; p r i n t R Problema7a.py 7.2. Demostrar que verifican el teorema de Gershgorin: Resoluci´n o El teorema de Gershgorin [9] nos dice que los autovalores de una matriz compleja (esto incluye tambi´n ae las reales) de orden nxn, se encuentran en el espacio del plano complejo delimitado por la uni´n de los c´ o ırculos Di . Un c´ırculo Di tiene el centro en el valor del elemento aii de la matriz, y su radio se obtiene sumando el resto de los elementos de la fila en valor absoluto, es decir: n ci = aii , ri = |aij | j=1 12
  • 13. Entonces los autovalores de la matriz A se encuentran en la uni´n de los n c´ o ırculos. Adem´s, cada componente aconexa de esa uni´n contiene tantos autovalores como c´ o ırculos haya en ella, tanto c´ ırculos como autovalorescontados con multiplicidad. A estos c´ırculos se los denomina comunmente discos de Gershgorin. Para nuestramatriz de Pascal, los valores correspondientes son: λ1 = 92, 2904348302 → |92,2904348302 − 70| ≤ 56 → i = 4 → a44 = 70, r4 = 56 λ2 = 5,5174879093 → |5,5174879093 − 2| ≤ 13 → i = 1 → a11 = 2, r1 = 13 λ3 = 1 → |1 − 1| ≤ 4 → i = 0 → a00 = 1, r0 = 4 λ4 = 0,1812419015 → |0,1812419015 − 6| ≤ 29 → i = 2 → a22 = 6, r2 = 29 λ5 = 0,0108353591 → |0,0108353591 − 20| ≤ 50 → i = 3 → a33 = 20, r2 = 50 Todos estos valores se encuentran contenidos dentro de al menos un disco de Gershgorin, con lo que quedaverificado el cumplimiento del teorema para este caso.8. Aproximar su funci´n favorita con cierta precisi´n usando una o o de las t´cnicas discutidas en clase: eResoluci´n o En el estudio del comportamiento de materiales sometidos a presiones extremas, suelen emplearse simu-laciones de din´mica molecular, y una de las funciones que m´s se utilizan son los potenciales emp´ a a ıricos quemodelan el comportamiento de s´lidos a nivel nanosc´pico cuando se los somete a esfuerzos que alejan la ma- o o ´triz cristalina de su estado de equilibrio. Uno de los m´s utilizados es el de Lennard-Jones [3]. Este tiene la forma a σ 12 σ Ur = 4 [( ) − ( )6 ] rij rij, donde es el ancho del pozo de potencial, r la distancia entre la part´ ıcula i y j, y σ es la distancia a laque el potencial se anula. Como se puede obsercar en esta ecuaci´n, las distancias tienen dos sub´ o ındices, quecorresponde a la distancia entre part´ıculas i y j, por cuanto la gr´fica 6 en realidad muestra el comportamiento aentre dos de ellas. En simulaciones MD, este potencial debe evaluarse un promedio de 12 veces para cadapart´ ıcula en un cristal BCC.Adem´s, normalmente para independizar el comportamiento del potencial de las acaracter´ ısticas de cada material, esta gr´fica a menudo se muestra como U/ vs. r/σ a Como puede verse en la gr´fica 6, esta funci´n tiene una forma particular que tiene que ver con los dos a o Figura 6: Gr´fico del potencial de Lennard-Jones atipos de fuerzas que act´an principalmente, a rangos cortos, predominan las fuerzas de repulsi´n de Pauli. A u omedida que se gana distancia interat´mica, una vez superado el punto de equilibrio, dado por el m´ o ınimo depotencial, las fuerzas atractivas de Van der Waals act´an con preponderancia. Es dable decir que este modelo es uuna gran simplificaci´n al problema de modelar el comportamiento de part´ o ıculas a nivel at´mico. La potencia ocomputacional con que se cuenta en estos d´ permite emplear modelos m´s complicados, como la Teor´ de ıas a ıaFuncional de Densidad (DFT) [4], para algunos millones de ´tomos, o hasta la ecuaci´n de Schroding¨r [7]. a o eSin embargo, con los recursos actuales, dimensiones de meso-escala s´lo son posibles empleando potenciales y ot´cnicas de tight-binding[8]. La importancia de esto radica en que en este rango de tama˜os es posible vincular e n 13
  • 14. el comportamiento molecular, con el observado por los ensayos corrientes de la Ciencia de los Materiales.Para nuestro caso utilizaremos Polinomios de Chevyshev [1]. Su ecuaci´n es de la forma: o Tn (x) = cos(n ∗ arccos(x)), no obstante, en su implementaci´n se utiliza una relaci´n de recurrencia. o o Tn+1 (x) = 2xTn (x) − T n − 1(x)De las ecuaciones anteriores, podemos asumir que los ceros se encuentran en el subdominio [−1, 1], ubicadosseg´n: u 1 (π(k − )) x = cos 2 , k = 1, 2, −..., n nLuego, en el proceso de aproximaci´n se emplea la siguiente ecuaci´n: o o 1 1   N −1 1 2 N 2  (π(k − )) (π(k − )) f (x) ≈ ck ∗ tk (x) − c0 cj = f (xk )Tj (xk ) = f cos 2  cos 2 2 N N n n  k=0 k=1 (a) Lennard-Jones normalizado (b) Chevishev a distintos ´rdenes y funci´n original o o Figura 7: Implementaci´n de Polinomios de Chevishev a la funci´n potenci´l de Lennard-Jones o o a Siendo el conjunto de valores xk , los ceros del polinomio. Para nuestro caso particular, deseamos evaluar lafunci´n en el dominio reducido x[1, 2,5], en t´rminos normalizados, como se coment´ anteriormente. El l´ o e o ımitepor derecha se impone normalmente como cut-off distance, ya que en ese rango las fuerzas pueden despreciarseen algunos casos7a. Dado que la t´cnica no funciona en este dominio, debemos efectuar una transformaci´n para e ollevarlo al espacio de c´lculo de la t´cnica. En nuestro caso emplearemos x∗ = r/bσ con b = 2,5, y evaluaremos a een x∗ [2/5, 1].El c´digo fue preparado para poder evaluar en forma recursiva la misma funci´n con distintos ´rdenes de o o oaproximaci´n. Para este caso fuimos desde orden 3 al 11. El comportamiento del potencial hace plausible su oajuste a trav´s de polinomios, por lo que la idea fue ver hasta con qu´ orden de magnitud ser´ necesario e e ıaaproximarse para lograr un buen fitting. La figura 7b permite comparar el comportamiento de los sucesivosajustes a orden creciente con la funci´n original. Dado que la curva tiene un comportamiento y → +∞ : x → 0, oel hecho de evaluar en un subdominio cercano a 0 producir´ errores considerables en la vecindad de este valor. a9. Resolver el problema del p´ndulo invertido, encontrando una so- e luci´n estable para oscilaciones verticales: oResoluci´n o El problema del p´ndulo invertido puede describirse en base a la figura 8, donde una barra de longitud L ese encuentra suspendida por su extremo inferior mediante un v´ ınculo de segundo orden a un elemento que lo 14
  • 15. Figura 8: Representaci´n del problema del p´ndulo invertido o esomete a un movimiento vertical s. El v´ ınculo tiene dos grados de libertad, a saber: lineal en la direcci´n y, y orotativo en θ. Si suponemos que dicho movimiento est´ gobernado por un ley del tipo a s = Asenwtdonde A es la amplitud, y w es la frecuencia de vibraci´n de la base, podemos expresar su forma diferencia tras oaplicar la segunda Ley de Newton, quedando de la siguiente manera: ¨ 3 θ= (g − Aw2 senwt)senθ 2L, donde para valores peque˜os de θ ≈ senθ, la ecuaci´n es condicionalmente estable para algunos valores de n oA. Las posiciones de la masa m est´n dadas por la combinaci´n (Lcosθ, y(t) + Lsenθ), y las velocidades, por a o ˙ ˙ θsenθ). Por todo lo anterior, podemos expresar para valores peque˜os de θ, la firma diferencial(Lθcosθ, y(t)L ˙ nde la siguiente manera: ¨ 3 θ= (g − Aw2 senwt)θ 2LRevisando la basta bibliograf´ que existe a disposici´n sobre an´lisis din´mico, podemos determinar que para ıa o a a√este tipo particular de arreglo habr´ estabilidad cuando se cumpla que w > 2gL . Puede colegirse que el segundo a Amiembro de la desigualdad tiene que ver con las caracter´ ısticas geom´tricas del sistema, y mientras ese miembro ese mantenga en valores inferiores a la frecuencia de excitaci´n externa, se mantendr´n condiciones estables. o aPara nuestro an´lisis elegimos cinco escenarios para estudiar su comportamiento. En todos ellos las condiciones ainiciales son θ0 = 1θ˙0 = 0 para simplificar el estudio, y se ha variado la velocidad angular de excitaci´n seg´n la o ucondici´n de estabilidad. A continuaci´n puede verse el detalle de los par´metros establecidos para cada caso: o o aA en las figuras 9a9b10a10b se muestran los espacios de fase de cada uno de los casos, en todas las corridas Cuadro 2: Casos analizados Caso A[m] L[m] w[rad/s] √ θ0 [rad] 1 1 1 2gL/A 1 2 1 1 25 1 3 1 1 50 1 4 1 1 2 1se evaluaron los intervalos con un ancho de 1−4 por un lapso de 100 segundos, utilizando el m´todo de Euler eexpl´ ıcito, como puede observarse en el c´digo 9. o 15
  • 16. (a) Caso 1 (b) Caso 2 Figura 9(a) Caso 3 (b) Caso 4 Figura 10 16
  • 17. # −∗− c o d i n g : u t f −8 −∗−2 i m p o r t numpy , math import s c i p y . c o n s t a n t s4 h=1e −4; n =100000 # [A , L , w , theta0 , thetadot0 ]6 pic = [[1 ,1 ,50 ,1 ,0] , [1 ,1 ,25 ,1 ,0] ,8 [1 ,1 ,10 ,1 ,0] , [ 1 , 1 , math . s q r t ( 2 ∗ s c i p y . c o n s t a n t s . g ) , 1 , 0 ] ,10 [1 ,1 ,2 ,1 ,0] , [ 0 , 1 , 0 , 0 , 0 ] ] # params and i n i t c o n d i t i o n s12 def f u n c (A, L , w , t h e t a , t ) :14 r e t u r n ( ( 3 / ( 2 ∗ L ) ) ∗ ( s c i p y . c o n s t a n t s . g−A∗ (w∗ ∗ 2 ) ∗numpy . s i n (w∗ t ) ) ∗numpy . s i n ( t h e t a ) )16 def eulerexp ( case , n , h) : # [ t , thetha , thetadot , thetaddot ]18 Z = [ [ 0 f o r i in range (4) ] f o r j in range (n) ] Z [ 0 ] [ 0 ] , Z [ 0 ] [ 1 ] , Z [ 0 ] [ 2 ] , Z [ 0 ] [ 3 ] = 0.0 , case [ 3 ] , case [ 4 ] , func ( case [ 0 ] , case [ 1 ] , case [ 2 ] , case [ 3 ] , 0)20 f o r i i n r a n g e ( l e n ( Z ) −1) : Z[ i +1][3] = func ( case [ 0 ] , case [ 1 ] , case [ 2 ] , Z [ i ] [ 1 ] , Z [ i ] [ 0 ] )22 Z [ i + 1 ] [ 2 ] = Z [ i ] [ 2 ] + h∗Z [ i ] [ 3 ] Z [ i + 1 ] [ 1 ] = ( Z [ i ] [ 1 ] + h∗Z [ i ] [ 2 ] )24 Z [ i + 1 ] [ 0 ] = ( i +1)∗h return Z26 def w r i t e d a t a ( oudt , r r y t ) :28 f o r l i n e in range ( len ( r r y t ) ) : linestrout = ’ ’30 f o r datum i n r r y t [ l i n e ] : i f ( datum == 0 ) o r ( math . i s n a n ( datum ) ) :32 l i n e s t r o u t += s t r ( ’ 0 . 0 0 0 0 E+00 ’ ) + ’ ’ else :34 l i n e s t r o u t += s t r ( ’ % 1 0 . 4 E ’ % datum ) + ’ ’ l i n e s t r o u t . s t r i p ( ) ; l i n e s t r o u t += ’ n ’ ; o u d t . w r i t e ( l i n e s t r o u t )36 for k in range (6) : Zout = e u l e r e x p ( p i c [ k ] , n , h )38 o u t f i l e = open ( ’ . / P r o b l e m a 9 ’ + s t r ( k ) + ’ . o u t ’ , ’w ’ ) w r i t e d a t a ( o u t f i l e , Zout )40 outfile . close () Problema9.py 17
  • 18. Referencias [1] Abramowitz, M. Handbook of mathematical funktions : with formulas, graphs, and mathematical tables. In Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, 9th ed. Dover Publications, New York, 1972, pp. 771–802. [2] Frankel, T. The geometry of physics : an introduction. Cambridge University Press, New York, 2004. [3] Householder, A. S. Unitary triangularization of a nonsymmetric matrix. Journal of the ACM 5, 4 (Oct. 1958), 339–342. [4] Jones, J. E. On the determination of molecular fields. II. from the equation of state of a gas. Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences 106, 738 (Oct. 1924), 463–477. [5] Levy, M. Universal variational functionals of electron densities, First-Order density matrices, and natural Spin-Orbitals and solution of the v-Representability problem. Proceedings of the National Academy of Sciences 76, 12 (Dec. 1979), 6062–6065. [6] Penrose, R., and Todd, J. A. A generalized inverse for matrices. Mathematical Proceedings of the Cambridge Philosophical Society 51, 03 (Oct. 2008), 406. [7] Press, W. H. Numerical recipes : the art of scientific computing. Cambridge University Press, Cambridge, UK; New York, 2007. ˜ ˜ ˜ [8] SchrA¶dinger, E. MA c moires sur la mA c canique ondulatoire. Ed. Jacques Gabay, Sceaux, 1988. [9] Slater, J. C., and Koster, G. F. Simplified LCAO method for the periodic potential problem. Physical Review 94, 6 (June 1954), 1498–1524. ˜[10] Varga, R. S. GerA c sgorin and his circles. Springer, Berlin; New York, 2004.[11] Wright, E. Solution of equation zeˆz =1+i. Proc. R. Soc. Edinburgh 65 (1958), 193. 18