Está en la página 1de 84

Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales

Grado en Ingeniera en Tecnologas Industriales. Curso 2015-2016-3


Matemticas de EspecialidadIngeniera Elctrica

Mnimos cuadrados lineales

Jos Luis de la Fuente OConnor


jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_mincua_lineal_2016.pdf

1/84

2/84

ndice
 Introduccin
 Fundamentos tericos


Sistemas incompatibles. Ecuaciones normales

Sistemas indeterminados

 Resolucin numrica del problema




Mtodo de Gram-Schmidt

Mtodo de Gram-Schmidt modificado

Factorizacin QR

Descomposicin numrica en valores singulares

Comparacin de los mtodos

 Matlab y la solucin de problemas de mnimos cuadrados

Introduccin

3/84

Muchos modelos matemticos modernos, especialmente aquellos que usan


tcnicas de estimacin y regresin, se han convertido en herramientas
fundamentales en la ciencia, la ingeniera, el marketing y la toma de decisiones.

Para dotarse de datos a gran escala o conocer y controlar en tiempo real el


estado y funcionamiento de diversos sistemas de operacin, control y prediccin
es necesario primero tomar medidas adecuadamente de los mismos y
posteriormente actuar a partir de determinados modelos o estimadores.

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

Par mitigar el efecto de esos errores, aislarlos, identificarlos y filtrarlos se toma


un nmero de medidas de los parmetros que definen un sistema bastante
mayor del estrictamente necesario redundante.

La redundancia de medidas conduce normalmente, en los modelos matemticos


que determinan cmo se relacionan los parmetros y variables de
funcionamiento de un sistema, a sistemas de ecuaciones incompatibles: con
muchas ms ecuaciones que incgnitas.
La falta de suficientes medidas, lleva a sistemas indeterminados.

Para obtener la solucin ms probable que represente un sistema y que mejor se


aproxime a la ideal si no se diesen esos errores, se proyecta el problema en un
subespacio de menor dimensin para filtrar o aislar los datos irrelevantes.


La proyeccin ms comn es la ortogonal, que determina el mtodo de los


mnimos cuadrados (ver teorema de la proyeccin).

5/84

Casos posibles de sistemas lineales, una vez ms


 Casos posibles de sistemas lineales, una vez ms
m=n

m=n

m=n
m=n

rango(A) = m = n

rango(A) = m = n

m=n

rango(A) < n < m


rango(A) < n < m

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

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

rango(A) < m < n

rango(A) < m < n

m<n

rango(A) < m < n

3b

3b

=
5/101

DULVHVIURPWKHIDFWWKDW kE # A[k LVWKHVTXDUHURRWRIDVXPRIVTXDUHV


6/84

Estudiaremos pues problemas sin solucin, en los que rango.Ajb/ rango.A/


,I A bLV mIm.A/.
! n DQG E LVLQ Rm  D OHDVWVTXDUHVVROXWLRQ RI A[ D E LVDQ [O LQ Rn
pues
VXFKWKDW
kE # AO[k % kE # A[k
b

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

ejemplo, el de minimizar la norma kAx

Ax

0
Im(A)

bk2.

Ax

Ax

'*(63&  7KHYHFWRU E LVFORVHUWR AO[ WKDQ

Tambin problemas con muchas soluciones, de las que:





Se escoge aquella x cuya norma eucldea, kxk2, es mnima.

Se estudia otro tipo de solucin; por ejemplo:


m

T
 Que minimice
aj x bj :
j D1

7/84

Que minimice mKax ajT x


j

bj :

El hecho de que se minimice la norma eucldea raiz cuadrada positiva de la


suma de los cuadrados de las desviaciones entre dos vectores de valores reales
es lo que da nombre a los procedimientos para resolver esos problemas: mnimos
cuadrados. Formalmente es:
Dada una matriz A 2 Rmn, de rango k  mKn.m; n/, y un vector b 2 Rm,
encontrar un vector x 2 Rn que minimice kAx bk2.

8/84

El ejemplo por excelencia de las tcnicas de mnimos cuadrados consiste en


ajustar a un conjunto de m pares de puntos .ti ; bi / una funcin f .x; t / de n
parmetros independientes x1; x2 : : : xn.


Los pares de puntos los pueden definir unas mediciones, bi , obtenidas en


unos tiempos, ti .

Si la funcin es lineal en x1; : : : ; xn se tiene un problema de mnimos


cuadrados lineales en el que,
si los n parmetros se disponen como los coeficientes de un vector
n-dimensional, x, y
los datos obtenidos, en otro vector m-dimensional b (usualmente
m  n),

se llega a una relacin de la forma Ax D b, donde A 2 Rmn, x 2 Rn y


b 2 Rm .

9/84

Ejemplo Supongamos que queremos ajustar al conjunto de pares de puntos


f.ti ; bi /g = f.1; 2/; .2; 3/; .3; 5/; .4; 6/g la funcin
f .x1; x2; x3; t / D x1 C x2t C x3t 2;
segn representa la figura.
b
f (x 1 , x 2 , x 3 , t ) = x 1+ x 2 t + x 3 t 2

5
4
3
2
1
1

Para los datos y parmetros de este ejemplo el sistema Ax D b es as:


2

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


Resolver este problema en la zona de trabajo de Matlab sera trivial:


>> Am=[1 1 1;1 2 4;1 3 9;1 4 16];
>> b=[2 3 5 6];
>> Am\b
ans =
0.50000000000000
1.40000000000000
-0.00000000000000

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

Si se quiere profundizar un poco en el problema dibujando los datos y la funcin


ajustada, habra que hacer:
>> x1=linspace(0,5,150);
>> y1=polyval(p,x1);
>> plot(x,y,o,x1,y1,-)

Los resultados son los de la figura.


8

0.5

1.5

2.5

3.5

4.5

La lnea recta y D 0; 5 C 1; 4t, en verde, y los puntos a los que se ajusta, en


azul.

12/84

Otros muchos sistemas de la ciencia, ingeniera, economa, etc. recurren a


modelos de mnimos cuadrados.

13/84

Sistemas de prediccin a partir de datos masivos

14/84

Sistemas de navegacin
VOR, DME, ADF, RMI, MLS

15/84

Fundamentos tericos
Teorema

Descomposicin en valores singulares Si A 2 Rmn es una matriz de rango r, existen


matrices ortogonales U 2 Rmm y V 2 Rnn tales que
A D U V T ;
donde

2 Rmn y r D diag.1 , 2 ; : : : ; r /, con

(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

se la denomina matriz pseudoinversa o inversa generalizada Moore-Penrose de A.

17/84

De acuerdo con esa definicin, la solucin de mKnx 2Rn kAx

bk2 es

x D A b:


Adems, de acuerdo con el Teorema de la Proyeccin, se cumple que


b

a8

x ? ker.A/ y que Ax D P Im.A /b;


01234

a6

donde P Im.A /b es la proyeccin ortogonal de b sobre Im.A/, paralelamente a


ker.A T /.

Obsrvese que .A T / D .A /T ; en general,

18/84

.AB/ B A :

La matriz pseudoinversa satisface las denominadas condiciones de Penrose:


AA A
A AA
.AA /T
.A A/T

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

Dos casos de matriz pseudoinversa son fundamentales:


a) Si A 2 Rmn, m  n y rango.A/ D n,
A D .A T A/ 1A T :
b) Si A 2 Rmn, m  n y rango.A/ D m,
A D A T .AA T / 1:
a) es el problema de mnimos cuadrados resultante de un sistema de
ecuaciones incompatible, con matriz de rango completo.
b) es el de un sistema de ecuaciones compatible indeterminado con matriz
de rango completo: resuelve este problema:
minimizar kxk2;
x 2S

donde S D fx W Ax D bg:

19/84

Sistemas incompatibles. Ecuaciones normales




Si se tiene una ecuacin Ax D b, A 2 Rmn, que no tiene solucin pues


b Im.A/, se puede buscar una pseudosolucin, x, que acerque Ax lo ms
posible a b en el sentido de la k  k2, es decir,
mKn kAx
x 2Rn

bk2:

Teorema Sean X e Y dos espacios vectoriales de dimensiones finitas n y m sobre


el cuerpo R y A una transformacin lineal representada en dos bases de X e Y por la
matriz A. Para un vector dado b 2 Y , el vector x 2 X minimiza kAx bk2 si y slo si
A T Ax D A T b.
I D EMOSTRACIN . Sean Im.A/ D fAx W x 2 Rn g y ker.A/ D fx W Ax D 0g.
El complemento ortogonal del conjunto Im.A/ ser:
.Im.A//? D fr W r T z D 0; 8z 2 Im.A/g D fr W r T A D 0T g
D fr W A T r D 0g D ker.A T /:
O 2 , donde bO 2 Im.A/.
El problema planteado es obviamente equivalente a minimizar kb bk
O
Por el teorema de la proyeccin, b es un vector que minimiza la norma anterior si y slo si b bO 2
O D A T b A T Ax.
.Im.A//? ; es decir, si b bO 2 ker.A T /, o de forma equivalente, 0 D A T .b b/

20/84

21/84

La representacin geomtrica en tres dimensiones es esta.


b
r = b Ax (Im(A)) A T (b Ax ) = 0

Al sistema de ecuaciones que define la relacin

a2
a 2x 2

A TAx D A T b
Ax

a 1x 1
Im(A)

se le denomina ecuaciones normales.

a1

El vector de residuos, r D b Ax, es ortogonal a Im.A/ y a los vectores que


lo definen: a1 y a2. Es decir, se cumple que A T .Ax b/ D 0.

22/84

El vector solucin de las ecuaciones normales, x, es nico si A T A es invertible


(si y slo si la transformacin lineal A es inyectiva: rango.A/ D n); en este caso
x D .A T A/ 1A T b:

Si la matriz A T A es invertible,
rDb

Ax D .I

P Im.A //b;

donde P Im.A / D A.A T A/ 1A T es la matriz de proyeccin ortogonal sobre


Im.A/ paralelamente a ker.A T /.

23/84

Sistemas indeterminados


Si el sistema tiene ms de una solucin, siempre se puede calcular aquella de


menor norma eucldea.
Teorema Sean X e Y dos espacios vectoriales de dimensiones n y m sobre el cuerpo
R y A una transformacin lineal representada en dos bases de X e Y por la matriz A.
El vector x de norma eucldea mnima que satisface la ecuacin Ax D b es el dado por
x D A T z, donde z es una solucin de la ecuacin AA T z D b.

I D EMOSTRACIN . Si x 1 es una solucin de la ecuacin Ax D b, cualquier solucin de la misma se


puede expresar como x D x 1 C u, donde u 2 ker.A/; es decir, estar en la variedad lineal x 1 C ker.A/.
El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su
norma kxk2 es mnima y adems pertenece a .ker.A//? .
Como x 2 .ker.A//? , pertenecer a Im.A T /, es decir, se podr expresar como x D A T z para algn
z 2 Y . Como Ax D b, entonces
AA T z D b:

24/84

Cuando la matriz AA T es invertible, la solucin ptima es


x D A T .AA T / 1b:
La interpretacin geomtrica de este resultado en R3 se esquematiza as:

80123A

x7

0123A

x9

x7

u
x

25/84

Ejemplo Se quiere obtener la solucin


de norma eucldea mnima de la


 x1
ecuacin indeterminada 1 2
D 3.
x2

Cualquier solucin se podr expresar como x 1 C ker.A/, donde x 1 es cualquier



T
vector solucin (por ejemplo 1 1 ) y ker.A/ es el que se ve
en la figura.
75
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS

x2



Im.A T /

1.5
(3/5, 6/5) = x


(1, 1) = x 1

subespacio de soluciones
(3, 0)
1

x1



ker.A/


 La solucin que se busca es Figure 2.1 A minimum-norm solution.


 
  1
   

 1
3 1
1   1
0;6

La solucin que se busca es




x DA T AA


T

Se ve que est en Im.A 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/


 La solucin que se busca es Figure 2.1

A minimum-norm solution.

x1



75

26/84

27/84

ndice
 Introduccin
 Fundamentos tericos

Sistemas incompatibles. Ecuaciones normales

Sistemas indeterminados

Resolucin numrica del problema




Mtodo de Gram-Schmidt

Mtodo de Gram-Schmidt modificado

Factorizacin QR

Descomposicin numrica en valores singulares

Comparacin de los mtodos

 Matlab y la solucin de problemas de mnimos cuadrados

28/84

Resolucin numrica del problema




Mediante las ecuaciones normales, con cualquiera de los mtodos estudiados


para sistemas con matriz cuadrada y simtrica:



A TAx D A T b, en el caso de que el sistema fuese incompatible, o a

AA Tz D b, cuando se diese un sistema indeterminado.

Los nmeros de condicin, 2, de AA T y A T A, son el cuadrado del de la


matriz A, por lo que si el problema originalmente no est bien condicionado, las
dificultades numricas pueden resultar insalvables al resolver el sistema
correspondiente.

29/84

Ejemplo Consideremos la matriz


2
3
1 1 1 1 1
6"
7
6
7
6
7
6 "
7
AD6
7:
"
6
7
6
7
4
" 5
"

El rango de A es 5, para " 0. La matriz


2
3
2
1C"
1
1
1
1
6 1
1 C "2
1
1
1 7
6
7
6
7
AT A D 6 1
1
1 C "2
1
1 7
6
7
1
1
1 C "2
1 5
4 1
1
1
1
1
1 C "2
tambin es de rango 5, para " 0.

30/84

El nmero de condicin 2.A T A/ D 2.A/2 D .5 C "2/="2.

Si " es mayor que la precisin de la mquina pero "2 no (por ejemplo, si


" D 0,5  10 5, "2 D 0,25  10 10 y la precisin de la mquina
 D 1,0  10 10), la representacin interna de la matriz A T A ser
2
3
1 1 1 1 1
61 1 1 1 17
6
7
6
7
61 1 1 1 17
6
7
41 1 1 1 15
1 1 1 1 1

por lo que, a efectos numricos en esa mquina, esta matriz ser singular y de
rango 1: las ecuaciones normales no serviran.

31/84

Otro aspecto importante que aconseja tener mucho cuidado al utilizar A T A


AA T , nace del hecho de que aun cuando la matriz original A tenga muchos
elementos cero, A T A o AA T pueden ser totalmente densas.

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

Obtiene una base ortonormalizada del subespacio Im.A/.




Jorgen Pedersen Gram, Dinamarca,


1850-1916 y Erhard Schmidt, Alemania, 1876-1959.

Comienza normalizando el primer vector columna de la matriz, a1:


e 1 D a1=ka1k2.

A continuacin se sustrae del vector a2 su coeficiente en la direccin de e 1,


ha2je 1ie 1, resultando un vector ortogonal a e 1, el cual a su vez se
normaliza: : :
El proceso contina con los dems vectores columna de A.

El nmero de operaciones del mtodo es O.mn2/ sumas+restas y


multiplicaciones+divisiones y O.n/ races cuadradas.

Los diversos vectores ortonormales de la base de Im.A/ se obtienen as:


a1
I
ka1 k2
a2 ha2 je 1 ie 1
D
I
ka2 ha2 je 1 ie 1 k2
a3 ha3 je 1 ie 1 ha3 je 2 ie 2
D
I
ka3 ha3 je 1 ie 1 ha3 je 2 ie 2 k2
::
:

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

El algoritmo para una matriz general A mn es el siguiente.


 Ortogonalizacin de A por 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

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

El algoritmo hace A D E U , donde E mn es la matriz de columnas e i y U nn


la matriz triangular superior de los productos interiores auxiliares uij .


Sustituyendo esta expresin de A en las ecuaciones normales,


A T Ax D A T b, resulta que
U T ET EU x D U T ET b
y, por fin, dado que E T E D I,
U x D E T b:
Un sistema triangular superior.

En condiciones adecuadas, por consiguiente, el mtodo de Gram-Schmidt podra


valer para resolver un problema lineal de mnimos cuadrados.

36/84

Gram-Schmidt modificado

John R. Rice, EE.UU. 1934-.

En la prctica se va perdiendo ortogonalidad en los vectores e i por errores


numricos y, especialmente, si alguno de los vectores columna aj est prximo
al subespacio generado por los vectores anteriores e 1; : : : ; ej 1.
Pj 1
En ese caso, los sumandos de la expresin aj
i D1 haj je i ie i pueden llegar a
ser muy pequeos, o muy distantes unos de otros pero con un resultado final
que puede ser muy pequeo, por lo que el error numrico que se va produciendo
es relativamente grande. Al dividir el resultado por su norma (tambin muy
pequea) los errores se amplificarn an ms.

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 /

 Algoritmo modificado 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  e.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 /

38/84

La versin clsica y modificada en Matlab son estas.


function [x r2 e]=Grmsch_3(A,b)
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt modificado
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); u=triu(zeros(n,n));
for j=1:n
e(:,j)=A(:,j);
for i=1:j-1
function [x r2 e]=Grmsch_2(A,b)
u(i,j)=e(:,i)*e(:,j);
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt clsico
e(:,j)=e(:,j)-u(i,j)*e(:,i);
[m,n]=size(A); x=zeros(n,1); e=zeros(m,n); u=triu(zeros(n,n));
end
for j=1:n
u(j,j)=norm(e(:,j));
e(:,j)=A(:,j);
e(:,j)=e(:,j)/u(j,j);
for i=1:j-1
end
u(i,j)=e(:,i)*A(:,j);
for i=n:-1:1
% Rx=b
e(:,j)=e(:,j)-u(i,j)*e(:,i);
x(i)=(e(:,i)*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end
end
u(j,j)=norm(e(:,j));
r2=norm(abs(A*x-b),2)^2;
% Residuos^2
e(:,j)=e(:,j)/u(j,j);
end
end
for i=n:-1:1
% Rx=b
x(i)=(e(:,i)*b-u(i,i+1:n)*x(i+1:n))/u(i,i);
end
r2=norm(abs(A*x-b),2)^2;
% Residuos^2
end

39/84

El cara a cara del clsico y el modificado en un Matlab supercompacto es este.


function [Q, R] = gs_m(A)

function [Q, R] = gs_c(A)

[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

>> n=7; A=hilb(n);


>> [Q, R]=gs_c(A);
>> norm(Q*Q-eye(n))
ans =
0.156453367259543
>> [Q1, R]=gs_m(A);
>> norm(Q1*Q1-eye(n))
ans =
1.090139262380597e-009
>> cond(A)
ans =
4.753673562966472e+008

40/84

Si resolvemos el ejemplo inicial.


>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r2]=Grmsch_3(A,b)
% MODIFICADO
x =
0.5000
1.4000
-0.0000
r2 =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

41/84

% Script_GRSCH_1.m_Script de Ortogonalidad Gram Schmidt clsico y modificado


format short
n=7; A=hilb(n);
% Matriz de Hilbert (muy mal condicionada)
cond(A), pause
b=A*ones(n,1);
% Trmino independiente para x=1.
disp(Clsico:), [x r2 e]=Grmsch_2(A,b);
% Gram Schmidt clsico
x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
ortogonalidad=norm(e*e-eye(n)), pause

% Ortogonalidad matriz e

disp(Modificado:), [x r2 e]=Grmsch_3(A,b);% Gram Schmidt modificado


x, pause, e, pause, norm(abs(x-ones(n,1)),2), pause
ortogonalidad=norm(e*e-eye(n))

% 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


Las transformaciones ortogonales conservan la norma eucldea; esto es, si Qnn


es una matriz ortogonal y x un vector n-dimensional, se cumple que
kQxk2 D kxk2:
p
p
p
T
T
En efecto, kQxk2 D hQxjQxi D x Q Qx D x T x D kxk2:

Segn esto, si Q es una matriz ortogonal, al premultiplicar el vector Ax


por ella, su norma eucldea queda igual:
kQAx

Qbk2 D kQ.Ax

b/k2 D kAx

bk2:

La idea es usar transformaciones ortogonales para convertir el problema en otro


ms sencillo de resolver numricamente.

43/84

Si A 2 Rmn, m > n, b 2 Rm, rango.A/ D n y se han efectuado una serie de


transformaciones ortogonales que refleja un matriz ortogonal Q 2 Rmm tal que
 
R1
n
QA D R D
0 m n
y R 1 es triangular superior, si se hace
 
c
n
Qb D
;
d m n
entonces
kAx

bk2 D kQAx

q
kR 1x
D



R 1x c

Qbk2 D


d

ck22 C kdk22; para cualquier x 2 Rn.

44/84

La solucin de mKnx 2Rn kAx

bk2 ser aquella que haga mnimo

kR 1x

ck22 C kdk22:

Como kdk22 es constante, la solucin ser la que haga mnimo el otro


sumando: cuando R 1x D c .
Resolviendo este sistema por sustitucin inversa se llega a la solucin del
problema de mnimos cuadrados.

La suma de residuos al cuadrado ser kdk22 y el vector de residuos


 
0
r D QT
:
d

El proceso de reduccin de A a R se denomina factorizacin QR o


triangularizacin ortogonal.

45/84

Teorema Sea la matriz A 2 Rmn de rango n y su factorizacin A D QR. El factor

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.

I D EMOSTRACIN . Si rango.A/ D n, de acuerdo con un teorema anterior, la factorizacin de Cholesky


de A T A es nica.
El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su
norma kxk2 es mnima y adems pertenece a .ker.A//? .
Por otro lado,
 
h
i
R1
A T A D R T1 ; 0 QQT
D R T1 R 1 :
0

46/84

Transformaciones de Householder

Alston Scott Householder, EE.UU.,


1904-1993.

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.

Teorema Toda transformacin de Householder es simtrica y ortogonal.


I D EMOSTRACIN . Por definicin H T D I
adems wT w D kwk22 D 1,
HTH D H2

D
D

2.wwT /T D I

2.wT /T wT D I

.I 2wwT /.I 2wwT /


I 4wwT C 4w.wT w/wT D I:

2wwT D H . Como

47/84

Aplicar una transformacin de Householder a un vector cualquiera equivale a


obtener su reflejo respecto al subespacio .Im.w//?.
a

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:

El vector .wT a/w es la proyeccin de a sobre w; es decir, H a es igual al


vector a menos dos veces su proyeccin sobre w.

Lo esencial de estas transformaciones es su capacidad de hacer cero


determinados coeficientes de un vector dado modificarlo ortogonalmente:


Si x e y son dos vectores no nulos de igual norma eucldea y se hace


1
wD
.x y/;
kx yk2
entonces
.I 2wwT /x D y:

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

Esto es as pues, al tener x e y la misma norma eucldea,


.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

Este resultado, geomtricamente, se deduce inmediatamente de la reflexin


antes mencionada.


El vector w es colineal con el vector x

Como x e y tienen la misma longitud, la reflexin de x respecto a


.Im.w//? es y.

y.

6
678

3
01203445
8

50/84

Para un sistema Ax D b se pueden construir transformaciones de Householder


que anulen los coeficientes que se deseen de cada vector columna de A dejando
los dems como estaban.


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

La matriz A 1 resultara de la transformacin H 1A 0; la A 2 sera


H 2A 1 D H 2H 1A 0; y as cuatro veces.

A una matriz m  n se le aplicar una sucesin k D 1; : : : ; n de


transformaciones, cada una de las cuales ha de hacer cero los coeficientes
k C 1; : : : ; m del vector columna k.

51/84

Se pretende que la transformacin k-sima, H k , haga:



aik para i D 1; 2; : : : ; k 1
H k ak D y D
0 para i D k C 1; : : : ; m:
A tal fin, los coeficientes del vector y debern ser:
y1
y2
yk
ykC1
ym

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
,

jjyjj2 D jjak jj2:




La transformacin H k tendr como vector w D .ak

y/=kak

yk2.

El coeficiente k-simo de y puede adoptar dos signos. Para evitar errores de


cancelacin, se escoge el signo opuesto al del coeficiente k-simo de ak .

En esta figura hay dos posibilidades para transformar a en un vector de igual


magnitud con a2 D 0: convertirlo en y o y 0,

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.

La transformacin alternativa, walt convertira a a y: su primer coeficiente es


a1 y1; el segundo el mismo de w.

53/84

En definitiva, en la transformacin de Householder k-sima que se aplica a la


matriz A, los valores numricos del vector w son:
2
3
0
:::
6
7
6
7
6
7
1
6akk C s  signo.akk /7
wDp
6
7;
a
6
7
kC1k
2s.s C jakk j/ 6
7
:::
4
5
amk
q
2
2
2
C akC1k
C    C amk
.
donde s D akk

Caso 1: Resolucin de Ax D b, A mn, m > n y rango completo

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

La solucin de mKnx 2Rn kAx bk2 sera la R 1x D c, por sustitucin inversa.


La suma de residuos al cuadrado ser kdk22.
 Resolucin de Ax D b por transf. de
 Transformacin columnas de la Matriz A mn
for j D 1 to n
if mKaq
x fja.j; j /j; : : : ; ja.m;
 j /jg D 0 then stop
Pm
2  sig no.a.j; j //
D
a.k;
j
/
kDj

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

En Matlab, con la posibilidad de obtener Q y R:

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

>> A=[1 1 1;1 2 4;1 3 9;1 4 16]


A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r]=Qrdes_3(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

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


El nmero de operaciones de este mtodo es:




O.mn2 n3=3/ sumas+restas y multiplicaciones+divisiones, para


transformar la matriz A en R;

n races cuadradas y las de la sustitucin inversa, O.n2=2/.

57/84

Caso numrico 2: Resolucin de Ax D b, A mn, n > m y rango


completo


Este problema, si tiene solucin, es indeterminado: tiene muchas.

La de menor norma eucldea se puede calcular mediante estos pasos:


Paso 1 Se aplica el algoritmo QR a la matriz A T , en vez de a A. Resultar
 
R
QT A T D
;
0
 
R
es decir, A T D Q
, donde Q es una matriz ortogonal n  n y R una
0
triangular superior m  m.



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:


Si se hace el cambio de variable z D QT x, la ltima ecuacin queda


 T

R ; 0T z D b:

Como zT z D .QT x/T .QT x/ D x T QT Qx D x T x, las normas


eucldeas de x y z sern iguales.
 zR 
 Estructurando el vector z en
z0 y b de igual manera, la solucin de
 T

R ; 0T z D b saldr de resolver


R T zR D bR ;

siendo los dems coeficientes del vector z, z0, nulos.


Paso 3 El vector solucin x que se busca resultar de deshacer el cambio de
variable introducido; es decir:
 
z
xDQ R :
0

58/84

59/84

Caso 3: Resolucin numrica de Ax D b, A mn, m > n m < n y


rango incompleto


Caso ms general que se puede dar en mnimos cuadrados de ecuaciones lineales.

Paso 1 Se transforma la matriz A mediante transformaciones de


Householder y permutaciones de columnas para llegar a:
r

0


mr

En cada etapa k se calcula la norma eucldea de ak , k; : : : ; n,


limitndose a sus coeficientes k; : : : ; m y se intercambia la columna k
con la de mayor norma.

60/84

Paso 2 Del Paso anterior se ha llegado a


QAP D R D


 
R 11 R 12
r
c
r
y Qb D
;
0 R 22
m r
d m r
r n r

donde kR 22k2  1kAk2. A partir de aqu hay dos opciones:





Que r D n (rango completo). La solucin sale de resolver R 11x D c.

Que r < n (rango incompleto).


Se construyen
unas
transformaciones




nn
ortogonales, Q1 , tales que R 11; R 12 Q1 D W ; 0 , donde W rr
es triangular superior.

Cmo hacer esto? Se acta sobre R 11, R 12T y se llega a b).


a)

61/84

b)

nr

Esto se hace en r etapas. En una de ellas, k, se premultiplica por una


transformacin de Householder que haga cero los elementos r C 1 a n de
la columna k y que deje inalterados del 1 al k 1 y del k C 1 a r.


0
0


0 0
0 0

0
0


0 0
0 0

0
0

0
0

El valo indica el elemento que se utiliza para definir cada


transformacin; los que se hacen cero con el signo .


0 0
0 0

62/84

Paso 3 De los dos pasos anteriores se tendr que


kAx


bk2 D k.QAP/.P T x/

Qbk2:

Ahora bien, .QAP/P T x se puede escribir .QAP/Q1QT1 P T x y


tambin,


 
W 0
c
QT1 P T x D
:
d
0 0
Si se hace QT1 P T x D y y se resuelve W y 1 D c, el vector solucin que
se busca, x, resultar de
 
y
x D PQ1 1 :
0

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

Apliquemos este programa en una sesin de Matlab:


a=rand(200,4);
b=a*ones(4,1);
A=[a a(:,1)*2+a(:,2)*0.5 a(:,3)*2+a(:,4)*0.5 a(:,2)*2+a(:,3)*0.5];
size(A)
ans = 200
7
format long
[x r res]=Mincua_QR(A,b)
x =0.168704156479218
0.156479217603912
0.009779951100245
0.792176039119804
0.415647921760391
0.415647921760391
0.317848410757946
r = 4
res = 1.205973193713402e-029
%
% Comprobacin del resultado
%

>> x-pinv(A)*b
ans = 1.0e-015 *
-0.111022302462516
0.333066907387547
0.194289029309402
-0.333066907387547
0.166533453693773
-0.943689570931383
0.499600361081320

64/84

Si lo utilizamos para resolver el ejemplo.


>> A=[1 1 1;1 2 4;1 3 9;1 4 16]
A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x r res]=Mincua_QR(A,b)
x =
0.500000000000000
1.400000000000000
0
r =
3
res =
0.200000000000001
>> A\b
ans =
0.5000
1.4000
-0.0000

65/84

66/84

Transformaciones de Givens

James Wallace Givens, EE.UU., 1910-1993.

Definicin Se denomina transformacin de Givens a una transformacin lineal ortogonal


de Rn en Rn caracterizada por una matriz
2
1
6 :::
6
6
1
6
6
6
G .i; j / D 6
6
6
6
6
6
4

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

Al aplicar a x 2 Rn una transformacin, o rotacin, de Givens,


G .i; j / W Rn ! Rn, con c D cos  y s D sen  , producir lo siguiente:
2

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

Se rota el vector x un ngulo  en el subespacio que generan los vectores e i y


ej de Rn.

68/84

Para hacer cero alguno de los coeficientes i j de un vector x, concretamente


el j , se deber escoger un  tal que xi sen  C xj cos  D 0, es decir, habr
que hacer
xj
tan  D ;
xi
o, lo que es equivalente,
c D cos  D q x2 i 2
xi Cxj

s D sen  D

x
q j
:
xi2 Cxj2

Ejemplo En la figura se describe, en el espacio eucldeo tridimensional, la


rotacin del vector
2 3
1
x D 415
1
en el plano z

y para anular su tercer coeficiente.


z

....
....
....
....
....
....
...
...
...
...
..
..
...
...
...
..
..
..
..
..
..
..
..
..
..
..
..
...
...
...
...
...
..
..
..

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

El nuevo vector ser

2 3
1
p
G x D x 0 D 4 25 :
0
p
La norma eucldea de ste y del original es 3.

Mediante transformaciones de Givens se puede reducir la matriz de un problema


de mnimos cuadrados, en n etapas, a una triangular superior R. En cada una
de esas etapas, j , se haran cero, uno a uno, los coeficientes j C 1 a m.

Por ejemplo, las operaciones


necesarias
para transformar la matriz
2
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

son las que siguen.

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

El algoritmo numrico completo es el que describe la tabla que sigue.


 Resolucin de Ax D b por transf. de Givens
 Transformacin de la Matriz A mn
for i D 1 to n
for k D i C 1 to m
 Hacer nulo el elemento .k; i /.
if a.k; i / 0 then
if ja.k; i /j  ja.i; i /j then p
t D a.i; i /=a.k; i /I s D 1= 1 C t 2 I c D s  t
else
p
t D a.k; i /=a.i; i /I c D 1= 1 C t 2 I s D c  t
end
a.i; i /
c  a.i; i / C s  a.k; i /
for j D i C 1 to n
aux D c  a.i; j / C s  a.k; j /; a.k; j /
s  a.i; j / C c  a.k; j /; a.i; j /
end
 Transformacin del vector b.
aux D c  b.i / C s  b.k/; b.k/
s  b.i / C c  b.k/; a.i /
aux
end
end
end
 Resolucin del sistema Rx D b.
for j D n to01
1,
n
X
@b.j /
x.j /
a.j; k/  x.k/A
a.j; j /
kDj C1

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

>> A=[1 1 1;1 2 4;1 3 9;1 4 16]


A =
1
1
1
1
2
4
1
3
9
1
4
16
>> b=[2;3;5;6]
b =
2
3
5
6
>> [x,r]=Givens(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000

74/84

El nmero de operaciones que requiere este algoritmo para transformar A es


O.2mn2 2n3 =3/ sumas+restas y multiplicaciones+divisiones
O.mn=2/ races cuadradas y
O.n2 =2/ sumas+restas y multiplicaciones+divisiones para efectuar la sustitucin inversa.

Con precisiones semejantes Givens es el doble de caro que Householder.


Cundo utilizar Givens y Householder entonces?


La clave est en considerar la estructura de la matriz A del problema:


Si sta es densa, es decir, muchos de sus coeficientes son distintos de
cero, el mtodo de Householder es el ms aconsejable;
Si la estructura de A es dispersa, convendr centrarse en hacer cero
slo aquellos elementos no nulos en las columnas correspondientes, por
lo que, a priori, el mtodo de Givens deber ser ms ventajoso.

Transformaciones rpidas e Givens




75/84

La idea es conseguir velocidad de Householder con una M 2 Rmm tal que


MA D S

sea triangular superior y que M M T D D D diag.d1; : : : ; dm/.




Como D

1=2

M es ortogonal, se tiene que


 1

A D M 1S D D 1=2M
D 1=2S D M T D

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

Por descomposicin en valores singulares




Existen diversos mtodos1 iterativos para calcular la descomposicin numrica


en valores singulares A D U V T .

A partir de ella, la solucin de mKnx 2Rn kAx bk2 es


 1 
r 0
xDV
U T b:
0 0

Para cualquier matriz A mn, de rango completo o incompleto, la solucin del


problema de menor norma eucldea es
X uT b
i
vi :
xD
i
i 0

Los veremos en el tema dedicado a los valores y vectores propios.

77/84

Ejemplo Utilizando la descomposicin U V T de A resolver


2

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

Como el valor singular 3 D 0, la solucin de norma eucldea mnima se


uT2 b
uT1 b
v1 C
v2
obtiene de x D
1
2
 0;2017
 0;8903  0;5
11;0709
0;5168 C 1;5606
0;2573 D
0;0 :
D 35;1272
2;4654
0;8320

0;3757

0;5

Este programa de Matlab resuelve el ejemplo llamando a svd() para obtener


la descomposicin en valores singulares de A.
function [x S r] = Svdre(a,b)
% Resolucin ||Ax-b|| mediante la desc. en valores singulares de A
[m,n] = size(a); tol=sqrt(eps); tmp=zeros(m); x=zeros(n,1);
[U S V]=svd(a); S=diag(S); r=0;
for j=1:n
if S(j)>=tol
r=r+1;
tmp(r)=dot(U(:,j),b)/S(j);
end
end
for j=1:r
x=x+tmp(j)*(V(:,j));
end
end

79/84

Comparacin de los diversos mtodos


Mtodo
Ecuaciones Normales
Transformaciones de Householder
Transformaciones de Givens
Mtodo de Gram Schmidt
Mtodo de Gram Schmidt Modificado
Mtodo de Golub-Reinsch (SVD)
Mtodo de Golub-Reinsch-Chan (SVD)

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

Los mtodos basados en transformaciones ortogonales son los ms precisos y


habituales.

El basado en SVD es el ms robusto, aunque ms caro.

80/84

Matlab y el problema de mnimos cuadrados




Para calibrar las posibilidades de Matlab con los problemas de mnimos


cuadrados, vamos a utilizarlo para ajustar a unos puntos la funcin
y D c1xe c2x
que se utiliza en prospeccin de hidrocarburos y minerales.

Como no disponemos de datos reales, vamos a generar unos sintticos haciendo


c1 D 5 y c2 D 3.

Generaremos 300 puntos y los perturbaremos con un ruido aleatorio normalizado


de media 0.

Utilizaremos como mtodos para obtener los parmetros c1 y c2, en un modelo


linealizado, con ayuda de las rutinas de Matlab:

81/84

El operador n

Las ecuaciones normales

La descomposicin QR

El mtodo de Gram-Schmidt

La descomposicin en valores singulares y

La matriz pseudoinversa,

Para linealizar el modelo original, haremos los cambios


v D ln.y=x/; u D x; D ln c1 y D c2;
resultando
v D u C :

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

%primer punto de muestra


% 300 puntos
%nube de puntos
% + ruido: valores pos.
%cambio de variable
% Matriz del sistema
% Prim. respuesta: con \

% 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;

% Construccin de los datos


%
%
con cambio de variable
%
%
para linealizar el
%
modelo
%

fprintf(Parmetros ajustados:\ncon A\\b:


exp(c(1)),c(2));

Un script.m con las instrucciones

c1 = %18.15f c2 = %18.15f\n,...

% --- Plot datos


xfit = linspace(min(x),max(x));
yfit = exp(c(1))*xfit.*exp(c(2)*xfit);
if n<30, s = v; else s = -; end
% Smbolo para datos originales
plot(x,y,s,x,yn,o,xfit,yfit,--);
xlabel(x);
ylabel(y); legend(original,+ruido,ajustado);
xmax = max(x);
ymax = max(y);
text(0.5*xmax,0.7*ymax,sprintf(c1 = %6.4f c2 = %6.4f,exp(c(1)),c(2)));
text(0.5*xmax,0.6*ymax,sprintf(%d puntos "sintticos",n));
% --- Plot funciones ajustadas
% Cholesky
G=chol(A*A);
c1=G\(G\(A*v));
fprintf(con chol(A\*A);
c1 = %18.15f c2 = %18.15f\n,exp(c1(1)),c1(2));
% Factorizacin QR
[Q,R]=qr(A,0);
c2=R\(Q*v);
fprintf(con [Q,R]=qr(A);

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));

% Descomposicin en valores singulares


[U S V]=svd(A);
c5=V\(S\(U\v));
fprintf(con [U S V]=svd(A); c1 = %18.15f c2 = %18.15f\n,exp(c5(1)),c5(2));

83/84

84/84

Grfico con los 100 puntos sintticos, la funcin original y la ajustada.


0.7
original
+ruido
ajustado

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

También podría gustarte