Tp Metodos Numericos

18
etodos Num´ ericos 2011 - Trabajos Pr´acticos Ing. Diego R. Tramontina 26 de abril de 2012 Ejercicios: 1. Calcular las ra´ ıces del polinomio x 7 +6x 6 +6x 5 - 21x 4 - 36x 3 +3x 2 + 13x +3=0 Resoluci´ on En este ejercicio primeramente analizaremos las caracter´ ısticas del polinomio, para luego definir la meto- dolog´ ıa a seguir. Podemos inferir que la cantidad de ra´ ıces ser´ a igual a 7, dado que es el orden del polinomio. Sabemos tambi´ en que el l´ ımite superior para el valor de todas las ra´ ıces esta dado por: Σ n i=0 |A i | A 0 >A i , Para nuestro caso particular alcanza el valor de 29, c 66. Tambi´ en sabemos que A n es impar, por lo que podemos suponer que existe al menos una ra´ ız real. Dado que la cantidad de ra´ ıces reales positivas es menor o igual a la cantidad de cambios de signo, que para nuestro caso es de dos, podemos decir que podr´ ıa existir una segunda ra´ ız positiva. Adem´ as, como todos los coeficientes de nuestro polinomio se encuentran en el campo real, si existieran ra´ ıces complejas, estas estar´ an dispuestas en forma de pares conjugados. Si analizamos su gr´ afica[1], podremos observar que existe una zona de aparente inflexi´ on en el entorno de cero para el espacio imagen de la funci´ on. Dado el grado del polinomio, en esta zona pueden aparecer valores para los cuales la derivadas primeras se anulan, aportando ra´ ıces conjugadas al resultado, por lo que la implementaci´ on de un algoritmo de intervalo cerrado no ser´ ıa pr´ actico. 1 Figura 1: Representaci´ on del polinomio Para encontrar todas las ra´ ıces de este polinomio, se implement´ o un script en python para calcular los valores propios de la matriz asociada a este polinomio. Para el polinomio P (x)= x n + cn-1x n-1 + cn-2x n-2 + ... + c1x + c0 , se define como: 1

Transcript of Tp Metodos Numericos

Page 1: Tp Metodos Numericos

Metodos Numericos 2011 - Trabajos Practicos

Ing. Diego R. Tramontina

26 de abril de 2012

Ejercicios:

1. Calcular las raıces del polinomiox7 + 6x6 + 6x5 − 21x4 − 36x3 + 3x2 + 13x+ 3 = 0

Resolucion

En este ejercicio primeramente analizaremos las caracterısticas del polinomio, para luego definir la meto-dologıa a seguir. Podemos inferir que la cantidad de raıces sera igual a 7, dado que es el orden del polinomio.Sabemos tambien que el lımite superior para el valor de todas las raıces esta dado por:

Σni=0|Ai|A0

> Ai,

Para nuestro caso particular alcanza el valor de 29, 66. Tambien sabemos que An es impar, por lo que podemossuponer que existe al menos una raız real. Dado que la cantidad de raıces reales positivas es menor o igual a lacantidad de cambios de signo, que para nuestro caso es de dos, podemos decir que podrıa existir una segunda raızpositiva. Ademas, como todos los coeficientes de nuestro polinomio se encuentran en el campo real, si existieranraıces complejas, estas estaran dispuestas en forma de pares conjugados.

Si analizamos su grafica[1], podremos observar que existe una zona de aparente inflexion en el entorno de ceropara el espacio imagen de la funcion. Dado el grado del polinomio, en esta zona pueden aparecer valores para loscuales la derivadas primeras se anulan, aportando raıces conjugadas al resultado, por lo que la implementacionde un algoritmo de intervalo cerrado no serıa practico. 1

Figura 1: Representacion del polinomio

Para encontrar todas las raıces de este polinomio, se implemento un script en python para calcular los valorespropios de la matriz asociada a este polinomio. Para el polinomio P (x) = xn+cn−1x

n−1+cn−2xn−2+ ...+c1x+c0

, se define como:

1

Page 2: Tp Metodos Numericos

Cn =

0 0 · · · 0 −c01 0 · · · 0 −c10 1 · · · 0 −c2...

.... . .

......

0 0 · · · 1 −cn−1

, C7 =

0 0 0 0 0 0 −31 0 0 0 0 0 −130 1 0 0 0 0 −30 0 1 0 0 0 360 0 0 1 0 0 210 0 0 0 1 0 −60 0 0 0 0 1 −6

La matriz a la derecha muestra nuestro caso particular. A continuacion se muestra el algoritmo utilizado.

1 # −∗− coding : utf−8 −∗−import pylab as NX

3 def roo t s (p) :

5 # Si l a entrada es un e sca l a r , c onv i e r t e a array#p = a t l e a s t 1 d (p)

7 i f l en (p . shape ) != 1 :r a i s e ValueError , ”La entrada debe s e r un array de rango 1 . ”

9# I d e n t i f i c a r e lementos no nulos

11 non zero = NX. nonzero (NX. rave l (p) ) [ 0 ]

13 # Devuelve r a i c e s nulas s i l o s c o e f i c i e n t e s de l pol inomio son todos nulosi f l en ( non zero ) == 0 :

15 return NX. array ( [ ] )

17 # I d e n t i f i c a l o s c e ro s a l a i zqu i e rda . Este es e l numero de r a i c e s en 0 .t r a i l i n g z e r o s = len (p) − non zero [−1] − 1

19# Elimina ce ro s a i zqu i e rda y derecha

21 p = p [ i n t ( non zero [ 0 ] ) : i n t ( non zero [−1]) +1]

23 # Convierto e l array en punto f l o t a n t e s i no fue ingresado de es ta forma .i f not i s s u b c l a s s (p . dtype . type , (NX. f l o a t i n g , NX. complex f l oat ing ) ) :

25 p = p . astype ( f l o a t )

27 N = len (p)i f N > 1 :

29 # Construyo la matriz asoc iada y computo l o s e i g enva l o r e s ( l a s r a A c e s )A = diag (NX. ones ( (N−2 ,) , p . dtype ) , −1)

31 A[0 , : ] = −p [ 1 : ] / p [ 0 ]r oo t s = e i g v a l s (A)

33 e l s e :r oo t s = NX. array ( [ ] )

35# Fi jo l o s c e ro s nuevamente en la matriz o r i g i n a l

37 roo t s = hstack ( ( roots , NX. ze ro s ( t r a i l i n g z e r o s , r oo t s . dtype ) ) )return roo t s

39inn = array (−3 ,−13 ,−3 ,36 ,21 ,−6 ,−6)

41 pr in t roo t s ( inn )

Problema1.py

El resultado que arroja el mismo es el siguiente:

X7 =

−2,61803401−2,618033961,522949870,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 polinomica. Las dos ultimas raıces constituyen un par conjugado en =, mientras que lasdos primeras muestran una proximidad considerable, lo que hizo necesario establecer una precision superior a10−6.

2. Existen raıces en la la ecuacion zez = 1+i ademas de z1 = 0, 6+0, 3i?

Resolucion

Esta funcion es un caso particular de la familia tipo Lambertiana W ( W (z)eW (z) = z ). Este tipo deecuaciones ha sido aplicado en campos tales como la fısica cuantica, el comportamiento de diodos y transistoresideales, agujeros negros, la cinetica de la regeneracion de los pigmentos en el ojo humano, sistemas dinamicoscon decaimiento, etcetera. Es bien conocido que este tipo de funciones no pueden resolverse por metodostradicionales. Puesto que ez puede ser escrito como Σınf

i=0zn

n! , se puede afirmar que esta es una serie rapidamenteconvergente. La solucion a esta ecuacion fue propuesta inicialmente por E.M. Wright [10]. Para mapear las raıcesen esta ecuacion se utilizo el metodo de Newton-Raphson en modo iterativo a lo largo del rango (−50− 50i) :(50 + 50i) como valores iniciales. El resultado arrojo 88 raıces en este dominio restringido para una toleranciade 10−8. Los valores se muestran en forma de arreglo, donde la primer columna corresponde a la raız hallada, yla segunda, al valor inicial utilizado como primer aproximacion. Notese que la raız mencionada en el enunciado

2

Page 3: Tp Metodos Numericos

corresponde a la hallada por el metodo utilizando como primer aproximacion el valor 0. Evidentemente losresultados mostrados no representan raıces sino los mımimos locales de cada intervalo propuesto.

z =

−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−100− 100j

0,6569 + 0,3254j)]0j

−4,2565 + 99,7029j100 + 100j

−4,9533 + 200,2518j200 + 200j

−5,3599 + 300,7896j300 + 300j

1 # −∗− coding : utf−8 −∗−

import sc ipy , numbers , numpy3 import sc ipy . opt imize . z e ro s as sc

5 def newton ( func , x0 , fprime , args =() , t o l=1e−30, maxiter =500) :p0 = 1.0 ∗ x0

7 f o r i t e r in range ( maxiter ) :myargs = (p0 , ) + args

9 fde r = fprime (∗myargs )i f f d e r == 0 :

11 return p0p = p0 − func (∗myargs ) / fpr ime (∗myargs )

13 i f abs (p − p0 ) < t o l :re turn p

15 p0 = p

17 def Fx(x ) :fx = x∗ s c ipy . exp (x ) −(1.0 + 1.0 j )

19 return fxdef dFx(x ) :

21 dfx = sc ipy . exp (x )+x∗ s c ipy . exp (x )return dfx

23 Roots = [ ]p r in t sc . brenth (Fx,−100 ,100)

25f o r i in numpy . core . mult iarray . arange (−1000 ,1000 ,100) :

27 rut = newton (Fx , complex ( i , i ) , dFx , )i f i s i n s t a n c e ( rut , numbers . Number) :

29 try :i f rut not in Roots :

31 Roots += [ [ rut ] , [ complex ( i , i ) ] ]except :

33 pr in t rutp r in t Roots

Problema2.py

3. Interpolar los datos a continuacion mediante un polinomio y unspline. Comparar los resultados

X7 =

(−1000 −0,960 −0,860 0,500 0,772 0,790 0,970−1000 −0,151 0,894 0,500 0,895 0,986 −0,306

)Resolucion

Para generar una funcion que contenga a estos puntos, puede utilizarse el metodo de interpolacion polinomica,que consiste en hacer pasar un polinomio de grado n por un conjunto de n puntos conocidos de la funcion.Para realizar esto existen varias tecnicas, entre las que podemos citar las diferencias divididas de Newton, lainterpolacion de Lagrange o la de Hermite. El penultimo puede considerarse un caso particular de Hermite, dondeno se conocen derivadas de la funcion, y el primero, resulta el mas comodo de programar ya que es altamentealgorıtmico y no requiere de informacion sobre las derivadas en los puntos dados. Ademas su complejidad no escreciente con la cantidad de informacion. Para nuestro caso utilizaremos la aproximacion mediante polinomios

3

Page 4: Tp Metodos Numericos

de Lagrange. Un polinomio de de grado n queda definido entonces como

n∑j=0

fj lj(x), con lj(x) =∏i6=j

x− xixj − xi

donde los coeficientes lj son los llamados polinomios de Lagrange. El codigo 3 muestra una implementacion enPython. Este codigo es relativamente simple y funciona bien para orden 15 como maximo. Este codigo produceel polinomio:

y = −0,04721x6 − 47,19x5 + 12,65x4 + 78x3 − 26,98x2 − 31,75x+ 14,05

Para cotejar el fitting de la funcion obtenida, hemos graficado el comportamiento de la misma. En la figura[2a] puede verse la funcion polinomica en el rango de puntos, la misma llega a un maximo del orden de 105

entre el punto [−1000,−1000] y el resto de los datos. El alejamiento inusual de este, respecto del resto del grupode datos genera una distorsion considerable en las dos tecnicas, aunque por splines la desviacion es de unos10 ordenes menor. En este caso, la funcion tiende a un mınimo en esta misma zona 2b. En la figura 3a puedeobservarse la gran dispersion del punto, respecto del resto del conjunto. En cuanto al comportamiento de losdos metodos en la region con mayor densidad de datos, se puede observar que el la funcion polinomica pasapor todos los puntos, por cuanto el error dependera tanto del orden del mismo, como del alejamiento de cadadato4a. 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 interpolacion polinomica (b) Estructura del resultado por splines

Figura 2

(a) Vista de los datos (b) Ajuste comparativo de las dos tecnicas (sin punto ’-1000;-1000’)

Figura 3

En segunda instancia interpolaremos este conjunto de datos mediante splines cubicos. Generalmente se pre-fiere esta tecnica debido a que el error de interpolacion es menor respecto a la tecnica mostrada inicialmente,inclusive cuando se utilizan splines de bajo orden. Ademas evita el fenomeno de Runge, que aparece cuando enla interpolacion polinomica se realiza en puntos equidistantes con polinomios de alto grado. Un aspecto intere-sante a resaltar cuando se comparan las dos tecnicas, es que la primera de ellas genera una funcion convexa en

4

Page 5: Tp Metodos Numericos

(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 maximo en (−835, 3,16 · 1015) mientras que la segunda propuesta muestraun comportamiento concavo en este intervalo[2b], con un mınimo en (−665,−1,94 · 105). En cualquiera de losdos casos, la dispersion del primer punto respecto del resto genera en la funcion interpolante una incertidumbreconsiderable.

# −∗− coding : utf−8 −∗−2 import matp lo t l ib . pyplot as pl ; import numpy . l i b . polynomial as np

import numpy . core . mult iarray as np2 ; import math4 def po l l a g range ( x1 , x2 ) :

”””Genera e l pol inomio i n t e rpo l an t e para l o s datos ( x1 , x2 )6 ”””

M = len ( x1 ) ; p = np . poly1d ( 0 . 0 )8 f o r j in xrange (M) :

pt = np . poly1d ( x2 [ j ] )10 f o r k in xrange (M) :

i f k == j : cont inue12 fac = x1 [ j ]−x1 [ k ]

pt ∗= np . poly1d ([1 .0 ,− x1 [ k ] ] ) / f ac14 p += pt

return p16 Px = [ −1000, −0.960 , −0.860 , 0 .500 , 0 .772 , 0 .790 , 0 . 9 70 ]

Py = [ −1000, −0.151 , 0 .894 , 0 .500 , 0 .895 , 0 .986 , −0.306]18 def wr i tedata ( oudt , xdat , ydat ) :

f o r i in range ( l en ( xdat ) ) :20 l i n e s t r o u t = ’ ’ ; l i n e s t r o u t = s t r ( ’ % 10.4E ’ %xdat [ i ] ) + ’ ’

l i n e s t r o u t += s t r ( ’ % 10.4E ’ %ydat [ i ] ) + ’ ’22 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 ’ ; oudt . wr i te ( l i n e s t r o u t )

Pol = po l l ag range (Px , Py)24 abs1 = np2 . arange (−1100 ,−1 ,5) ; ab s1 t l = abs1 . t o l i s t ( )

abs2 = np2 . arange (−1 ,1 .1 ,0 .001) ; ab s2 t l = abs2 . t o l i s t ( )26 f o r i in range ( l en ( abs2 t l ) ) :

ab s1 t l . append ( abs2 t l [ i ] )28 o u t f i l e = open ( ’ Problema3a . out ’ , ’w ’ ) ; wr i tedata ( o u t f i l e , abs1t l , Pol ( ab s1 t l ) ) ; o u t f i l e . c l o s e ( )

#f i g = pl . f i g u r e ( )30 #ax1 = f i g . add subplot (111)

#ax1 . p lo t ( abs1t l , Pol ( ab s1 t l ) , ’ b . ’ )32 #ax1 . p lo t (Px , Py , ’ ro ’ )

Problema3a.py

# −∗− coding : utf−8 −∗−2 import matp lo t l ib . pyplot as pl ; import sc ipy . i n t e r p o l a t e as sc

import numpy . core . mult iarray as np2 ; import math4 Px = [ −1000, −0.960 , −0.860 , 0 .500 , 0 .772 , 0 .790 , 0 . 9 70 ]

Py = [ −1000, −0.151 , 0 .894 , 0 .500 , 0 .895 , 0 .986 , −0.306]6 de f wr i tedata ( oudt , xdat , ydat ) :

f o r i in range ( l en ( xdat ) ) :8 l i n e s t r o u t = ’ ’ ; l i n e s t r o u t = s t r ( ’ % 10.4E ’ %xdat [ i ] ) + ’ ’

l i n e s t r o u t += s t r ( ’ % 10.4E ’ %ydat [ i ] ) + ’ ’10 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 ’ ; oudt . wr i te ( l i n e s t r o u t )

Pol = sc . Un iva r i a t eSp l ine (Px , Py)12 abs1 = np2 . arange (−1100 ,−1 ,5) ; ab s1 t l = abs1 . t o l i s t ( )

abs2 = np2 . arange (−1 ,1 .1 ,0 .001) ; ab s2 t l = abs2 . t o l i s t ( )14 f o r i in range ( l en ( abs2 t l ) ) :

ab s1 t l . append ( abs2 t l [ i ] )16 o u t f i l e = open ( ’ Problema3b . out ’ , ’w ’ ) ; wr i tedata ( o u t f i l e , abs1t l , Pol ( ab s1 t l ) ) ; o u t f i l e . c l o s e ( )

#f i g = pl . f i g u r e ( )18 #ax1 = f i g . add subplot (111)

#ax1 . p lo t ( abs1t l , Pol ( ab s1 t l ) , ’ b . ’ )20 #ax1 . p lo t (Px , Py , ’ ro ’ )

Problema3b.py

4. Integrar utilizando la regla de Simpson:

∫ 1

0,8

log(1− x)√1− x2

dx, (valor = −2,3078)

5

Page 6: Tp Metodos Numericos

Resolucion

Existen dos variantes de este metodo, llamadas regla de 13 de Simpson, y la variante, denominada regla de

38 . La primera se aplica a un numero par de intervalos, mientras que la segunda, a un numero que sea multiplode 3. Cuando el numero de intervalos es impar, pero sin ser multiplo de 3, puede utilizarse la regla de 3

8 en losextremos, y luego la de 1

3 en el resto del espacio de calculo. No obstante ello, lo mas relevante es que el ordende error de ambas variantes es el mismo, por cuanto no se ganara exactitud aplicando una u otra regla en elmismo numero de intervalos. El metodo puede describirse matematicamente de la siguiente forma:

I =

∫ b

a

f(x)dx 'n∑

i=1

hi6

[f(xi) + 4f(xi + xi+1

2+ f(xi+1)] + E, con E ' −h

5

90f IV (x), hi = xi+1 − xi

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 funcion, podemos afirmar que la misma es asintotica en x = |1|, ademas el rango a evaluarse encuentra dentro del intervalo de negatividad de la funcion N = (0, 1), cruzando el eje de coordenadas en elorigen. Otro detalle es que la funcion no es anti-simetrica, aunque parece serlo a simple vista. Su numeradortiende a −∞ cuando x → 1. Si intentaramos un procedimiento integrando directamente hasta 1, tendrıamosuna indeterminacion 1

∞ en este punto, por lo que nuestro primer intento sera aproximarnos a este punto conuna proximidad aceptable. Como era de esperarse, el resultado que arrojo con n = 100 sub-intervalos estuvobastante 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 funcion del error estimado, tomando como base el valor exacto. Deno haber sido proporcionado este valor, lo natural hubiera sido emplear como referencia el cambio en cadaiteracion, y realizar el corte una vez verificado que el error es menor que cierto valor aceptable. Para este caso,el lımite propuesto fue de 10−4. En la tabla 1 se muestran los resultados obtenidos, la cantidad de sub-intervalosempleados, el error, y el tiempo que insumio el calculo. Como puede apreciarse, fueron necesarios 60 millonesde sub-intervalos para lograr un error aceptable (v 10−4) en la cantidad de cifras significativas propuesta eneste ejercicio. El tiempo de calculo de esta ultima etapa fue de 54 minutos, y de 3 horas 36 minutos en total.Cabe aclarar que en esta ejecucion, el valor de n fue seteado manualmente en base a los datos proporcionadospor el codigo, para llegar mas rapidamente a la convergencia y optimizar el tiempo de calculo. Este hecho puedevisualizarse en la figura 6a, donde el error alcanzado por la ultima iteracion no sigue el comportamiento de lascorridas anteriores. En el apartado 4 se detalla el programa en codigo python empleado para producir la salidaanterior 1.

6

Page 7: Tp Metodos Numericos

# −∗− coding : utf−8 −∗−2 import math , numpy . core . mult iarray ; from pylab import ∗ ; from time import time

def simpson ( f , a , b , n) :4 S = 0 . 0 ; h = (b−a ) /n ; x = arange (a , b , h)

f o r i in range ( l en (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 pr in t ’ %s 1/100 completado ’ %(s t r ( i ∗100/( l en (x )−1)) )

return S10 def func (x ) :

re turn log (1−x) / sq r t (1−x∗∗2)12 a , b , n = 0 .8 , 1 , 6 e7 # l i m i t e s para e l c a l c u l o de l a i n t e g r a l y num. de sub in t e rva l o s

convl imit , ex so l = 1 .0 e−4, −2.3078 # parA¡metros de convergenc ia y i n i c i a l i z a c i o n de parametro de convergenc ia14 s t a r t = time ( ) ; s o l = simpson ( func , a , b , n) ; end = time ( ) # nueva so lu c i on

outdat = open ( ’ out− ’ + s t r ( conv l imi t ) + ’ . simpson ’ , ’w ’ )16 outdat . wr i te ( ’#In t eg rac i on de una func ion por Simpson\n ’ )

outdat . wr i te ( ’#re su l t ado \ t n \ t e r r o r [ %] \ t tiempo [ s ]\n ’ )18 pr in t ’#re su l t ado \ t n \ t e r r o r [ %] \ t tiempo [ s ]\n ’

p r in t ’ % 10.4E\ t %11d\ t % 10.4E\ t %11d\n ’ %(so l , n , nadj , ( end−s t a r t ) )20 whi le ( abs ( ( so l−ex so l ) / ex so l ) >= conv l imi t ) :

s t a r t = time ( ) #timepo i n i c i a l22 nadj = abs ( ( so l−ex so l ) / ex so l ) ∗100 #parametro de a ju s t e de l numero de i n t e r v a l o s

n = in t (n + n ∗ nadj ) #a ju s t e de l numero de sub in t e rva l o s en func ion de l e r r o r24 s o l = simpson ( func , a , b , n) ; end = time ( ) #tiempo f i n a l

outdat . wr i te ( ’ % 10.4E\ t %11d\ t % 10.4E\ t %11d\n ’ %(so l , n , nadj , ( end−s t a r t ) ) )26 pr in t ’ % 10.4E\ t %11d\ t % 10.4E\ t %11d\n ’ %(so l , n , nadj , ( end−s t a r t ) )

e l s e :28 pr in t ’ Se l l e g o a l a s o l u c i on , va lo r= % 10.4E con e r r o r de l % 10.4E 1/100\nSe emplearon %s sub in t e rva l o s \n ’ %(so l ,

nadj , n)p r in t ’ De ta l l e s de c a l cu l o en %s ’ %(outdat . name) ; outdat . c l o s e ( )

Ej4.py

(a) Convergencia del error en funcion del tiempo de calculo (semi-log)

(b) Error en base a sub-intervalos utilizados

Figura 5: Calculo de una funcion con metodo de Simpson

5. Hallar una funcion de mapeo para una matriz Hessenberg (trian-gular superior con una sub-diagonal, o triangular inferior con unasuper-diagonal

Resolucion

Frecuentemente nos encontramos ante arreglos matriciales donde existen elementos nulos. A menudo, lasmediciones 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 sera importante, a la vez de inutil, dado que almacenar elementos nulos no proporciona ninguna mejora,y solo empleara grandes espacios de memoria.

Para estos casos es conveniente hacer uso de algun tipo de transformacion que permita solamente guardarlos elementos de interes, pero evitando la perdida de informacion. A menudo, para el caso de matrices ralas,donde los elementos no-nulos no siguen un patron de distribucion dado, se suele emplear una transformacionRpxq 7→ Rrx2 donde se coloca en la primer columna todos los elementos no-nulos, y en la segunda, su direccion.De esta manera, es simple reconstruir la forma original, ya que esta operacion es reversible al no mediar perdidaalguna de informacion.

7

Page 8: Tp Metodos Numericos

0.0001

0.001

0.01

0.1

1

10

100

100 1000 10000 100000 1e+06 1e+07 1e+08

log

err

or[

%]

log n

error

(a) Error relativo en funcion del numero de sub-intervalos (papel logarıtmico)

Sin embargo, cuando la distribucion sigue algun tipo de logica, se puede evitar el uso de una segunda columna,y emplear una funcion de mapeo Rpxq 7→ Rr ya que la informacion sobre su posicion original estara guardadaen el ordinal del vector. Consideremos una matriz Hessenberg superior [6],

Hsupn,n =

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

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 = 00 < i < n− 1 ∧ i− 1 < j < n− 1

El orden a seguir en este procedimiento sera primero almacenar la primera fila, luego la segunda y a conti-nuacion la tercera sin el primer elemento, seguido de la cuarta fila sin los dos primeros elementos, hasta llegara la ultima fila, donde solo almacenaremos el ultimo elemento. Todos ellos se disponen en un vector fila quepuede 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 esta dadapor la cantidad (n ∗ (n − 1))/2, y que en la diagonal hay n elementos no-nulos, la cantidad total sera la suma

de estos dos terminos, dando un total de n(n+1)2 elementos.

Una forma basica de representar un mapeo unidimensional de una matriz, es a traves de una combinacionlineal del tipo k = in + j, donde k es el sub-ındice del vector resultante. Dado en nuestro caso buscamosparticularmente una funcion que omita todos los elementos nulos deHsup deberemos restar del total de elementosde una matriz, la cantidad de elementos no nulos descriptos anteriormente. Esto da como resultado una funcionde la forma:

kh = (in) + j − i(i− 1)

2

Como ejemplo, consideremos una matriz como la que se muestra a continuacion:

8

Page 9: Tp Metodos Numericos

Hsup5,5 =

3 −4 12 −1 176 −5 2 11 −10 2 7 −4 −90 0 21 11 120 0 0 −7 30 0 0 0 2

Esta, luego de la transformacion, dara lugar al vector:

H∗ =( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

3 −4 12 −1 17 6 −5 2 11 −1 2 7 −4 −9 21 11 12 −7 3 2)

Si quisieramos acceder al elemento a2,3(−4), la transformacion apuntarıa al elemento mapeado k = (2 ∗ 5) +

3− 2(2−1)2 = 12, resultando en el mismo elemento, ahora en el vector de mapeado.

6. Dado el siguiente sistema:

A ·X = D, con : A =

1 1 11 2 41 3 91 4 161 5 251 6 36

, D =

5432110

6.1. Calcular solucion usando Cholesky:

Resolucion

Este metodo es aplicable a matrices cuadradas simetricas y definidas positivas. En primera medida el rangode aplicacion parece acotado, sin embargo, a menudo suelen encontrarse matrices de este tipo en la practica,por cuanto su conocimiento es interesante. Para esta clase de arreglos matriciales, los autovalores seran siemprepositivos. Este metodo es aproximadamente un orden mas eficiente que el resto de los metodos de resolucion deecuaciones lineales.El factor que destaca a este metodo es que en vez de buscar factores triangulares arbitrarios L,U , esta des-composicion construye un factor L cuya transpuesta LT puede utilizarse como la parte triangular superior. Esdecir, que logramos la transformacion L � LT = A.

En nuestro caso particular, estamos ante un sistema super-definido cuyo rango es 3. Debido a ello, no esposible aplicar directamente esta transformacion a la matriz A. No obstante, si pre-multiplicamos a ambos ladosde la ecuacion matricial por AT , en el lado izquierdo tendremos como resultado una matriz de coeficientes quereunira las condiciones necesarias para aplicar el metodo. Esto es, una matriz Hermitiana [?].

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 9121 91 44191 441 2275

β =

2595465

L =

2,44948974 8,5732141 37,150594430 4,18330013 29,283100930 0 6,11010093

Y =

10,206207261,792842915,45544726

X =

11−5,821428570,89285714

9

Page 10: Tp Metodos Numericos

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 esun sistema superdeterminado, donde se espera que todas las ecuaciones representen al mismo sistema (podrıaasumirse que como todas las ecuaciones siguen un patron definido, excepto la ultima, podrıa existir algun errorde observacion). Si para nuestro caso particular, todas las ecuaciones estan correctamente definidas, es muyprobable que exista un comportamiento subyacente que requiere de mayor observacion, previo a la utilizacionde este metodo. Si en cambio, pudieramos determinar que en la confeccion alguna de las ecuaciones no siguenel comportamiento observado (como por ejemplo la ultima ecuacion) y decidieramos retirarla del sistema, odeterminaramos que el valor correcto para el ultimo valor del vector D era cero (con lo que ahora el sistemamostrarıa un comportamiento mas simple), los el proceso serıa convergente y los resultados serıan los siguientes:

X =

6−1

1,02603473e− 15

Este nuevo vector solucion verifica correctamente en el sistema. Notese que en esta modificacion, no cambia

la condicion de la matriz de coeficientes, ya que el ejemplo se baso en una modificacion del vector D.

6.2. Calcular solucion usando una transformacion ortogonal:

Resolucion

A menudo este tipo de sistemas no tienen solucion. Cuando esto ocurre, el caso se transforma en un problemade optimizacion, donde se pretende minimizar la norma euclidiana mın(‖A · x − b‖2). Queda claro que basica-mente al no haber solucion, se busca aproximar un vector solucion tal que se minimice esa funcion objetivo, yeste hecho es el que engloba y da nombre a los procedimientos de resolucion que surgen de este paradigma, alos que llamamos mınimos cuadrados.

Mediante la obtencion de valores singulares se puede llegar a la expresion;

x = V

(∑−1r 00 0

)UT b

Aquı, el elemento∑−1

r es una submatriz diagonal que contiene todos los valores singulares de la matrizoriginal. Puede demostrarse que la ecuacion anterior constituye la solucion del problema mın(‖A · x− b‖2). Elsegundo miembro de la misma es conocido como la matriz de Moore-Penrose [5].Haciendo uso de las condiciones de Penrose se llega a la expresion A† = (AT ·A)−1 ·AT . Por otro lado, el vectorx sera unico si AT · A es invertible, o sea que la transformacion lineal es inyectiva. De esta manera, el sistemapuede plantearse como:

x = (AT ·A)−1 ·AT · b. Para nuestro caso, la matriz de Moore-Penrose adopta la forma:

A† = (AT ·A)−1 ·AT = V

(∑−1r 00 0

)UT

Este metodo genera los mismos resultados que los de 6.1. El apartado 6.2 muestra la implementacion delalgoritmo en Python.

1 # −∗− coding : utf−8 −∗−from math import ∗ ; from sc ipy . l i n a l g import ∗ ; import numpy as np ; from numpy . matl ib import ∗

3 def Cholesky (A, z t o l= 1 .0 e−5) :”””

5 Computa l a matriz t r i a ngu l a r supe r i o r por f a c t o r i z a c i o n deCholesky en una matriz hermit iana .

7 ”””nrows = len (A) ; mrows = len ( l en (A) )

9 t = ze ro s ( ( nrows , nrows ) ) ; S = ze ro s ( ( nrows , nrows ) ) ; d = ze ro s ( ( nrows , mrows) )f o r i in range ( nrows ) :

11 S = sum ( [ ( t [ k ] [ i ] ) ∗∗2 f o r k in range ( i ) ] )d = A[ i ] [ i ] −S

13 i f abs (d) < z t o l :t [ i ] [ i ] = 0 .0

15 e l s e :i f d < 0 . 0 :

17 r a i s e ValueError , ”La Matriz no es d e f i n i da po s i t i v a ”t [ i ] [ i ] = sq r t (d)

19 f o r j in range ( i +1, nrows ) :S = sum ( [ t [ k ] [ i ] ∗ t [ k ] [ j ] f o r k in range ( i ) ] )

21 i f abs (S) < z t o l :S = 0.0

23 t [ i ] [ j ] = (A[ i ] [ j ] − S) / t [ i ] [ i ]r e turn t

25 A = matrix (np . array ( [ [ 1 , 1 , 1 ] , [ 1 , 2 , 4 ] , [ 1 , 3 , 9 ] , [ 1 , 4 , 1 6 ] , [ 1 , 5 , 2 5 ] , [ 1 , 6 , 3 6 ] ] ) )D = matrix (np . array ( [ [ 5 ] , [ 4 ] , [ 3 ] , [ 2 ] , [ 1 ] , [ 1 0 ] ] ) )

27 alpha = transpose (A)∗A; beta = transpose (A)∗DL = cholesky ( alpha ) ; Y = so lv e ( t ranspose (L) , beta ) ; X = so lv e (L ,Y)

Problema6a.py

10

Page 11: Tp Metodos Numericos

6.3. Calcular error y desviacion estandar:

Resolucion

Una forma de estimar el error de un SEL, es expresarlo en la siguiente forma:

A ·X −D = R,

donde el vector R acumulara los residuos. Dado que en este ejercicio he realizado muchas asunciones, calculare losvalores del sistema original, y modificado. Para el primer caso, el SEL con el calculo de residuos queda en laforma:

1 1 11 2 41 3 91 4 161 5 251 6 36

· 11−5,82140,8928

5432110

=

1,0714e+ 00−1,0714e+ 00

−1,4285e+ 00− 2,1316e− 143,2142e+ 00−1,7857e+ 00

Para los valores originales, y:

1 1 11 2 41 3 91 4 161 5 251 6 36

· 6

−11,0260e− 15

543210

=

8,8817e− 158,8817e− 16−3,9968e− 15−5,3290e− 15−3,5527e− 152,6645e− 15

si hubieramos tenido un vector D con esta otra forma (aclaro que esta alternativa, al igual que al principiodel ejercicio solo se muestra con fines comparativos). Los valores correspondientes a las desviaciones de los

residuos pueden calcularse como σ2 =Rt ·Rm− n

, donde los valores del denominador corresponden a las dimensiones

correspondientes de la matriz A, que para nuestro caso es 6− 3 = 3, por lo que el calculo queda en 5,95238095para el caso real, y en 4,79233000e− 29(≈ 0) para el ejemplo propuesto.

6.4. Calcular las matrices de covarianza y de correlacion:

Resolucion

La matriz de covarianza contiene la covarianza entre los elementos de un vector. Es la generalizacion naturala 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 definematematicamente como:

σij = E[(Xi − µi)(Xj − µj)] donde µi = E(Xi)

En la practica, esta matriz generalmente se calcula a partir de su definicion en funcion de su transpuesta.Al no ser una matriz nula, se infiere que las variables no son independientes.

σij = cov(A) = (AT ·A)−1 =

0 0 00 3,5 24,5

0 24,5 178,966

Los coeficientes de correlacion de esta matriz indican que hay una fuerte correlacion entre las variables x2 y

x3:

corr(A) =

∅ ∅ ∅∅ 1 0,97891726∅ 0,97891726 1

6.5. Hay datos discordantes?:

Resolucion

Es evidente que el ultimo vector fila no sigue el patron del resto de las ecuaciones. Si se lo retirara delsistema, el mismo quedarıa con cond(A) = 85,8932 Desde el punto de vista analıtico, es posible que D5 = 10 seadiscordante. Anulando este valor, el SEL completo seguirıa el mismo patron de comportamiento. Otra forma demejorar la condicion del sistema serıa directamente retirar la ultima ecuacion, logrando el mismo resultado.

11

Page 12: Tp Metodos Numericos

7. Para la siguiente matriz de Pascal 5x5:

P =

1 1 1 1 11 2 3 4 51 3 6 10 151 4 10 20 351 5 15 35 70

7.1. Calcular los autovalores de la matriz:

Resolucion

Para calcular los autovalores de esta matriz, debemos primero diagonalizar la matriz. Para ello haremos usodel algoritmo QR, de manera de convertir esta matriz en una de tipo tridiagonal. Es posible para ello efectuartransformaciones de Householder del tipo

ak+1 = HkAkHk, k = 1..n

En cada iteracion, la matriz Hk es una matriz identidad, cuya submatriz inferior derecha es una matriz deHouseholder de (n− k) ∗ (n− k) elementos para n = 5.

Las transformaciones sucesivas de Householder [2] producen una matriz tridiagonal porque la matriz originalA es simetrica. Una vez obtenida la matriz tridiagonal resultante del procedimiento anterior, se utiliza elalgoritmo QR en forma iterativa. Esto es, descomponer la matriz, obtener una nueva con T ′ = R∗Q y continuarla operacion hasta su convergencia.

En cada iteracion se verifica si el algoritmo converge. Consideramos que hay convergencia cuando la variacionen el valor de todos los elementos por debajo de la diagonal principal, respecto de los valores de la iteracionanterior, es menor a 1−10. Cuando se alcanza convergencia, los autovalores quedan en la diagonal principal dela matriz. De esta manera se obtiene el siguiente arreglo:

Λ =

92,29045,51751,00000,18120,0108

# −∗− coding : utf−8 −∗−

2 import numpy . core as np1 ; import numpy . core . fromnumeric as np2 ; import mathPscal = np1 . array ( [ [ 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 ] ] ) #Matriz de Datosde f qr (A, method=”gramm” ) :

6 i f method == ”gramm” :Q = gramm(A) ; R = np1 . dot ( np2 . t ranspose (Q) ,A)

8 return Q,Rdef gramm(X, inp l a c e = False ) :

10 i f not i np l a c e :V = [ row [ : ] f o r row in X]

12 e l s e :V = X

14 k = len (X[ 0 ] ) ; n = len (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 in range (n) ] )

18 f o r p in range (n) :V[ p ] [ j ] −= (D ∗ V[ p ] [ i ] )

20 invnorm = 1.0 / math . sq r t (sum ( [ (V[ p ] [ j ] ) ∗∗2 f o r p in range (n) ] ) )f o r p in range (n) :

22 V[ p ] [ j ] ∗= invnorm # or togona l i z a c i on Gramm−Schmidtreturn V

24 Q, R = qr ( Pscal ) ; p r in t Pscal ; p r in t Q; p r in t R

Problema7a.py

7.2. Demostrar que verifican el teorema de Gershgorin:

Resolucion

El teorema de Gershgorin [9] nos dice que los autovalores de una matriz compleja (esto incluye tambien alas reales) de orden nxn, se encuentran en el espacio del plano complejo delimitado por la union de los cırculosDi. Un cırculo Di tiene el centro en el valor del elemento aii de la matriz, y su radio se obtiene sumando elresto de los elementos de la fila en valor absoluto, es decir:

ci = aii, ri =

n∑j=1

|aij |

12

Page 13: Tp Metodos Numericos

Entonces los autovalores de la matriz A se encuentran en la union de los n cırculos. Ademas, cada componenteconexa de esa union contiene tantos autovalores como cı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 funcion favorita con cierta precision usando unade las tecnicas discutidas en clase:

Resolucion

En el estudio del comportamiento de materiales sometidos a presiones extremas, suelen emplearse simu-laciones de dinamica molecular, y una de las funciones que mas se utilizan son los potenciales empıricos quemodelan el comportamiento de solidos a nivel nanoscopico cuando se los somete a esfuerzos que alejan la ma-triz cristalina de su estado de equilibrio. Uno de los mas utilizados es el de Lennard-Jones [3]. Este tiene la forma

Ur = 4ε[(σ

rij)12 − (

σ

rij)6]

, 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 ecuacion, las distancias tienen dos subındices, quecorresponde a la distancia entre partıculas i y j, por cuanto la grafica 6 en realidad muestra el comportamientoentre dos de ellas. En simulaciones MD, este potencial debe evaluarse un promedio de 12 veces para cadapartıcula en un cristal BCC.Ademas, normalmente para independizar el comportamiento del potencial de lascaracterısticas de cada material, esta grafica a menudo se muestra como U/ε vs. r/σComo puede verse en la grafica 6, esta funcion tiene una forma particular que tiene que ver con los dos

Figura 6: Grafico del potencial de Lennard-Jones

tipos de fuerzas que actuan principalmente, a rangos cortos, predominan las fuerzas de repulsion de Pauli. Amedida que se gana distancia interatomica, una vez superado el punto de equilibrio, dado por el mınimo depotencial, las fuerzas atractivas de Van der Waals actuan con preponderancia. Es dable decir que este modelo esuna gran simplificacion al problema de modelar el comportamiento de partıculas a nivel atomico. La potenciacomputacional con que se cuenta en estos dıas permite emplear modelos mas complicados, como la Teorıa deFuncional de Densidad (DFT) [4], para algunos millones de atomos, o hasta la ecuacion de Schrodinger [7].Sin embargo, con los recursos actuales, dimensiones de meso-escala solo son posibles empleando potenciales ytecnicas de tight-binding [8]. La importancia de esto radica en que en este rango de tamanos es posible vincular

13

Page 14: Tp Metodos Numericos

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 ecuacion es de la forma:

Tn(x) = cos(n ∗ arccos(x))

, no obstante, en su implementacion se utiliza una relacion de recurrencia.

Tn+1(x) = 2xTn(x)− Tn− 1(x)

De las ecuaciones anteriores, podemos asumir que los ceros se encuentran en el subdominio [−1, 1], ubicadossegun:

x = cos(π(k − 1

2))

n, k = 1, 2,−..., n

Luego, en el proceso de aproximacion se emplea la siguiente ecuacion:

f(x) ≈

[N−1∑k=0

ck ∗ tk(x)

]− 1

2c0cj =

2

N

N∑k=1

f(xk)Tj(xk) =2

Nf

cos (π(k − 1

2))

n

cos (π(k − 1

2))

n

(a) Lennard-Jones normalizado (b) Chevishev a distintos ordenes y funcion original

Figura 7: Implementacion de Polinomios de Chevishev a la funcion potencial de Lennard-Jones

Siendo el conjunto de valores xk, los ceros del polinomio. Para nuestro caso particular, deseamos evaluar lafuncion en el dominio reducido x[1, 2,5], en terminos normalizados, como se comento anteriormente. El lımitepor derecha se impone normalmente como cut-off distance, ya que en ese rango las fuerzas pueden despreciarseen algunos casos7a. Dado que la tecnica no funciona en este dominio, debemos efectuar una transformacion parallevarlo al espacio de calculo de la tecnica. En nuestro caso emplearemos x∗ = r/bσ con b = 2,5, y evaluaremosen x∗[2/5, 1].El codigo fue preparado para poder evaluar en forma recursiva la misma funcion con distintos ordenes deaproximacion. Para este caso fuimos desde orden 3 al 11. El comportamiento del potencial hace plausible suajuste a traves de polinomios, por lo que la idea fue ver hasta con que orden de magnitud serıa necesarioaproximarse para lograr un buen fitting. La figura 7b permite comparar el comportamiento de los sucesivosajustes a orden creciente con la funcion original. Dado que la curva tiene un comportamiento y → +∞ : x→ 0,el hecho de evaluar en un subdominio cercano a 0 producira errores considerables en la vecindad de este valor.

9. Resolver el problema del pendulo invertido, encontrando una so-lucion estable para oscilaciones verticales:

Resolucion

El problema del pendulo invertido puede describirse en base a la figura 8, donde una barra de longitud Lse encuentra suspendida por su extremo inferior mediante un vınculo de segundo orden a un elemento que lo

14

Page 15: Tp Metodos Numericos

Figura 8: Representacion del problema del pendulo invertido

somete a un movimiento vertical s. El vınculo tiene dos grados de libertad, a saber: lineal en la direccion y, yrotativo en θ. Si suponemos que dicho movimiento esta gobernado por un ley del tipo

s = Asenwt

donde A es la amplitud, y w es la frecuencia de vibracion de la base, podemos expresar su forma diferencia trasaplicar la segunda Ley de Newton, quedando de la siguiente manera:

θ =3

2L(g −Aw2senwt)senθ

, donde para valores pequenos de θ ≈ senθ, la ecuacion es condicionalmente estable para algunos valores deA. Las posiciones de la masa m estan dadas por la combinacion (Lcosθ, y(t) + Lsenθ), y las velocidades, por

(Lθcosθ, ˙y(t)Lθsenθ). Por todo lo anterior, podemos expresar para valores pequenos de θ, la firma diferencialde la siguiente manera:

θ =3

2L(g −Aw2senwt)θ

Revisando la basta bibliografıa que existe a disposicion sobre analisis dinamico, podemos determinar que para

este tipo particular de arreglo habra estabilidad cuando se cumpla que w >√

2gLA . Puede colegirse que el segundo

miembro de la desigualdad tiene que ver con las caracterısticas geometricas del sistema, y mientras ese miembrose mantenga en valores inferiores a la frecuencia de excitacion externa, se mantendran condiciones estables.Para nuestro analisis elegimos cinco escenarios para estudiar su comportamiento. En todos ellos las condicionesiniciales son θ0 = 1θ0 = 0 para simplificar el estudio, y se ha variado la velocidad angular de excitacion segun lacondicion de estabilidad. A continuacion puede verse el detalle de los parametros establecidos para cada caso:A 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 13 1 1 50 14 1 1 2 1

se evaluaron los intervalos con un ancho de 1−4 por un lapso de 100 segundos, utilizando el metodo de Eulerexplıcito, como puede observarse en el codigo 9.

15

Page 16: Tp Metodos Numericos

(a) Caso 1 (b) Caso 2

Figura 9

(a) Caso 3 (b) Caso 4

Figura 10

16

Page 17: Tp Metodos Numericos

# −∗− coding : utf−8 −∗−2 import numpy , math

import sc ipy . constants4 h=1e−4;n=100000

# [A , L , w , theta0 , thetadot0 ]6 p ic = [ [ 1 , 1 , 5 0 , 1 , 0 ] ,

[ 1 , 1 , 2 5 , 1 , 0 ] ,8 [ 1 , 1 , 1 0 , 1 , 0 ] ,

[ 1 , 1 , math . sq r t (2∗ s c ipy . constants . g ) , 1 , 0 ] ,10 [ 1 , 1 , 2 , 1 , 0 ] ,

[ 0 , 1 , 0 , 0 , 0 ] ] # params and i n i t cond i t i on s12

def func (A, L ,w, theta , t ) :14 return ((3/(2∗L) ) ∗( s c ipy . constants . g−A∗(w∗∗2)∗numpy . s i n (w∗ t ) )∗numpy . s i n ( theta ) )

16 def eu le rexp ( 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 in range ( l en (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)∗hreturn Z

26def wr i tedata ( oudt , r ry t ) :

28 f o r l i n e in range ( l en ( r ry t ) ) :l i n e s t r o u t = ’ ’

30 f o r datum in r ry t [ l i n e ] :i f (datum == 0) or (math . i snan (datum) ) :

32 l i n e s t r o u t += s t r ( ’ 0 .0000E+00 ’ ) + ’ ’e l s e :

34 l i n e s t r o u t += s t r ( ’ % 10.4E ’ %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 ’ ; oudt . wr i t e ( l i n e s t r o u t )

36 f o r k in range (6) :Zout = eu le rexp ( p ic [ k ] , n , h)

38 o u t f i l e = open ( ’ . / Problema9 ’ + s t r (k ) + ’ . out ’ , ’w ’ )wr i tedata ( o u t f i l e , Zout )

40 o u t f i l e . c l o s e ( )

Problema9.py

17

Page 18: Tp Metodos Numericos

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. DoverPublications, 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. Proceedingsof 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 naturalSpin-Orbitals and solution of the v-Representability problem. Proceedings of the National Academy ofSciences 76, 12 (Dec. 1979), 6062–6065.

[6] Penrose, R., and Todd, J. A. A generalized inverse for matrices. Mathematical Proceedings of theCambridge 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. PhysicalReview 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