clase valvec 2016
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]
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
T
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