clase valvec 2016

Upload: xavier-benites

Post on 08-Jul-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 Clase Valvec 2016

    1/97

    1/97Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales

    Grado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º

    Matemáticas de Especialidad–Ingeniería Eléctrica

    Valores y vectores propiosValores singulares

    José Luis de la Fuente O’[email protected]

    [email protected]

    Clase_valvec_2016.pdf

  • 8/19/2019 Clase Valvec 2016

    2/97

    2/97Índice

      Cuestiones teóricas de valores y vectores propios

      Localización de valores propios   Obtención numérica de valores y vectores propios

     Método de Jacobi

     Método de la iteración de potencia

     Método de la iteración inversa Iteración mediante cociente de Rayleigh

     Deflación

      Iteración simultánea

     Iteración QR Subespacios de Krylov

     Comparación de los métodos

      Cálculo de valores singulares

  • 8/19/2019 Clase Valvec 2016

    3/97

    3/97

     Los valores y vectores propios adquieren una relevancia destacada para analizarasuntos con oscilación y resonancia. Su conocimiento es básico en:

     Sistemas eléctricos de corriente alterna.

     Modos de vibración natural de estructuras.

     Instrumentos musicales.

     Mecánica cuántica.

     Lasers.

     Resonancia Magnética Nuclear (NMR).

     : : :

  • 8/19/2019 Clase Valvec 2016

    4/97

    4/97

      Su cálculo e interpretación es esencial para el análisis de sistemas de generación,transporte y demanda de energía eléctrica.

    Turbinegovernor

    Torsion

    Syn-chronous

    m aschine

    AV R

    O n-loadtap

    changer

    C urrenttransform er

    Saturation

    Protective

    system

    B reakerA rc

    restriking

    External systemLine

    C able

    H VD C

    FACTS

    C onverterVA R -Load

    VA R -A dm ittance

    M otor

    Load torque

    G  Inter-

    connected

    System

    SV C

    MTravelling

    w ave

    phenom ena

    Transient

    phenom ena,

    Sw itching

    overvoltages

    Short-circuit

    phenom ena

    SSR-

    phenom ena

    Transient

    stability

    C ontrol

    phenom ena

    w ith steam

    generators

    H arm onics,

    Transform er-saturation

    1 m H z1 H z1 kH z1 M H z

    1 m s1  µs 1 s 1 m in 1 h

    100 s1 s10 m s100  µs1  µs

    electrom agnetic electrom echanical

    Frequency range 1 Frequency range 2

    C alculation

    tim e steps

    Process-

    tim es

    Frequency

    Phenom ena

  • 8/19/2019 Clase Valvec 2016

    5/97

    5/97

    Electrom agn etic and

    electrom e chanical

    phenom ena, com p lete

    solution

    Electrom echanical

    phenom ena,

    fundam ental

    frequency

    Sm all-signal

    characteristics

    N etw ork, m achine s

    and co ntrol

    System oscillation

    and -dam ping,

    N etreduction,

    C on troller layo ut

    Loadflow for special

    requ irem ents, e.g.

    hom og eneous m ulti-

    conductor system

    Loadflow

    O perating po int

    System com ponents

    Linearization

    C oupling

    Frequency range

    all system -variables  Eigenvalue analysis

    on ly

    Loadflow

    Tim e range

    Instantaneous values

    ns...µs...m s...s

    Tim e rang e

    Q uasi steady-state values

    s...m in

    Loadflow

    Initial conditions

    Simulation Models for System Components, Machines, Controllers and Control Units

    Single line netw ork

    Co m plex adm ittances

    only fund am ental frequency

    N etw ork in R ST

    A dm ittances by differential

    eq uation s non-line arities

     

    NORMALIZEDRIGHTEIGENVECTOR(MODESHAPE)

    S IG MA O ME GA Z ET A F AC O  (RAD/SEC) (%)  (HZ)-0,087 4,566 -1,9

    ELECTRICMACHINES

    SYNCHRONOUSMACHINES18items

    COMPONENTNAME

    1DACOLOUA2X150MVA

    2MILLOA2x18MVA

    3 LOSQUI2X 18+14+Adong

    4 TEHUSEQUEL+JALA+BANELVOL

    5FALALFAL2X95MVA

    6 TOLIZASAV,ZALSAV10+3X32

    7PELRA5X76MVA

    8NASVENTAAT18KV

    9NASVENTAAT19.2KV

    10CAREN2X58.8MVA

    11ENCHEPHEHU 2X283MVA

    12BUNCOL 2X240MVA

    13CURAMACHI 2X53MVA

    14COANTU 2X160MVA

    15ROTOREL 4X105MVA

    16NICOREA 5X21.5MVA

    17QUEPAN 500MVA

    18TILLARNUCA2X68MVA

    0,19

    0,45

    0,43

    0,15

    0,16

    0,14

    0,37

    0,63

    1,00

    0,63

    0,18

    0,06

    0,05

    0,04

    0,06

    0,06

    0,22

    0,37

    0,56

    0 0 ,1 0 ,2 0 ,3 0 ,4 0 ,5 0 ,6 0 ,7 0 ,8 0 ,9 1

    MODEOBSERVABILITYOFDEVIATIONVARIABLESMOTORSPEED

    PY ParLubthedynamicsystemand

    observethemodedifferentdevices.

    MODEDISTRIBUTIONONCOMPLEXS-PLANE

    COMPLEXS-PLANE

    17outof206solvedmodesare selectedallthesele ctedmodesareinsi dethedisplayedrange

    SELECTEDMODES

    MACHINESWINGMODES

    S I GMA OMEGA Z E TA F REQ  ( ra d/ se c ) ( %) ( H z)

    1 -4 ,0 5 3 1 2 , 99 1 -2 9, 8 2 , 06 0

    2 -1 ,2 17 1 1, 7 54 -1 0, 3 1 , 07 1

    3 -2 ,5 2 0 1 1 , 45 0 -2 1, 5 1 , 02 2

    4 -0 ,0 5 3 1 0 , 02 2 -0 ,5 1 , 59 5

    5 - 1,1 10 9 , 07 2 -1 1, 2 1 , 57 1

    6 -1 ,2 8 5 9 , 3 88 -1 3, 6 1 , 49 4

    7 - 1,1 0 4 9 , 3 5 9 -1 2, 6 1 , 49 0

    8 -1 ,9 9 2 9 , 2 33 -2 1,1 1 ,4 69

    9 -0 ,9 0 0 9 , 1 46 -9 ,0 1 , 45 6

    1 0 -2 , 07 9 8 , 94 2 -2 2, 9 1 , 40 7

    1 1 -1 , 20 7 8 , 70 0 -1 4, 5 1 , 39 9

    1 2 -0 , 55 0 8 , 44 0 -6 ,6 1 , 34 3

    1 3 -1 ,1 3 7 7 , 0 62 -1 4, 3 1 , 25 1

    1 4 -0 , 50 3 7 ,0 3 3 -7 ,1 1 ,1 19

    1 5 -0 , 38 3 6 , 31 0 -6 ,1 1 , 00 4

    1 6 -0 , 20 0 5 , 71 8 -4 ,9 0 , 91 0

    1 7 -0 , 00 7 4 , 56 6 -1 ,0 9 0 , 72 7 0

    0,5

    1

    1,5

    2

    Hz14

    13

    12

    11

    10

     9

     8

     7

     6

     5

     4

     3

     2

     1

     0

    -6 -5 -4 -3 -2 -1 0 1

    NORMALIZEDRIGHTEIGENVECTOR(MODESHAPE)

    S IG MA O ME GA Z ET A F AC O  (RAD/SEC) (%)  (HZ)-0,087 4,566 -1,9

    ELECTRICMACHINES

    SYNCHRONOUSMACHINES18items

    COMPONENTNAME

    1 DACOLOUA2X150MVA

    2 MILLOA2x18MVA

    3 LOSQUI2X18+14+Adong

    4 TEHUSEQUEL+JALA+BANELVOL

    5 FALALFAL2X95MVA

    6 TOLIZASAV,ZALSAV10+3X32

    7 PELRA5X76MVA

    8 NASVENTAAT18KV

    9 NASVENTAAT19.2KV

    10CAREN2X58.8MVA

    11ENCHEPHEHU 2X283MVA

    12BUNCOL 2X240MVA

    13CURAMACHI 2X53MVA

    14COANTU 2X160MVA

    15ROTOREL 4X105MVA

    16NICOREA 5X21.5MVA

    17QUEPAN 500MVA

    18TILLARNUCA2X68MVA

    18

    1716

    12

    3

    89

    Au gm ented state e quations:

    State equation:

    Sparsity-basedstorageand

    m atrixcom putation

    R L P U

    From the tim e dom ain subprogram of N ETO M AC ®

    Q R transform ation(Dim entioned m axim um

    800 dynam ic order)

    Pow er m ethodof im plicit

    inverse iteration

    Transfer functionbased dom inantpole m ethod

    Legend:R: R igh t eigen vec tor (obse rvability inform ation )L: Le ft eige nve ctor (controllability inform ation )P: P articipation factorsU : Transfer func tion residue sU 1: M ode activities in unit im pulse respon seU 2: M ode activities in unit step resp onse

    Linearm odelof adynam ic

    pow ersystem

    Eigen-systemsolution

    Eigenvalueanalysis&transferfunctionanalysis

    U 1 U 2

    A ctivities o fone m ode on

    different devices

    A ctivities ofdifferent m ode son o ne d evice

    G (jw ):Frequencyresponse

    y(t):U nit im pulse/step

    response

    O verviewof

    m odes

    Eigenvalues and associated eigen vectors

    System ’s w orking p oint at t0, t>t0

    4

    32

    1

    NORMALIZEDRIGHTEIGENVECTOR(MODESHAPE)

    S IG MA O ME GA Z ET A F AC O  (RAD/SEC) (%)  (HZ)-0,087 4,566 -1,9

    ELECTRICMACHINES

    SYNCHRONOUSMACHINES18items

    COMPONENTNAME

    1DACOLOUA2X150MVA

    2MILLOA2x18MVA

    3 LOSQUI2X18+14+Adong

    4 TEHUSEQUEL+JALA+BANELVOL

    5FALALFAL2X95MVA

    6 TOLIZASAV,ZALSAV10+3X32

    7PELRA5X76MVA

    8NASVENTAAT18KV

    9NASVENTAAT19.2KV

    10CAREN2X58.8MVA

    11ENCHEPHEHU 2X283MVA

    12BUNCOL 2X240MVA

    13CURAMACHI 2X53MVA

    14COANTU 2X160MVA

    15ROTOREL 4X105MVA

    16NICOREA 5X21.5MVA

    17QUEPAN 500MVA

    18TILLARN UCA2X68MVA

    0,19

    0,45

    0,43

    0,15

    0,16

    0,14

    0,37

    0,63

    1,00

    0,63

    0,18

    0,06

    0,05

    0,04

    0,06

    0,06

    0,22

    0,37

    0,56

    0 0 ,1 0 ,2 0 ,3 0 ,4 0 ,5 0 ,6 0 ,7 0 ,8 0 ,9 1

    FREQUENCYRESPONSEOFTRANSFERFUNCTION

     Y(s) NASVENTAAT16KV ROTORSPEED

      PV

    V (s ) NA S VE NTA A T1 8K V

    MECHANICALTORQUEpusMVA

    0(s)=

    NYQUISTDIAGRAMM

    0,91Hz

    MAGNITUDESCALE: 6.31(x18-4)

    x

    0

    A xx x

    z

    A xz bx

    A zx A zz bz

    u

    x xA

    1   2   3   4

    9 NETOMAC eigenvalue ca lcu la t ion m od e  

    Mode distribution(Eigenvalues)

    P ha so r-Dia g ra m B a r d ia g ra m Nyq uis t-Dia g ra m

  • 8/19/2019 Clase Valvec 2016

    6/97

    6/97

      Caso histórico

     Hundimiento del Puente Tacoma 1, Washington, EE.UU.

     Hundimiento del Puente Tacoma 2, Washington, EE.UU.

     Hoy

    http://www.youtube.com/watch?v=3mclp9QmCGshttp://www.youtube.com/watch?v=j-zczJXSxnwhttp://www.youtube.com/watch?v=j-zczJXSxnwhttp://www.youtube.com/watch?v=3mclp9QmCGs

  • 8/19/2019 Clase Valvec 2016

    7/97

    7/97Aspectos teóricos y algunas propiedades delos valores y vectores propios

     En general, los vectores propios de un operador matemático1 lineal  T   son losvectores no nulos que cuando son transformados por el operador dan lugar a un

    múltiplo escalar de sí mismos2:  T .v/ D v. Ese escalar,  , se denomina valorpropio.

     La formulación de su cálculo en el caso habitual de que ese operador locaracterice una matriz,

    Dada una matriz  A 2

    Cnn, calcular un escalar   y un x ¤

    0 tales que

    Ax D x:

    El escalar   es un valor propio de  A  y  x  su correspondiente vector propio.1Transformación lineal u aplicación lineal de un espacio vectorial V  en si mismo. Ej. la ecuación de Schrödinger

    H E

     DEE .

    2No cambian su dirección.

  • 8/19/2019 Clase Valvec 2016

    8/97

    8/97

     Para que exista una solución distinta de la trivial  x D 0 el valor propio   deberáser raíz del polinomio característico de grado  n asociado a  A, es decir,

    det.A I/ D 0:Lo que es igual a  n g1n1 C g2n2 C .1/ngn D 0:

     Igual que cualquier matriz tiene asociado un polinomio característico, cualquierpolinomio tiene asociado una matriz compañera. La matriz compañera de unpolinomio mónico  p.t/ D c0 C c1t C C cn1t n1 C t n es

    C.p/

    D

    264

    0 0 : : : 0   c01 0 : : : 0   c10 1 : : : 0   c2:::

    :::

      : ::

      :::

    :::

    0 0 : : : 1 cn1

    375

      El polinomio mínimo  q.t / de la matriz  A  es el polinomio mónico único de gradomínimo tal que  q.A/

    D0.

  • 8/19/2019 Clase Valvec 2016

    9/97

    9/97

     Los vectores propios de  A  pertenecen al subespacio nulo de  Ax I ,ker.Ax I/, y no están unívocamente determinados: Si  v  es un vectorpropio, ˛v  también lo es.

      Siempre existen  n valores propios de  A 2 Cnn, reales o complejos. No siempreexisten  n vectores propios.

      La multiplicidad algebraica del valor propio   de  A  es la multiplicidad de la raízcorrespondiente del polinomio característico asociado a  A.

      La multiplicidad geométrica de   es el número de vectores propios linealmenteindependientes que se corresponden con  .

    Teorema   La multiplicidad geométrica de un valor propio es menor o igual que sumultiplicidad algebraica.

  • 8/19/2019 Clase Valvec 2016

    10/97

    10/97  Por ejemplo, si  A D I ,   D 1 es un valor propio con multiplicidad algebraica y

    geométrica  n. El polinomio característico de  A  es  p.z/ D .z 1/n y  ei 2 Cn,i D 1 ; : : : ; n, sus vectores propios.

     Si el valor propio   tiene una multiplicidad geométrica menor que la algebraica,se dice defectuoso. Se dice que una matriz es defectuosa si tiene al menos un

    valor propio defectuoso. La matriz

    A D "2 1 00 2 10 0 2

    #tiene un valor propio de multiplicidad algebraica 3 y multiplicidad geométrica 1.

    >> A=[2 1 0;0 2 1;0 0 2];

    >> [V D]=eig(A)V =

    1.0000 -1.0000 1.00000 0.0000 -0.00000 0 0.0000

    D =2 0 00 2 00 0 2

  • 8/19/2019 Clase Valvec 2016

    11/97

    11/97  Si una matriz  A 2 Cnn no es defectuosa dispone de  n vectores propios

    linealmente independientes.

      Si  V  2 Cn

    n

    tiene como vectores columna los  n vectores propios de  A  yD D diag.1; : : : ; n/, entonces  Avi D i vi ,  i D 1 ; : : : ; n, es equivalente aAV  D V D. Si  A  no es defectuosa,

    A D V DV 1

    que es la descomposición en valores propios de  A: o  A  diagonalizada por  V .

    Definición   Una matriz  A  se dice diagonalizable por semejanza si es semejante a unamatriz diagonal.

    Teorema   Una matriz  A 2  Cnn es diagonalizable si y sólo si tiene  n  vectores propioslinealmente independientes.

  • 8/19/2019 Clase Valvec 2016

    12/97

    12/97

    Definición   Dos matrices A; B 2 Cnn se dicen semejantes si existe una matriz inver-tible P  tal que  A D P1BP .

    Teorema   Dos matrices semejantes tienen el mismo polinomio característico y, porconsiguiente, los mismos valores propios.

    Definición   El espectro .A/ de  A  es el conjunto de sus valores propios:.A/ D f 2 C W det.A I/ D 0g:

    Definición   El radio espectral, .A/, de la matriz A es el valor máximo de los módulosde sus valores propios:  .A/ D max.i2.A/ ji j:Es el radio del menor círculo del plano complejo  centrado en el origen que contiene todossus valores propios.

  • 8/19/2019 Clase Valvec 2016

    13/97

    13/97

     Al aplicársele a cualquier vector la transformación que representa  A, ese vectortiende3 a orientarse hacia la dirección del vector propio dominante de  A.

      Ejemplo   Estudiemos la matriz A D 1;8 0;80;2 1;2  cuyos valores propios son1 D 2 y  2 D 1. El vector propio correspondiente a  1  es

    41

    . Si se multiplica

    A  y sus potencias por el vector  x D

    0;51

     el resultado es el de la figura.

     

    1

     A4 x

     A3 x

     A2 x

     Ax

     x

    10

     x 1

     x 2

    v1

    41

     

    v1

    Espacio de

    3Si ese vector está en la dirección de alguno de los vectores propios de A, se expande o contrae por un factor

    que determina el correspondiente valor propio

  • 8/19/2019 Clase Valvec 2016

    14/97

    14/97

    Otros ejemplos

      Ejemplo del apéndice "Definiciones,   : : :

      Si  A

     D 1 0

    0 2,  1 D 1;   x1 D

    1

    0 ; 2 D 2 y  x2 D

    0

    1 :

      Si  A D

    1;5 0;5

    0;5 1;5

    ,  1 D 2;   x1 D

    1

    1

    ; 2 D 1 y  x2 D1

    1

    :

      Si  A D

      0 1

    1 0

    ,  1 D i;   x1 D

    1

    i

    ; 2 D i   y  x2 D

    i

    1

    , donde  i D

    p 1.

    http://upload.wikimedia.org/wikipedia/commons/0/06/Eigenvectors.gifhttp://upload.wikimedia.org/wikipedia/commons/0/06/Eigenvectors.gifhttp://upload.wikimedia.org/wikipedia/commons/0/06/Eigenvectors.gif

  • 8/19/2019 Clase Valvec 2016

    15/97

    15/97

    Teorema   La suma de los valores propios de  A  es igual a su traza:

    1 C 2 C C n Dn

    XiD1ai i .

    Teorema   El producto de los valores propios de  A  es igual a su determinante.

    Teorema   Los valores propios de una matriz triangular son los coeficientes de su diagonalprincipal.

    Teorema  Una matriz es singular si y sólo si tiene un valor propio igual a 0.

    Teorema   Si los valores propios de una matriz  A   son  i ,  1    i   n, los de   A  ˛Ison  i  ˛; 1 i  n. Sus vectores propios son idénticos.

  • 8/19/2019 Clase Valvec 2016

    16/97

    16/97

    Teorema   Los valores propios de las potencias de A  son las potencias de los de  A; losvectores propios son los mismos.

    I Demostración.  Si consideramos la definición,

    Ax D xI   A2

    x D Ax D 2

    xI   An

    x D n

    x

    S1AS D I   S1AS S1AS D 2 )   S1A2S D 2:Las potencias negativas también:

    Ax D xI   A1Ax D A1x  )   A1x D 1x:

    Corolario   Los valores propios de A1 son los recíprocos de los de  A.

  • 8/19/2019 Clase Valvec 2016

    17/97

    17/97

     Los valores propios de multiplicidad  m > 1 tienen un subespacio propioasociado de dimensión  m. Ese subespacio es invariante por lo que:

     Todos los vectores de un subespacio propio son vectores propios.

     Los subespacios propios correspondientes a valores propios distintos sólotienen en común el vector nulo.

     El problema de calcular los valores y vectores propios es en general unproblema no lineal en los valores propios   y lineal en los vectores  x.

  • 8/19/2019 Clase Valvec 2016

    18/97

    18/97

     El cálculo de los valores propios por las raíces del polinomio característicono es aconsejable por:

     El trabajo de determinar los coeficientes y raíces del polinomio. La sensibilidad a errores de redondeo de los coeficientes del polinomio

    (recordemos los polinomios de Wilkinson).

      Ejemplo  Consideremos la matriz  A D

    1

    1

    ; donde    es cualquier número

    menor que p 

    m Kaq:.

     Los valores propios exactos de  A  son  1

    C  y  1

    .

     El cálculo mediante el polinomio característico haría

    det.A I/ D 2 2 C .1 2/ D 2 2 C 1Ilas raíces serían (valores propios calculados)  1 y  1.  

  • 8/19/2019 Clase Valvec 2016

    19/97

  • 8/19/2019 Clase Valvec 2016

    20/97

    20/97

     Si  A  es hermítica, el producto  xH Ax  es un número real.

     Los valores propios de una matriz hermítica, en consecuencia, sonnúmeros reales. En efecto

    Ax DxI   xH Ax̃2   R  

    D xH x D   jjxjj2˜

    2   R  

     En una matriz hermítica los vectores propios correspondientes a dos

    valores propios distintos son ortogonales entre sí.En efecto,

    Ax1 D 1x1Ax2 D 2x2

      xH 2  A

    H x1 D 1xH 2  x1xH 2  A

    H x1 D 2xH 2  x1

    )  .1 2/xH 2  x1 D 0:

    Como los valores propios  1  y  2  son distintos,

    xH 2  x1 D 0:Si los vectores propios se normalizan,  xH x D 1, la matriz de vectorespropios se convierte en una matriz ortogonal.

  • 8/19/2019 Clase Valvec 2016

    21/97

    21/97

    Unitarias   Son matrices cuya inversa es su compleja conjugada:U H U  D U U H  D I :

     Ejemplo La matriz  ip 2=2 p 2=2

    p 2=2 i

    p 2=2

    :

     Las matrices unitarias son una extensión de las matrices ortogonales alcampo complejo. Todos los valores propios tienen módulo unidad.

     Una matriz unitaria no modifica ni los ángulos ni las normas:

    .U x/H  .U y/DxH U H U y DxH ysi   y D x; jjU xjj2 D jjxjj2:

    Normales   Son las matrices que cumplen que AAH  D AH A:

     Ejemplo

    2

    41 2 0

    0 1 2

    2 0 1

    3

    5;

    i 0

    0 3 5i

    :

  • 8/19/2019 Clase Valvec 2016

    22/97

    22/97

    Triangularización de Schur   Issai Schur, Alemania, 1875-1941.

    Teorema   Triangularización de Schur Para cualquier A 2 Cnn existe una matriz unitariaU   tal que

    U H AU  D T ,donde   T   es una matriz triangular superior. Los valores propios de   A   son entonces loscoeficientes de la diagonal principal de  T .

    Teorema   Para cualquier matriz hermítica  A 2  Cnn existe una matriz unitaria  U   talque

    U H AU  D D,donde  D  es una matriz diagonal.

    1. Los valores propios de  A  son números reales.

    2. Se pueden obtener vectores propios de  A  que sean ortonormales.

  • 8/19/2019 Clase Valvec 2016

    23/97

    23/97

    Corolario   Si  A 2 Rnn es simétrica, existe una matriz ortogonal  Q tal queQT AQ D D,

    matriz ésta diagonal.

    Teorema   Los valores propios de una matriz hermítica definida positiva son todos po-sitivos.Recíprocamente, si todos los valores propios de una matriz son positivos, debe ser definidapositiva.

  • 8/19/2019 Clase Valvec 2016

    24/97

    24/97

    Teorema   Forma canónica de Jordan Para una matriz  A 2  Cnn existe una matriz  T regular tal que

    T 1AT  D J  D2664

    J 1   0

    : : :0  

    J n

    3775 ;donde

    J i D 2664i   1

    i 1   0

    0     1i

    3775es una matriz de Jordan y los  i  son los valores propios de  A.

     Por Marie Ennemond Camille Jordan, Francia, 1838-1922.

  • 8/19/2019 Clase Valvec 2016

    25/97

    25/97

     Tabla que resume las posibles transformaciones por semejanza.

    A T B D T 1AT Valores propios distintos Regular Diagonal

    Simétrica real Ortogonal Diagonal real

    Hermítica compleja Unitaria Diagonal real

    Normal Unitaria Diagonal

    Real cualquiera Ortogonal Triangular en bloques (real)

    Cualquiera Unitaria Triangular superior (Schur)

    Cualquiera Regular Casi diagonal (Jordan)

  • 8/19/2019 Clase Valvec 2016

    26/97

    26/97

    Localización de valores propios

      Si no se necesita calcular el valor numérico exacto de los valores propios, sinoconocer  grosso modo  dónde se encuentran en el plano complejo, existen varias

    formas de hacerlo.

     La más simple surge de tomar normas en la expresión  Av D v:jjjjvj jD j jvj jD j jAvj j j jAjjjjvjj ) jj j jAjj;

    para cualquier norma matricial inducida por una norma vectorial. Por

    consiguiente:

     Los valores propios de una matriz se localizan en el plano complejo, dentrodel circulo centrado en el origen de radio jjAjj.

  • 8/19/2019 Clase Valvec 2016

    27/97

    27/97

    Semyon Aranovich Ger̆sgorin,Rusia, 1901-1933.

    Teorema   Ger̆sgorin  Los valores propios de una matriz   A 2   Cnn se encuentran enla unión de los   n   discos de Gerschgorin, cada uno de los cuales está centrado en   akk ,k D 1 ; : : : ; n, y tiene de radio

    rk D

    n

    Xj D1

    j ¤kjakj

    j

    I   Demostración.  Sea    un valor propio de   A   y  x  su vector propio asociado. De  Ax D  x   y  .I A/x D 0  se tiene que

    . akk/xk DnX

    jD1

    j ¤k

    akj xj ; k D 1 ; : : : ; n ;

    donde  xk  es el componente  k-ésimo del vector  x.

    Si xi  es el coeficiente de  x  más grande en valor absoluto, como jxj j=jxi j 1  para  j  ¤ i , se tiene que

    j ai i j nX

    jD1

    j ¤i

    jaij jjxj jjxi j

     nX

    jD1

    j ¤i

    jaij j:

    Luego   está contenido en el disco

     f

    W j

    ai i

    j ri

    g.

    /

  • 8/19/2019 Clase Valvec 2016

    28/97

    28/97

     El siguiente programa de Matlab calcula los círculos o  discos  de Gerschgorin ylos dibuja.

    function C = Gershgoring(A)%% Se dibujan los círculos de Gerschgorin de la matriz A.

    [m n] = size(A);d = diag(A); cx = real(d); cy = imag(d);B = A - diag(d);r = sum(abs(B’)); % Suma filas de A sin diagonalC = [cx cy r(:)];t = 0:pi/100:2*pi; c = cos(t); s = sin(t);[v d] = eig(A); % eig calcula los valores propios de A

    d = diag(d); % En d valores propiosu1 = real(d); v1 = imag(d);hold on, grid on, axis equalxlabel(’Re’), ylabel(’Im’)h1_line = plot(u1,v1,’or’);set(h1_line,’LineWidth’,1.5)for i=1:n % Se dibujan los círculos de Gerscgorin

    x = zeros(1,length(t)); y = zeros(1,length(t));x = cx(i)+r(i)*c; y = cy(i)+r(i)*s;h2_line = plot(x,y);set(h2_line,’LineWidth’,1.2)

    endhold offtitle(’Círculos de Gerschgorin y valores propios de la matriz’)

    end

    29/97   Ejemplo   Calcular los  discos  de Gerschgorin de la matriz

  • 8/19/2019 Clase Valvec 2016

    29/97

    29/97j p g

    A D2

    4

    1 2 3

    3 4 9

    1 1 1

    3

    5:

    Los radios de los  discos   son   r1 D 5r2 D 12r3 D 2:

     Los valores propios son:  7;3067; 0;6533 C 0;3473i   y 0;6533 0;3473i.Con el programa anterior, se obtiene lo siguiente.

    −10 −5 0 5 10 15

    −10

    −5

    0

    5

    10

    Re

          I    m

    Círculos de Gershgorin y valores propios de la matriz

    30/97

  • 8/19/2019 Clase Valvec 2016

    30/97

    30/97

     Los gráficos de los  discos  de Gerschgorin de otras matrices curiosas se puedenver en esta otra gráfica.

    −40 −30 −20 −10 0−20

    −10

    0

    10

    20

    gersh(gallery(’lesp’,12))

    −5 0 5

    −5

    0

    5

    gersh(gallery(’hanowa’,10))

    −0.2 0 0.2 0.4 0.6 0.8−0.5

    0

    0.5

    gersh(gallery(’ipjfact’,6,1))

    −2 −1 0 1 2

    −2

    −1

    0

    1

    2

    gersh(gallery(’smoke’,16,1))

    31/97

  • 8/19/2019 Clase Valvec 2016

    31/97

    31/97

    Índice

      Introducción teórica

      Localización de valores propios   Obtención numérica

     Método de Jacobi

     Método de la iteración de potencia

     Método de la iteración inversa

      Iteración mediante cociente de Rayleigh

     Deflación

     Iteración simultánea

     Iteración QR

     Subespacios de Krylov

      Cálculo de valores singulares

    32/97

  • 8/19/2019 Clase Valvec 2016

    32/97

    32/97

    Obtención numérica

    Método de Jacobi   Carl Gustav Jacobi, Alemania(Prusia), 1804-1851.

     Es un método formulado en 1846 para el cálculo de los valores y vectorespropios de una matriz simétrica o compleja hermítica.

      Utiliza transformaciones por semejanza basadas en rotaciones, idénticas a las deGivens, para hacer cero pares de elementos simétricamente dispuestos respecto

    a la diagonal principal.

    33/97 Partiendo de A0 D A cada iteración conforma una transformación

  • 8/19/2019 Clase Valvec 2016

    33/97

    /  Partiendo de  A0 D A, cada iteración conforma una transformaciónAkC1 D J T k AkJ k;

    donde cada matriz  J k D h   c ss ci se calcula de tal manera quehc ss c

    i happ   apqapq   aqq

    i h  c s

    s c

    iDh

      c2app  2csapq C s2aqq   apq.c2 s2/ C cs.app  aqq/apq.c

    2 s2/ C cs.app  aqq / c2aqq C 2csapq C s2app

    isea diagonal.

     Para lograrlo,  apq .c2 s2/ C cs.app aqq / ha de ser cero. Haciendo

      D  aqq app2apq

    y   t D s=c

    se obtiene la ecuación de segundo grado

    t 2 C 2 t  1 D 0en la tangente del ángulo de rotación,  t ,

    34/97  De las dos posibles raíces,

  • 8/19/2019 Clase Valvec 2016

    34/97

    t D   ˙p 

    1 C  2;se escoge la más pequeña para que

     j 

    j =4. Luego se obtienen

    c D 1=p 1 C t 2 y  s D c t .

      En Matlab:

    function J=Jac_Rot(A,b,d)% Cálculo de la rotación de Jacobi para anular un coef. de A de coordenadas (b,d)

    if A(b,d)~=0tau=(A(d,d)-A(b,b))/2/A(b,d);if tau>=0

    t=1/(tau+sqrt(1+tau^2));else t=-1/(-tau+sqrt(1+taû 2)); endc=1/sqrt(1+t^2);s=c*t;

    elsec=1; s=0;

    endJ=[c s; -s c]; % Igual que Givens

    end

     Mediante unos “barridos”  que apliquen sistemáticamente estas transformacionesa todos los coeficientes que no estén en la diagonal principal de la matriz que

    tengan un valor mayor que una tolerancia se conseguirá ir convirtiendo la matriz

    en una diagonal.

    35/97

    L i d l d á i

  • 8/19/2019 Clase Valvec 2016

    35/97

      La convergencia del proceso es cuadrática.

     El proceso termina cuando  off .A/ Dv uuuutnX

    iD1

    nXj D1j ¤i

    a2ij   > t ol  kAkF .

      Ejemplo   Sea  A0 D h 1 0 20 2 12 1 1 i. Apliquémosle el método de Jacobi.  Anulemos para empezar los coeficientes  .1; 3/ y  .3; 1/. Con ese fin, definamos

    la rotación

    J 0 D 240;707 0 0;7070 1 00;707 0 0;707

    35y hagamos

    A1 D J T 0 A0J 0 D24

    3 0;707 0

    0;707 2 0;707

    0 0;707   1

    35 :

  • 8/19/2019 Clase Valvec 2016

    36/97

    37/97

  • 8/19/2019 Clase Valvec 2016

    37/97

     Comenzando un nuevo “barrido”, hagamos cero los coeficientes  .1; 3/ y  .3; 1/.Usaremos la rotación

    J 3 D240;998 0 0;0700 1 0

    0;070 0 0;998

    35

    y luego

    A4 D J T 3 A3J 3 D24 3;388 0;0733 00;0733 1;780 0;0051

    0 0;0051 1;167

    35 :

     El proceso continuaría hasta llegar a conseguir una aproximación a los valores

    propios deseados.  

    38/97

  • 8/19/2019 Clase Valvec 2016

    38/97

     El programa para poder calcular una rotación de Jacobi  2 2 y aplicarla luego ala matriz original completa, pre y post multiplicándola, es este.

    function J=jacrot(A,i,j)% Transf. de Jacobi del coeficiente (i,j) y (j,i) de A

    n=length(A);J1=Jac_Rot(A,i,j); J=eye(n); % Calcula qué rotación 2x2 elemental aplicarJ([i j],[i j])=J1([1 2],[1 2]); % Se adapta a la propia A

    end

    function J=Jac_Rot(A,b,d)% Cálculo de rotación de Jacobi 2x2 en la matriz A.if A(b,d)~=0

    tau=(A(d,d)-A(b,b))/2/A(b,d);if tau>=0

    t=1/(tau+sqrt(1+tau^2));else t=-1/(-tau+sqrt(1+taû 2)); endc=1/sqrt(1+t^2);s=c*t;

    elsec=1; s=0;

    endJ=[c s; -s c]; % Igual que Givens

    end

    39/97Ejemplo con Matlab

  • 8/19/2019 Clase Valvec 2016

    39/97

    >> A=rand(4);>> A=A+A’A =

    1.7818 1.1086 1.3615 0.33521.1086 0.5150 1.0842 0.50541.3615 1.0842 1.8585 0.96600.3352 0.5054 0.9660 0.9466

    >> % Anulemos el coeficiente (1,2)>> J=jacrot(A,1,2); A=J’*A*JA =

    2.4252 0.0000 1.7218 0.54360.0000 -0.1284 0.2544 0.2688

    1.7218 0.2544 1.8585 0.96600.5436 0.2688 0.9660 0.9466>> % Ahora el (1,3)>> J=jacrot(A,1,3); A=J’*A*JA =

    3.8868 0.1646 0.0000 1.03960.1646 -0.1284 0.1939 0.26880.0000 0.1939 0.3969 0.38471.0396 0.2688 0.3847 0.9466

    >> % El (1,2) se ha hecho distinto de cero; el (1,4)>> J=jacrot(A,1,4); A=J’*A*J

    A =4.2172 0.2383 0.1165 00.2383 -0.1284 0.1939 0.20630.1165 0.1939 0.3969 0.3666

    -0.0000 0.2063 0.3666 0.6161

    >> % Ahora el (2,3)>> J=jacrot(A,2,3); A=J’*A*JA =

    4.2172 0.1899 0.1852 00.1899 -0.1922 -0.0000 0.08140.1852 -0.0000 0.4607 0.4127

    -0.0000 0.0814 0.4127 0.6161>> % El (2,4)>> J=jacrot(A,2,4); A=J’*A*JA =

    4.2172 0.1890 0.1852 0.01880.1890 -0.2003 -0.0409 -0.00000.1852 -0.0409 0.4607 0.41070.0188 0.0000 0.4107 0.6243

    >> % El (3,4)>> J=jacrot(A,3,4); A=J’*A*J

    A = 4.2172 0.1890 0.1312 0.13200.1890 -0.2003 -0.0316 -0.02600.1312 -0.0316 0.1237 0.00000.1320 -0.0260 -0.0000 0.9612

    >> % Después de un barrido el valor de off(A) se ha reducido>> off(A)ans =

    0.2845>> % Desde>> of1

    of1 =3.1996

    >> % Otro barrido>> J=jacrot(A,1,2); A=J’*A*JA =

    4.3202 -0.0000 0.1580 0.0270-0.0000 -1.3369 -0.0502 0.0230

    0.1580 -0.0502 -0.5132 00.0270 0.0230 -0.0000 -0.7836

    40/97

  • 8/19/2019 Clase Valvec 2016

    40/97

    >> J=jacrot(A,1,3); A=J’*A*JA =

    4.3254 -0.0016 -0.0000 0.0270-0.0016 -1.3369 -0.0501 0.0230-0.0000 -0.0501 -0.5183 -0.0009

    0.0270 0.0230 -0.0009 -0.7836>> J=jacrot(A,1,4); A=J’*A*JA =

    4.3255 -0.0015 -0.0000 -0.0000-0.0015 -1.3369 -0.0501 0.0230-0.0000 -0.0501 -0.5183 -0.0009

    0.0000 0.0230 -0.0009 -0.7838>> J=jacrot(A,2,3); A=J’*A*JA =

    4.3255 -0.0015 0.0001 -0.0000-0.0015 -1.3400 0.0000 0.0229

    0.0001 -0.0000 -0.5153 -0.0023

    0.0000 0.0229 -0.0023 -0.7838>> J=jacrot(A,2,4); A=J’*A*JA =

    4.3255 -0.0015 0.0001 -0.0001-0.0015 -1.3409 0.0001 0

    0.0001 0.0001 -0.5153 -0.0023-0.0001 -0.0000 -0.0023 -0.7828

    >> J=jacrot(A,3,4); A=J’*A*JA =

    4.3255 -0.0015 0.0001 -0.0001-0.0015 -1.3409 0.0001 0.0000

    0.0001 0.0001 -0.5152 0-0.0001 0.0000 -0.0000 -0.7829

    >> eig(A) % Casi ha convergido en dos barridosans =

    4.3255-1.3409-0.5152-0.7829

    41/97

  • 8/19/2019 Clase Valvec 2016

    41/97

     Programa completo de  Matlab para realizar el proceso.

    function [V D it]=Jacobi_val_12_2(A)

    % Cálculo por Jacobi de valores y vectores propios de una MATRIZ SIMÉTRICA Atol=sqrt(eps)*norm(A,’fro’); D=A; n=length(A); V=eye(n);

    [m1 p]=max(triu(abs(D),1)); % En (p,q) elemento mayor valor no en diagonal[~, q]=max(m1); % Posición fila máximo valor no cero en L(A)p=p(q); it=0; % Posición columna máximo anteriorwhile off(D)>tol % Procesos iterativo; necesita rutina off

    J=Jac_Rot(D,p,q); % Se hacen cero Dpq y Dqp (p debe ser < q)D([p q],:)=J’*D([p q],:);D(:,[p q])=D(:,[p q])*J;V(:,[p q])=V(:,[p q])*J;[m1 p]=max(triu(abs(D),1));[~, q]=max(m1);p=p(q);it=it+1;

    end[D I]=sort(diag(D)); V=V(:,I);

    end

    function a=off(A)% Calcula off de la matriz cuadrada A: raiz cuadrada de la suma

    % de los cuadrados de los coeficientes de A no en la% diagonal principal; también sqrt(sum(sum(triu(a.^2,1)))).n=length(A); a=0;for k=1:n-1

    a=a+sum(A(k,k+1:n).^2);enda=sqrt(a);

    end

  • 8/19/2019 Clase Valvec 2016

    42/97

    43/97Método de la iteración de la potencia

  • 8/19/2019 Clase Valvec 2016

    43/97

     Su objetivo es calcular el valor propio dominante y su vector propio asociado.

     Se basa en que al aplicarle a cualquier vector la transformación que representauna matriz  A, ese vector tiende a orientarse hacia la dirección del vector propio

    dominante de  A.   Recordad.

     Partiendo de un  x0  de módulo unidad, opera mediante una iteración de puntofijo de fórmula de recurrencia

    yk1 D Axk1;   donde   xk D  y k1

    jjyk

    1

    jj1:

    La magnitud jjyk1jj1 converge al valor propio dominante,  1, y el vector  xi   lohace al vector propio dominante,  v1.

      Su convergencia está ligada a

    j2=1

    j: a menor valor de ella mejor convergencia.

    44/97   Ejemplo   Partiendo de  xT 0 D Œ0; 1 calculemos el valor propio dominante de

    http://upload.wikimedia.org/wikipedia/commons/0/06/Eigenvectors.gifhttp://upload.wikimedia.org/wikipedia/commons/0/06/Eigenvectors.gif

  • 8/19/2019 Clase Valvec 2016

    44/97

    1;5 0;5

    0;5 1;5

    :

    Utilicemos una pequeña sesión de  Matlab como esta

    >> x=[0;1];>> A=[1.5 0.5;0.5 1.5];>> for i=1:10v=A*x

     m=max(abs(v))x=v/mend

     Los resultados (vector propio y valor propio) son estos.k   xT 

    k  jjxkjj1

    0 0,0 1,0

    1 0,333 1,0 1,5000

    2 0,600 1,0 1,6667

    3 0,778 1,0 1,8000

    4 0,882 1,0 1,88895 0,939 1,0 1,9412

    6 0,969 1,0 1,9697

    7 0,984 1,0 1,9846

    8 0,992 1,0 1,9922

    9 0,996 1,0 1,9961

    10 0,998 1,0 1,9981

  • 8/19/2019 Clase Valvec 2016

    45/97

    46/97

  • 8/19/2019 Clase Valvec 2016

    46/97

     El método puede fallar por diversas razones:

    1. Porque haya más de un valor propio con el mismo módulo, en cuyo caso lasiteraciones puede que converjan a una combinación lineal de loscorrespondientes vectores propios.

     Este caso es bastante habitual pues esos dos valores propios pueden serun par complejo conjugado.

    2. El vector de partida puede que tenga coeficiente cero en el valor propiodominante.

     El error de redondeo en la práctica puede que introduzca un pequeñovalor, por lo que este peligro rara vez ocurre.

    3. Para una matriz real y un punto de partida también real, puede que nuncase converja a un vector complejo.

    47/97

     Un programa de  Matlab para el método de la potencia.

  • 8/19/2019 Clase Valvec 2016

    47/97

    function [lambda,V,cnt]= potencia(A,x,tol,max1)

    % Método de la potencia para la obtención de un valor

    % y un vector propios de A

    if nargin

  • 8/19/2019 Clase Valvec 2016

    48/97

    49/97

  • 8/19/2019 Clase Valvec 2016

    49/97

    Método de la iteración inversa

      Si en vez del valor propio de mayor magnitud, se necesita el más pequeño, sepuede hacer uso de la propiedad de que  los valores propios de  A1 son losrecíprocos de  A.

     El esquema iterativo sería el que sigue.

    Dado un punto de partida  x0

    for k D 1, 2,  : : :Resolver Ayk D xk1

    xk D  yk

    jjykjj1end

    Para resolver el sistema se factorizaría  A  una sola vez.

    50/97

    Ejemplo (continuación)

  • 8/19/2019 Clase Valvec 2016

    50/97

     Aplicando el método de la iteración inversa a la matriz1;5 0;5

    0;5 1;5

    ;

    se obtienen los resultados de la tabla.

    k   xT k   jjy kjj10 0,000 1,0

    1 -0,333 1,0 0,750

    2 -0,600 1,0 0,833

    3 -0,778 1,0 0,900

    4 -0,882 1,0 0,944

    5 -0,939 1,0 0,971

    6 -0,969 1,0 0,985

     Converge al valor propio 1 y vector propio  Œ

    1;1T .

    51/97   En Matlab la iteración sería así.

  • 8/19/2019 Clase Valvec 2016

    51/97

    function [lambda,V,cnt]= ItInversa_2(A,x,tol,max1)

    % Método de la potencia inversa para la obtención

    % de un valor y vector propio de A

    if nargin> [lambda,V,cnt]=ItInversa(A,[0;1])

    lambda =1.0000

    V =

    -0.7071

    0.7071

    cnt =

    55

  • 8/19/2019 Clase Valvec 2016

    52/97

    53/97Iteración mediante cociente de Rayleigh

  • 8/19/2019 Clase Valvec 2016

    53/97

    John William Strutt, Lord Rayleigh, Reino Unido, 1842-1919.

    Definición   El cociente de Rayleigh de un vector  x 2 R es el escalar  r.x/ D  xT AxxT x   .

     Dada una matriz A 2 Rnn y uno de sus vectores propios,  x, la mejorestimación del correspondiente valor propio   se puede considerar un problema

    de mínimos cuadrados  n

    1 como este:  x

    Ax.

     De sus ecuaciones normales,  xT x D xT Ax, la solución que se obtiene es

    D

     xT Ax

    xT 

    x

    :

    54/97

    El i t d R l i h d tili d l i t l l

  • 8/19/2019 Clase Valvec 2016

    54/97

     El cociente de Rayleigh puede utilizarse como desplazamiento para acelerar laconvergencia de los métodos iterativos que hemos visto. El algoritmo de la

    iteración inversa quedaría así.

    Dado un punto de partida  x0

    for k D 1, 2,  : : :

     k DxT k1

    Axk1

    xT k1

    xk1

    Resolver  .A  kI/yk D xk1xk D

      yk

    jjykjj2end

     El cociente de Rayleigh también se puede aplicar a vectores complejoshaciéndolo   x

    H AxxH x   .

    55/97Ejemplo (continuación)

  • 8/19/2019 Clase Valvec 2016

    55/97

     El método de la iteración de potencia con cociente de Rayleigh aplicado alproblema que estudiamos da este resultado:

    k   xT k

      jjykjj1   xT k Axk=xT k xk0 0,000 1,0

    1 0,333 1,0 0,150 1,500

    2 0,600 1,0 1,667 1,800

    3 0,778 1,0 1,800 1,941

    4 0,882 1,0 1,889 1,9855 0,939 1,0 1,941 1,996

    6 0,969 1,0 1,970 1,999

     Utilizando un punto de partida aleatorio con el mismo problema ocurriría lo que

    sigue.k   xT 

    k   k

    0 0,807 0,397 1,896

    1 0,924 1,000 1,998

    2 1,000 1,000 2,000

    56/97

  • 8/19/2019 Clase Valvec 2016

    56/97

      En Matlab:

    function [lambda,V,cnt]= ItInvRayleigh_2(A,x,max1)

    % Método de la iteración inversa con cociente de Rayleigh

    if nargin1 x=x/norm(x); end

    tol=n*norm(A,1)*eps;

    sigma=x’*A*x;

    while err>toly=(A-sigma*eye(n))x;

    x=y/norm(y);

    sigma=x’*A*x;

    err=norm(A*x-sigma*x,1);

    cnt=cnt+1;

    end

    lambda=sigma;

    V=x;end

    >> A=[1.5 0.5;0.5 1.5];

    >> [lambda,V,cnt]=ItInvRayleigh_2(A)

    lambda =

    2.0000V =

    0.7071

    0.7071

    cnt =

    1

    57/97

    Deflación

  • 8/19/2019 Clase Valvec 2016

    57/97

    Deflación

      Idea: Calculados un valor y un vector propios, obtener otros por  deflación: Comocuando una vez conocida una de las raíces,  x1, de un polinomio de grado  n éstese divide por  x x1  obteniéndose otro de grado  n 1.

      Si  x  es el vector propio asociado al valor propio dominante de  A,  

    1, y  H   es

    una matriz de Householder, tal que  H x D ˛e1, la transformación de semejanzaque define consigue transformar  A  así 

    A1 D H AH 1 D 1  b

    0 A2 ;donde  A2  es una matriz de orden  n 1 cuyos valores propios son  2; : : : ; n,los restantes de  A.

    58/97  Luego, trabajando con  A2  y calculado  2, si  y 2  es un vector propio asociado, el

    vector ˛

    bT y

  • 8/19/2019 Clase Valvec 2016

    58/97

    x2 D H 1

    ˛

    y 2

    ;   donde   ˛ D   b y 2

    2 1;

    es el vector propio correspondiente a  2  en la matriz original  A, supuesto1 ¤ 2.Este método funciona bien para calcular algunos valores y vectores propios.

      En Matlab:

    function [l2 v2 B] = defl_1(A, v1)

    % B resulta de A por deflación de vec. propio v1.% Calcula el valor propio l2 y vec. propio v2.

    n = length(A);v1 = Housv(v1);C = Houspre(v1,A);B = zeros(n,n);for i=1:n

    B(:,i)=Housmvp(v1,C(i,:));endl1 = B(1,1);b = B(1,2:n);

    B = B(2:n,2:n);[l2 y] = ItInvRayleigh_2(B);if l1~=l2

    a = b*y/(l2-l1);v2 = Housmvp(v1,[a;y]);

    elsev2 = v1;

    endend

    +

    function u = Housv(x)% Transformación de Householder del vector x.

     m = max(abs(x));u = x/m;if u(1) == 0, su = 1; else su = sign(u(1)); endu(1) = u(1)+su*norm(u);u = u /n orm (u );u = u(:);

    end

    function P = Houspre(u, A)% Producto P = H*A, donde H is una transformación de Householder% definida por el vector u.

    n = length(A);v = u/norm(u); v = v(:);P = zeros(n,n);

    for j=1:naj = A(:,j);P(:,j)=aj-2*(v’*aj)*v;

    endend

    function p = Housmvp(u, x)% Producto p = H*x, donde H es la transformación de Householder% definida por u.

    u = u(:); x = x(:);v = u/norm(u);p = x - 2*(v’*x)*v;

    end

    59/97

  • 8/19/2019 Clase Valvec 2016

    59/97

      Utilicémoslo:>> A=ones(5)+diag(ones(5,1)) % Generamos una matriz dada

    A =2 1 1 1 11 2 1 1 11 1 2 1 11 1 1 2 11 1 1 1 2

    >> [lambda,V]= ItInvRayleigh_2(A) % Cal. valor y vector propio dominanteslambda =

    6V =

    0.447213595499900.447213595500020.447213595499820.447213595500010.44721359550003

    >> [l2,v2]=defl_1(A,V) % Defl para obtener otro par val. Al2 =

    1v2 =

    -0.894427190999920.22360679774998

    0.223606797749980.223606797749980.22360679774998

    >> [norm(A*V-lambda*V);norm(A*v2-l2*v2)] % Comprobar resultadosans =

    1.0e-015 *0.44410.6497

    >> format short>> [l,v]=eig(A) % Comprobar con rutina Matlab eigl =

    0 .8 333 - 0.1 66 7 - 0. 16 67 0 .22 36 0 .4 47 2- 0. 16 67 0 .8 33 3 - 0. 16 67 0 .22 36 0 .4 47 2- 0. 16 67 - 0.1 66 7 0 .8 33 3 0 .22 36 0 .4 47 2- 0. 50 00 - 0.5 00 0 - 0. 50 00 0 .22 36 0 .4 47 2

    0 0 0 -0.8944 0.4472v =

    1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 6

    60/97

    Iteración simultánea o de subespacio

  • 8/19/2019 Clase Valvec 2016

    60/97

    p

     Para obtener varios valores/vectores propios, apliquemos la iteración de lapotencia a los  p  vectores linealmente independientes que forman  X 0; es decir:

    X 0 D matriz  n p  de rango  pfor k D 1, 2,  : : :

    X k

     DAX k1

    end

      La Im

    Akx1   A

    kx2   : : :   Akxp

     converge al subespacio invariante de los

    vectores propios de  A  correspondientes a sus  p  mayores valores propios:

    j1j > jpj > jpC1j jpC2j:

     La velocidad de convergencia es O.pC1=p/.

    61/97

  • 8/19/2019 Clase Valvec 2016

    61/97

     Para optimizar prestaciones y conseguir una buena ortogonalidad se usa la

    factorización QR  de  X k, ortonormalizando así las columnas de  X k. Seobtendría una  Q como base de Im.X k/.

    X 0 D matriz  n p  de rango  pfor k D 1, 2,  : : :

    QkRk

     DX k1

    X k D AQkend

     Las iteraciones convergen a una matriz triangular, si sólo hay valores propiosreales, o a una triangular en bloques  22 en la diagonal principal cuando hayavalores propios complejos conjugados.

    62/97

  • 8/19/2019 Clase Valvec 2016

    62/97

    Sesión en  Matlab  para matriz simétrica

    >> A=randn(5); A=A*A’A =

    2.8486 -2.5688 0.1741 3.5081 -0.1959-2.5688 2.8789 -0.3177 -4.0552 -2.2033

    0.1741 -0.3177 2.3957 1.4227 -2.34863.5081 -4.0552 1.4227 6.2012 2.7463

    -0.1959 -2.2033 -2.3486 2.7463 19.4886

    >> A0=A;>> % Hagamos ahora 10 iteraciones de la iteración ortogonal>> for i=1:10, [Q R]=qr(A); A=R*Q; end>> AA =

    20.8010 -0.0997 0.0000 0.0000 0.0000-0.0997 10.6605 0.0000 0.0000 0.0000

    0.0000 0.0000 2.2265 0.0000 0.00000.0000 -0.0000 0.0000 0.1085 0.0000

    -0.0000 -0.0000 0.0000 0.0000 0.0165

    >> % Otras 5 iteraciones más

    >> for i=1:5, [Q R]=qr(A); A=R*Q; end>> AA =

    20.8020 -0.0035 0.0000 0.0000 0.0000-0.0035 10.6595 0.0000 0.0000 0.0000

    0.0000 0.0000 2.2265 0.0000 0.00000.0000 -0.0000 0.0000 0.1085 0.0000

    -0.0000 -0.0000 0.0000 0.0000 0.0165>> % Mejora; hagamos 10 más>> for i=1:10, [Q R]=qr(A); A=R*Q; end>> A

    A =20.8020 -0.0000 0.0000 0.0000 0.0000-0.0000 10.6595 -0.0000 0.0000 0.0000

    0.0000 0.0000 2.2265 0.0000 0.00000.0000 -0.0000 0.0000 0.1085 -0.0000

    -0.0000 -0.0000 0.0000 0.0000 0.0165>> % Comparemos todos con los de la matriz original>> eig(A0)ans =

    0.0165

    0.10852.226510.659520.8020

    63/97   IterSimul obtiene los  r  valores propios máximos de  A  simétrica.

  • 8/19/2019 Clase Valvec 2016

    63/97

    function [i r1]=IterSimul(A,r)% Máximos valores propios de A (simétrica); itera. simultánea% ortogonal

    n=length(A); if nargin> A=rand(20); A=A*A’;>> [i r]=IterSimul(A,6)Valores calculados con eig()

    1.0e+002 *1.006294230413485

    0.0528048946290750.0395165837813990.0321918014629250.0311573239654770.0268066648060720.0225976063483680.0198277556760600.0136855894058130.0122172635607200.0097913358279200.0050481878099200.0042821453421960.0034600643129450.0024365877675340.0017132724895060.0011681376916970.0006056142545680.0002387296193830.000012007660353

    i =44

    r =1.0e+002 *1.0062942304134840.0528048946290540.0395165836950560.0320536449889880.0312916161595570.026806665421155

    64/97Iteración QR  Propuesta por John G.F. Francis y Vera Kublanovskaya.

    . .

    .

    .

    .

    .

    . .

    .

    .   . 

  • 8/19/2019 Clase Valvec 2016

    64/97

    .

    .

    .

    .

    .

    . . .

    .

     

    .

    .

    John G.F. Francis, Reino Unido 1934 y VeraKublanovskaya, Rusia 1920-2012

     Generalizando la iteración simultánea (ortogonal) se pueden calcular  todos los

    valores propios de  A, así como los correspondientes vectores propios.

    A0 D AI U 0 D Ifor k D 1, 2,  : : :

    Qk1Rk1 D Ak1, obtener factorización  QRAk

     DRk1Qk1;   U k

     DU k1Qk1

    end

    Las Ak  convergerán a una matriz triangular, si todos los valores propios son

    reales, o con bloques  22 en la diagonal, si hay valores propios complejos.U k  convergerá a los vectores propios.

    65/97

  • 8/19/2019 Clase Valvec 2016

    65/97

     Las matrices  Ak  son ortogonalmente semejantes a las anteriores del proceso y a

    A: A1 D R0Q0 D QT 0 A0Q0   pues   R0 D QT 0 A0A2 D R1Q1 D QT 1 A1Q1 D QT 1

    QT 0 A0Q0

    Q1 D.Q0Q1/

    T  A0 .Q0Q1/

    Es decir, todas las  Ak  tendrán los valores propios de  A D A0.

     Las columnas de  Qk  forman una base ortonormal del subespacio  Im.Ak/.

      Si  A  es simétrica, las iteraciones conservan la simetría y las  Ak  convergerán auna matriz triangular y simétrica:  diagonal.

    66/97  Trabajemos un poco “a mano” con el algoritmo.

    D = diag([4 3 2 1]);rand(’seed’,0); format short e

  • 8/19/2019 Clase Valvec 2016

    66/97

    S=rand(4); S = (S - .5)*2; % Se perturba un pocoA = S*D/S % A_0 = A = S*D*S^{-1}for i=1:6

    [Q R] = qr(A); A = R*Q % Iteración QRend

    A =4.1475e+00 -7.7246e-01 -7.3819e-01 -4.1172e+00

    -4.9214e-03 3.2731e+00 -1.8990e-01 1.9440e+006.2706e-01 -1.9699e-01 2.2190e+00 -6.0845e-011.5691e-01 -4.1310e-01 -6.3508e-01 3.6039e-01

    A =3.9304e+00 -2.7682e-01 1.5214e-01 4.4847e+004.0097e-02 3.0595e+00 -6.9040e-01 -2.1283e+003.5144e-01 -3.8535e-02 2.3156e+00 -4.8346e-01

    -2.7163e-02 8.4395e-02 1.9457e-01 6.9447e-01A =3.9287e+00 -1.6932e-01 4.1119e-01 -4.4113e+00

    -1.6308e-02 3.0078e+00 -8.8862e-01 2.1571e+002.1041e-01 -3.4259e-02 2.2044e+00 1.0227e+005.9415e-03 -2.3299e-02 -8.1008e-02 8.5905e-01

    A =3.9514e+00 -1.3627e-01 4.9740e-01 4.3484e+00

    -5.7605e-02 2.9981e+00 -9.6432e-01 -2.1072e+001.1812e-01 -2.7149e-02 2.1181e+00 -1.3251e+00

    -1.4093e-03 7.1443e-03 3.8096e-02 9.3241e-01

    A =3.9696e+00 -1.1610e-01 5.3907e-01 -4.3288e+00

    -7.1970e-02 2.9977e+00 -9.8790e-01 2.0192e+006.3115e-02 -1.8643e-02 2.0658e+00 1.4919e+003.4472e-04 -2.2854e-03 -1.8738e-02 9.6688e-01

    A =3.9817e+00 -9.8200e-02 5.6721e-01 4.3356e+00

    -6.9838e-02 2.9984e+00 -9.9032e-01 -1.9242e+003.2744e-02 -1.2095e-02 2.0362e+00 -1.5816e+00

    -8.5395e-05 7.4567e-04 9.3684e-03 9.8360e-01

    ¿Alguna  conclusión   en térmi-nos de  convergencia; trabajo?

    67/97

    Iteración QR con desplazamiento

  • 8/19/2019 Clase Valvec 2016

    67/97

    Iteración QR con desplazamiento

     La velocidad de convergencia se puede aumentar con desplazamientos:

    Qk1Rk1 D Ak1  k1IAk D Rk1Qk1 C  k1I :

    El desplazamiento   k1  debe ser una buena aproximación de un valor propio.

      Desplazamientos más usados:

     Rayleigh. El valor de  ann  de  Ak

    1: buena aproximación a priori de  n.

     Wilkinson. Del bloque diagonal inferior  22  de  Ak1  (si no es diagonal), elvalor propio de esa submatriz que esté más cerca de  ann.

    68/97

  • 8/19/2019 Clase Valvec 2016

    68/97

      Este  script  de Matlab es el método de la iteración QR  con desplazamiento

    de Rayleigh para matrices con valores propios reales: simétricas, hermíticas, etc.function [lambda itt]= IteracionQR(A,tol)

    % Método de la iteración QR con desplazamiento

    % para matrices con valores propios reales

    if nargin tol

    sigma=A(k,k);

    [Q,R]=qr(A(1:k,1:k)-sigma*eye(k,k));

    A(1:k,1:k)=R*Q+sigma*eye(k,k);

    it=it+1;

    end

    end

    lambda=sort(diag(A)); if nargout==2, itt=it; end

    end

    69/97

      Ejemplos

  • 8/19/2019 Clase Valvec 2016

    69/97

    j p

    >> ab=ones(5)+eye(5)

    ab =

    2 1 1 1 1

    1 2 1 1 1

    1 1 2 1 1

    1 1 1 2 1

    1 1 1 1 2

    >> [lambda it]=IteracionQR(ab)

    lambda =

    1.0000

    1.0000

    1.0000

    1.0000

    6.0000

    it =4

    >> a=rand(20);

    >> [lambda it]=IteracionQR(a’*a)

    lambda =

    0.0010

    0.0175

    0.1107

    0.1496

    0.2232

    0.4124

    0.7861

    0.81320.9430

    1.2765

    1.4153

    1.7930

    1.9123

    2.2906

    2.6955

    2.97323.7114

    4.9037

    5.3983

    100.1106

    it =

    48

    >> eig(a’*a)ans =

    0.0010

    0.0175

    0.1107

    0.1496

    0.2232

    0.4124

    0.7861

    0.8132

    0.9430

    1.2765

    1.4153

    1.7930

    1.9123

    2.2906

    2.6955

    2.97323.7114

    4.9037

    5.3983

    100.1106

    70/97Sesión en Matlab  para matriz sin estructura especial

  • 8/19/2019 Clase Valvec 2016

    70/97

    >> A=randn(5)

    A = 0.1303 1.0169 -0.2750 0.7688 0.2815-0.3857 0.5583 0.2378 -0.2941 1.2163-0.5498 -0.1324 0.3125 0.8049 -0.2401

    0.2869 -1.1517 -0.0024 -1.7196 -0.4955-0.3503 0.4211 0.9847 -0.6632 -1.3721

    >> A=hess(A) % VEREMOS por quéA =

    0.1303 -0.1471 1.0342 -0.5765 -0.59710.8100 0.6165 -0.1303 0.5381 0.9983

    0 -1.0393 0.3560 0.3942 0.6386

    0 0 1.3485 -1.9025 -0.06700 0 0 0.4372 -1.2908

    >> A0=A;

    >> % Hagamos ahora 10 iteraciones de la iteración QR>> for i=1:10, [Q R]=qr(A); A=R*Q; end>> AA =

    -1.9640 -1.2063 -0.1339 0.3196 -0.31040.1231 0.3343 -0.7129 1.0207 -0.4763

    0 -1.5358 -0.9798 -0.1630 -0.8736

    0 0 1.1031 0.6130 0.25230 0 0 0.0000 -0.0941

    >> % Otras 10 iteraciones más>> for i=1:10, [Q R]=qr(A); A=R*Q; end>> AA =

    - 1. 65 85 - 0. 74 15 0 .3 436 - 0.8 53 8 0 .1 06 30.1202 -2.0481 -0.4571 -0.6504 -1.0568

    0 -0 .0 32 2 0 .6 956 - 0. 73 33 - 0. 14 720 0 1.0035 1.0146 -0.01130 0 0 0.0000 -0.0941

    >> % Mejora; hagamos 50 más>> for i=1:50, [Q R]=qr(A); A=R*Q; end>> AA =

    -1.7423 -0.7746 -0.7995 -0.5685 -0.02970.0805 -1.9665 -0.6724 0.2789 -1.06320 -0 .0 00 0 1 .0 634 - 0. 88 44 - 0. 05 610 0 0.8436 0.6489 0.12470 0 0 0.0000 -0.0941

    >> % Mejora, aunque no suficientemente; otras 50>> for i=1:50, [Q R]=qr(A); A=R*Q; end>> AA =

    -1.8095 -0.7895 -0.9613 0.3250 -0.12980.0657 -1.8993 -0.1186 0.6697 -1.0556

    0 -0.0000 0.7945 -1.0629 0.06120 0 0.6651 0.9179 0.12230 0 0 0.0000 -0.0941

    >> % Intentemos unas 50 últimas>> for i=1:50, [Q R]=qr(A); A=R*Q; end>> AA =

    -1.8704 -0.7919 -0.1944 1.0214 -0.21760 .0 63 2 - 1.8 38 4 0 .5 21 5 0 .37 33 -1 .0 41 1

    0 -0.0000 0.7034 -0.7224 0.13610 0 1.0056 1.0089 0.01340 0 0 0.0000 -0.0941

    >> % Hay dos bloques 2x2 en la diagonal>> % El último parece claro que es -0.0941

    >> % Calculemos los valores propios de esos bloques>> eig(A(1:2,1:2))

    ans =-1.8544 + 0.2232i-1.8544 - 0.2232i

    >> eig(A(3:4,3:4))ans =

    0.8562 + 0.8385i0.8562 - 0.8385i

    >> % Comparemos todos con los de la matriz original>> eig(A0)ans =

    0.8562 + 0.8385i0.8562 - 0.8385i

    -0.0941-1.8544 + 0.2232i-1.8544 - 0.2232i

    71/97Iteración QR con doble desplazamiento

    Si hay valores propios complejos se incorpora el doble desplazamiento para

  • 8/19/2019 Clase Valvec 2016

    71/97

     Si hay valores propios complejos, se incorpora el doble desplazamiento paratratar los bloques  22 irreducibles de la diagonal principal.

     Se usan los dos valores propios,     y N , de la submatriz  22 del bloque inferior,Qk1Rk1 D Ak1  k1I

    Ak

     DRk

    1Qk

    1

    C k

    1I

    QkRk D Ak  N k1IAkC1 D RkQk C N k1I

    haciendo así un paso doble con desplazamiento en dos etapas.

     Este doble paso se puede simplificar si   M  D .Ak1  k1I/ .Ak1 N k1I /D .Qk1Qk/ .RkRk1/D A2k1 sAk1 C t I;

    donde

    s  es la traza del bloque diagonal inferior  2 2 de  Ak 1  y  t  su determinante.

    72/97

     Si se factorizase la matriz así,  M  D QR, mediante una sencilla manipulaciónalgebraica, resulta que

  • 8/19/2019 Clase Valvec 2016

    72/97

    g q

    AkC1 D QT M Q;

    por lo que teóricamente, en lo que se denomina doble desplazamiento implícito,se evitaría un paso.

      Calcular  M   requiere O.n3/ operaciones y su factorización ulterior QR es

    bastante inestable.

     Con los años, los diferentes enfoques de atacar esta variante han convergido enuna estrategia de doble desplazamiento implícito tipo Francis, formulada en

    1961 por John G.F. Francis.

     Dado ese coste en cálculos, O.n3/, y su complejidad, perece obligado hacer“algo”  para preparar el problema antes de abordarlo con este método.

    73/97Algoritmo QR: Transformaciones preliminares

    Definición Una matri de Hessenberg es na matri triang lar e cepto por na s b

  • 8/19/2019 Clase Valvec 2016

    73/97

    Definición   Una matriz de Hessenberg es una matriz triangular excepto por una sub-diagonal adyacente a la diagonal principal.

        

        

        

      

    0  Cualquier matriz se puede reducir a la forma de  Hessenberg mediante

    transformaciones de Householder o Givens.

     Si la matriz original es simétrica, al reducirla a la forma de Hessenberg seobtendrá una tridiagonal.

    74/97

     Si se parte de una matriz con la forma de Hessenberg, el algoritmo QR másactual necesita un número de operaciones O.n2/, implementándose en dos fases:

  • 8/19/2019 Clase Valvec 2016

    74/97

    Matriz 1ª fase 2ª fase

    Simétrica a tridiagonal a diagonal

    General a Hessenberg a triangular

      El trabajo necesario total de todo el proceso QR, preliminar más iterativo, es elque sigue.

    Matriz simétrica Matriz general

    43

    n3 para valores propios sólo   10n3 para valores propios sólo

    9n3 valores y vectores propios   25n3 valores y vectores propios

    75/97

     Un conjunto de rutinas sencillas para reducir cualquier matriz, mediante

  • 8/19/2019 Clase Valvec 2016

    75/97

    transformaciones de Householder, a la forma de Hessenberg seria este.

    function [A V] = Hessred(A)% Reducción de A a Hessenberg con Householder

    % En V vectores de transf. sucesivas de Householder

    [m,n] =size(A);

    if A == triu(A,-1), V = eye(m); return, end

    V = [];

    for k=1:m-2

    x = A(k+1:m,k); v = Housv(x);

    A(k+1:m,k:m)=A(k+1:m,k:m)-2*v*(v’*A(k+1:m,k:m));

    A(1:m,k+1:m)=A(1:m,k+1:m)-2*(A(1:m,k+1:m)*v)*v’;v = [zeros(k,1);v]; V = [V v];

    end

    end

    function u = Housv(x)

    % Transf. Householder del x; vector en u.

     m = max(abs(x));u = x/m;

    if u(1) == 0, su = 1; else su = sign(u(1)); endu(1) = u(1)+su*norm(u);

    u = u/norm(u); u = u(:);

    end

    76/97

  • 8/19/2019 Clase Valvec 2016

    76/97

     Consideraciones finales en torno al algoritmo o método QR: Para matrices muy grandes, el algoritmo es costosísimo.

     Si sólo se necesitan unos pocos valores y vectores propios, especialmentepara  n grandes, el método no saca partido de ello.

     Requiere mucha memoria de ordenador, aunque la matriz sea grande ydispersa.

     Las transformaciones por semejanza introducen muchos elementos no nulospor lo que se destruye una posible estructura de dispersidad.

    77/97

     Este es un programa del  algoritmo QR para matrices simétricas con reduccióninicial a forma Hessenberg y desplazamiento sencillo de Wilkinson. Se prueba

  • 8/19/2019 Clase Valvec 2016

    77/97

    g y p p

    con una matriz  20 20, simétrica, generada aleatoriamente.

    function [D itt]=It_QR_3(A)% Iteración QR con despla. de Wilkinson para una matriz simétrica

    n=length(A); tol=off(A)*1.e-8; k=n; D=zeros(n,1); it=0;A=Hessred(A); % Reducir a Hessenbergwhile k>1

    while abs(A(k,k-1))>tol%Calcular desplazamiento Wilkinsons=eig2x2(A(k-1:k,k-1:k));[i j]=min(abs(A(k,k)*[1 1]’-s)); % Mejor desp. Wilkinson

    [Q R]=qr(A(1:k,1:k)-s(j)*eye(k));A(1:k,1:k)=R*Q+s(j)*eye(k); it=it+1;

    endk=k-1;

    endD=sort(diag(A),’ascend’); if nargout==2, itt=it; end

    end

    function [L]=eig2x2(a)tra=a(2,2)+a(1,1);sqtd=sqrt(tra*tra-4*(a(2,2)*a(1,1)-a(1,2)*a(2,1)));L(1)=(tra+sqtd)/2;L(2)=(tra-sqtd)/2;L=L(:);

    end

    >> A=rand(20);>> A=(A+A’)/2;>> [D it]=It_QR_3(A)D =

    10.53611.58831.52001.12851.05680.9498

    0.64480.51560.24130.1139

    -0.0201-0.1461-0.4263-0.6220-0.6692-0.8182-0.8895-1.0250-1.2618-1.2714

    it =36

    >> eig(A)ans =

    -1.2714-1.2618-1.0250-0.8895-0.8182-0.6692

    -0.6220-0.4263-0.1461-0.0201

    0.11390.24130.51560.64480.94981.05681.12851.52001.5883

    10.5361

    78/97function [T it itd t] = qrstep_Francis_Bindel(H)% Computes eigenvalues of A using a implicit double-shift QR method% as Cornell’s Bindel notes (CS 620).%% Output: TT, vector containing eigenvalues; it, simple iterations;% itd, double iterations.

    global itr itcn = length(H); T=zeros(n,1);tol = norm(H,’fro’)*1e-8;

  • 8/19/2019 Clase Valvec 2016

    78/97

    ( , ) ;

    H=hess(H); % Reduce A to Hessenberg formitr=0; itc=0; t=cputime;while n > 2

    if abs(H(n,n-1)) < tol*(abs(H(n-1,n-1))+abs(H(n,n)))

    H(n,n-1) = 0; T(n)=H(n,n); % Deflate 1x1 blockn = n-1;

    elseif abs(H(n-1,n-2)) < tol*(abs(H(n-2,n-2))+abs(H(n-1,n-1)))H(n-1,n-2) = 0; T(n-1:n)=eig2x2(H(n-1:n,n-1:n)); % Deflate 2x2 blockn = n-2;

    elseH(1:n,1:n) = qrstep(H(1:n,1:n)); % Main body

    endendT(1:2)=eig2x2(H(1:2,1:2)); T=sort(T,’descend’); t=cputime-t; it=itr; itd=itc;

    end

    function [NH] = qrstep(H)% Compute double-shift poly and initial column of H^2 + b*H + c*I

    [b c] = qrpoly(H);C1 = H(1:3,1:2)*H(1:2,1);C1(1:2) = C1(1:2) + b*H(1:2,1);C1(1) = C1(1) + c;% Apply a similarity associated with the first step of QR on Cv = Housv(C1);H(1:3,:) = H(1:3,:)-2*v*(v’*H(1:3,:));H(:,1:3) = H(:,1:3)-(H(:,1:3)*(2*v))*v’;% Do "bulge chasing" to return to Hessenberg formn = length(H);for j=1:n-2

    k = min(j+3,n);v = Housv(H(j+1:k,j)); % Find W=I-2vv’ to put zeros below H(j+1,j), H=WHW’H(j+1:k,:) = H(j+1:k,:)-2*v*(v’*H(j+1:k,:));H(:,j+1:k) = H(:,j+1:k)-(H(:,j+1:k)*(2*v))*v’;

    H(k,j) = 0;endNH=triu(H,-1);

    end

    function [b c] = qrpoly(H)% Compute b and c of z^2+b*z+c = (z-sigma)(z-conj(sigma))% where sigma is the Wilkinson double shift: eigenvalue of% the 2x2 trailing submatrix closest to H(n,n)

    global itr itcHH = H(end-1:end,end-1:end);traHH = HH(1,1)+HH(2,2);detHH = HH(1,1)*HH(2,2)-HH(1,2)*HH(2,1);

    if traHĤ 2 > 4*detHH % Real eigenvalues% Use as double shift the eigenvalue closer to H(n,n)lambdaHH(1) = (traHH + sqrt(traHH^2-4*detHH))/2;lambdaHH(2) = (traHH - sqrt(traHH^2-4*detHH))/2;if abs(lambdaHH(1)-H(end,end))

  • 8/19/2019 Clase Valvec 2016

    79/97

    80/97

  • 8/19/2019 Clase Valvec 2016

    80/97

    Subespacios de Krylov   Alekxey Krylov, Rusia 1863-1945.

     Recordamos que, para  A 2 Cnn y  0 ¤ b 2 Cn1, al subespacio

    Kj D Genfb; Ab : : : Aj

    1

    bgse le denomina subespacio de Krylov.

     Estos subespacios son la base de unos métodos iterativos para el cálculo de losvalores propios de  A. Su ventaja esencial es que en ellos sólo se llevan a cabomultiplicaciones de matrices por vectores, lo cual es particularmente interesante

    para matrices grandes y dispersas.

    81/97

      Si  A   tiene  n valores propios distintos,  1; : : : ; n, con vectores propiosi d l (b l d Rn) l i

  • 8/19/2019 Clase Valvec 2016

    81/97

    asociados x1; : : : ; xn  ortonormales (base ortonormal de  Rn), cualquier vector

    de  Rn se puede escribir como combinación lineal de esos vectores propios; en

    particular, uno  b D b1x1 C b2x2 C C bnxn.

      La matriz de Krylov,  K nj D

    b Ab   : : :   Aj 1b

    , se puede escribir entonces

    K n D Œc1x1   c2x2    cnxn

    266641 1   

    j

    11

    1 2   j 12:::

      :::  : : :

      :::

    1 n   j 1n

    37775 :

     La matriz  C n D K 1n   AK n  es tipo Hessenberg, es decir,  

        

        

    0

  • 8/19/2019 Clase Valvec 2016

    82/97

    83/97

     Estas expresiones dan lugar a la ya estudiada iteración de Arnoldi que produceuna matriz unitaria  Qn  y una Hessenberg  H n  columna a columna.

  • 8/19/2019 Clase Valvec 2016

    83/97

     Ortogonalización de   Apor Iteración de Arnoldi

    Dado  x0  cualquiera

    q1 D x0= kx0k2for k D 1 ; 2 ; : : :

    uk D Aq kfor j D 1  to k

    hj k D

    qH 

    j

      uk

    uk D uk  hj kqjend

    hkC1;k D kukk2if  hkC1;k D 0  stopqkC1 D uk= hkC1;k

    end

    Según progresa el algoritmo, en la iteración   k, si   Qk  DŒq1; : : : ; qk, la matriz   H k D   QH k  AQk   es Hessenberg ysus valores propios, denominados valores de Ritz

    Walther Ritz, Suiza, 1878-1909,

    son muy buenas aproximaciones de los valores propios de  A.Si y  es un vector propio de H k , Qky  es un aproximación deun vector propio de  A .

     Si se requieren con precisión los valores propios de  H k  se pueden calcular porotro método –por ejemplo la iteración QR–, siendo una tarea menor si  k  n.

    84/97  El coste en cálculos de la iteración de Arnoldi es elevado: cada nuevo  qk   sedebe ortogonalizar respecto a todos los vectores columna de  Qk, por lo que se

    reinicializa periódicamente desde un nuevo vector escogido adecuadamente.

  • 8/19/2019 Clase Valvec 2016

    84/97

      Si A  es simétrica o hermítica se utiliza la iteración de Lanczos que consigue unamatriz tridiagonal.

     Ortogonalización de   Apor Iteración de Lanczos

    q0 D 0; ˇ0 D 0  y  x0  cualquieraq1 D x0= kx0k2for k D 1 ; 2 ; : : :

    uk D Aq k˛k D qH k  ukuk D uk  ˇk1qk1 ˛kqkˇk D kukk2if  ˇk D 0  stopqkC1 D uk=ˇk

    end

    Cornelius Lanczos, Hungría,1893-1974.

    Si  ˇk D 0  los valores de Ritz son los valores propios exactos de  A.

    85/97

    function [U H flag] = arnoldi_W(A,ns,x)% Realiza ns iteraciones de Arnoldi con reortogonalizavión en A partiendo de x%% Si flag == 0, las columans de U are ortonormales, H(ns+1,ns) Hessenberg matrix y% A*U(:,1:ns) = U(:,1:ns+1)*H.

  • 8/19/2019 Clase Valvec 2016

    85/97

    %% Si flag == j > 0, se ha obtenido subespacio invariante en j iter. y% A*U(:,1:j) = U(:,1:j)*H(1:j,1:j).

    %flag = 0;H = zeros(ns+1,ns); n = size(A,1);U = zeros(n,ns+1); U(:,1) = x/norm(x); delta = zeros(ns+1,1);for jj = 1:ns

    U(:,jj+1) = A*U(:,jj); % sólo se usa A aquíH(1:jj,jj) = U(:,1:jj)’*U(:,jj+1);U(:,jj+1) = U(:,jj+1) - U(:,1:jj)*H(1:jj,jj); % ortogonalizadelta(1:jj) = U(:,1:jj)’*U(:,jj+1);U(:,jj+1) = U(:,jj+1) - U(:,1:jj)*delta(1:jj); % reortogonalizaH(1:jj,jj) = H(1:jj,jj) + delta(1:jj);H(jj+1,jj) = norm(U(:,jj+1));if H(jj+1,jj) == 0, flag = jj; return, endU(:,jj+1) = U(:,jj+1)/H(jj+1,jj);

    endend   %   arngo.m: script que demuestra las prestaciones de arnoldi_W

    load west0479, A = west0479; % Matriz dispersa 479x479n = size(A,1); ns = 30; % 30 iteraciones de Arnoldirandn(’state’,321) % mismo vector aleatorio cada vezx = randn(n,1); tic % vector de partida aleatorioa[U,H,flag] = arnoldi_W(A,ns,x);if flag == 0

    residual = norm(A*U(:,1:ns)-U*H)orthocheck = norm(eye(ns+1)-U’*U)ritz = eig(H(1:ns,1:ns),’nobalance’), toc, ticlam = eig(full(A)); % cálculo de todos los val. propios de Atoc, figure(1)plot(real(lam),imag(lam),’r+’,real(ritz),imag(ritz),’bo’)

    end

    86/97

     El resultado del ejemplo  arngo.m, con 30 iteraciones de Arnoldi, es este. Lascrucecitas rojas son los valores propios auténticos; los círculos  azules los valores

    de Ritz que los aproximan.

  • 8/19/2019 Clase Valvec 2016

    86/97

    de Ritz que los aproximan.

    −150 −100 −50 0 50 100 150−2000

    −1500

    −1000

    −500

    0

    500

    1000

    1500

    2000

    87/97

    Comparación de los métodosCálculo de todos los valores propios y vectores propios

  • 8/19/2019 Clase Valvec 2016

    87/97

    Matrices generales reales o complejas. Reducción preliminar a forma deHessenberg seguida de iteración QR.

    Matrices reales simétricas o complejas hermíticas. Reducciónpreliminar a matriz tridiagonal seguida de iteración QR.

    Cálculo de algunos valores y vectores propios

    Matrices simétricas de tamaño moderado. Reducción preliminar amatriz tridiagonal seguida de iteración inversa.

    Matrices de gran tamaño. Método con iteración de Arnoldi para matricesgenerales.

    Lanczos para matrices simétricas o complejas hermíticas.

    88/97

  • 8/19/2019 Clase Valvec 2016

    88/97

    Índice

      Introducción teórica

      Localización de valores propios   Obtención numérica

      Cálculo de valores singulares

    89/97

    Cál l d l l i l

  • 8/19/2019 Clase Valvec 2016

    89/97

    Cálculo de los valores singulares

     El cálculo de los valores singulares de una matriz  A, recordemos,

    raíces cuadradas no negativas de los valores propios de  AT A

    se puede llevar a cabo, en principio, utilizando alguno de los métodos expuestos,

    aplicándolo a la matriz simétrica  AT A.

     Existen no obstante algoritmos más especializados basados en iteraciones  QR

    de la matriz  A, o en el de Jacobi.

    90/97

    Algoritmo de Golub y Reinsch.

  • 8/19/2019 Clase Valvec 2016

    90/97

    Primera fase: Bidiagonalización   Gene Howard Golub,EE.UU. 1932-2007.

     Consiste en reducir con transformaciones de Householder la matriz  A 2 Cmn auna triangular superior bidiagonal. Es decir, hacer

    QB A˘ B D B D B10 ,donde

    B D

    2

    66666664

    d 1  f 2d 2   f 3   0

    : : :   : : :

    0   : : :  f nd n

    0

    3

    77777775

    9>>>>=>>>>;

    n

    m n

    QB D Qn Q1 2 Rmm y  ˘ B D ˘ 1 ˘ n2 2 Rnn.

    91/97  El esquema operativo que se seguiría con una matriz  A64 es este:

    00

    0

    000

    0 0   000

    00

    0 0

    Q1   ˘ 1   Q2   ˘ 2   Q3   Q4

    00

    0

    00

    0 00

    00

    0

    00

    0

    0 00

    00

    0

    00

    0

    0 00

  • 8/19/2019 Clase Valvec 2016

    91/97

    00

    00

    00

    00

    00

    00

    00

    00

    00 0

    00

    00

    00

    00

     Esta rutina de Matlab consigue el resultado.

    function [Q1 A P1]= bidiag(A)% Se bidiagonaliza A por Householder.

    [m,n] = size(A); Q1=eye(m); P1=eye(n);

    for k = 1:min(m,n)% Introduce ceros debajo de la diagonal en la columna k.u = A(:,k); u(1:k-1) = 0; sigma = norm(u);if sigma ~= 0

    if u(k) ~= 0, sigma = sign(u(k))*sigma; endu(k) = u(k) + sigma; rho = 1/(sigma’*u(k));v = rho*(u’*A); q1=rho*(u’*Q1);A = A - u*v; Q1 = Q1 - u*q1;A(k+1:m,k) = 0;

    end% Introduce zeros a la derecha de la supradiagonal en la fila k.

    u = A(k,:); u(1:k) = 0; sigma = norm(u);if sigma ~= 0

    if u(k+1) ~= 0, sigma = sign(u(k+1))*sigma; endu(k+1) = u(k+1) + sigma; rho = 1/(sigma’*u(k+1));v = rho*(A*u’); p1=rho*(P1*u’);A = A - v*u; P1 = P1 - p1*u;A(k,k+2:n) = 0;

    endend

    end

    92/97Algoritmo de Golub y Reinsch. Segunda fase

      Ya  A  bidiagonal, se diagonalizarla mediante un algoritmo iterativo haciendo

  • 8/19/2019 Clase Valvec 2016

    92/97

    BkC

    1

     DU T 

    k

    BkV k; k D

    1 ; 2 ; : : : ;

    con  U k  y  V k  ortogonales, y tal que   lKımk!1 Bk D ˙  D diag. 1; : : : ;  n/.

     La descomposición en valores singulares será   A D U  ˙ 0 V T , donde

    U  D QB   diag.U k; I mn/škD:::;2;1

    y   V  D ˘ B   V k’ kD1;2:::

    .

     En la figura se esquematiza4 cómo se hace.

     

    13 3212 21

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    ∗ ∗ ∗ ∗ ∗ + ∗ ∗ ∗ ∗ ∗ ∗ + ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ + ∗ ∗ ∗ ∗ ∗ ∗ + ∗ ∗ ∗ ∗

    ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗

    → → → →BG G BBG G B

    0 0

    0 0 0 0

    ∗ ∗ ∗

     

    43 35 5424

    0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ + ∗ ∗ ∗ ∗

    + ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ + ∗ ∗

    → → → →G B BG G BBG

    4Recordemos las ideas el algoritmo de Jacobi para el cálculo de los valores propios de matrices simétricas,pues se hace algo parecido.

  • 8/19/2019 Clase Valvec 2016

    93/97

    94/97

     Utilicemos el algoritmo en una pequeña sesión de  Matlab.

    >> A=[1 2 3;3 4 5;6 7 8];>> [S U V]=svd_GolRein_1(A)S

    >> A=[1 2 3;3 4 5;6 7 8];>> [V S U]=svd(A)V

  • 8/19/2019 Clase Valvec 2016

    94/97

    S =14.5576 0 0

    0 1.0372 00 0 0.0000

    U =-0.2500 -0.8371 -0.4867-0.4852 -0.3267 0.8111-0.8379 0.4389 -0.3244

    V =-0.4625 -0.5706 -0.6786

    0.7870 0.0882 -0.61060.4082 -0.8165 0.4082

    >> U*S*V

    ans =1.0000 2.0000 3.00003.0000 4.0000 5.00006.0000 7.0000 8.0000

    V =-0.2500 -0.8371 -0.4867-0.4852 -0.3267 0.8111-0.8379 0.4389 -0.3244

    S =14.5576 0 0

    0 1.0372 00 0 0.0000

    U =-0.4625 0.7870 0.4082-0.5706 0.0882 -0.8165-0.6786 -0.6106 0.4082

    >> V*S*U’

    ans =1.0000 2.0000 3.00003.0000 4.0000 5.00006.0000 7.0000 8.0000

      Tiempos

    >> A=rand(1000);

    >> A = (A - .5)*2;

    >> tic, [S U V]=svd_GolRein_1(A); tocElapsed time is 13.971564 seconds.

    >> tic, [V S U]=svd(A); tocElapsed time is 0.315793 seconds.

    95/97

     Para una matriz complicada como  M  D

    1 0 0 0 20 0 3 0 00 0 0 0 00 4 0 0 0

    :

  • 8/19/2019 Clase Valvec 2016

    95/97

    0 4 0 0 0

    >> M=[1 0 0 0 2;0 0 3 0 0;0 0 0 0 0;0 4 0 0 0]M =

    1 0 0 0 20 0 3 0 00 0 0 0 00 4 0 0 0

    >> [S U V]=svd_GolRein_1(M)S =

    4.0000 0 0 0 00 3.0000 0 0 0

    0 0 2.2361 0 00 0 0 0 0

    U =0 0 -1 00 -1 0 00 0 0 11 0 0 0

    V =0 1.0000 0 0 00 0 -1.0000 0 0

    -0.4472 0 0 0 -0.8944

    0 0 0 1.0000 00 0 0 0 1.0000

    >> [U S V]=svd(M)U =

    0 0 1 00 1 0 00 0 0 -11 0 0 0

    S =

    4.0000 0 0 0 00 3.0000 0 0 00 0 2.2361 0 00 0 0 0 0

    V =0 0 0.4472 0 -0.8944

    1.0000 0 0 0 00 1.0000 0 0 00 0 0 1.0000 00 0 0.8944 0 0.4472

  • 8/19/2019 Clase Valvec 2016

    96/97

    97/97

     Algo más sofisticado, aunque en lo esencial igual:function [U S V] = svd_J(A,tol)% SVDJ Singular value decomposition using Jacobi algorithm.

    if nargin == 1, tol = eps; end % Tolerancia por defecto[M,N] = size(A); K = min(M,N); % K es el número de valores singularesOn = 0;

  • 8/19/2019 Clase Valvec 2016

    97/97

    On 0;for c=A, On=On + sum(abs(c).̂ 2); endOn=On./N; % Suma coef.^2/NPrevious_Off = Inf; V = eye(N);while true

    R = 0; % Contar las rotacionesfor r = 1:N - 1

    for c = r + 1:N% Calculate the three elements of the implicit matrix B that are% needed to calculate a Jacobi rotation. Since B is Hermitian, the% fourth element (b_cr) is not needed.b_rr = sum(abs(A(:,r)).^2); % Real value.b_cc = sum(abs(A(:,c)).^2); % Real value.b _r c = A(: ,r )’ * A (: ,c ); % Sa me ty pe a s A .% Calculate a Jacobi rotation (four elements of G). The two values% that we calculate are a real value, C = cos(theta) and S, a value% of the same type as A, such that |S| = sin(theta).

     m = abs(b_rc);

    if m ~= 0 % If the off-diagonal element is zero, we don’t rotate.tau = (b_cc - b_rr)/(2*m); % tau is real and will be zero if

    % the two on-diagonal elements are% equal. In this case G will be an% identity matrix, and there is no% point in further calculating it.

    if tau ~= 0R = R + 1; % Count the rotation we are about to perform.t = sign(tau)./(abs(tau) + sqrt(1+tau.̂ 2));C = 1./sqrt(1 + t.^ 2);S = (b_rc.* t.* C)./ m;% Initialize the rotation matrix, which is the same size as the% implicit matrix B.% We have to create an identity matrix here of the same type as A,% that is, quaternion if A is a quaternion, double if A is double.% To do this we use a function handle (q.v.) constructed from the% class type of A. This was done before the loop, since the type% of A is invariant.G = eye(N); G(r,r) = C; G(c,c) = C; G(r,c) = S; G(c,r) =-conj(S);A = A * G ;V = V * G ;

    endend

    endend

    if R == 0, error(’No rotations performed during sweep.’), end% Calculate the sum of the off-diagonal elements of the matrix B.B = A ’ * A ;Off = sum(sum(abs(triu(B,1))))/(N.^2); % Normalise by the matrix size!if (Off/On) < tol, break; end % Off-diagonal sum is small enough to stop.if Previous_Off < Off

    warning(’QTFM:information’, ...’Terminating sweeps: off diagonal sum increased on last sweep.’)

    break;endPrevious_Off = Off;end

    % Extract and sort the singular values. The vector T may be longer than the% number of singular values (K) in cases where A is not square.

    [T,IX] = sort(sqrt(abs(diag(B))),’descend’);if nargout == 0 || nargout == 1 % .. only the singular values are needed.

    U = T(1:K);endif nargout == 3 % .. the singular vectors and singular values are needed.

    A = A(:, IX); % Map the columns of A and V into the same order as theV = V(:, IX); % singular values, using the sort indices in IX.% Construct the left singular vectors. These are in A but we need% to divide each column by the corresponding singular value. This% calculation is done by replicating T to make a matrix which can% then be divided into A element-by-element (vectorized division).U = A./ repmat(T’,M,1);S = diag(T); % Construct a diagonal matrix of singular values from

    % the vector T, because when there are three output% parameters, S is required to be a matrix.

    endend