Beruflich Dokumente
Kultur Dokumente
1/97
ndice
2/97
Mtodo de Jacobi
Mtodo de la iteracin de potencia
Mtodo de la iteracin inversa
Iteracin mediante cociente de Rayleigh
Deflacin
Iteracin simultnea
Iteracin QR
Subespacios de Krylov
Comparacin de los mtodos
3/97
Los valores y vectores propios adquieren una relevancia destacada para analizar
asuntos con oscilacin y resonancia. Su conocimiento es bsico en:
Instrumentos musicales.
Mecnica cuntica.
Lasers.
:::
4/97
Frequency range 2
electromagnetic
Phenomena
electromechanical
SVC
Frequency
Interconnected
System
1 MHz
1 kHz
1 Hz
1 s
1 ms
1s
1 s
M
Turbine Syngovernor chronous
Torsion maschine
AVR
On-load Current
Breaker
tap
transformer Arc
changer Saturation restriking
Protective
system
External system
Line
Cable
HVDC
FACTS
Converter
VAR-Load
VAR-Admittance
Motor
Load torque
100 s
Travelling Transient
wave
phenomena,
phenomena Switching
overvoltages
10 ms
1 mHz
1 min
1s
Short-circuit Transient
phenomena stability
SSRphenomena
Harmonics,
Transformer-saturation
1h
100 s
Control
phenomena
with steam
generators
Processtimes
Calculation
time steps
5/97
From the time domain subprogram of
NETOMAC
NETOMAC
eigenvalue
calculation mode
Linear
model
of a
dynamic
power
system
Axx
Axz
bx
Azx
Azz
bz
Sparsitybased
storage
and
matrix
computation
State equation:
A
(Dimentioned maximum
800 dynamic order)
Eigensystem
solution
Network in RST
Admittances by differential
equations non-linearities
Time range
Instantaneous values
ns...s...ms...s
Time range
Quasi steady-state values
s...min
Electromagnetic and
electromechanical
phenomena, complete
solution
Electromechanical
phenomena,
fundamental
frequency
only
Loadflow
Power method
of implicit
inverse iteration
QR transformation
Simulation Models for System Components, Machines, Controllers and Control Units
Loadflow
Initial conditions
Loadflow
Operating point
Overview
of
modes
System components
Linearization
Coupling
Activities of
different modes
on one device
Activities of
one mode on
different devices
Transfer function
based dominant
pole method
U1
U2
Frequency range
all system-variables
Eigenvalue analysis
Small-signal
characteristics
Network, machines
and control
Systemoscillation
and -damping,
Netreduction,
Controller layout
Eigenvalue
analysis
&
transfer
function
analysis
Legend:
R: Right eigenvector (observability information)
L: Left eigenvector (controllability information)
P: Participation factors
U: Transfer function residues
U1: Mode activities in unit impulse response
U2: Mode activities in unit step response
y(t):
Unit impulse/step
response
G(jw):
Frequency
response
SIGMA
OMEGA
(rad/sec)
SIGMA
OMEGA
(RAD/SEC)
(HZ)
-0,087
4,566
COMPLEX S-PLANE
ZETA
(%)
FREQ
(Hz)
ELECTRIC MACHINES
14
-4,053
12,991
-29,8
2,060
NORMALIZED
RIGHT
EIGENVECTOR
(MODE
SHAPE)
NORMALIZED
RIGHT
EIGENVECTOR
(MODE
SHAPE)
Hz
13
SYNCHRONOUS MACHINES
18 items
COMPONENT NAME
ZETA
SIGMA
OMEGA
SIGMA
OMEGA
(RAD/SEC)
(RAD/SEC)
(HZ)
(HZ)
-0,087
4,566
-0,087
4,566
FACO
(%)
-1,9
ZETA
ZETA
FACO
FACO
(%)
(%)
0(s)=
-1,217
11,754
-10,3
1,071
-2,520
11,450
-21,5
1,022
12
-0,053
10,022
-0,5
1,595
-1,110
9,072
-11,2
1,571
COMPONENT
NAME
COMPONENT
NAME
-13,6
1,494
-12,6
1,490
-1,992
9,233
-21,1
1,469
-1,285
9,388
-1,104
-0,900
9,359
9,146
-9,0
1,456
10
10
1 1 DACOLOUA
2X150
MVA
DACOLOUA
2X150
MVA
2 2 MILLOA
2x2x
1818
MVA
MILLOA
MVA
-2,079
8,942
LOSQUI 2X 18+14+Adong
TEHUSEQUEL+JALA+BANELVOL
NASVENTA AT 18 KV
1
1,407
-1,207
8,700
-14,5
-0,550
8,440
NASVENTA AT 19.2 KV
10
1,399
-6,6
1,343
13
-1,137
7,062
-14,3
1,251
-0,503
7,033
-7,1
1,119
6,310
-6,1
1,004
5,718
-4,9
0,910
17
-0,007
4,566
-1,09
0,727
0,19
0,19
0,45
0,45
NASVENTA
8 8 NASVENTA
ATAT
1818
KVKV
16
0,43
0,43
NASVENTA
19.2
9 9 NASVENTA
ATAT
19.2
KVKV
0,18
0,18
CAREN
2X58.8
MVA
1010CAREN
2X58.8
MVA
8
11
ENCHEPHEHU
2X283
MVA
1111ENCHEPHEHU
2X283
MVA
0,06
0,06
BUNCOL
2X240
MVA
1212BUNCOL
2X240
MVA
0,05
0,05
13
CURAMACHI
2X53
MVA
1313CURAMACHI
2X53
MVA
0,04
0,04
14
12
2
-0,383
-0,200
0,16
0,16
0,15
0,15
PELRA
5X76
MVA
7 7 PELRA
5X76
MVA
17
0,5
15
0,14
0,14
5 5 FALALFAL
2X95
MVA
FALALFAL
2X95
MVA
6 6 TOLIZASAV,
ZALSAV
10+3X32
TOLIZASAV,
ZALSAV
10+3X32
18
14
16
COANTU
2X160
MVA
1414COANTU
2X160
MVA
0,06
0,06
15
ROTOREL
4X105
MVA
1515ROTOREL
4X105
MVA
0,06
0,06
16
NICOREA
5X21.5
MVA
1616NICOREA
5X21.5
MVA
0,22
0,22
-6
-5
-4
-3
-2
-1
17
QUEPAN
500
MVA
1717QUEPAN
500
MVA
18
TILLARNUCA
2X68
MVA
1818TILLARNUCA
2X68
MVA
0,37
0,37
0,56
0,56
1
0 0
12
0,91 Hz
0,37
0,37
3 3 LOSQUI
2X2X
18+14+Adong
LOSQUI
18+14+Adong
4 4 TEHUSEQUEL+JALA+BANELVOL
TEHUSEQUEL+JALA+BANELVOL
6
-22,9
11
pusMVA
1,00
1,00
0,63
0,63
12
ROTOR SPEED
NASVENTA AT 18 KV
MECHANICAL TORQUE
NYQUIST DIAGRAMM
MILLOA 2x 18 MVA
0,63
0,63
1,5
6
NASVENTA AT 16 KV
PV
V(s)
SYNCHRONOUS
MACHINES
SYNCHRONOUS
MACHINES
1818
items
items
11
Y(s)
-1,9
-1,9
ELECTRIC
MACHINES
ELECTRIC
MACHINES
2
2
Mode distribution
(Eigenvalues)
Phasor-Diagram
0,10,1
0,20,2
0,30,3
Bar diagram
0,40,4
0,50,5
0,60,6
0,70,7
0,80,8
0,90,9
1 1
Nyquist-Diagram
6/97
Caso histrico
Hoy
7/97
Transformacin lineal u aplicacin lineal de un espacio vectorial V en si mismo. Ej. la ecuacin de Schrdinger
E D E E.
2
No cambian su direccin.
Para que exista una solucin distinta de la trivial x D 0 el valor propio deber
ser raz del polinomio caracterstico de grado n asociado a A, es decir,
8/97
Lo que es igual a n
g1n
det.A
I/ D 0:
C g 2 n
C . 1/ngn D 0:
610
4:
::
0
1
::
:
:::
:::
::
:
0
0
::
:
0 0 ::: 1
c1
c2
::
:
cn
7
5
9/97
10/97
11/97
12/97
Definicin Dos matrices A; B 2 Cnn se dicen semejantes si existe una matriz inver-
I/ D 0g:
1:1
1:3
1:7
2:5
4:1
7:3
13:7
26:5
13/97
Al aplicrsele
a cualquier
vector
la transformacin que
representa A, ese vector
4
7KHYHFWRUV
[
[
[
DUHVKRZQLQ)LJ
7KHRWKHUYHFWRUVDUHJURZLQJ
A
;
:
:
:
;
A
3
tiende
a orientarse+RZHYHU
hacia la OLQHVHJPHQWVDUHGUDZQVKRZLQJWKHGLUHFWLRQVRIWKRVH
direccin del vector propio dominante de A.
WRRORQJWRGLVSOD\
0;5
1
el resultado es el de la figura.
x2
A4 x
Ax
x
A3x
A2 x
1
Espacio de
v1
v1
1
10
x1
!k
14/97
Otros ejemplos
Ejemplo del apndice "Definiciones, : : :
10
1
0
Si A D
, 1 D 1; x 1 D
; 2 D 2 y x 2 D
:
02
0
1
1;5 0;5
1
1
Si A D
, 1 D 2; x 1 D
; 2 D 1 y x 2 D
:
0;5 1;5
1
1
Si A D
01
1
, 1 D i; x 1 D
; 2 D
10
i
p
i
i y x2 D
, donde i D
1.
1
15/97
n
X
ai i .
i D1
Teorema Los valores propios de una matriz triangular son los coeficientes de su diagonal
principal.
son i
16/97
Teorema Los valores propios de las potencias de A son las potencias de los de A; los
vectores propios son los mismos.
17/97
El clculo de los valores propios por las races del polinomio caracterstico
no es aconsejable por:
1
Ejemplo Consideremos la matriz A D
; donde es cualquier nmero
1
p
menor que maq:
K .
I/ D 2
2 C .1
2 / D 2
2 C 1I
18/97
19/97
Ortogonales
Ejemplo
Todos los valores propios de una matriz ortogonal tienen mdulo unidad.
p
p
2=2
2=2
01
1 0
p
p
:
;
;
10
0 1
2=2 2=2
Hermticas
Ejemplo La matriz
1
1
1Ci
:
i 2
20/97
Ax D xI
x Ax D x
x D jjxjj2
21/97
Unitarias
Ejemplo La matriz
p
p
i p2=2 p2=2
:
2=2 i 2=2
Las matrices unitarias son una extensin de las matrices ortogonales al
campo complejo. Todos los valores propios tienen mdulo unidad.
Una matriz unitaria no modifica ni los ngulos ni las normas:
.U x/H .U y/ D x H U H U y D x H y
si y D x; jjU xjj2 D jjxjj2:
120
Ejemplo 40 1 25 ;
201
i 0
:
0 3 5i
22/97
Triangularizacin de Schur
Teorema Triangularizacin de Schur Para cualquier A 2 Cnn existe una matriz unitaria
U tal que
U H AU D T ,
donde T es una matriz triangular superior. Los valores propios de A son entonces los
coeficientes de la diagonal principal de T .
Teorema Para cualquier matriz hermtica A 2 Cnn existe una matriz unitaria U tal
que
U H AU D D,
23/97
QT AQ D D,
Teorema Los valores propios de una matriz hermtica definida positiva son todos positivos.
Recprocamente, si todos los valores propios de una matriz son positivos, debe ser definida
positiva.
24/97
Teorema Forma cannica de Jordan Para una matriz A 2 Cnn existe una matriz T
6
AT D J D 6
4
J1
0
:::
0
Jn
7
7;
5
2
3
i 1
6 i 1 0 7
Ji D 6
7
4
5
0 1
i
es una matriz de Jordan y los i son los valores propios de A.
donde
25/97
Regular
Ortogonal
Unitaria
Unitaria
Ortogonal
Unitaria
Regular
BDT
AT
Diagonal
Diagonal real
Diagonal real
Diagonal
Triangular en bloques (real)
Triangular superior (Schur)
Casi diagonal (Jordan)
26/97
27/97
la unin de los n discos de Gerschgorin, cada uno de los cuales est centrado en akk ,
k D 1; : : : ; n, y tiene de radio
n
X
jakj j
rk D
j D1
j k
j k
ai i j
n
X
j D1
j i
jxj j X
jaij j:
jxi j
n
jaij j
ai i j ri g.
j D1
j i
28/97
29/97
Im
10
10
5
Re
10
15
0;6533
0;3473i .
30/97
gersh(gallery(hanowa,10))
20
5
10
10
5
20
40
30
20
10
gersh(gallery(ipjfact,6,1))
gersh(gallery(smoke,16,1))
0.5
2
1
0
0
1
2
0.5
0.2
0.2
0.4
0.6
0.8
31/97
ndice
Introduccin terica
Obtencin numrica
Mtodo de Jacobi
Deflacin
Iteracin simultnea
Iteracin QR
Subespacios de Krylov
32/97
Obtencin numrica
Mtodo de Jacobi
33/97
A kC1 D J Tk A k J k ;
h i
c s
donde cada matriz J k D s c se calcula de tal manera que
h ih
i h i h c 2a 2csa C s2a
i
apq .c 2 s 2 / C cs.app aqq /
pp
pq
qq
c s
app apq
c s
s c
apq aqq
s c D a .c 2 s 2 / C cs.a
a / c 2 a C 2csa C s 2 a
pq
pp
pq
pp
sea diagonal.
s 2/ C cs.app
D
aqq app
2apq
y t D s=c
1D0
34/97
1 C 2;
se escoge
p la ms pequea para que j j =4. Luego se obtienen
c D 1= 1 C t 2 y s D c t .
function J=Jac_Rot(A,b,d)
% Clculo de la rotacin de Jacobi para anular un coef. de A de coordenadas (b,d)
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+tau^2)); end
c=1/sqrt(1+t^2);
s=c*t;
else
c=1; s=0;
end
J=[c s; -s c];
% Igual que Givens
end
En Matlab:
35/97
v
u n n
uX X
u
El proceso termina cuando off .A/ D u
aij2
t
i D1 j D1
j i
102
021
211
> t ol kAkF .
i
. Apliqumosle el mtodo de Jacobi.
Ejemplo Sea A 0 D
Anulemos para empezar los coeficientes .1; 3/ y .3; 1/. Con ese fin, definamos
la rotacin
2
3
y hagamos
0;707 0
J0 D 4 0 1
0;707 0
2
0;707
0 5
0;707
3
3 0;707 0
A 1 D J T0 A 0 J 0 D 40;707 2 0;7075 :
0 0;707
1
36/97
y hagamos
0;888
J 1 D 40;460
0
3
0;460 0
0;888 05
0
1
2
3
3;366 0 0;325
A 2 D J T1 A 1 J 1 D 4 0 1;634 0;6285 :
0;325 0;628
1
y haciendo
1 0
J 2 D 40 0;975
0 0;226
3
0
0;2265
0;975
3
3;366 0;0735 0;317
0 5:
A 3 D J T2 A 2 J 2 D 40;0735 1;780
0;317
0
1;145
2
37/97
Comenzando un nuevo barrido, hagamos cero los coeficientes .1; 3/ y .3; 1/.
Usaremos la rotacin
2
3
y luego
0;998 0
J3 D 4 0 1
0;070 0
2
0;070
0 5
0;998
3
3;388 0;0733
0
A 4 D J T3 A 3 J 3 D 40;0733 1;780 0;0051 5 :
0 0;0051 1;167
38/97
>> A=rand(4);
>> A=A+A
A =
1.7818
1.1086
1.3615
0.3352
1.1086
0.5150
1.0842
0.5054
1.3615
1.0842
1.8585
0.9660
0.3352
0.5054
0.9660
0.9466
>> % Anulemos el coeficiente (1,2)
>> J=jacrot(A,1,2); A=J*A*J
A =
2.4252
0.0000
1.7218
0.5436
0.0000
-0.1284
0.2544
0.2688
1.7218
0.2544
1.8585
0.9660
0.5436
0.2688
0.9660
0.9466
>> % Ahora el (1,3)
>> J=jacrot(A,1,3); A=J*A*J
A =
3.8868
0.1646
0.0000
1.0396
0.1646
-0.1284
0.1939
0.2688
0.0000
0.1939
0.3969
0.3847
1.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
0
0.2383
-0.1284
0.1939
0.2063
0.1165
0.1939
0.3969
0.3666
-0.0000
0.2063
0.3666
0.6161
39/97
40/97
0.0270
0.0230
-0.0009
-0.7836
-0.0000
0.0230
-0.0009
-0.7838
-0.0000
0.0229
-0.0023
-0.7838
-0.0001
0
-0.0023
-0.7828
-0.0001
0.0000
0
-0.7829
en dos barridos
41/97
>> [V D]=eig(A)
V =
-0.6611
-0.4973
-0.2261
0.8460
0.7154
-0.1922
D =
-1.1642
0
0
1.7729
0
0
-0.5618
-0.4828
-0.6718
42/97
0
0
3.3914
0.5785
0.4009
0.6399
0.3086
0.2292
0.0812
-0.4444
0.3862
>> [v d]=eig(A)
v =
0.3673
-0.3703
-0.9032
-0.1289
0.1590
0.7022
0.1549
-0.5944
d =
-0.2134
0
0
0.1238
0
0
0
0
>> A*v-v*d
ans =
1.0e-014 *
-0.0222
-0.0444
-0.0056
0.0097
-0.0479
0.0180
-0.0069
-0.0083
0.6272
0.0831
-0.2688
-0.7263
0.5785
0.4009
0.6399
0.3086
0
0
0.9569
0
0
0
0
4.2346
-0.0333
-0.0305
-0.0444
-0.0111
-0.0444
-0.0444
-0.1332
0
43/97
x Tk
0,0
0,333
0,600
0,778
0,882
0,939
0,969
0,984
0,992
0,996
0,998
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
jjx k jj1
1,5000
1,6667
1,8000
1,8889
1,9412
1,9697
1,9846
1,9922
1,9961
1,9981
>> x=[0;1];
>> A=[1.5 0.5;0.5 1.5];
>> for i=1:10
v=A*x
m=max(abs(v))
x=v/m
end
44/97
Geometric Interpretation
45/97
of power iteration
El comportamientoBehavior
de las iteraciones
es el dedepicted
la figurageometrically:
1.0
0.5
0.0
x.0
x..1 x.2 x..3 ...x 4...
.......
...
.....
.......
..... ....... ....... .......
...
.
... .................... v 1
...
.
.
v 2 .....
.
....
.
. . ..
...
...
... .... .... ....
....
...
... ..... ....................
...
.
.
.
.
..
...
....
... ... .............
...
...
.... ..... ........................
...
...
.... .... ....................
...
...
.... .... .....................
...
...
.. .. ...........
... .... .......................
... ............
... ..........
....
1.0
Initial vector
El punto inicial
0.0
0.5
"
"
0.5
"
0
1
1
x0 =
=1
+1
1
1
1
1.0
in two eigenvectors
contains equalcomponents
0
1
1
(shownxby D
dashed arrows)
D1
C1
0
1
es una combinacinnent
lineal
de eigenvector
los dos vectores
propios vto1 larger
y v2 .
in first
(corresponding
eigenvalue, 2) to dominate, and hence sequence
of vectors converges to that eigenvector
46/97
Este caso es bastante habitual pues esos dos valores propios pueden ser
un par complejo conjugado.
3. Para una matriz real y un punto de partida tambin real, puede que nunca
se converja a un vector complejo.
>> [l,v,cnt]=potencia(b,[0;1])
l =
2.00000000000000
v =
0.70710678118655
0.70710678118655
cnt =
53
47/97
48/97
Mediante un desplazamiento ,
A
I;
2
2 ;
1
1
y que, por lo tanto, la velocidad de convergencia aumente.
La solucin del problema original resultar de aadir al valor obtenido.
49/97
50/97
Ejemplo (continuacin)
x Tk
0,000
-0,333
-0,600
-0,778
-0,882
-0,939
-0,969
1,0
1,0
1,0
1,0
1,0
1,0
1,0
jjy k jj1
0,750
0,833
0,900
0,944
0,971
0,985
51/97
52/97
T
Definicin El cociente de Rayleigh de un vector x 2 R es el escalar r.x/ D xx TAx
x .
53/97
54/97
x Tk 1 Ax k 1
k D T
xk 1xk 1
Resolver .A k I/y k D x k
yk
xk D
jjy k jj2
end
Ejemplo (continuacin)
55/97
x Tk
0,000
0,333
0,600
0,778
0,882
0,939
0,969
jjy k jj1
x Tk Ax k =x Tk x k
0,150
1,667
1,800
1,889
1,941
1,970
1,500
1,800
1,941
1,985
1,996
1,999
1,0
1,0
1,0
1,0
1,0
1,0
1,0
x Tk
0,807
0,924
1,000
k
0,397
1,000
1,000
1,896
1,998
2,000
56/97
En Matlab:
function [lambda,V,cnt]= ItInvRayleigh_2(A,x,max1)
% Mtodo de la iteracin inversa con cociente de Rayleigh
if nargin<2, n=length(A); max1=10; x=ones(n,1); end
lambda=0; cnt=0; err=1; n=length(A);
if norm(x)>1 x=x/norm(x); end
tol=n*norm(A,1)*eps;
sigma=x*A*x;
while err>tol
y=(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
57/97
Deflacin
Idea: Calculados un valor y un vector propios, obtener otros por deflacin: Como
cuando una vez conocida una de las races, x1, de un polinomio de grado n ste
se divide por x x1 obtenindose otro de grado n 1.
58/97
En Matlab:
function u = Housv(x)
% Transformacin de Householder del vector x.
m = max(abs(x));
u = x/m;
if u(1) == 0, su = 1; else su = sign(u(1)); end
u(1) = u(1)+su*norm(u);
u
= u/norm(u);
u
= u(:);
end
function P = Houspre(u, A)
% Producto P = H*A, donde H is una transformacin de Householder
%
definida por el vector u.
n = length(A);
v = u/norm(u); v = v(:);
P = zeros(n,n);
for j=1:n
aj = A(:,j);
P(:,j)=aj-2*(v*aj)*v;
end
end
function p = Housmvp(u, x)
% Producto p = H*x, donde H es la transformacin de Householder
%
definida por u.
u = u(:); x = x(:);
v = u/norm(u);
p = x - 2*(v*x)*v;
end
59/97
Utilicmoslo:
>> A=ones(5)+diag(ones(5,1))
A =
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,V]= ItInvRayleigh_2(A)
lambda =
6
V =
0.44721359549990
0.44721359550002
0.44721359549982
0.44721359550001
0.44721359550003
>> [l2,v2]=defl_1(A,V)
l2 =
1
v2 =
-0.89442719099992
0.22360679774998
0.22360679774998
0.22360679774998
0.22360679774998
>> [norm(A*V-lambda*V);norm(A*v2-l2*v2)]
% Comprobar resultados
ans =
1.0e-015 *
0.4441
0.6497
>> format short
>> [l,v]=eig(A)
% Comprobar con rutina Matlab eig
l =
0.8333
-0.1667
-0.1667
0.2236
0.4472
-0.1667
0.8333
-0.1667
0.2236
0.4472
-0.1667
-0.1667
0.8333
0.2236
0.4472
-0.5000
-0.5000
-0.5000
0.2236
0.4472
0
0
0
-0.8944
0.4472
v =
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
6
60/97
61/97
Las iteraciones convergen a una matriz triangular, si slo hay valores propios
reales, o a una triangular en bloques 22 en la diagonal principal cuando haya
valores propios complejos conjugados.
62/97
function [i r1]=IterSimul(A,r)
% Mximos valores propios de A (simtrica); itera. simultnea
%
ortogonal
n=length(A); if nargin<2, r=5; end
tol=sqrt(eps); B=A; i=0; itmax=400;
Q=eye(n,r); R=eye(r); vprn=1; err=1;
while i<itmax && err>tol
vpr=vprn;
Z=A*Q;
[Q,R]=qr(Z,0);
% QR reducida de n x r
vprn=min(diag(R));
i=i+1;
err=abs((vprn-vpr)/vprn);
end
format long
r1=diag(R);
% fprintf(%i Valores propios mximos:\n,r);
disp(Valores calculados con eig());
disp(-sort(eig(-B)));
end
63/97
Iteracin QR
64/97
family until his death. At first, Kantorovichs group developed analytic computational tools in Prorab
for algebraic and trigonometric polynomials, for integer arithmetic and series, etc. When Vera joined,
her task was to select and classify matrix operations that are useful in numerical linear algebra. Linear
algebra subroutines were included in Prorab much later. This experience brought Vera close to numerical
algebra and computation. In 1972 she obtained her secondary doctorate (Habilitation). More extended
biographies of Veras life, achievements and long and productive career are available in Golub et al.
(1990) and Konkova et al. (2003), for example.
474
In the Russian literature the QR algorithm was initially called the method of one-sided rotations. Vera
Kublanovskaya started to develop her version of the QR algorithm in 1958 after reading Rutishausers
LR algorithm paper (Rutishauser, 1958). She represented a matrix A = L Q as the product of a lower
triangular matrix L and an orthogonal matrix Q that she suggested to compute as the product of
elementary rotations or reflections. Her eigenvalue algorithm factors A = A1 = L 1 Q 1 , reverse
order multiplies A2 = Q 1 L 1 and then factors A2 again as A2 = L 2 Q 2 , etc. In 1959 she performed
numerical experiments with her LQ decomposition-based algorithm on an electromechanic Mercedes
calculator in low dimensions by hand since linear algebra computer codes had not been developed yet
in Prorab. Veras hand computations indicated that her explicit factorizationreverse-order multiply
algorithm is convergent. However, D. K. Faddeev feared that the obtained results may only have been
accidental. Veras QR-like algorithm was briefly mentioned in 1960 in the first edition of a monograph
Las A k convergern 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
66/97
D = diag([4 3 2 1]);
rand(seed,0); format short e
S=rand(4); S = (S - .5)*2; % Se perturba un poco
A = S*D/S
% A_0 = A = S*D*S^{-1}
for i=1:6
[Q R] = qr(A); A = R*Q
% Iteracin QR
end
A =
4.1475e+00
-4.9214e-03
6.2706e-01
1.5691e-01
=
3.9304e+00
4.0097e-02
3.5144e-01
-2.7163e-02
=
3.9287e+00
-1.6308e-02
2.1041e-01
5.9415e-03
=
3.9514e+00
-5.7605e-02
1.1812e-01
-1.4093e-03
=
3.9696e+00
-7.1970e-02
6.3115e-02
3.4472e-04
=
3.9817e+00
-6.9838e-02
3.2744e-02
-8.5395e-05
-7.7246e-01
3.2731e+00
-1.9699e-01
-4.1310e-01
-7.3819e-01
-1.8990e-01
2.2190e+00
-6.3508e-01
-4.1172e+00
1.9440e+00
-6.0845e-01
3.6039e-01
-2.7682e-01
3.0595e+00
-3.8535e-02
8.4395e-02
1.5214e-01
-6.9040e-01
2.3156e+00
1.9457e-01
4.4847e+00
-2.1283e+00
-4.8346e-01
6.9447e-01
-1.6932e-01
3.0078e+00
-3.4259e-02
-2.3299e-02
4.1119e-01
-8.8862e-01
2.2044e+00
-8.1008e-02
-4.4113e+00
2.1571e+00
1.0227e+00
8.5905e-01
-1.3627e-01
2.9981e+00
-2.7149e-02
7.1443e-03
4.9740e-01
-9.6432e-01
2.1181e+00
3.8096e-02
4.3484e+00
-2.1072e+00
-1.3251e+00
9.3241e-01
-1.1610e-01
2.9977e+00
-1.8643e-02
-2.2854e-03
5.3907e-01
-9.8790e-01
2.0658e+00
-1.8738e-02
-4.3288e+00
2.0192e+00
1.4919e+00
9.6688e-01
-9.8200e-02
2.9984e+00
-1.2095e-02
7.4567e-04
5.6721e-01
-9.9032e-01
2.0362e+00
9.3684e-03
4.3356e+00
-1.9242e+00
-1.5816e+00
9.8360e-01
67/97
D Ak
k 1I
A k D R k 1 Qk
El desplazamiento k
C k 1I:
Desplazamientos ms usados:
68/97
69/97
Ejemplos
>> 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.8132
0.9430
1.2765
1.4153
1.7930
1.9123
2.2906
2.6955
2.9732
3.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.9732
3.7114
4.9037
5.3983
100.1106
>> A=randn(5)
A =
0.1303
1.0169
-0.2750
0.7688
-0.3857
0.5583
0.2378
-0.2941
-0.5498
-0.1324
0.3125
0.8049
0.2869
-1.1517
-0.0024
-1.7196
-0.3503
0.4211
0.9847
-0.6632
>> A=hess(A)
% VEREMOS por qu
A =
0.1303
-0.1471
1.0342
-0.5765
0.8100
0.6165
-0.1303
0.5381
0
-1.0393
0.3560
0.3942
0
0
1.3485
-1.9025
0
0
0
0.4372
>> A0=A;
0.2815
1.2163
-0.2401
-0.4955
-1.3721
-0.5971
0.9983
0.6386
-0.0670
-1.2908
0.1063
-1.0568
-0.1472
-0.0113
-0.0941
70/97
-0.2176
-1.0411
0.1361
0.0134
-0.0941
-0.0297
-1.0632
-0.0561
0.1247
-0.0941
71/97
Se usan los dos valores propios, y N , de la submatriz 22 del bloque inferior,
Qk 1 R k
D Ak
k 1 I
A k D R k 1 Qk
Qk R k D A k
C k 1 I
N k 1 I
A kC1 D R k Qk C N k 1 I
k 1 I/ .A k
D .Qk 1 Qk / .R k R k 1 /
D A 2k
sA k
C tI;
N k 1 I/ donde
y t su determinante.
72/97
Con los aos, los diferentes enfoques de atacar esta variante han convergido en
una estrategia de doble desplazamiento implcito tipo Francis, formulada en
1961 por John G.F. Francis.
@
@
@
@
@
@
@
73/97
74/97
1 fase
Simtrica a tridiagonal
General
2 fase
a diagonal
a Hessenberg a triangular
Matriz general
4 3
n para valores propios slo 10n3 para valores propios slo
3
9n3 valores y vectores propios 25n3 valores y vectores propios
75/97
76/97
77/97
>> A=rand(20);
>> A=(A+A)/2;
>> [D it]=It_QR_3(A)
D =
10.5361
1.5883
1.5200
1.1285
1.0568
0.9498
0.6448
0.5156
0.2413
0.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.1139
0.2413
0.5156
0.6448
0.9498
1.0568
1.1285
1.5200
1.5883
10.5361
78/97
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 itc
HH
= 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 traHH^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))<abs(lambdaHH(2)-H(end,end))
lambdaHH(2) = lambdaHH(1);
else
lambdaHH(1) = lambdaHH(2);
end
% z^2+bz+c=(z-lambda_1)(z-lambda_1)|(z-lambda_2)(z-lambda_2)
b = -lambdaHH(1)-lambdaHH(2);
c = lambdaHH(1)*lambdaHH(2);
itr=itr+1;
else
% In the complex case, we want the char poly for HH
b = -traHH;
c = detHH;
itc = itc+1;
end
end
79/97
Los resultados
>> sort(eig(A),descend)
ans =
-6.0770
5.2804
5.0190
3.2085 + 3.6195i
3.2085 - 3.6195i
0.0031 + 4.4372i
0.0031 - 4.4372i
-4.2104 + 0.7456i
-4.2104 - 0.7456i
-1.3585 + 3.9497i
-1.3585 - 3.9497i
1.2975 + 3.8800i
1.2975 - 3.8800i
-2.4416 + 2.7407i
-2.4416 - 2.7407i
2.8787 + 0.7120i
2.8787 - 0.7120i
-1.0840 + 1.8066i
-1.0840 - 1.8066i
-1.2594 + 0.9430i
-1.2594 - 0.9430i
-0.3809 + 0.9062i
-0.3809 - 0.9062i
0.6323
-0.1911
>> A=rand(1000);
>> A = (A - .5)*2;
>> [T it itd t]=qrstep_Francis_Bindel(A)
T =
7.123846740573868 +17.026981501328613i
7.123846740573868 -17.026981501328613i
16.624570346272108 + 7.937272245254786i
16.624570346272108 - 7.937272245254786i
-16.089705600685924 + 8.930438288025009i
-16.089705600685924 - 8.930438288025009i
-10.166595375856957 +15.258792634828080i
-10.166595375856957 -15.258792634828080i
17.167325994176007 + 6.377944580510263i
17.167325994176007 - 6.377944580510263i
18.249349262178139 + 0.000000000000000i
7.805032835495162 +16.405785237414399i
7.805032835495162 -16.405785237414399i
-8.822496260367785 +15.869321050483862i
-8.822496260367785 -15.869321050483862i
16.001083815170652 + 8.555659101012008i
16.001083815170652 - 8.555659101012008i
-3.803035356678313 +17.729394693350987i
-3.803035356678313 -17.729394693350987i
4.837154691757405 +17.460853314474601i
4.837154691757405 -17.460853314474601i
-17.976118771479754 + 2.032262837884847i
-17.976118771479754 - 2.032262837884847i
.
.
.
-1.748103565292426 - 1.443294519531504i
-2.229777171574543 + 0.000000000000000i
2.124127007088685 + 0.000000000000000i
-2.000980926645378 + 0.000000000000000i
-0.267964043130730 + 1.702030627215852i
-0.267964043130730 - 1.702030627215852i
1.251743319582046 + 0.303853777326017i
1.251743319582046 - 0.303853777326017i
-0.989726686530990 + 0.000000000000000i
0.222221915982704 + 0.687550759680182i
0.222221915982704 - 0.687550759680182i
it =
93
itd =
1116
t =
41.563322418069106
>> tic, [V S U]=eig(A); toc
Elapsed time is 1.323848 seconds.
80/97
Subespacios de Krylov
Estos subespacios son la base de unos mtodos iterativos para el clculo de los
valores propios de A. Su ventaja esencial es que en ellos slo se llevan a cabo
multiplicaciones de matrices por vectores, lo cual es particularmente interesante
para matrices grandes y dispersas.
81/97
La matriz de Krylov, K
nj
D b Ab : : : A
j 1
b , se puede escribir entonces
2
1 1
61
6 2
K n D c1 x 1 c2 x 2 cn x n 6 :: ::
4: :
1 n
3
j 1
1
j 1
2 7
7
:
: : : ::: 7
5
j 1
n
@
@
@
@
@
82/97
La matriz de Krylov K n suele estar mal condicionada. Para obtener una buena
base de Im.K n/ se utiliza la factorizacin QnR n D K n de tal forma que
H
1
C n D K n 1 AK n D R 1 QH
n AQn R n ! Qn AQn D R n C n R n H (matriz de Hessenberg):
j D 1; : : : ; k:
de A
por Iteracin de Arnoldi
Dado x 0 cualquiera
q 1 D x 0 = kx 0 k2
for k D 1; 2; : : :
uk D Aq k
for j D 1 to k
hj k D qjH uk
uk D uk hj k qj
end
hkC1;k D kuk k2
if hkC1;k D 0 stop
q kC1 D uk = hkC1;k
end
83/97
de A
por Iteracin de Lanczos
q 0 D 0; 0 D 0 y x 0 cualquiera
q 1 D x 0 = kx 0 k2
for k D 1; 2; : : :
uk D Aq k
k D q H
k uk
uk D uk k 1 q k 1 k q k
k D kuk k2
if k D 0 stop
q kC1 D uk =k
end
84/97
85/97
arnoldi_W
86/97
100
50
50
100
150
87/97
88/97
ndice
Introduccin terica
Obtencin numrica
89/97
90/97
QB A B D B D
B1
,
0
3 9
d1 f2
>
>
6 d2 f3 0
7 >
=
6
7 >
6
::: ::: 7
n
6
7
BD6
>
7
:
>
: : fn 7 >
6 0
;
6
7 >
4
dn 5
m
0
QB D Qn Q1 2 Rmm y B D 1 n
2 Rnn.
91/97
92/97
k D 1; 2; : : : ;
kD:::;2;1
kD1;2:::
0
0
0
T=BTB.
0 0 0
0 0 BG +
12
0 0 0
0 0
0
0 0 0
0
40
0
0
BG 24
0 0 0 0
0 0 G B 0
21
0 0 0
0 0
0
0 0 0
0
0 0 0
0 0 G B 0
43
0 0 0
0 +
0
0 0 0
0
+ 0 0
0 0 BG 0
13
0 0 0
0 0
0
0 0 0
0
0 0 0
0 0 BG 0
35
0 + 0
0 0
0
0 0 0
0
0 0 0
0 0 G B 0
32
+ 0 0
0 0
0
0 0 0
0
0 0 0
0 0 G B 0
54
0 0 0
0 0
0
0 0 +
0
, donde
SVD de unaA
matriz
V TB, de tamao nn:
D Ubidiagonal
0
Se puede aplicar el mtodo QR con desplazamiento a la matriz T=BTB.
Tambin se pueden aplicar una serie (tericamente infinita) de rotacion
Givens a B para hacerla diagonal:
ETSII-UPM
0
Se puede aplicar el mtodo QR con desplazamiento a la matriz
0 0
de
Tambin se pueden aplicar una serie (tericamente infinita) de rotaciones
0 0 0
Givens a B para hacerla diagonal:
0 0 0
0 0
0 0 BG +
12
0 0
0
0
0
0 0 0
+ 0 BG 0
24
0 0 0
0 0
0
0 0 0
0
0 0 0 0
0 0 G B 0
21
0 0 0
0 0
0
0 0 0
0
0 0 0
0 0 G B 0
43
0 0 0
0 +
0
0 0 0
0
+ 0 0
0 0 BG 0
13
0 0 0
0 0
0
0 0 0
0
0 0 0
0 0 BG 0
35
0 + 0
0 0
0
0 0 0
0
0 0 0
0 0 G B 0
32
+ 0 0
0 0
0
0
0 0 0
0 0 0
0 0 G B 0
54
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 Se comprueba que los elementos de la supra-diagonal tienden a cero
0 0 n-1 hasta el primero) y los de la diagonal a los valores singulares.
Recordemos las ideas el algoritmo de Jacobi para el clculo de los valores propios de matrices simtricas,
pues se hace algo parecido.
(d
93/97
Cdigo de Matlab:
function [S U V it t t1 F]=svd_GolRein_1(A)
% Se calcula al descomposicin en valores singulares, [U S V]=U*S*V=A,
%
de una matriz cualquiera m x n.
% Sigue casi exactamente el "paper" de Golub y Reinsch, "Singular Value
% Decomposition and Least Squares Solutions", Numeri. Math., 14, 1970.
c=1; s=1;
% Comienzo iteracin QR
[m n]=size(A); tol=norm(A,fro)*sqrt(eps); itr=0; tic;
for
i=l+1:k
if n>m, A=A; [m n]=size(A); itr=1; end % Necesario m>=n
g=e(i); y=q(i); h=s*g; g=c*g;
% Bidiagonaliza A por Householder: U*B_n*V = A
e(i-1)=sqrt(f*f+h*h); z=e(i-1); c=f/z; s=h/z;
[U B_n V] = bidiag_Hansen(A); t1=toc; tic;
f=x*c+g*s; g=-x*s+g*c; h=y*s; y=y*c;
q=B_n(:,1); e=[0; B_n(1:n-1,2)]; U1=eye(m); V1=eye(n);
V1(:,[i-1 i])=V1(:,[i-1 i])*[c -s;s c];
k=n; it=0;
q(i-1)=sqrt(f*f+h*h); z=q(i-1); c=f/z; s=h/z;
while k>0
% Bucle principal proceso itera.
f=c*g+s*y; x=-s*g+c*y;
caso=1;
U1(:,[i-1 i])=U1(:,[i-1 i])*[c -s;s c];
for l=k:-1:1
end
if abs(e(l)) <=tol, e(l)=0;
caso=0; break, end
e(l)=0; e(k)=f; q(k)=x;
if abs(q(l-1))<=tol, q(l-1)=0;
break, end
it=it+1;
end
end
if caso
c=0; s=1; l1=l-1; % Cancelacin columna l-1: Givens U=U*U1; V=V1*V;
S=zeros(m,n);
% Valores singulares en S y salida resul.
for i=l:k
for
i=1:n
f=s*e(i); e(i)=c*e(i);
ssn=q(i); S(i,i)=abs(ssn); if ssn<0, V(i,:)=-V(i,:); end,
if abs(f)<=tol, break, end
end
g=q(i); h=sqrt(f*f+g*g); c=g/h; s=-f/h; q(i)=h;
[q ix]=sort(diag(S),descend);
U1(:,[l1 i])=U1(:,[l1 i])*[c -s;s c];
for i=1:n, S(i,i)=q(i); end
% Valores sing. en S de + a end
ix1=1:m;
P1=eye(m);
ix1(1:n)=ix;
P1=P1(:,ix1);
U=U*P1; V=V(ix,:);
end
F=max(max(U*S*V-A)); t=toc;
% Chequeo precisin resultados
z=q(k);
% Comprobar convergencia
if itr==1, S=S; Te=U; U=V; V=Te; end % Si m<n, trasponer resultados
if l==k
if nargout==1, S=diag(S); end
if z<0, q(k)=-z; V1(:,k)=-V1(:,k); end
end
k=k-1; continue
end
x=q(l); y=q(k-1); g=e(k-1); h=e(k); % Clculo desplazami. con 2x2
f=((y-z)*(y+z)+(g-h)*(g+h))/(2*h*y); g=sqrt(f*f+1);
f=((x-z)*(x+z)+h*(y/(f+(sign(f)+(f==0))*g)-h))/x;
94/97
>> A=rand(1000);
>> A = (A - .5)*2;
Tiempos
95/97
1 0 0 0 2
Para una matriz complicada como M D 00 00 30 00 00 :
04000
>> [U S V]=svd(M)
U =
0
0
1
0
1
0
0
0
0
1
0
0
S =
4.0000
0
0
3.0000
0
0
0
0
V =
0
0
1.0000
0
0
1.0000
0
0
0
0
0
0
-1
0
0
0
2.2361
0
0
0
0
0
0
0
0
0
0.4472
0
0
0
0.8944
0
0
0
1.0000
0
-0.8944
0
0
0
0.4472
96/97
Algoritmo de Jacobi
Las races cuadradas no negativas de los valores propios de AA T son los valores
singulares de A. Utilicemos Jacobi para calcular aquellos valores propios.
>> A=[1 2 3;3 4 5;6 7 8];
>> [V D it]=Jacobi_val_12(A*A)
V =
0.7870
0.4082
-0.4625
0.0882
-0.8165
-0.5706
-0.6106
0.4082
-0.6786
D =
0.0000
1.0759
211.9241
it =
6
>> sqrt(D)
ans =
0.0000
1.0372
14.5576
Con la matriz M :
>> [V D it]=Jacobi_val_12(M*M)
V =
0.4472
0
0
0 -0.8944
0 1.0000
0
0
0
0
0 1.0000
0
0
0
0
0 1.0000
0
0.8944
0
0
0 0.4472
D =
0
0
5
9
16
it =
1
>> sqrt(D)
ans =
0
0
2.2361
3.0000
4.0000
97/97