Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1/84
2/84
ndice
Introduccin
Fundamentos tericos
Sistemas indeterminados
Mtodo de Gram-Schmidt
Factorizacin QR
Introduccin
3/84
Cualquier medida siempre est sujeta a errores, por pequeos que sean, por el
desajuste fsico de la calibracin del aparato que la realiza, su propia
imperfeccin, las condiciones ambientales, las vibraciones, el envejecimiento de
la maquinaria, etc. En el caso de datos sociales por la falta de homogeneidad de
la muestra, dispersin de la poblacin, etc.
4/84
5/84
m=n
m=n
m=n
rango(A) = m = n
rango(A) = m = n
m=n
rango(A) < m = n
rango(A) = m = n
rango(A) < m = n
1a
1b
1a
m>n
m>n
1b
m>n
m>n
rango(A) = n < m
rango(A) = n < m
m>n
m>n
rango(A) = n < m
2a
2b
2a
2b
m<n
m<n
rango(A) = m < n
m<n
rango(A) = m < n
rango(A) = m < n
3a
3a
m<n
m<n
m<n
3b
3b
=
5/101
IRUDOO [ LQ Rn
a8
7KHPRVWLPSRUWDQWDVSHFWRIWKHOHDVWVTXDUHVSUREOHPLVWKDWQRPDWWHUZKDW
[ ZH
a6
01234
VHOHFW WKHYHFWRU A[ ZLOOQHFHVVDULO\EHLQWKHFROXPQVSDFH &RO A 6RZHVHHNDQ [
WKDWPDNHV A[ WKHFORVHVWSRLQWLQ &RO A WR E 6HH)LJ 2IFRXUVH LI E KDSSHQVWREH
A WKHQ E LV A[una
IRUVRPH
[ DQGVXFKDQ
[ LVDOHDVWVTXDUHVVROXWLRQ
LQ
&RO
O
determinaremos
pseudosolucin
que cumpla
un criterio concreto: por
Ax
0
Im(A)
bk2.
Ax
Ax
T
Que minimice
aj x bj :
j D1
7/84
bj :
8/84
9/84
5
4
3
2
1
1
1
61
6
41
1
1
2
3
4
1
47
7
95
16
2 3
x1
4x2 5
x3
2 3
2
637
7
D 6
455 :
6
x
Con una tctica de ajuste por mnimos cuadrados, tambin con Matlab:
>> x=[1 2 3 4];
>> y=[2 3 5 6];
>> p=polyfit(x,y,2)
p =
-0.0000
1.4000
0.5000
10/84
11/84
0.5
1.5
2.5
3.5
4.5
12/84
13/84
14/84
Sistemas de navegacin
VOR, DME, ADF, RMI, MLS
15/84
Fundamentos tericos
Teorema
(1)
r 0
D
;
0 0
1 2 r > 0:
Si las matrices U y V se escriben como
U D u1 ; : : : ; um
y V D v1 ; : : : ; vn ;
los ui y vi son los vectores singulares izquierdos y derechos, respectivamente, correspondientes a los valores
singulares i , i D 1; : : : ; r.
16/84
1
r 0
xDV
UTb
0 0
Teorema El vector
es la solucin del problema
minimizar
kAx bk2
x 2Rn
que hace mnima kxk2 , donde A 2 Rmn y rango.A/ D r mKn.m; n/.
Definicin A la matriz
r 1 0
A DV
U T 2 Rnn
0 0
17/84
bk2 es
x D A b:
a8
a6
18/84
.AB/ B A :
D
D
D
D
A
A
AA
A A:
Las frmulas para obtener las matrices de proyeccin ortogonal sobre los cuatro
subespacios fundamentales de A son
P Im.A / D AA
P ker.A T / D I AA
P Im.A T / D A A
P ker.A /
D I
AA
donde S D fx W Ax D bg:
19/84
bk2:
20/84
21/84
a2
a 2x 2
A TAx D A T b
Ax
a 1x 1
Im(A)
a1
22/84
Si la matriz A T A es invertible,
rDb
Ax D .I
P Im.A //b;
23/84
Sistemas indeterminados
24/84
80123A
x7
0123A
x9
x7
u
x
25/84
x2
Im.A T /
1.5
(3/5, 6/5) = x
(1, 1) = x 1
subespacio de soluciones
(3, 0)
1
x1
ker.A/
x DA T AA
T
1
1
3 1
1
3=5
bD
3D
D
:
1 2
2
2
6=5
5 2
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS
Im.A T /
x2
1.5
(3/5, 6/5) = x
(1, 1) = x 1
subespacio de soluciones
(3, 0)
1
ker.A/
A minimum-norm solution.
x1
75
26/84
27/84
ndice
Introduccin
Fundamentos tericos
Sistemas indeterminados
Mtodo de Gram-Schmidt
Factorizacin QR
28/84
29/84
30/84
por lo que, a efectos numricos en esa mquina, esta matriz ser singular y de
rango 1: las ecuaciones normales no serviran.
31/84
Un ejemplo sera
2
3
1 1 1 1
60
7
6
7
6
7
AD6 0
7;
6
7
0 5
4
0
2
1
6
61
AT A D 6
41
1
1
1
1
1
1
1
1
1
1
7
17
7:
15
1
32/84
Mtodo de Gram-Schmidt
e1 D
e2
e3
a3
e3
a3
e2
e1
a 3 |e 1 e 1
e 1
e1
|
a3
a 3 a 3 |e 1 e 1 a 3 |e 2 e 2
a 3 |e 2 e 2
33/84
34/84
u.j; j /
v
uX
u m
t
e.k; j /2
kD1
e.1 W m; j /
end
e.1 W m; j /=u.j; j /
35/84
36/84
Gram-Schmidt modificado
37/84
En 1966 J.R. Rice modific el orden de las operaciones del mtodo haciendo
que en una etapa k en vez de sustraer del vector ak sus proyecciones sobre los
k 1 vectores e i ya calculados, el vector e k se hace igual a ak al principio y
luego se le van sustrayendo su proyeccin en e 1, pasando el resultado a ser el
nuevo e k , el cual se proyecta luego en e 2, y as sucesivamente en cada uno de
los k 1 e i anteriores.
El resultado es sustancialmente mejor numricamente.
Algoritmo clsico de Gram-Schmidt
for j D 1 to n
e.1 W m; j /
a.1 W m; j /
for i D 1 to j 1
u.i; j /
e.1 W m; i /T a.1 W m; j /
e.1 W m; j /
e.1 W m; j / u.i; j / e.1 W m; i /
end
v
uX
u m
t
e.k; j /2
u.j; j /
kD1
e.1 W m; j /
end
e.1 W m; j /=u.j; j /
e.1 W m; j /
end
e.1 W m; j /=u.j; j /
38/84
39/84
[m, n] = size(A);
Q = zeros(m,n);
R = zeros(n);
[m, n] = size(A);
Q = zeros(m,n);
R = zeros(n);
for j=1:n
R(j,j) = norm(A(:,j));
Q(:,j) = A(:,j)/R(j,j);
R(j,j+1:n) = Q(:,j)*A(:,j+1:n);
A(:,j+1:n) = A(:,j+1:n) - Q(:,j)*R(j,j+1:n);
end
for j=1:n
R(1:j-1,j) = Q(:,1:j-1)*A(:,j);
temp = A(:,j) - Q(:,1:j-1)*R(1:j-1,j);
R(j,j) = norm(temp);
Q(:,j) = temp/R(j,j);
end
40/84
41/84
% Ortogonalidad matriz e
% Ortogonalidad matriz e
>> Script_GRSCH_1
ans = 4.7537e+08
Clsico:
x =
1.1983
-7.1874
81.7515
-318.3887
594.3144
-517.0744
172.5582
e =
0.8133
-0.5438
0.1991
0.4067
0.3033
-0.6886
0.2711
0.3939
-0.2071
0.2033
0.3817
0.1124
0.1627
0.3514
0.2915
0.1356
0.3202
0.3892
0.1162
0.2921
0.4407
ans = 870.8917
ortogonalidad = 0.6954
Modificado:
x =
1.0052
0.7926
3.0065
-6.8260
15.3845
-11.4559
5.0969
e =
0.8133
-0.5438
0.1991
0.4067
0.3033
-0.6886
0.2711
0.3939
-0.2071
0.2033
0.3817
0.1124
0.1627
0.3514
0.2915
0.1356
0.3202
0.3892
0.1162
0.2921
0.4407
ans = 21.0752
ortogonalidad = 1.9358e-08
-0.0551
0.4760
-0.4901
-0.4396
-0.1123
0.2309
0.5206
0.0120
-0.1974
0.6108
-0.2542
-0.4992
-0.1506
0.5013
-0.0020
0.0541
-0.3269
0.6411
-0.2022
-0.5418
0.3805
-0.0011
0.0298
-0.1579
0.1833
0.3445
-0.8078
0.4115
-0.0551
0.4760
-0.4901
-0.4396
-0.1123
0.2309
0.5206
0.0120
-0.1974
0.6108
-0.2542
-0.4992
-0.1506
0.5013
-0.0020
0.0541
-0.3269
0.6410
-0.2022
-0.5418
0.3805
0.0002
-0.0091
0.0907
-0.3626
0.6800
-0.5984
0.1995
42/84
Factorizacin QR
Qbk2 D kQ.Ax
b/k2 D kAx
bk2:
43/84
bk2 D kQAx
q
kR 1x
D
R 1x c
Qbk2 D
d
44/84
kR 1x
ck22 C kdk22:
45/84
R tiene todos los elementos de su diagonal principal positivos y es igual al que resulta de
la factorizacin de Cholesky, G T G , de A T A.
46/84
Transformaciones de Householder
Definicin Se denomina transformacin o reflexin de Householder a una transformacin lineal de Rn en Rn caracterizada por una matriz H nn de Householder de la forma
H D I 2wwT donde w 2 Rn ; kwk2 D 1, es el vector de Householder.
D
D
2.wwT /T D I
2.wT /T wT D I
2wwT D H . Como
47/84
7 w 9a
0120w 445
Ha
7 w 9a
En efecto
H a D .I
2wwT /a D a
2wwT a D a
2.wT a/w:
Comprobmoslo:
y
/T x
p x Ty
D
.I 2ww /x D x 2 p
.x y /T .x y /
.x y / .x y /
T
x x yT x
= x 2 .x y /T .x y / .x y/
T
x x yT x
= x 2 2.x T x y T x / .x y/ D y .
T
.x
y/T .x
y/ D x T x y T x x T y C y T y
D 2.x T x y T x/;
pues x T x D y T y y y T x D x T y.
48/84
49/84
y.
6
678
3
01203445
8
50/84
La figura representa los cuatro pasos del proceso de reducir una matriz A 64
a una triangular superior R 64.
A0
2222
0 222
0 222
0 222
0 222
0 222
A1
2222
0
0 0
0 0
0 0
0 0
A2
2222
0
0 0
0 0 0
0 0 0
0 0 0
A3
2222
0
0 0
0 0 03
0 0 0 0
0 0 0 0
A4
51/84
D a1k
D
::: a2k
q
2
2
2
C akC1k
C C amk
D akk
D
::: 0
D 0:
OJO signos!
2
2
2
Como y12 C y22 C C ym2 D a1k
C a2k
C C amk
,
y/=kak
yk2.
52/84
x2
w
w alt
y
a1 y
a1
a1 + y
x1
Con el criterio apuntado, la transformacin que hay que usar es la que define w,
que convierte a en y 0. Su primer coeficiente es w1 D a1 . y1/ D a1 C y1; el
segundo, el de a en x2.
53/84
54/84
Mediante transformaciones
la matriz A a una
h i de Householder sereduce
c
triangular superior R 1 y el vector b a otro d
0
El algoritmo:
Householder
Pm
2
w.j W m/
a.j W m; j /; w.j /
w.j / C ; D 2
kDj w .k/; a.j; j /
for l D j C 1 to n
a.j W m; l/
a.j W m; l/ w.j W m/ w T .j W m/ a.j W m; l/
end
Transformacin del vector b.
b.j W m/
b.j W m/ w.j W m/ w T .j W m/ b.j W m/
end
Resolucin del sistema
D b.
Rx P
n
for j D n to 1, x.j /
b.j /
a.j; j /, end
kDj C1 a.j; k/ x.k/
ResiduosPal cuadrado.
m
2
rescua
kDnC1 b .k/
55/84
function [x r2 Q R]=Qrdes_3(A,b)
% Resolucin de Ax=b mediante transformaciones de Householder; calcula Q y R
[m n]=size(A); x=zeros(n,1); Q=eye(m);
for j=1:n
w=Housv(A(j:m,j));
% Householder de a(j:m,j)
A(j:m,j:n)=A(j:m,j:n)-2*w*(w*A(j:m,j:n));
b(j:m)=b(j:m)-2*w*(w*b(j:m));
Qk=eye(m);
Qk(j:m,j:m)=eye(m+1-j)-2*(w*w);
Q=Qk*Q;
end
for i=n:-1:1
% Rx=b
x(i)=(b(i)-x(i+1:n)*A(i,i+1:n))/A(i,i);
end
r2=norm(b(n+1:m))^2;
% Residuos al cuadrado
R=triu(A); Q=Q;
% Matrices R y Q
end
function w = Housv(x)
% Transformacin de Householder del vector x.
m=max(abs(x)); w=x/m;
sw=1; if w(1)<0, sw=-1; end
w(1)=w(1)+sw*norm(w);
w=w/norm(w); w=w(:);
end
El vector de residuos,
6
6
rD6
4
3
0,1
7
0,37
7;
0,35
0,1
56/84
c
se puede obtener, si el algoritmo ha transformado b en d , sin ms que hacer:
0
r
d
for k D n to 1
r
H kr
end
57/84
Paso 2 La matriz original A ser A D R T ; 0T QT .
Si se sustituye en la ecuacin Ax D b, se tendr que
T
R ; 0T QT x D b:
R T zR D bR ;
58/84
59/84
0
mr
60/84
R 11 R 12
r
c
r
y Qb D
;
0 R 22
m r
d m r
r n r
61/84
b)
nr
0
0
0 0
0 0
0
0
0 0
0 0
0
0
0
0
0 0
0 0
62/84
bk2 D k.QAP/.P T x/
Qbk2:
63/84
En Matlab:
function [x r res]=Mincua_QR(A,b)
% Resolucin de Ax=b general mediante transformaciones de Householder
%
Posible rango incompleto r
[m n]=size(A); x=zeros(n,1); tol=sqrt(eps); W=zeros(n,m); ip=1:n; r=n;
for j=1:n
jm=j; c=0;
for k=j:n
h=norm(A(j:m,k));
if h>c, c=h; jm=k; end
end
if jm~=j, A(:,[j jm])=A(:,[jm j]); ip([j jm]) = ip([jm j]); end
if j==m, break, end
w=Housv(A(j:m,j));
% Householder de A(j:m,j); luego a A y b
A(j:m,j:n)=A(j:m,j:n)-2*w*(w*A(j:m,j:n)); b(j:m)=b(j:m)-2*w*(w*b(j:m));
end
for j=1:n
% Ver rango
if abs(A(j,j))<=tol, r=j-1; break, end
end
res=norm(b(r+1:m))^2; w1=zeros(r,n-r+1);
W(1:n,1:r)=A(1:r,1:n);
% Trasp. de A = W
if r~=n
for i=r:-1:1
w1(i,1:n-r+1)=Housv([W(i,i);W(r+1:n,i)]);
% Householder hacia W
W([i r+1:n],i:-1:1)=W([i r+1:n],i:-1:1)-2*w1(i,:)*(w1(i,:)*W([i r+1:n],i:-1:1));
end
end
for i=r:-1:1
% Resol. Wx=c
x(i)=(b(i)-x(i+1:r)*W(i+1:r,i))/W(i,i);
end
if r~=n
x(r+1:n)=0;
% Aplicar a x ultimas Householder hacia W
for i=1:r, x([i r+1:n])=x([i r+1:n])-2*w1(i,:)*(w1(i,:)*x([i r+1:n])); end
end
x(ip)=x(:);
% Deshacer perm. col.
end
>> x-pinv(A)*b
ans = 1.0e-015 *
-0.111022302462516
0.333066907387547
0.194289029309402
-0.333066907387547
0.166533453693773
-0.943689570931383
0.499600361081320
64/84
65/84
66/84
Transformaciones de Givens
donde c 2 C s 2 D 1.
s
::
:
c
1
::
:
1
7
7
7
7
7
7
7
7
7
7
7
7
5
i
j
67/84
6
6
6
6
6
6
6
G .i; j /x D 6
6
6
6
6
6
4
x:1
::
xi 1
xi cos C xj sen
xiC1
::
:
xj 1
xi sen C xj cos
xj:C1
::
xn
3
7
7
7
7
7
7
7
7
7
7
7
7
7
5
68/84
s D sen D
x
q j
:
xi2 Cxj2
....
....
....
....
....
....
...
...
...
...
..
..
...
...
...
..
..
..
..
..
..
..
..
..
..
..
..
...
...
...
...
...
..
..
..
1
...........................
.....
...
..
...
...
..
..
...
..
..
.
.
.
.
.
.
.
.
.
...........
x
69/84
70/84
Como el ngulo que hay que rotar x es 45, la matriz de Givens que hay que
utilizar es,
2
3
1
0
p0 7
6 p
G .2; 3/ D 40 p2=2 p2=25 :
0
2=2 2=2
2 3
1
p
G x D x 0 D 4 25 :
0
p
La norma eucldea de ste y del original es 3.
71/84
2
AD4
3
5
en
6 0
RD4 0 0
0 0
22
0
A 1 D G .1; 2/A D 4
2
5
60
A 3 D G .1; 4/A 2 D 4 0
0
2
5
60
A 5 D G .2; 4/A 4 D 4 0
0
7
5,
0
2
3
2 2 3
2 2 5
4 0 2 2 5;
; A 2 D G .1; 3/A 1 D
0 2 2
5
5
0
0
5
27
60
2 5 ; A 4 D G .2; 3/A 3 D 4 0
2
0
3
2
5
5
57
60
5 ; A 6 D G .3; 4/A 5 D 4 0
0
5 5
2
2
2
5 5
0
5
5
0
0
7
5;
3
5
57
55 :
0
Los smbolos 2, y 5 indican que el coeficiente al que se hace referencia ha experimentado 1, 2 3 transformaciones
desde su valor inicial .
72/84
end
Residuos al cuadrado.
m
X
rescua
b 2 .k/
kDnC1
aux
73/84
En Matlab:
function [x r2]=Givens(A,b)
% Resolucin de Ax=b mediante transformaciones de Givens
[m,n]=size(A); x=zeros(n,1);
for i=1:n
% Factorizacin de A
for k=i+1:m
if 1+abs(A(k,i))==1, continue, end
if abs(A(k,i))>=abs(A(i,i))
t=A(i,i)/A(k,i); s=1/sqrt(1+t*t);
c=s*t;
else
t=A(k,i)/A(i,i); c=1/sqrt(1+t*t);
s=c*t;
end
A(i,i)=c*A(i,i)+s*A(k,i);
q(i+1:n)=c*A(i,i+1:n)+s*A(k,i+1:n);
A(k,i+1:n)=-s*A(i,i+1:n)+c*A(k,i+1:n);
A(i,i+1:n)=q(i+1:n);
q1=c*b(i)+s*b(k);
% Transformar b
b(k)=-s*b(i)+c*b(k);
b(i)=q1;
end
end
for i=n:-1:1
% Sustitucin inversa
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end
r2=norm(b(n+1:m))^2;
% Residuos al cuadrado
end
74/84
75/84
Como D
1=2
es la factorizacin QR de A.
1=2
1=2
1
1 2
Si se eligen adecuadamente una matrices M 1 D 1
y M2 D
,
1 1
2 1
que cumplan que 1 i i 0, denominadas transformaciones rpidas de
Givens, una reordenacin de los clculos de la factorizacin puede conseguir la
velocidad de las transformaciones de Householder con las ventajas de las de
Givens.
76/84
77/84
1
62
6
63
6
44
5
6
7
8
9
10
3
11 2 3
127
7 x1
4 5
137
7 x2 D
145 x3
15
x
2 3
5
657
6 7
657 :
6 7
455
5
La descomposicin es
A D U V T
" 0;3546
D
0;3987
0;4428
0;4870
0;5311
0;2017
0;5168
0;8320
0;6887
0;3756
0;0624
0;2507
0;5638
0;8903
0;2573
0;3757
0;5700
0;7455
0;1702
0;2966
0;0490
0;4082
0;8165
0;4082
0;1764
0;2235
0;3652
0;7652
0;4472
0;2096
0;3071
0;7985
0;1627
0;4445
# "35;1272
0
0
0
0
0
2;4654
0
0
0
0
0
0;0000
0
0
78/84
0;3757
0;5
79/84
Operaciones
mn2
C
2
2
n3
6
n3
3
2 3
n
3
mn
2mn2
mn2
mn2
2mn2 C 4n3
mn2 C 17
n3
3
80/84
81/84
El operador n
La descomposicin QR
El mtodo de Gram-Schmidt
La matriz pseudoinversa,
82/84
El diary de Matlab:
>> x0=0.01;
>> x=linspace(x0,2,300);
>> y=5*x.*exp(-3*x);
>> yn=abs(y+0.05*(rand(size(x))-0.5));
>> v=log(yn./x);
>> x=x(:); v=v(:);
>> A=[ones(size(x)) x];
>> c=A\v
c =
1.6443
-3.0579
>> G=chol(A*A);
>> c1=G\(G\(A*v));
>> c1
c1 =
1.6443
-3.0579
>> [Q,R]=qr(A,0);
>> c2=R\(Q*v)
c2 =
1.6443
-3.0579
>> [Q,R]=gs_m(A);
>> c3=R\(Q*v)
c3 =
1.6443
-3.0579
>> format long
>> c4=pinv(A)*v
c4 =
1.64428682050583
-3.05786465731645
>> [U S V]=svd(A);
>> c5=V\(S\(U\v))
c5 =
1.64428682050583
-3.05786465731645
% Ecuaciones normales
% Segunda respuesta
% Factorizacin QR
% Tercera respuesta
% Gram-Schmidt modi.
% Cuarta respuesta
% Matriz pseudoinversa
% Quinta respuesta
% Descomposicin val. sing.
% Sexta respuesta
function demoXexp(n)
% demoXexp
Ajuste datos sintticos a y = c(1)*x*exp(c(2)*x)
%
% Dato: n = (opcional) nmero de puntos sintticos a generar.
%
defecto=200
%
if nargin<1, n=200; end
x0=0.01;
x=linspace(x0,2,n);
y=5*x.*exp(-3*x);
yn=abs(y+0.05*(rand(size(x))-0.5));
v=log(yn./x);
x=x(:); v=v(:);
A=[ones(size(x)) x];
c=A\v;
c1 = %18.15f c2 = %18.15f\n,...
c1 = %18.15f c2 = %18.15f\n,exp(c2(1)),c2(2));
% Gram.Schmidt modificado
[Q,R]=gs_m(A);
c3=R\(Q*v);
fprintf(con [Q,R]=gr_m(A);
c1 = %18.15f c2 = %18.15f\n,exp(c3(1)),c3(2));
% Matriz pseudoinversa
c4=pinv(A)*v;
fprintf(con pinv(A)*b;
c1 = %18.15f c2 = %18.15f\n,exp(c4(1)),c4(2));
83/84
84/84
0.6
0.5
c1 = 5.6363 c2 = 3.1949
0.4
100 puntos "sintticos"
0.3
0.2
0.1
0.2
0.4
0.6
0.8
1
x
1.2
1.4
1.6
1.8