You are on page 1of 101

h i j

d e f g
a b c
10 8 7
9 4 6 5
1 2 3
1/101
Universidad Politcnica de MadridEscuela Tcnica Superior de Ingenieros Industriales
Mtodos Matemticos de Especialidad
Ingeniera Elctrica
Mnimos cuadrados
Jos Luis de la Fuente OConnor
jldelafuente@etsii.upm.es
joseluis.delafuente@upm.es
Clase_mincua_12.pdf
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
2/101
ndice
Introduccin
Fundamentos tericos
v Sistemas incompatibles. Ecuaciones normales
v Sistemas indeterminados
Resolucin numrica del problema
v Mtodo de Gram-Schmidt
v Mtodo de Gram-Schmidt modicado
v Factorizacin QR
v Descomposicin numrica en valores singulares
v Comparacin de los mtodos
Matlab y la solucin de problemas de mnimos cuadrados
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
3/101
Introduccin
El conocimiento y control del estado de funcionamiento de muchos
sistemas elctricos y mecnicos de la vida real exigen la toma de
medidas y posteriores acciones en tiempo real.
Cualquier medida siempre est sujeta a errores, por pequeos que
sean, por el desajuste de la calibracin del aparato que la realiza, las
condiciones ambientales, vibraciones, envejecimiento, etc.
Par mitigar el efecto de esos errores, aislarlos, identicarlos y
ltrarlos se toma un nmero de medidas de los parmetros del
sistema bastante mayor del estrictamente necesario.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
4/101
La redundancia de medidas conduce normalmente, en los modelos
matemticos que determinan los parmetros de funcionamiento del
sistema, a sistemas de ecuaciones incompatibles: con muchas ms
ecuaciones que incgnitas.
La falta en algn momento de sucientes medidas, a sistemas
indeterminados.
Para obtener una solucin probable, o pseudosolucin, que ms se
aproximase a la ideal si no se diesen los errores o perturbaciones
citados, se proyecta el problema en otro de menor dimensin otro
subespacio para suprimir as, ltrar o aislar los datos irrelevantes o
errneos.
La proyeccin ms adecuada es la que determina el mtodo de
los mnimos cuadrados (ver teorema de la proyeccin).
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
5/101
Casos posibles de sistemas lineales, una vez ms
=
m < n
rango(A) = m < n
=
m < n
rango(A) < m < n
=
m > n
rango(A) = n < m
=
m > n
rango(A) < n < m
=
m = n
rango(A) = m= n
=
m = n
rango(A) < m = n
3a 3b
2a 2b
1a 1b
=
m < n
rango(A) = m < n
=
m < n
rango(A) < m < n
=
m > n
rango(A) =n < m
=
m > n
rango(A) < n < m
=
m = n
rango(A) = m = n
=
m = n
rango(A) < m = n
3a 3b
2a 2b
1a 1b
=
m < n
rango(A) = m < n
=
m < n
rango(A) < m < n
=
m > n
rango(A) = n < m
=
m > n
rango(A) < n < m
=
m = n
rango(A) = m = n
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
6/101
Estudiaremos problemas sin solucin, pues
rango.A[b/ = rango.A/, a los que, sin embargo, se les puede
encontrar una pseudosolucin que cumpla un criterio por elegir: por
ejemplo el de minimizar la norma [Ax b[
2
.
1
Como el vector de residuos, r = b Ax, es ortogonal al subespacio (en este caso es un
plano) Im(A), lo es a los vectores que lo denen: a
1
y a
2
; es decir, A
T
(Ax b) = 0. Si la
matriz A
T
A es invertible,
r = b Ax = (I P
Im(A)
)b,
donde P
Im(A)
= A(A
T
A)
1
A
T
es la matriz de proyecci on ortogonal sobre Im(A) paralelamente
a ker(A
T
).Como el vector de residuos, r = b Ax, es ortogonal al subespacio (en este caso es
un plano) Im(A), lo es a los vectores que lo denen: a
1
y a
2
; es decir, A
T
(Ax b) = 0. Si la
matriz A
T
A es invertible,
r = b Ax = (I P
Im(A)
)b,
donde P
Im(A)
= A(A
T
A)
1
A
T
es la matriz de proyecci on ortogonal sobre Im(A) paralelamente
a ker(A
T
).
Im(A)
a
1
b
a
2
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
7/101
Tambin problemas con muchas soluciones, de las que:
Se escoge aquella x cuya norma eucldea, [x[
2
, es mnima.
Se estudia otro tipo de solucin; por ejemplo:
v Que minimice
m

j =1

a
T
j
x b
j

v Que minimice
m ax
j
_

a
T
j
x b
j

_
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
8/101
El hecho de que se utilice el criterio de minimizar, de una manera u
otra, la norma eucldea 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.
El problema lineal genrico de mnimos cuadrados se plantea
formalmente en los siguientes trminos:
Dada una matriz A R
mn
, de rango k _ mn.m; n/, y
un vector b R
m
, encontrar un vector x R
n
que minimi-
ce [Ax b[
2
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
9/101
El ejemplo por excelencia de las tcnicas que estudiamos lo
constituye el tratar de ajustar a un conjunto de m pares de puntos
.t
i
; b
i
/ una funcin f.x; t / de n parmetros independientes
x
1
; x
2
: : : x
n
.
Los pares de puntos los pueden denir unas mediciones, b
i
,
obtenidas en unos tiempos, t
i
.
Si la funcin es lineal en x
1
; : : : ; x
n
se tiene un problema de
mnimos cuadrados lineales en el que:
1. Si los n parmetros se disponen como los componentes de un
vector n-dimensional, x; y
2. los datos obtenidos en otro vector m-dimensional b
(usualmente m _ n),
se llega a una relacin de la forma Ax = b, donde A R
mn
,
x R
n
y b R
m
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
10/101
Ejemplo
Supongamos que queremos ajustar al conjunto de pares de puntos
{.t
i
; b
i
/] = {.1; 2/; .2; 3/; .3; 5/; .4; 6/] la funcin
f.x
0
; x
1
; x
2
; t / = x
0
x
1
t x
2
t
2
;
segn representa la gura.
t
b
f(x
0
, x
1
, x
2
, t) = x
0
+ x
1
t + x
2
t
2
1 2 3 4 5 6 7
1
2
3
4
5
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
11/101
Para los datos y parmetros de este ejemplo el sistema Ax = b
tiene la forma siguiente:
_
_
_
_
1 1 1
1 2 4
1 3 9
1 4 16
_

A
_
_
x
0
x
1
x
2
_
_

x
=
_
_
_
_
2
3
5
6
_

b
:
Resolver este problema con 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
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
12/101
Con una estrategia ms de "mnimos cuadrados":
>> x=[1 2 3 4];
>> y=[2 3 5 6];
>> p=polyfit(x,y,2)
p =
-0.0000 1.4000 0.5000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
13/101
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,-)
Se obtendran los resultados que indica la gura: la lnea recta
y = 0; 5 1; 4t en verde y los puntos a los que se ajusta en azul.
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0
1
2
3
4
5
6
7
8
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
14/101
Otros muchos sistemas de la ciencia, ingeniera, economa, etc.
recurren a modelos de mnimos cuadrados.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
15/101
Sistemas de navegacin
VOR, DME, ADF, RMI, MLS
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
16/101
ndice
Introduccin
Fundamentos tericos
v Sistemas incompatibles. Ecuaciones normales
v Sistemas indeterminados
Resolucin numrica del problema
v Mtodo de Gram-Schmidt
v Mtodo de Gram-Schmidt modicado
v Factorizacin QR
v Descomposicin numrica en valores singulares
v Comparacin de los mtodos
Matlab y la solucin de problemas de mnimos cuadrados
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
17/101
Fundamentos tericos
Teorema Descomposicin en valores singulares Si A R
mn
es
una matriz de rango r, existen matrices ortogonales U R
mm
y
V R
nn
tales que
A = UV
T
; (1)
donde
=
_

r
0
0 0
_
;
R
mn
y
r
= diag.
1
,
2
; : : : ;
r
/, con

1
_
2
_ _
r
> 0:
Si las matrices U y V se escriben como
U = u
1
; : : : ; u
m
y V = v
1
; : : : ; v
n
;
los u
i
y v
i
son los vectores singulares izquierdos y derechos, respec-
tivamente, correspondientes a los valores singulares
i
, i = 1; : : : ; r.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
18/101
Teorema El vector
x = V
_

1
r
0
0 0
_
U
T
b
es la solucin del problema
minimizar
xR
n
[Ax b[
2
que hace mnima [x[
2
, donde A R
mn
y rango.A/ = r _ mn.m; n/.
Denicin A la matriz
A

= V
_

1
r
0
0 0
_
U
T
R
nn
se la denomina matriz pseudoinversa o inversa generalizada Moore-
Penrose de A.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
19/101
Obsrvese que .A
T
/

= .A

/
T
; en general, .AB/

= B

.
De acuerdo con esta denicin, la solucin de mn
xR
n
[Ax b[
2
es
x = A

b.
Adems, cumple que
x J ker.A/ y que Ax = P
Im.A/
b;
donde P
Im.A/
b es la proyeccin ortogonal sobre Im.A/
(paralelamente a ker.A
T
/) de b.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
20/101
La matriz pseudoinversa satisface las denominadas condiciones de
Penrose:
AA

A = A
A

AA

= A

.AA

/
T
= AA

.A

A/
T
= A

A:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
21/101
Dos casos de matriz pseudoinversa son de especial inters:
a) Si A R
mn
, m _ n y rango.A/ =
n,
A

= .A
T
A/
1
A
T
.
b) Si A R
mn
, m _ n y rango.A/ =
m,
A

= 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 un sistema de ecuaciones compatible indeterminado con
matriz de rango completo: resuelve este problema:
minimizar
xS
[x[
2
; donde S = {x : Ax = b]:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
22/101
La matriz pseudoinversa tambin proporciona unas frmulas para la
obtencin de las matrices de proyeccin ortogonal sobre los cuatro
subespacios fundamentales de A:
P
Im.A/
= AA

P
ker.A
T
/
= I AA

P
Im.A
T
/
= A

A
P
ker.A/
= I A

A
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
23/101
Sistemas incompatibles. Ecuaciones normales
Si se tiene una ecuacin Ax = b, con A R
mn
, y no existe
solucin a la misma pues b Im.A/ o rango.A[b/ = rango.A/,
se puede dar solucin al problema buscando una pseudosolucin, x,
que acerque Ax lo ms posible a b en el sentido de la [ [
2
, es
decir,
mn
xR
n
[Ax b[
2
.
Teorema Sean X e Y dos espacios vectoriales de dimensiones
nitas 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 Y , el vector x X minimiza [Ax b[
2
si y slo si
A
T
Ax = A
T
b.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
24/101
I Demostracin. Sean Im.A/ = {Ax : x R
n
] y ker.A/ = {x : Ax = 0].
I El complemento ortogonal del conjunto Im.A/ ser:
.Im.A//
J
= {r : r
T
z = 0; Vz Im.A/] = {r : r
T
A = 0
T
]
= {r : A
T
r = 0] = ker.A
T
/:
I El problema planteado es obviamente equivalente a minimizar [b

b[
2
, donde

b Im.A/.
I Por el teorema de la proyeccin,

b es un vector que minimiza la norma anterior si y slo si b

b .Im.A//
J
;
es decir, si b

b ker.A
T
/, o de forma equivalente, 0 = A
T
.b

b/ = A
T
b A
T
Ax.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
25/101
La representacin geomtrica en tres dimensiones es esta.
Im(A)
a
1
b
a
2
a
1
x
1
a
2
x
2
Ax
r = b Ax (Im(A))

A
T
(b Ax) = 0
El vector de residuos, r = b Ax, es ortogonal a Im.A/ y a los
vectores que lo denen: a
1
y a
2
; es decir, A
T
.Ax b/ = 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
26/101
Si la matriz A
T
A es invertible,
r = b Ax = .I P
Im.A/
/b;
donde P
Im.A/
= A.A
T
A/
1
A
T
es la matriz de proyeccin
ortogonal sobre Im.A/ paralelamente a ker.A
T
/.
Al sistema de ecuaciones que dene la relacin
A
T
Ax = A
T
b
se le denomina ecuaciones normales.
El vector solucin x es nico si A
T
A es invertible (si y slo si la
transformacin lineal A es inyectiva: rango.A/ = n); en este caso
x = .A
T
A/
1
A
T
b:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
27/101
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 = b es el dado por
x = A
T
z, donde z es una solucin de la ecuacin AA
T
z = b.
I Demostracin. Si x
1
es una solucin de la ecuacin Ax = b, cualquier solucin de la misma se puede expresar como
x = x
1
u, donde u ker.A/; es decir, estar en la variedad lineal x
1
ker.A/.
I El teorema de la proyeccin garantiza la existencia en esta variedad lineal de un nico x tal que su norma [x[
2
es
mnima y adems pertenece a .ker.A//
?
.
I Como x .ker.A//
?
, pertenecer a Im.A
T
/, es decir, se podr expresar como x = A
T
z para algn z Y . Como
Ax = b, entonces
AA
T
z = b:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
28/101
Cuando la matriz AA
T
es invertible, la solucin ptima es
x = A
T
.AA
T
/
1
b:
La interpretacin geomtrica de este resultado en R
3
se
esquematiza en la gura.
ker(A)
x
1
+ker(A)
x
x
1
u
x
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
29/101
Ejemplo
Se quiere resolver el problema
_
1 2
_
_
x
1
x
2
_
= 3
desendose la solucin de norma eucldea mnima.
El sistema Ax = b, donde A =
_
1 2
_
y b = 3, tiene muchas
soluciones pues es indeterminado.
Cualquier solucin se podr expresar como x
1
ker.A/, donde x
1
es cualquier vector solucin (por ejemplo
_
1 1
_
T
) y ker.A/ es el
que se ve en la gura que sigue.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
30/101
SOLUTION FOR A SYSTEM OF LINEAR EQUATIONS 75
1 2 3
(3, 0)




(3/5, 6/5) =


(1, 1) =
1
2
1.5

Figure 2.1 A minimum-norm solution.
and any vector in the null space of A can be expressed by Eq. (2.1.4) as
Ax

= [ 1 2 ]

1
x

= 0; x

2
=
1
2
x

1
(E2.1.4)
We use Eq. (2.1.7) to obtain the minimum-norm solution
x
o+
= A
T
[AA
T
]
1
b =

1
2

[ 1 2 ]

1
2

1
3 =
3
5

1
2

0.6
1.2

(E2.1.5)
Note from Fig. 2.1 that the minimum-norm solution x
o+
is the intersection of
the solution space and the row space and is the closest to the origin among the
vectors in the solution space.
2.1.3 The Overdetermined Case (M > N): LSE Solution
If the number (M) of (independent) equations is greater than the number (N)
of unknowns, there exists no solution satisfying all the equations strictly. Thus
we try to nd the LSE (least-squares error) solution minimizing the norm of the
(inevitable) error vector
e = Ax b (2.1.8)
Then, our problem is to minimize the objective function
J =
1
2
||e||
2
=
1
2
||Ax b||
2
=
1
2
[Ax b]
T
[Ax b] (2.1.9)
x
2
Im.A
T
/
x
1
x
+
ker.A/
subespacio de soluciones
x
1
La solucin que se busca es
x
+
=A
T
_
AA
T
_
1
b=
_
1
2
_ _
_
1 2
_
_
1
2
__
1
3=
3
5
_
1
2
_
=
_
0;6
1;2
_
:
Se ve que est en Im.A
T
/.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
31/101
ndice
Introduccin
Fundamentos tericos
v Sistemas incompatibles. Ecuaciones normales
v Sistemas indeterminados
Resolucin numrica del problema
v Mtodo de Gram-Schmidt
v Mtodo de Gram-Schmidt modicado
v Factorizacin QR
v Descomposicin numrica en valores singulares
v Comparacin de los mtodos
Matlab y la solucin de problemas de mnimos cuadrados
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
32/101
Resolucin numrica del problema
En las ecuaciones normales se pueden utilizar cualquier mtodo para
resolver sistemas en los que la matriz es cuadrada y simtrica
aplicndoselo a
A
T
Ax = A
T
b, en el caso de que el sistema fuese
incompatible, o a
AA
T
z = b, cuando se diese un sistema indeterminado.
Los nmeros de condicin,
2
, de AA
T
y A
T
A, no obstante, son
el cuadrado del de la matriz A, por lo que si el problema
originalmente no est bien condicionado, las dicultades numricas
pueden resultar insalvables al resolver el sistema correspondiente.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
33/101
Ejemplo
Consideremos la matriz
A =
_
_
_
_
_
_
_
_
_
1 1 1 1 1
"
"
"
"
"
_

_
:
El rango de A es 5, para " = 0. La matriz
A
T
A =
_
_
_
_
_
_
_
1 "
2
1 1 1 1
1 1 "
2
1 1 1
1 1 1 "
2
1 1
1 1 1 1 "
2
1
1 1 1 1 1 "
2
_

_
tambin es de rango 5, para " = 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
34/101
El nmero de condicin
2
.A
T
A/ =
2
.A/
2
= .5 "
2
/="
2
.
Si " es mayor que la precisin de la mquina pero "
2
no (por
ejemplo, si " = 0,5 10
5
, "
2
= 0,25 10
10
y la precisin de la
mquina = 1,0 10
10
), la representacin interna de la matriz
A
T
A ser
_
_
_
_
_
_
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
35/101
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
A =
_
_
_
_
_
_
1 1 1 1
0
0
0
0
_

_
; y A
T
A =
_
_
_
_
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
_

_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
36/101
Mtodo de Gram-Schmidt
El procedimiento clsico de Gram-Schmidt obtiene una base
ortonormalizada del subespacio Im.A/.
Comienza normalizando el primer vector columna de A:
e
1
= a
1
=[a
1
[
2
.
A continuacin se sustrae del vector a
2
su componente en la
direccin de e
1
, (a
2
[e
1
)e
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.mn
2
/ sumas+restas y
multiplicaciones+divisiones y O.n/ races cuadradas.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
37/101
Los diversos vectores ortonormales de la base se obtenien as:
e
1
=
a
1
[a
1
[
2
:
e
2
=
a
2
(a
2
[e
1
)e
1
[a
2
(a
2
[e
1
)e
1
[
2
:
e
3
=
a
3
(a
3
[e
1
)e
1
(a
3
[e
2
)e
2
[a
3
(a
3
[e
1
)e
1
(a
3
[e
2
)e
2
[
2
:
:
:
:
e
2
e
1
e
3
a
3
a
3
|e
1
e
1
a
3
|e
2
e
2
a
3
a
3
|e
1
e
1
a
3
|e
2
e
2
a
3

a
3
|
e
1

e
1
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
38/101
El algoritmo, para una matriz general A
mn
, es el siguiente.
for j = 1 to n
e.1 : m; j / a.1 : m; j /
for i = 1 to j 1
u.i; j / e.1 : m; i /
T
a.1 : m; j /
e.1 : m; j / e.1 : m; j / u.i; j / e.1 : m; i /
end
u.j; j /

_
m

k=1
e.k; j /
2
e.1 : m; j / e.1 : m; j /=u.j; j /
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
39/101
El algoritmo hace A = EU, donde E
mn
es la matriz de columnas
e
i
y U
nn
la matriz triangular superior de los productos interiores
auxiliares u
ij
.
Sustituyendo esta expresin de A en las ecuaciones normales
A
T
Ax = A
T
b,
U
T
E
T
EUx = U
T
E
T
b
y, por n, dado que E
T
E = I,
Ux = E
T
b:
Sistema triangular superior.
En condiciones adecuadas, por consiguiente, el mtodo de
Gram-Schmidt podra valer para resolver un problema lineal de
mnimos cuadrados.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
40/101
Mtodo de Gram-Schmidt modicado
En la prctica, la perdida de ortogonalidad de los vectores e
i
que se
van calculando en el proceso de Gram-Schmidt es ms que evidente,
debido a errores de redondeo y de cancelacin si, por ejemplo,
alguno de los vectores columna a
j
est prximo al subespacio
generado por los vectores anteriores e
1
; : : : ; e
j 1
.
En ese caso, los sumandos de la expresin a
j

j 1
i =1
(a
j
[e
i
)e
i
pueden llegar a ser muy pequeos o muy distantes unos de otros, si
bien el resultado nal 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
amplicarn an ms.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
41/101
En 1966 Rice modic el mtodo haciendo que en una etapa k, en
vez de sustraer del vector a
k
sus componentes sobre todos los k 1
vectores e
i
ya calculados, e
k
se hace igual a a
k
al principio y luego
se le van sustrayendo su proyeccin en e
1
, pasando a ser el nuevo
e
k
el resultado, el cual se proyecta luego en e
2
, y as sucesivamente
en cada uno de los k 1 e
i
anteriores. El resultado con esta simple
nueva disposicin de los clculos es indiscutiblemente mejor
numricamente.
Otras versiones, una vez calculado un vector ortonormal e
k
en una
etapa k, van sustrayendo de cada a
i
, i = k 1; : : : ; n, su
proyeccin sobre e
k
. El resultado es el mismo.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
42/101
Los dos algoritmos se listan a continuacin.
Clsico
for j = 1 to n
e.1 : m; j / a.1 : m; j /
for i = 1 to j 1
u.i; j / e.1 : m; i /
T
a.1 : m; j /
e.1 : m; j / e.1 : m; j / u.i; j / e.1 : m; i /
end
u.j; j /

_
m

k=1
e.k; j /
2
e.1 : m; j / e.1 : m; j /=u.j; j /
end
Modicado
for j = 1 to n
e.1 : m; j / a.1 : m; j /
for i = 1 to j 1
u.i; j / e.1 : m; i /
T
e.1 : m; j /
e.1 : m; j / e.1 : m; j / u.i; j / e.1 : m; i /
end
u.j; j /

_
m

k=1
e.k; j /
2
e.1 : m; j / e.1 : m; j /=u.j; j /
end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
43/101
La versin clsica y modicada 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
u(i,j)=e(:,i)*e(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i);
end
u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j);
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
r=b; for j=1:n, r=r-(e(:,j)*r)*e(:,j); end
r2=norm(r)^2; % Residuos al cuadrado
function [x r2 e]=Grmsch_2(A,b)
% Se resuelve Ax=b mediante el mtodo de Gram-Schmidt clsico
[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
u(i,j)=e(:,i)*A(:,j);
e(:,j)=e(:,j)-u(i,j)*e(:,i);
end
u(j,j)=norm(e(:,j));
e(:,j)=e(:,j)/u(j,j);
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
r=b; for j=1:n, r=r-(e(:,j)*r)*e(:,j); end % Residuos
r2=norm(r)^2;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
44/101
El cara a cara en Matlab supercompacto del clsico y el
modicado en la versin alternativa mencionada es este.
function [Q, R] = gs_m_VS_c(A)
[m, n] = size(A); [m, n] = size(A);
Q = zeros(m,n); Q = zeros(m,n);
R = zeros(n); R = zeros(n);
for k=1:n for j=1:n
R(k,k) = norm(A(:,k)); R(1:j-1,j) = Q(:,1:j-1)*A(:,j);
Q(:,k) = A(:,k)/R(k,k); temp = A(:,j) - Q(:,1:j-1)*R(1:j-1,j);
R(k,k+1:n) = Q(:,k)*A(:,k+1:n); R(j,j) = norm(temp);
A(:,k+1:n) = A(:,k+1:n) - Q(:,k)*R(k,k+1:n); Q(:,j) = temp/R(j,j);
end end
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
45/101
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)
x =
0.5000
1.4000
-0.0000
r2 =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
46/101
% Script_GRSCH.m - Script de Ortogonalidad con Gram Schmidt clsico y modificado
format short
n=6; A=hilb(n);
% Matriz de Hilbert (muy mal condicionada)
cond(A), pause
b=A*ones(n,1); % Trmino independiente para sol. x=1.
disp(Clsico:), [x r2 e]=Grmsch_2(A,b); % Gram Schmidt clsico
x, pause, e, pause, r2, pause
ortogonalidad=norm(e*e-eye(n)), pause % Ortogonalidad real de la matriz e
disp(Modificado:), [x r2 e]=Grmsch_3(A,b);% Gram Schmidt modificado
x, pause, e, pause, r2, pause
ortogonalidad=norm(e*e-eye(n)) % Ortogonalidad real de la matriz e
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
47/101
Factorizacin QR
Recordemos que una propiedad importante de las transformaciones
ortogonales es que conservan la norma eucldea; esto es, si Q
nn
es
una matriz ortogonal y x un vector n-dimensional, se cumple que
[Qx[
2
= [x[
2
:
En efecto:
[Qx[
2
=
_
(Qx[Qx) =
_
x
T
Q
T
Qx =
_
x
T
x = [x[
2
:
Segn esto, si Q es una matriz ortogonal, al premultiplicar el vector
Ax b por ella, la norma eucldea del vector resultante,
[QAx Qb[
2
= [Q.Ax b/[
2
= [Ax b[
2
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
48/101
Unas transformaciones ortogonales adecuadas pueden hacer que el
problema de mnimos cuadrados se puede convertir en otro ms
sencillo de resolver.
Si A R
mn
, m > n, b R
m
, rango.A/ = n y se ha calculado
una matriz ortogonal Q R
mm
tal que la matriz
QA = R =
_
R
1
0
_
n
m n
es triangular superior, si se hace
Qb =
_
c
d
_
n
m n
;
entonces
[Ax b[
2
= [QAx Qb[
2
=
_
_
_
_
_
R
1
x c
d
_
_
_
_
_
2
=
_
[R
1
x c[
2
2
[d[
2
2
; para cualquier x R
n
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
49/101
La solucin de mn
xR
n
[Ax b[
2
ser aquella que haga mnimo
[R
1
x c[
2
2
[d[
2
2
:
Como [d[
2
2
es constante, la solucin ser la que haga mnimo el
otro sumando: cuando R
1
x = c, sistema que se resuelve por
sustitucin inversa.
La suma de residuos al cuadrado ser [d[
2
2
y el vector de
residuos
r = Q
T
_
0
d
_
:
El proceso de reduccin de A a R se denomina factorizacin QR o
triangularizacin ortogonal.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
50/101
Teorema Sea la matriz A R
mn
de rango n.
El factor R
1
de A 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 Demostracin. Si rango.A/ = n, de acuerdo con un teorema anterior, la factorizacin de Cholesky de A
T
A es nica.
I Por otro lado,
A
T
A =
_
R
T
1
; 0
_
QQ
T
_
R
1
0
_
= R
T
1
R
1
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
51/101
Transformaciones de Householder
Denicin Se denomina transformacin o reexin de Househol-
der a una transformacin lineal de R
n
en R
n
caracterizada por una
matriz H
nn
matriz de Householder de la forma
H = I 2ww
T
;
donde w R
n
; [w[
2
= 1, es el vector de Householder.
Teorema Toda transformacin de Householder es simtrica y
ortogonal.
I Demostracin. Por denicin
H
T
= I 2.ww
T
/
T
= I 2.w
T
/
T
w
T
= I 2ww
T
= H:
Como adems w
T
w = [w[
2
2
= 1,
H
T
H = H
2
= .I 2ww
T
/.I 2ww
T
/
= I 4ww
T
4w.w
T
w/w
T
= I:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
52/101
Aplicar una transformacin de Householder a un vector cualquiera
equivale a reejarlo en el subespacio .Im.w//
J
, segn representa
la gura.
(Im(w))

w
a

w
T
a

w
T
a

w
Ha
En efecto
Ha = .I 2ww
T
/a = a 2ww
T
a = a 2.w
T
a/w:
El vector .w
T
a/w es la proyeccin de a sobre w; es decir, Ha
es igual al vector a menos dos veces su proyeccin sobre w.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
53/101
La importancia fundamental de estas transformaciones radica en su
capacidad para modicar ortogonalmente eventualmente hacer
cero determinados componentes de un vector dado.
En efecto, si x e y son dos vectores no nulos de igual norma
eucldea y w se dene como
w =
1
[x y[
2
.x y/;
entonces
.I 2ww
T
/x = y:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
54/101
Comprobmoslo:
x 2
_
.xy/
T
x
_
.xy/
T
.xy/
_
xy
_
.xy/
T
.xy/
=
= x 2
_
x
T
xy
T
x
.xy/
T
.xy/
_
.x y/
= x 2
_
x
T
xy
T
x
2.x
T
xy
T
x/
_
.x y/ = y.
Esto es as pues, al tener x e y la misma norma eucldea,
.x y/
T
.x y/ = x
T
x y
T
x x
T
y y
T
y
= 2.x
T
x y
T
x/;
pues x
T
x = y
T
y y y
T
x = x
T
y.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
55/101
Este resultado, geomtricamente, se deduce inmediatamente de la
reexin antes mencionada.
El vector w es colineal con el vector x y.
Como x e y tienen la misma longitud, la reexin de x respecto
a .Im.w//
J
es y.
(Im(w))

w
x
x y
y
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
56/101
En un sistema Ax = b se pueden construir transformaciones de
Householder que anulen los coecientes que se deseen de cada
vector columna de A dejando los dems como estaban.
La gura representa los cuatro pasos del proceso de reducir una
matriz A
64
a una triangular superior R
64
.

2222
0
222
0
222
0
222
0
222
0
222
2222
0
0 0
0 0
0 0
0 0
2222
0
0 0

0 0 0

0 0 0

0 0 0

2222
0
0 0

0 0 0
3
0 0 0 0
0 0 0 0
A
0
A
1
A
2
A
3
A
4
La matriz A
1
resultara de la transformacin H
1
A
0
; la A
2
sera
H
2
A
1
= H
2
H
1
A
0
; y as cuatro veces.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
57/101
A una matriz m n se aplicar una sucesin k = 1; : : : ; n de
transformaciones que hagan cero los coecientes k 1; : : : ; m del
vector columna k.
Se pretende que la transformacin k-sima haga:
H
k
a
k
= y =
_
a
i k
para i = 1; 2; : : : ; k 1
0 para i = k 1; : : : ; m:
Los coecientes del vector y debern ser:
y
1
= a
1k
y
2
= a
2k
:
:
:
y
k
=
_
a
2
kk
a
2
k1k
a
2
mk
OJO!
y
k1
= 0
:
:
:
y
m
= 0:
Como y
2
1
y
2
2
y
2
m
= a
2
1k
a
2
2k
a
2
mk
, [[y[[
2
= [[a
k
[[
2
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
58/101
La transformacin de Householder que hay que construir tendr
un vector w = .a
k
y/=[a
k
y[
2
.
Como se observa, el coeciente k-simo del vector y puede adoptar
dos signos.
Para evitar errores de cancelacin, lo ideal es que los coecientes
k-simos de a
k
e y tengan signo opuesto para que al restar de a
k
el negativo de y se obtenga el mayor valor absoluto posible .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
59/101
y

a
1
y
a
1
y
a
1
+y
x
1
x
2
w
a
w
alt
Hay dos posibilidades de transformar a en otro con a
2
= 0: y o y
/
.
Si la transformacin de Householder la dene w, que convierte a
en y
/
, su primer coeciente es w
1
= a
1
.y
1
/ = a
1
y
1
; el
segundo, el de a en x
2
.
La transformacin alternativa, w
alt
convierte a a y: su primer
componente es a
1
y
1
; el segundo el mismo de w.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
60/101
En denitiva, en la transformacin de Householder k-sima que se
aplica a la matriz A, los valores numricos del vector w son:
w =
1
_
2s.s [a
kk
[/
_
_
_
_
_
_
_
_
0
:
:
:
a
kk
s signo.a
kk
/
a
k1k
:
:
:
a
mk
_

_
;
donde s =
_
a
2
kk
a
2
k1k
a
2
mk
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
61/101
Caso numrico 1: Resolucin de Ax = b, A
mn
, m > n y
rango completo
Mediante transformaciones de Householder se reduce la matriz A a
una triangular superior
_
R
1
0
_
y el vector b a otro
_
c
d
_
.
La solucin de mn
xR
n
[Ax b[
2
sera la del sistema
R
1
x = c (por sustitucin inversa).
La suma de residuos al cuadrado ser [d[
2
2
.
El algoritmo numrico completo es el que describe la tabla que
sigue.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
62/101
+
+ Transformacin columnas de la Matriz A
mn
+
for j = 1 to n
if m ax {[a.j; j /[; : : : ; [a.m; j /[] = 0 then stop
=
_
_

_
m

kDj
a.k; j /
2
_
_
signo.a.j; j //
w.j : m/ a.j : m; j /; w.j / w.j / ; = 2
_
m

kDj
w
2
.k/; a.j; j /
for l = j 1 to n
a.j : m; l/ a.j : m; l/ w.j : m/
_
w
T
.j : m/ a.j : m; l/
_

end
++ Transformacin del vector b.
b.j : m/ b.j : m/ w.j : m/
_
w
T
.j : m/ b.j : m/
_

end
+
+ Resolucin del sistema Rx = b.
+
for j = n to 1
x.j /
_
_
b.j /
n

kDjC1
a.j; k/ x.k/
_
_
_
a.j; j /
end
+
+ Residuos al cuadrado.
+
rescua
m

kDnC1
b
2
.k/
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
63/101
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
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(:);
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
64/101
Si utilizamos este script 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]=Qrdes_3(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
65/101
El vector de residuos,
r =
_
_
_
_
_
0,1
0,3
0,3
0,1
_

_
;
se puede obtener, si el algoritmo ha transformado b en
_
c
d
_
, sin
ms que hacer:
r
_
0
d
_
for k = n to 1
r H
k
r
end
El nmero de operaciones de este mtodo es:
O.mn
2
n
3
=3/ sumas+restas y multiplicaciones+divisiones,
para transformar la matriz A en R;
n races cuadradas y las de la sustitucin inversa, O.n
2
=2/ .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
66/101
Caso numrico 2: Resolucin de Ax = b, A
mn
, n > m y
rango completo
Este problema, si tiene solucin, es indeterminado; es decir, tiene
muchas soluciones.
La de menor norma eucldea se puede calcular procediendo de
acuerdo con los pasos siguientes:
Paso 1 Se aplica el algoritmo QR a la matriz A
T
en vez de a A.
Resultar
Q
T
A
T
=
_
R
0
_
;
o, lo que es lo mismo, A
T
= Q
_
R
0
_
, donde Q es una matriz
ortogonal n n y R una triangular superior m m.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
67/101
Paso 2 La matriz original A ser
A =
_
R
T
; 0
T
_
Q
T
:
Si se sustituye en la ecuacin Ax = b, se tendr que
_
R
T
; 0
T
_
Q
T
x = b:
Si se hace el cambio de variable z = Q
T
x, la ltima ecuacin
queda
_
R
T
; 0
T
_
z = b:
Como z
T
z = .Q
T
x/
T
.Q
T
x/ = x
T
Q
T
Qx = x
T
x, las
normas eucldeas de x y z sern iguales.
Estructurando el vector z en
_
z
R
z
0
_
y b de igual manera, la
solucin de
_
R
T
; 0
T
_
z = b saldr de resolver
R
T
z
R
= b
R
;
siendo los dems componentes del vector z, z
0
, nulos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
68/101
Paso 3 El vector solucin x que se busca resultar de deshacer el
cambio de variable introducido; es decir:
x = Q
_
z
R
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
69/101
Caso 3: Resolucin numrica de Ax = b, A
mn
, m > n
m < n y rango incompleto
Este caso es el 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:
mr
r
0
En cada etapa k se calcula la norma eucldea de a
k
, k; : : : ; n,
limitndlos a sus coeciente k; : : : ; m. Se intercambia la
columna k con la de mayor norma.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
70/101
Paso 2 Se ha llegado a
QAP = R =
_
R
11
0
R
12
R
22
_
r
m r
y Qb =
_
c
d
_
r
m r
;
r n r
donde [R
22
[
2
_
1
[A[
2
.
A partir de aqu se pueden presentar dos casos:
Que r = n (rango completo). La solucin del problema sale
de resolver R
11
x = c.
Que r < n (rango incompleto). Se debern construir unas
transformaciones ortogonales tales que
_
R
11
; R
12
_
Q
1
=
_
W ; 0
_
;
donde Q
nn
1
es una matriz ortogonal y W
rr
una triangular
superior.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
71/101
Cmo hacerlo? Se acta sobre R
11
, R
12

T
, a), y se llega a b).
1
Como el vector de residuos, r = b Ax, es ortogonal al subespacio (en este caso es un
plano) Im(A), lo es a los vectores que lo denen: a
1
y a
2
; es decir, A
T
(Ax b) = 0. Si la
matriz A
T
A es invertible,
r = b Ax = (I P
Im(A)
)b,
donde P
Im(A)
= A(A
T
A)
1
A
T
es la matriz de proyecci on ortogonal sobre Im(A) paralelamente
a ker(A
T
).Como el vector de residuos, r = b Ax, es ortogonal al subespacio (en este caso es
un plano) Im(A), lo es a los vectores que lo denen: a
1
y a
2
; es decir, A
T
(Ax b) = 0. Si la
matriz A
T
A es invertible,
r = b Ax = (I P
Im(A)
)b,
donde P
Im(A)
= A(A
T
A)
1
A
T
es la matriz de proyecci on ortogonal sobre Im(A) paralelamente
a ker(A
T
).
r
n r
r
0
a) b)
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
72/101
Se procede en r etapas; en una k se premultiplica por una
transformacin de Householder que haga cero los elementos
r 1 a n de la columna k y que deje inalterados del 1 al k 1
y del k 1 a r.






0
0

0
0
0
0




0
0
0
0
0
0




0
0
0
0
0
0
0
0
1 2 3 4
El valo indica el elemento que se utiliza para denir cada
transformacin; los que se hacen cero con el signo .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
73/101
Paso 3 De los dos pasos anteriores se tendr que
[Ax b[
2
= [.QAP/.P
T
x/ Qb[
2
:
Ahora bien, .QAP/P
T
x se puede escribir
.QAP/Q
1
Q
T
1
P
T
x y tambin,
_
W 0
0 0
_
Q
T
1
P
T
x =
_
c
d
_
:
Si se hace Q
T
1
P
T
x = y y se resuelve W y
1
= c, el vector
solucin que se busca, x, resultar de
x = PQ
1
_
y
1
0
_
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
74/101
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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
75/101
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
>> x-pinv(A)*b
ans = 1.0e-015 *
-0.111022302462516
0.333066907387547
0.194289029309402
-0.333066907387547
0.166533453693773
-0.943689570931383
0.499600361081320
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
76/101
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
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
77/101
Transformaciones de Givens
Denicin Se denomina transformacin de Givens a una trans-
formacin lineal ortogonal de R
n
en R
n
caracterizada por una ma-
triz de Givens
G.i; j / =
_
_
_
_
_
_
_
_
_
_
_
_
1
:
:
:
1
c s
:
:
:
s c
1
:
:
:
1
_

_
i
j
donde c
2
Cs
2
D 1.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
78/101
Una transformacin, o rotacin, de Givens, G.i; j /,
de R
n
en R
n
, con c = cos y s = sen , al aplicarla a x R
n
(premultiplicarlo) producir lo siguiente:
G.i; j /x =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
x
1
:
:
:
x
i 1
x
i
cos x
j
sen
x
i 1
:
:
:
x
j 1
x
i
sen x
j
cos
x
j 1
:
:
:
x
n
_

_
i
j
Se rota el vector x un ngulo en el subespacio que generan los
vectores e
i
y e
j
de R
n
.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
79/101
Si se desea hacer cero alguno de los coecientes i j de un vector
x, concretamente el j , se deber escoger un tal que
x
i
sen x
j
cos = 0, es decir, habr que hacer
tan =
x
j
x
i
;
o, lo que es equivalente,
c = cos =
x
i
_
x
2
i
x
2
j
y
s = sen =
x
j
_
x
2
i
x
2
j
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
80/101
Ejemplo
En la gura se describe, en el espacio eucldeo tridimensional, la
rotacin del vector
x =
_
_
1
1
1
_
_
en el plano z y para anular el tercer componente.
. . . . .. . . ..
... . . ... . .
. ... . . ... .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
................................................................. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
y
x
z
x
x

1
1
1
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
81/101
El ngulo que hay que rotar x es 45

; la matriz de Givens que hay


que utilizar es, por tanto,
G.2; 3/ =
_
_
1 0 0
0
_
2=2
_
2=2
0
_
2=2
_
2=2
_
_
:
El nuevo vector ser
Gx = x
/
=
_
_
1
_
2
0
_
_
:
La norma eucldea de ste y del original es
_
3.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
82/101
En un problema de mnimos cuadrados se pueden utilizar
transformaciones de Givens para transformar la matriz A en una
triangular superior R.
En cada una de esas etapas, j , se han de hacer uno a uno cero los
componentes j 1 a m.
Por ejemplo, las operaciones necesarias para transformar la matriz
A =
_
_
_
_




_

_
a R =
_
_
_
_

0
0 0
0 0 0
_

_
;
son las que siguen.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
83/101
A
1
= G.1; 2/A =
_
_
_
_
_
2 2 2
0 2 2


_

_
; A
2
= G.1; 3/A
1
=
_
_
_
_
_
0 2 2
0 2 2

_

_
;
A
3
= G.1; 4/A
2
=
_
_
_
_
_
_ _ _
0 2 2
0 2 2
0 2 2
_

_
; A
4
= G.2; 3/A
3
=
_
_
_
_
_
_ _ _
0
0 0
0 2 2
_

_
;
A
5
= G.2; 4/A
4
=
_
_
_
_
_
_ _ _
0 _ _
0 0
0 0
_

_
; A
6
= G.3; 4/A
5
=
_
_
_
_
_
_ _ _
0 _ _
0 0 _
0 0 0
_

_
:
Los smbolos 2, y _ indican que el elemento al que se hace
referencia ha experimentado 1, 2 3 transformaciones desde su
valor inicial .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
84/101
+
+ Transformacin de la Matriz A
mn
+
for i = 1 to n
for k = i 1 to m
++ Hacer nulo el elemento .k; i /.
if a.k; i / = 0 then
if [a.k; i /[ _ [a.i; i /[ then
t = a.i; i /=a.k; i /: s = 1=
_
1 t
2
: c = s t
else
t = a.k; i /=a.i; i /: c = 1=
_
1 t
2
: s = c t
end
a.i; i / c a.i; i / s a.k; i /
for j = i 1 to n
aux = c a.i; j / s a.k; j /; a.k; j / s a.i; j / c a.k; j /; a.i; j / aux
end
++ Transformacin del vector b.
aux = c b.i / s b.k/; b.k/ s b.i / c b.k/; a.i / aux
end
end
end
+ Resolucin del sistema Rx = b.
for j = n to 1
x.j /
_
_
b.j /
n

kDjC1
a.j; k/ x.k/
_
_
_
a.j; j /
end
+ Residuos al cuadrado.
rescua
m

kDnC1
b
2
.k/
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
85/101
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
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
86/101
Si utilizamos este nuevo script 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]=Givens(A,b)
x =
0.5000
1.4000
-0.0000
r =
0.2000
>> A\b
ans =
0.5000
1.4000
-0.0000
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
87/101
El nmero de operaciones que requiere este algoritmo para
transformar A es O.2mn
2
2n
3
=3/ sumas+restas y
multiplicaciones+divisiones, y O.mn=2/ races cuadradas;
adems, O.n
2
=2/ sumas+restas y multiplicaciones+divisiones para
efectuar la sustitucin inversa.
Con precisin semejante, 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 coecientes
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.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
88/101
Transformaciones rpidas e Givens
Obsrvese que al aplicar a A una transformacin de Givens,
denida por una matriz G.i; j /, los nicos elementos que se ven
modicados son los de las las i y j , de tal forma que
a
i k
c a
i k
s a
jk
a
jk
s a
i k
c a
jk
;
(2)
para k = 1; : : : ; n. Para cada k, se hacen cuatro multiplicaciones
(4n en total).
Ahora bien, si alguno de los c o s se pudiese reemplazar por un 1, el
nmero de multiplicaciones se reducira a la mitad.
Esto es lo que llevan a efecto las transformaciones rpidas de Givens
mediante una reordenacin de los clculos.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
89/101
Descomposicin en valores singulares
Existen diversos mtodos iterativos muy sosticados para calcular
la descomposicin numrica en valores singulares
A = UV
T
:
Segn el teorema de la descomposicin en valores singulares, la
solucin de mn
xR
n
[Ax b[
2
es
x = V
_

1
r
0
0 0
_
U
T
b:
Para una matriz A de cualquier forma y rango, la solucin del
problema de mnimos cuadrados de menor norma eucldea es
x =

i
=0
u
T
i
b

i
v
i
:
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
90/101
Ejemplo
Se desea resolver el problema de mnimos cuadrados
_
_
_
_
_
_
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
_

A
_
_
x
1
x
2
x
3
_
_

x
=
_
_
_
_
_
_
5
5
5
5
5
_

b
;
utilizando la descomposicin en valores singulares de A
A = UV
T
=
_
0;3546 0;6887 0;5700 0;1764 0;2096
0;3987 0;3756 0;7455 0;2235 0;3071
0;4428 0;0624 0;1702 0;3652 0;7985
0;4870 0;2507 0;2966 0;7652 0;1627
0;5311 0;5638 0;0490 0;4472 0;4445
_ _
35;1272 0 0
0 2;4654 0
0 0 0;0000
0 0 0
0 0 0
_
_
0;2017 0;8903 0;4082
0;5168 0;2573 0;8165
0;8320 0;3757 0;4082
_
;
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
91/101
La solucin de norma eucldea mnima es
x =
u
T
1
b

1
v
1

u
T
2
b

2
v
2
=
11;0709
35;1272
_
0;2017
0;5168
0;8320
_

1;5606
2;4654
_
0;8903
0;2573
0;3757
_
=
_
0;5
0;0
0;5
_
:
u
Este programa de Matlab llama a svd(a) para obtener la
descomposicin en valores singulares de A resuelve el ejemplo.
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
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
92/101
Comparacin de los diversos mtodos
Mtodo Operaciones
Ecuaciones Normales
mn
2
2

n
3
6
Transformaciones de Householder mn
2

n
3
3
Transformaciones de Givens 2mn
2

2
3
n
3
Mtodo de Gram Schmidt mn
2
Mtodo de Gram Schmidt Modicado mn
2
Mtodo de Golub-Reinsch (SVD) 2mn
2
4n
3
Mtodo de Golub-Reinsch-Chan (SVD) mn
2

17
3
n
3
Los mtodos basados en transformaciones ortogonales son los ms
precisos y habituales.
El basado en SVD es el ms robusto, aunque ms caro.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
93/101
ndice
Introduccin
Fundamentos tericos
v Sistemas incompatibles. Ecuaciones normales
v Sistemas indeterminados
Resolucin numrica del problema
v Mtodo de Gram-Schmidt
v Mtodo de Gram-Schmidt modicado
v Factorizacin QR
v Descomposicin numrica en valores singulares
v Comparacin de los mtodos
Matlab y la solucin de problemas de mnimos cuadrados
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
94/101
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 = c
1
xe
c
2
x
que se utiliza en prospeccin de hidrocarburos y minerales.
Como no disponemos de datos reales, vamos a generar unos
sintticos a partir de hacer, por ejemplo, c
1
= 5 y c
2
= 3.
Generaremos 300 puntos y los perturbaremos con un ruido aleatorio
normalizado de media 0.
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
95/101
Luego utilizaremos como mtodos para obtener los parmetros c
1
y
c
2
, en un modelo linealizado:
El operador \
Las ecuaciones normales
La descomposicin QR
El mtodo de Gram-Schmidt
La descomposicin en valores singulares y
La matriz pseudoinversa,
todos con el auxilio de Matlab.
Para linealizar el modelo, haremos los cambios de variable
v = ln.y=x/; u = x; = ln c
1
y = c
2
;
resultando
v = u .
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
96/101
En lo que sigue se lista el diary de Matlab que se ha seguido.
>> x0=0.01; %primer punto de muestra
>> x=linspace(x0,2,300); % 300 puntos
>> y=5*x.*exp(-3*x); %nube de puntos
>> yn=abs(y+0.05*(rand(size(x))-0.5)); % + ruido: valores pos.
>> v=log(yn./x); %cambio de variable
>> x=x(:);
>> v=v(:);
>> A=[ones(size(x)) x]; % Matriz del sistema
>> c=A\v % Prim. respuesta: con \
c =
1.6443
-3.0579
>> G=chol(A*A); % Ecuaciones normales
>> c1=G\(G\(A*v));
>> c1
c1 =
1.6443 % Segunda respuesta
-3.0579
>> [Q,R]=qr(A,0); % Factorizacin QR
>> c2=R\(Q*v)
c2 =
1.6443 % Tercera respuesta
-3.0579
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
97/101
>> [Q,R]=gs_m(A); % Gram-Schmidt modi.
>> c3=R\(Q*v)
c3 =
1.6443 % Cuarta respuesta
-3.0579
>> format long
>> c4=pinv(A)*v % Matriz pseudoinversa
c4 =
1.64428682050583 % Quinta respuesta
-3.05786465731645
>> [U S V]=svd(A); % Descomposicin val. sing.
>> c5=V\(S\(U\v))
c5 =
1.64428682050583 % Sexta respuesta
-3.05786465731645
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
98/101
Fichero script.m con todas estas instrucciones.
function demoXexp(n)
% demoXexp Ajuste datos sintticos a y = c(1)*x*exp(c(2)*x)
%
% Synopsis: demoXexp(n)
%
% 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); % Construccin de los datos
y=5*x.*exp(-3*x); %
yn=abs(y+0.05*(rand(size(x))-0.5)); % con cambio de variable
v=log(yn./x); %
x=x(:); % para linealizar el
v=v(:); %
A=[ones(size(x)) x]; % modelo
c=A\v; %
fprintf(Parmetros ajustados:\ncon A\\b: c1 = %18.15f c2 = %18.15f\n,...
exp(c(1)),c(2));
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
99/101
% --- 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));
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
100/101
% 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));
h i j
d e f g
a b c
10 8 7
9 4 6 5
1 2 3
101/101
Grco con los valores reales y las curvas ajustadas, para 100
puntos sintticos.
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
x
y
c1 = 5.6363 c2 = 3.1949
100 puntos "sintticos"
original
+ruido
ajustado

You might also like