SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
M´todos Num´ricos 2011 - Trabajos Pr´cticos
                     e         e                        a
                                          Ing. Diego R. Tramontina
                                               26 de abril de 2012



Ejercicios:
1.     Calcular las ra´ıces del polinomio
       x7 + 6x6 + 6x5 − 21x4 − 36x3 + 3x2 + 13x + 3 = 0
Resoluci´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.
                                                               a
Sabemos tambi´n que el l´
               e         ımite superior para el valor de todas las ra´
                                                                     ıces esta dado por:

                                                   Σn |Ai |
                                                    i=0
                                                            > Ai ,
                                                     A0

Para nuestro caso particular alcanza el valor de 29, 66. Tambi´n sabemos que An es impar, por lo que podemos
                                                               e
suponer que existe al menos una ra´ real. Dado que la cantidad de ra´ reales positivas es menor o igual a la
                                    ız                                ıces
cantidad de cambios de signo, que para nuestro caso es de dos, podemos decir que podr´ existir una segunda ra´
                                                                                     ıa                       ız
positiva. Adem´s, como todos los coeficientes de nuestro polinomio se encuentran en el campo real, si existieran
               a
ra´
  ı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                                                                o
para el espacio imagen de la funci´n. Dado el grado del polinomio, en esta zona pueden aparecer valores para los
                                  o
cuales la derivadas primeras se anulan, aportando ra´ conjugadas al resultado, por lo que la implementaci´n
                                                     ıces                                                    o
de 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                               o
propios 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
                                                         
                                                                                                         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.
                                                                              o

1 # −∗− c o d i n g : u t f −8 −∗−
  i m p o r t p y l a b a s NX
3 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 s
11        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] − 1
19
          # Elimina c e r o s a i z q u i e r d a y derecha
21        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 l
37        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 roots
39
     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
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 + 300j

1 # −∗− c o d i n g : u t f −8 −∗−
  i m p o r t s c i p y , numbers , numpy
3 import s c i p y . optimize . z e r o s as                  sc

5    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 ∗ x0
7           f o r i t e r in range ( maxiter ) :
                  myargs = ( p0 , ) + a r g s
9                 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 p
15                p0 = p

17   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 dfx
23   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
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=j

donde los coeficientes lj son los llamados polinomios de Lagrange. El c´digo 3 muestra una implementaci´n en
                                                                      o                               o
Python. Este c´digo es relativamente simple y funciona bien para orden 15 como m´ximo. Este c´digo produce
              o                                                                  a            o
el 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                                                      a
entre el punto [−1000, −1000] y el resto de los datos. El alejamiento inusual de ´ste, respecto del resto del grupo
                                                                                  e
de datos genera una distorsi´n considerable en las dos t´cnicas, aunque por splines la desviaci´n es de unos
                               o                            e                                        o
10 ´rdenes menor. En este caso, la funci´n tiende a un m´
    o                                      o                 ınimo en esta misma zona 2b. En la figura 3a puede
observarse la gran dispersi´n del punto, respecto del resto del conjunto. En cuanto al comportamiento de los
                             o
dos 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        o
por todos los puntos, por cuanto el error depender´ tanto del orden del mismo, como del alejamiento de cada
                                                      a
dato4a. Por otro lado, la caracter´ıstica del ajuste mediante splines se obserba claramente en la figura 4b, donde
el 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-
                                                                                    u
fiere esta t´cnica debido a que el error de interpolaci´n es menor respecto a la t´cnica mostrada inicialmente,
           e                                          o                           e
inclusive cuando se utilizan splines de bajo orden. Adem´s evita el fen´meno de Runge, que aparece cuando en
                                                         a             o
la interpolaci´n polin´mica se realiza en puntos equidistantes con polinomios de alto grado. Un aspecto intere-
              o       o
sante a resaltar cuando se comparan las dos t´cnicas, es que la primera de ellas genera una funci´n convexa en
                                               e                                                 o


                                                                  4
(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 math
4    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 e
12                         f a c = x1 [ j ]− x1 [ k ]
                           p t ∗= np . p o l y 1 d ( [ 1 . 0 , − x1 [ k ] ] ) / f a c
14                 p += p t
            return p
16   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 math
4    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
Resoluci´n
        o
                                                              1
   Existen dos variantes de este m´todo, llamadas regla de 3 de Simpson, y la variante, denominada regla de
                                    e
3
8. 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                 u
de 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
                        1
extremos, 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                             a
de error de ambas variantes es el mismo, por cuanto no se ganar´ exactitud aplicando una u otra regla en el
                                                                  a
mismo 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                       a
se encuentra dentro del intervalo de negatividad de la funci´n N = (0, 1), cruzando el eje de coordenadas en el
                                                              o
origen. Otro detalle es que la funci´n no es anti-sim´trica, aunque parece serlo a simple vista. Su numerador
                                      o                e
tiende a −∞ cuando x → 1. Si intent´ramos un procedimiento integrando directamente hasta 1, tendr´
                                          a                                                                  ıamos
                    o 1
una indeterminaci´n ∞ en este punto, por lo que nuestro primer intento ser´ aproximarnos a este punto con
                                                                                 a
una proximidad aceptable. Como era de esperarse, el resultado que arroj´ con n = 100 sub-intervalos estuvo
                                                                              o
bastante 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
                                                 o
no haber sido proporcionado este valor, lo natural hubiera sido emplear como referencia el cambio en cada
iteraci´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-intervalos
el l´
empleados, el error, y el tiempo que insumi´ el c´lculo. Como puede apreciarse, fueron necesarios 60 millones
                                               o    a
de sub-intervalos para lograr un error aceptable ( 10−4 ) en la cantidad de cifras significativas propuesta en
este 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
                                   o
por 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                                                         a
visualizarse en la figura 6a, donde el error alcanzado por la ultima iteraci´n no sigue el comportamiento de las
                                                               ´             o
corridas anteriores. En el apartado 4 se detalla el programa en c´digo python empleado para producir la salida
                                                                   o
anterior 1.




                                                                   6
# −∗− 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 S
10   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   convergencia
14   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 l
22           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 r
24           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
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           o
y emplear una funci´n de mapeo Rpxq → Rr ya que la informaci´n sobre su posici´n original estar´ guardada
                     o                                             o                   o               a
en 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-
                                               a
nuaci´n la tercera sin el primer elemento, seguido de la cuarta fila sin los dos primeros elementos, hasta llegar
     o
a 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 a
por 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 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                     o
lineal del tipo k = in + j, donde k es el sub-´ ındice del vector resultante. Dado en nuestro caso buscamos
particularmente una funci´n que omita todos los elementos nulos de H sup deberemos restar del total de elementos
                         o
de una matriz, la cantidad de elementos no nulos descriptos anteriormente. Esto da como resultado una funci´n o
de la forma:

                                                       i(i − 1)
                                                                 kh = (in) + j −
                                                           2
   Como ejemplo, consideremos una matriz como la que se muestra a continuaci´n:
                                                                            o


                                                                                   8
                             
                                                      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        10

6.1.     Calcular soluci´n usando Cholesky:
                        o
Resoluci´n
        o
   Este m´todo es aplicable a matrices cuadradas sim´tricas y definidas positivas. En primera medida el rango
            e                                         e
de aplicaci´n parece acotado, sin embargo, a menudo suelen encontrarse matrices de este tipo en la pr´ctica,
            o                                                                                              a
por cuanto su conocimiento es interesante. Para esta clase de arreglos matriciales, los autovalores ser´n siempre
                                                                                                       a
positivos. Este m´todo es aproximadamente un orden m´s eficiente que el resto de los m´todos de resoluci´n de
                 e                                      a                                 e                  o
ecuaciones lineales.
El factor que destaca a este m´todo es que en vez de buscar factores triangulares arbitrarios L, U , esta des-
                               e
composici´n construye un factor L cuya transpuesta LT puede utilizarse como la parte triangular superior. Es
           o
decir, 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 es
posible aplicar directamente esta transformaci´n a la matriz A. No obstante, si pre-multiplicamos a ambos lados
                                               o
de la ecuaci´n matricial por AT , en el lado izquierdo tendremos como resultado una matriz de coeficientes que
            o
reunir´ 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
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 ] −S
13                 i f abs ( d ) < z t o l :
                         t [ i ] [ i ] = 0.0
15                 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.0
23                       t [ i ] [ j ] = (A [ i ] [ j ] − S ) / t [ i ] [ i ]
           return t
25 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
6.3.       Calcular error y desviaci´n est´ndar:
                                    o     a
Resoluci´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                                                                                 e
valores del sistema original, y modificado. Para el primer caso, el SEL con el c´lculo de residuos queda en la
                                                                                   a
forma:                                          
                     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                        10
Para 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 − 15

si hubi´ramos tenido un vector D con esta otra forma (aclaro que esta alternativa, al igual que al principio
       e
del ejercicio s´lo se muestra con fines comparativos). Los valores correspondientes a las desviaciones de los
               o
                                       Rt · R
residuos pueden calcularse como σ 2 =         , donde los valores del denominador corresponden a las dimensiones
                                      m−n
correspondientes de la matriz A, que para nuestro caso es 6 − 3 = 3, por lo que el c´lculo queda en 5,95238095
                                                                                     a
para el caso real, y en 4,79233000e − 29(≈ 0) para el ejemplo propuesto.

6.4.       Calcular las matrices de covarianza y de correlaci´n:
                                                             o
Resoluci´n
        o
   La matriz de covarianza contiene la covarianza entre los elementos de un vector. Es la generalizaci´n natural
                                                                                                      o
a dimensiones superiores del concepto de varianza de una variable aleatoria escalar. Representa la influencia
que una variable tiene sobre otra y de los pares ordenados del resultado de un experimento aleatorio. Se define
matem´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         o
Al 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                                                     o
x3 :                                                                            
                                                  ∅         ∅              ∅
                                       corr(A) = ∅          1         0,97891726
                                                  ∅     0,97891726          1



6.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
                       ´                                  o
sistema, el mismo quedar´ con cond(A) = 85,8932 Desde el punto de vista anal´
                         ıa                                                    ıtico, es posible que D5 = 10 sea
discordante. Anulando este valor, el SEL completo seguir´ el mismo patr´n de comportamiento. Otra forma de
                                                        ıa              o
mejorar la condici´n del sistema ser´ directamente retirar la ultima ecuaci´n, logrando el mismo resultado.
                  o                  ıa                       ´            o


                                                           11
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 = X
14          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 V
24   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
Entonces los autovalores de la matriz A se encuentran en la uni´n de los n c´
                                                                  o            ırculos. Adem´s, cada componente
                                                                                              a
conexa de esa uni´n contiene tantos autovalores como c´
                  o                                       ırculos haya en ella, tanto c´ ırculos como autovalores
contados con multiplicidad. A estos c´ırculos se los denomina comunmente discos de Gershgorin. Para nuestra
matriz 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 queda
verificado 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:
              e
Resoluci´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 que
modelan 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 la
que el potencial se anula. Como se puede obsercar en esta ecuaci´n, las distancias tienen dos sub´
                                                                      o                               ındices, que
corresponde a la distancia entre part´ıculas i y j, por cuanto la gr´fica 6 en realidad muestra el comportamiento
                                                                    a
entre dos de ellas. En simulaciones MD, este potencial debe evaluarse un promedio de 12 veces para cada
part´
    ıcula en un cristal BCC.Adem´s, normalmente para independizar el comportamiento del potencial de las
                                    a
caracter´
        ı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
                                            a

tipos de fuerzas que act´an principalmente, a rangos cortos, predominan las fuerzas de repulsi´n de Pauli. A
                          u                                                                       o
medida que se gana distancia interat´mica, una vez superado el punto de equilibrio, dado por el m´
                                       o                                                                ınimo de
potencial, las fuerzas atractivas de Van der Waals act´an con preponderancia. Es dable decir que este modelo es
                                                      u
una gran simplificaci´n al problema de modelar el comportamiento de part´
                      o                                                      ıculas a nivel at´mico. La potencia
                                                                                              o
computacional con que se cuenta en estos d´ permite emplear modelos m´s complicados, como la Teor´ de
                                              ıas                             a                             ıa
Funcional de Densidad (DFT) [4], para algunos millones de ´tomos, o hasta la ecuaci´n de Schroding¨r [7].
                                                               a                          o                e
Sin embargo, con los recursos actuales, dimensiones de meso-escala s´lo son posibles empleando potenciales y
                                                                      o
t´cnicas de tight-binding[8]. La importancia de esto radica en que en este rango de tama˜os es posible vincular
 e                                                                                        n


                                                          13
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], ubicados
seg´n:
   u
                                                      1
                                              (π(k − ))
                                     x = cos          2 , k = 1, 2, −..., n
                                                   n
Luego, 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 la
funci´n en el dominio reducido x[1, 2,5], en t´rminos normalizados, como se coment´ anteriormente. El l´
      o                                         e                                      o                    ımite
por derecha se impone normalmente como cut-off distance, ya que en ese rango las fuerzas pueden despreciarse
en algunos casos7a. Dado que la t´cnica no funciona en este dominio, debemos efectuar una transformaci´n para
                                   e                                                                     o
llevarlo al espacio de c´lculo de la t´cnica. En nuestro caso emplearemos x∗ = r/bσ con b = 2,5, y evaluaremos
                        a             e
en 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                 o
aproximaci´n. Para este caso fuimos desde orden 3 al 11. El comportamiento del potencial hace plausible su
            o
ajuste a trav´s de polinomios, por lo que la idea fue ver hasta con qu´ orden de magnitud ser´ necesario
                e                                                          e                         ıa
aproximarse para lograr un buen fitting. La figura 7b permite comparar el comportamiento de los sucesivos
ajustes a orden creciente con la funci´n original. Dado que la curva tiene un comportamiento y → +∞ : x → 0,
                                        o
el hecho de evaluar en un subdominio cercano a 0 producir´ errores considerables en la vecindad de este valor.
                                                             a


9.    Resolver el problema del p´ndulo invertido, encontrando una so-
                                  e
      luci´n estable para oscilaciones verticales:
          o
Resoluci´n
        o
    El problema del p´ndulo invertido puede describirse en base a la figura 8, donde una barra de longitud L
                     e
se encuentra suspendida por su extremo inferior mediante un v´ ınculo de segundo orden a un elemento que lo



                                                          14
Figura 8: Representaci´n del problema del p´ndulo invertido
                                               o                    e


somete a un movimiento vertical s. El v´
                                       ınculo tiene dos grados de libertad, a saber: lineal en la direcci´n y, y
                                                                                                         o
rotativo en θ. Si suponemos que dicho movimiento est´ gobernado por un ley del tipo
                                                     a

                                                      s = Asenwt

donde A es la amplitud, y w es la frecuencia de vibraci´n de la base, podemos expresar su forma diferencia tras
                                                       o
aplicar 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                            o
A. 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  ˙                                                                       n
de la siguiente manera:
                                              ¨    3
                                              θ=     (g − Aw2 senwt)θ
                                                  2L
Revisando 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                                            A
miembro de la desigualdad tiene que ver con las caracter´   ısticas geom´tricas del sistema, y mientras ese miembro
                                                                        e
se mantenga en valores inferiores a la frecuencia de excitaci´n externa, se mantendr´n condiciones estables.
                                                                   o                        a
Para nuestro an´lisis elegimos cinco escenarios para estudiar su comportamiento. En todos ellos las condiciones
                  a
iniciales son θ0 = 1θ˙0 = 0 para simplificar el estudio, y se ha variado la velocidad angular de excitaci´n seg´n la
                                                                                                         o     u
condici´n de estabilidad. A continuaci´n puede verse el detalle de los par´metros establecidos para cada caso:
        o                               o                                     a
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          1
                                       3        1       1         50          1
                                       4        1       1          2          1



se evaluaron los intervalos con un ancho de 1−4 por un lapso de 100 segundos, utilizando el m´todo de Euler
                                                                                             e
expl´
    ıcito, como puede observarse en el c´digo 9.
                                        o




                                                          15
(a) Caso 1               (b) Caso 2

             Figura 9




(a) Caso 3               (b) Caso 4

             Figura 10




                16
# −∗− 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 s
4    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 s
12
     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 Z
26
     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
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

Más contenido relacionado

La actualidad más candente

Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...
Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...
Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...
guestb9bf58
 
Tema taylorhermite
Tema taylorhermiteTema taylorhermite
Tema taylorhermite
taker85
 
Fundamentos de Computación Cuántica
Fundamentos de Computación CuánticaFundamentos de Computación Cuántica
Fundamentos de Computación Cuántica
nuestrocanto
 

La actualidad más candente (20)

Cap8
Cap8Cap8
Cap8
 
Semana 12
Semana 12Semana 12
Semana 12
 
ejercicios
ejercicios ejercicios
ejercicios
 
Aplicaciones de las derivadas 01
Aplicaciones de las derivadas 01Aplicaciones de las derivadas 01
Aplicaciones de las derivadas 01
 
Funciones polinomicas
Funciones polinomicasFunciones polinomicas
Funciones polinomicas
 
Funciones polinomiales
Funciones polinomialesFunciones polinomiales
Funciones polinomiales
 
Concepto geométrico de la derivada de una función y su relación con la recta ...
Concepto geométrico de la derivada de una función y su relación con la recta ...Concepto geométrico de la derivada de una función y su relación con la recta ...
Concepto geométrico de la derivada de una función y su relación con la recta ...
 
Aplicaciones derivadas
Aplicaciones derivadasAplicaciones derivadas
Aplicaciones derivadas
 
Ecuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinariasEcuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinarias
 
Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...
Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...
Uso De Las Distribuciones De Probabilidad En La Simulacion De Sistemas Produc...
 
Tema taylorhermite
Tema taylorhermiteTema taylorhermite
Tema taylorhermite
 
Aplicación de la Derivada
Aplicación de la DerivadaAplicación de la Derivada
Aplicación de la Derivada
 
Revista Digital
Revista DigitalRevista Digital
Revista Digital
 
Analisis2
Analisis2Analisis2
Analisis2
 
Derivacion e integracion numéricas
Derivacion e integracion numéricasDerivacion e integracion numéricas
Derivacion e integracion numéricas
 
Introduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacionIntroduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacion
 
SSLL-TE-2012-2S
SSLL-TE-2012-2SSSLL-TE-2012-2S
SSLL-TE-2012-2S
 
Fundamentos de Computación Cuántica
Fundamentos de Computación CuánticaFundamentos de Computación Cuántica
Fundamentos de Computación Cuántica
 
Teoría de Interpolación
Teoría de InterpolaciónTeoría de Interpolación
Teoría de Interpolación
 
4 extremos
4 extremos4 extremos
4 extremos
 

Destacado

Witzige Cartonns
Witzige CartonnsWitzige Cartonns
Witzige Cartonns
Sylvi O.
 
Sindicación atom19
Sindicación atom19Sindicación atom19
Sindicación atom19
jeanyo21
 
WBC12 Session Szenario Planung
WBC12 Session Szenario PlanungWBC12 Session Szenario Planung
WBC12 Session Szenario Planung
WandelBarCamp
 
Stellungnahmen und Bedenken zum Bebauungsplanentwurf
Stellungnahmen und Bedenken zum BebauungsplanentwurfStellungnahmen und Bedenken zum Bebauungsplanentwurf
Stellungnahmen und Bedenken zum Bebauungsplanentwurf
WandelBarCamp
 
Informe hospitales 2011
Informe hospitales 2011 Informe hospitales 2011
Informe hospitales 2011
Mumi Caputti
 
Asesoría para el uso de las TIC en la formación.
Asesoría para el uso de las TIC en la formación.  Asesoría para el uso de las TIC en la formación.
Asesoría para el uso de las TIC en la formación.
Luis Contreras
 
Nette Worte
Nette WorteNette Worte
Nette Worte
Sylvi O.
 
Practicablog
PracticablogPracticablog
Practicablog
fidd0
 

Destacado (20)

Prisma consultoria ex08 v2 planificación estratégica general
Prisma consultoria ex08 v2 planificación estratégica generalPrisma consultoria ex08 v2 planificación estratégica general
Prisma consultoria ex08 v2 planificación estratégica general
 
Witzige Cartonns
Witzige CartonnsWitzige Cartonns
Witzige Cartonns
 
Trabajo de yacelis
Trabajo de yacelisTrabajo de yacelis
Trabajo de yacelis
 
Micumpleanoses
MicumpleanosesMicumpleanoses
Micumpleanoses
 
Steve jobs
Steve jobsSteve jobs
Steve jobs
 
Cmmi
CmmiCmmi
Cmmi
 
Dn 12 u3_act27_sgaa
Dn 12 u3_act27_sgaaDn 12 u3_act27_sgaa
Dn 12 u3_act27_sgaa
 
Prisma consultoria ex23 innovación y arte 3
Prisma consultoria ex23 innovación y arte 3Prisma consultoria ex23 innovación y arte 3
Prisma consultoria ex23 innovación y arte 3
 
Sindicación atom19
Sindicación atom19Sindicación atom19
Sindicación atom19
 
110405 selc
110405 selc110405 selc
110405 selc
 
Documentación y otros signos
Documentación y otros signosDocumentación y otros signos
Documentación y otros signos
 
WBC12 Session Szenario Planung
WBC12 Session Szenario PlanungWBC12 Session Szenario Planung
WBC12 Session Szenario Planung
 
Prisma consultoria ex28 v1 darwin mejoramiento continuo e innovacion
Prisma consultoria ex28 v1 darwin mejoramiento continuo e innovacionPrisma consultoria ex28 v1 darwin mejoramiento continuo e innovacion
Prisma consultoria ex28 v1 darwin mejoramiento continuo e innovacion
 
Stellungnahmen und Bedenken zum Bebauungsplanentwurf
Stellungnahmen und Bedenken zum BebauungsplanentwurfStellungnahmen und Bedenken zum Bebauungsplanentwurf
Stellungnahmen und Bedenken zum Bebauungsplanentwurf
 
Informe hospitales 2011
Informe hospitales 2011 Informe hospitales 2011
Informe hospitales 2011
 
Hoja de vida
Hoja de vidaHoja de vida
Hoja de vida
 
Asesoría para el uso de las TIC en la formación.
Asesoría para el uso de las TIC en la formación.  Asesoría para el uso de las TIC en la formación.
Asesoría para el uso de las TIC en la formación.
 
Nette Worte
Nette WorteNette Worte
Nette Worte
 
Practicablog
PracticablogPracticablog
Practicablog
 
Halloween
HalloweenHalloween
Halloween
 

Similar a Tp Metodos Numericos

Ejercicios propuestos- Estructura Discreta II
Ejercicios propuestos- Estructura Discreta IIEjercicios propuestos- Estructura Discreta II
Ejercicios propuestos- Estructura Discreta II
Acxel Quintero
 
Espacios vectoriales
Espacios vectorialesEspacios vectoriales
Espacios vectoriales
Aldomcr
 
Ejercicios cmtd 1
Ejercicios cmtd 1Ejercicios cmtd 1
Ejercicios cmtd 1
jackson3775
 
Sistemas digitales combinacionales - ejercicios 2
Sistemas digitales combinacionales - ejercicios 2Sistemas digitales combinacionales - ejercicios 2
Sistemas digitales combinacionales - ejercicios 2
Francesc Perez
 
El valor de un swap y el calculo del cupon
El valor de un swap y el calculo del cuponEl valor de un swap y el calculo del cupon
El valor de un swap y el calculo del cupon
lauraylauras
 
interpolacion........................pdf
interpolacion........................pdfinterpolacion........................pdf
interpolacion........................pdf
la464798
 
20090514 154946 graficacion_u2
20090514 154946 graficacion_u220090514 154946 graficacion_u2
20090514 154946 graficacion_u2
briant23
 

Similar a Tp Metodos Numericos (20)

Ejercicios propuestos- Estructura Discreta II
Ejercicios propuestos- Estructura Discreta IIEjercicios propuestos- Estructura Discreta II
Ejercicios propuestos- Estructura Discreta II
 
Espacios vectoriales 01
Espacios vectoriales 01Espacios vectoriales 01
Espacios vectoriales 01
 
Espacios vectoriales
Espacios vectorialesEspacios vectoriales
Espacios vectoriales
 
Transformación de Procesos
Transformación de ProcesosTransformación de Procesos
Transformación de Procesos
 
Ejercicios cmtd 1
Ejercicios cmtd 1Ejercicios cmtd 1
Ejercicios cmtd 1
 
Proyecto de Regresión Lineal Simple
Proyecto de Regresión Lineal SimpleProyecto de Regresión Lineal Simple
Proyecto de Regresión Lineal Simple
 
EJERCICIOS PROPUESTOS
EJERCICIOS PROPUESTOSEJERCICIOS PROPUESTOS
EJERCICIOS PROPUESTOS
 
Sistemas digitales combinacionales - ejercicios 2
Sistemas digitales combinacionales - ejercicios 2Sistemas digitales combinacionales - ejercicios 2
Sistemas digitales combinacionales - ejercicios 2
 
Metodos iterativos
Metodos iterativosMetodos iterativos
Metodos iterativos
 
Metodos iterativos
Metodos iterativosMetodos iterativos
Metodos iterativos
 
El valor de un swap y el calculo del cupon
El valor de un swap y el calculo del cuponEl valor de un swap y el calculo del cupon
El valor de un swap y el calculo del cupon
 
Relaciones binarias aux
Relaciones binarias auxRelaciones binarias aux
Relaciones binarias aux
 
interpolacion........................pdf
interpolacion........................pdfinterpolacion........................pdf
interpolacion........................pdf
 
20090514 154946 graficacion_u2
20090514 154946 graficacion_u220090514 154946 graficacion_u2
20090514 154946 graficacion_u2
 
Practica 1
Practica 1Practica 1
Practica 1
 
triplico las multiplicaciones
triplico las multiplicaciones triplico las multiplicaciones
triplico las multiplicaciones
 
Publicación carlos pdf
Publicación carlos pdfPublicación carlos pdf
Publicación carlos pdf
 
Sistemas de Conmutación: Evaluación de prestaciones y dimensionado II
Sistemas de Conmutación: Evaluación de prestaciones y dimensionado IISistemas de Conmutación: Evaluación de prestaciones y dimensionado II
Sistemas de Conmutación: Evaluación de prestaciones y dimensionado II
 
Análisis de regresión simple.
Análisis de regresión simple.Análisis de regresión simple.
Análisis de regresión simple.
 
Cap 1 y 2
Cap 1 y 2Cap 1 y 2
Cap 1 y 2
 

Último

Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
NancyLoaa
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
zulyvero07
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 

Último (20)

Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 

Tp Metodos Numericos

  • 1. M´todos Num´ricos 2011 - Trabajos Pr´cticos e e a Ing. Diego R. Tramontina 26 de abril de 2012 Ejercicios: 1. Calcular las ra´ıces del polinomio x7 + 6x6 + 6x5 − 21x4 − 36x3 + 3x2 + 13x + 3 = 0 Resoluci´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. a Sabemos tambi´n que el l´ e ımite superior para el valor de todas las ra´ ıces esta dado por: Σn |Ai | i=0 > Ai , A0 Para nuestro caso particular alcanza el valor de 29, 66. Tambi´n sabemos que An es impar, por lo que podemos e suponer que existe al menos una ra´ real. Dado que la cantidad de ra´ reales positivas es menor o igual a la ız ıces cantidad de cambios de signo, que para nuestro caso es de dos, podemos decir que podr´ existir una segunda ra´ ıa ız positiva. Adem´s, como todos los coeficientes de nuestro polinomio se encuentran en el campo real, si existieran a ra´ ı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 o para el espacio imagen de la funci´n. Dado el grado del polinomio, en esta zona pueden aparecer valores para los o cuales la derivadas primeras se anulan, aportando ra´ conjugadas al resultado, por lo que la implementaci´n ıces o de 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 o propios 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. o 1 # −∗− c o d i n g : u t f −8 −∗− i m p o r t p y l a b a s NX 3 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 s 11 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] − 1 19 # Elimina c e r o s a i z q u i e r d a y derecha 21 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 l 37 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 roots 39 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 + 300j 1 # −∗− c o d i n g : u t f −8 −∗− i m p o r t s c i p y , numbers , numpy 3 import s c i p y . optimize . z e r o s as sc 5 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 ∗ x0 7 f o r i t e r in range ( maxiter ) : myargs = ( p0 , ) + a r g s 9 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 p 15 p0 = p 17 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 dfx 23 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=j donde los coeficientes lj son los llamados polinomios de Lagrange. El c´digo 3 muestra una implementaci´n en o o Python. Este c´digo es relativamente simple y funciona bien para orden 15 como m´ximo. Este c´digo produce o a o el 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 a entre el punto [−1000, −1000] y el resto de los datos. El alejamiento inusual de ´ste, respecto del resto del grupo e de datos genera una distorsi´n considerable en las dos t´cnicas, aunque por splines la desviaci´n es de unos o e o 10 ´rdenes menor. En este caso, la funci´n tiende a un m´ o o ınimo en esta misma zona 2b. En la figura 3a puede observarse la gran dispersi´n del punto, respecto del resto del conjunto. En cuanto al comportamiento de los o dos 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 o por todos los puntos, por cuanto el error depender´ tanto del orden del mismo, como del alejamiento de cada a dato4a. Por otro lado, la caracter´ıstica del ajuste mediante splines se obserba claramente en la figura 4b, donde el 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- u fiere esta t´cnica debido a que el error de interpolaci´n es menor respecto a la t´cnica mostrada inicialmente, e o e inclusive cuando se utilizan splines de bajo orden. Adem´s evita el fen´meno de Runge, que aparece cuando en a o la interpolaci´n polin´mica se realiza en puntos equidistantes con polinomios de alto grado. Un aspecto intere- o o sante 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 math 4 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 e 12 f a c = x1 [ j ]− x1 [ k ] p t ∗= np . p o l y 1 d ( [ 1 . 0 , − x1 [ k ] ] ) / f a c 14 p += p t return p 16 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 math 4 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 e 3 8. 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 u de 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 1 extremos, 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 a de error de ambas variantes es el mismo, por cuanto no se ganar´ exactitud aplicando una u otra regla en el a mismo 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 a se encuentra dentro del intervalo de negatividad de la funci´n N = (0, 1), cruzando el eje de coordenadas en el o origen. Otro detalle es que la funci´n no es anti-sim´trica, aunque parece serlo a simple vista. Su numerador o e tiende a −∞ cuando x → 1. Si intent´ramos un procedimiento integrando directamente hasta 1, tendr´ a ıamos o 1 una indeterminaci´n ∞ en este punto, por lo que nuestro primer intento ser´ aproximarnos a este punto con a una proximidad aceptable. Como era de esperarse, el resultado que arroj´ con n = 100 sub-intervalos estuvo o bastante 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 o no haber sido proporcionado este valor, lo natural hubiera sido emplear como referencia el cambio en cada iteraci´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-intervalos el l´ empleados, el error, y el tiempo que insumi´ el c´lculo. Como puede apreciarse, fueron necesarios 60 millones o a de sub-intervalos para lograr un error aceptable ( 10−4 ) en la cantidad de cifras significativas propuesta en este 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 o por 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 a visualizarse en la figura 6a, donde el error alcanzado por la ultima iteraci´n no sigue el comportamiento de las ´ o corridas anteriores. En el apartado 4 se detalla el programa en c´digo python empleado para producir la salida o anterior 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 S 10 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 convergencia 14 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 l 22 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 r 24 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 o y emplear una funci´n de mapeo Rpxq → Rr ya que la informaci´n sobre su posici´n original estar´ guardada o o o a en 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- a nuaci´n la tercera sin el primer elemento, seguido de la cuarta fila sin los dos primeros elementos, hasta llegar o a 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 a por 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 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 o lineal del tipo k = in + j, donde k es el sub-´ ındice del vector resultante. Dado en nuestro caso buscamos particularmente una funci´n que omita todos los elementos nulos de H sup deberemos restar del total de elementos o de una matriz, la cantidad de elementos no nulos descriptos anteriormente. Esto da como resultado una funci´n o de 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 10 6.1. Calcular soluci´n usando Cholesky: o Resoluci´n o Este m´todo es aplicable a matrices cuadradas sim´tricas y definidas positivas. En primera medida el rango e e de aplicaci´n parece acotado, sin embargo, a menudo suelen encontrarse matrices de este tipo en la pr´ctica, o a por cuanto su conocimiento es interesante. Para esta clase de arreglos matriciales, los autovalores ser´n siempre a positivos. Este m´todo es aproximadamente un orden m´s eficiente que el resto de los m´todos de resoluci´n de e a e o ecuaciones lineales. El factor que destaca a este m´todo es que en vez de buscar factores triangulares arbitrarios L, U , esta des- e composici´n construye un factor L cuya transpuesta LT puede utilizarse como la parte triangular superior. Es o decir, 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 es posible aplicar directamente esta transformaci´n a la matriz A. No obstante, si pre-multiplicamos a ambos lados o de la ecuaci´n matricial por AT , en el lado izquierdo tendremos como resultado una matriz de coeficientes que o reunir´ 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 ] −S 13 i f abs ( d ) < z t o l : t [ i ] [ i ] = 0.0 15 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.0 23 t [ i ] [ j ] = (A [ i ] [ j ] − S ) / t [ i ] [ i ] return t 25 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 a Resoluci´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 e valores del sistema original, y modificado. Para el primer caso, el SEL con el c´lculo de residuos queda en la a forma:     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 10 Para 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 − 15 si hubi´ramos tenido un vector D con esta otra forma (aclaro que esta alternativa, al igual que al principio e del ejercicio s´lo se muestra con fines comparativos). Los valores correspondientes a las desviaciones de los o Rt · R residuos pueden calcularse como σ 2 = , donde los valores del denominador corresponden a las dimensiones m−n correspondientes de la matriz A, que para nuestro caso es 6 − 3 = 3, por lo que el c´lculo queda en 5,95238095 a para el caso real, y en 4,79233000e − 29(≈ 0) para el ejemplo propuesto. 6.4. Calcular las matrices de covarianza y de correlaci´n: o Resoluci´n o La matriz de covarianza contiene la covarianza entre los elementos de un vector. Es la generalizaci´n natural o a dimensiones superiores del concepto de varianza de una variable aleatoria escalar. Representa la influencia que una variable tiene sobre otra y de los pares ordenados del resultado de un experimento aleatorio. Se define matem´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 o Al 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 o x3 :   ∅ ∅ ∅ corr(A) = ∅ 1 0,97891726 ∅ 0,97891726 1 6.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 ´ o sistema, el mismo quedar´ con cond(A) = 85,8932 Desde el punto de vista anal´ ıa ıtico, es posible que D5 = 10 sea discordante. Anulando este valor, el SEL completo seguir´ el mismo patr´n de comportamiento. Otra forma de ıa o mejorar 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 = X 14 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 V 24 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 a conexa de esa uni´n contiene tantos autovalores como c´ o ırculos haya en ella, tanto c´ ırculos como autovalores contados con multiplicidad. A estos c´ırculos se los denomina comunmente discos de Gershgorin. Para nuestra matriz 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 queda verificado 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: e Resoluci´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 que modelan 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 la que el potencial se anula. Como se puede obsercar en esta ecuaci´n, las distancias tienen dos sub´ o ındices, que corresponde a la distancia entre part´ıculas i y j, por cuanto la gr´fica 6 en realidad muestra el comportamiento a entre dos de ellas. En simulaciones MD, este potencial debe evaluarse un promedio de 12 veces para cada part´ ıcula en un cristal BCC.Adem´s, normalmente para independizar el comportamiento del potencial de las a caracter´ ı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 a tipos de fuerzas que act´an principalmente, a rangos cortos, predominan las fuerzas de repulsi´n de Pauli. A u o medida que se gana distancia interat´mica, una vez superado el punto de equilibrio, dado por el m´ o ınimo de potencial, las fuerzas atractivas de Van der Waals act´an con preponderancia. Es dable decir que este modelo es u una gran simplificaci´n al problema de modelar el comportamiento de part´ o ıculas a nivel at´mico. La potencia o computacional con que se cuenta en estos d´ permite emplear modelos m´s complicados, como la Teor´ de ıas a ıa Funcional de Densidad (DFT) [4], para algunos millones de ´tomos, o hasta la ecuaci´n de Schroding¨r [7]. a o e Sin embargo, con los recursos actuales, dimensiones de meso-escala s´lo son posibles empleando potenciales y o t´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], ubicados seg´n: u 1 (π(k − )) x = cos 2 , k = 1, 2, −..., n n Luego, 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 la funci´n en el dominio reducido x[1, 2,5], en t´rminos normalizados, como se coment´ anteriormente. El l´ o e o ımite por derecha se impone normalmente como cut-off distance, ya que en ese rango las fuerzas pueden despreciarse en algunos casos7a. Dado que la t´cnica no funciona en este dominio, debemos efectuar una transformaci´n para e o llevarlo al espacio de c´lculo de la t´cnica. En nuestro caso emplearemos x∗ = r/bσ con b = 2,5, y evaluaremos a e en 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 o aproximaci´n. Para este caso fuimos desde orden 3 al 11. El comportamiento del potencial hace plausible su o ajuste a trav´s de polinomios, por lo que la idea fue ver hasta con qu´ orden de magnitud ser´ necesario e e ıa aproximarse para lograr un buen fitting. La figura 7b permite comparar el comportamiento de los sucesivos ajustes a orden creciente con la funci´n original. Dado que la curva tiene un comportamiento y → +∞ : x → 0, o el hecho de evaluar en un subdominio cercano a 0 producir´ errores considerables en la vecindad de este valor. a 9. Resolver el problema del p´ndulo invertido, encontrando una so- e luci´n estable para oscilaciones verticales: o Resoluci´n o El problema del p´ndulo invertido puede describirse en base a la figura 8, donde una barra de longitud L e se 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 e somete a un movimiento vertical s. El v´ ınculo tiene dos grados de libertad, a saber: lineal en la direcci´n y, y o rotativo en θ. Si suponemos que dicho movimiento est´ gobernado por un ley del tipo a s = Asenwt donde A es la amplitud, y w es la frecuencia de vibraci´n de la base, podemos expresar su forma diferencia tras o aplicar 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 o A. 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 ˙ n de la siguiente manera: ¨ 3 θ= (g − Aw2 senwt)θ 2L Revisando 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 A miembro de la desigualdad tiene que ver con las caracter´ ısticas geom´tricas del sistema, y mientras ese miembro e se mantenga en valores inferiores a la frecuencia de excitaci´n externa, se mantendr´n condiciones estables. o a Para nuestro an´lisis elegimos cinco escenarios para estudiar su comportamiento. En todos ellos las condiciones a iniciales son θ0 = 1θ˙0 = 0 para simplificar el estudio, y se ha variado la velocidad angular de excitaci´n seg´n la o u condici´n de estabilidad. A continuaci´n puede verse el detalle de los par´metros establecidos para cada caso: o o a 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 1 3 1 1 50 1 4 1 1 2 1 se evaluaron los intervalos con un ancho de 1−4 por un lapso de 100 segundos, utilizando el m´todo de Euler e expl´ ı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 s 4 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 s 12 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 Z 26 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