Está en la página 1de 6

Mtodos Numricos

M. Audelo

Mtodo de Choleski

Sea A = (ai,j ) Mnn [R] una matriz simtrica, denida positiva, b T = (b1 , b2 , ...bn ) Rn . Se considera el

problema siguiente: Hallar


x Rn solucin de:

A
x = b

(1)

Por ser la matriz A simtrica, denida positiva, A es no singular y en consecuencia la Ec. 1 admite una nica

solucin
x Rn . Por otra parte, existe una matriz L = (li,j ) Mnn [R] triangular inferior tal que:
A = LLT

(2)

El sistema de ecuacines representado por la Ec. 1 es equivalente a los siguientes:

L
y = b

T
L x =
y

(3)

Primeramente se resuelve el sistema L


y = b . Calculado el vector
y , se resuelve a continuacin el sistema

de ecuaciones LT x = y , lo que permite calcular x Rn solucin de la Ec. 1.


Describamos el algoritmo de factorizacin de la matriz A en la forma LLT . Como A = LLT = (ai,j ), se sigue
de la denicin del producto de dos matrices que:
n
t
li,k lk,j

ai,j =

i, j = 1, ..., n

(4)

k=1
t
t
donde LT = (li,j
) y li,j
= lj,i para i, j = 1, ..., n.
La igualdad representada en la Ec. 4 as como la denicin de la matriz triangular inferior L = (li,j ) sern
utilizadas sucesivamente para construir cada columna de la matriz L.
Primera columna: j = 1
Se tiene
n

n
t
li,k lk,1
=

ai,1 =
k=1

li,k l1,k = li,1 l1,1 + li,2 l1,2 + li,3 l1,3 + ... + li,n l1,n = li,1 l1,1

i = 1, ..., n

k=1

ya que l1,k = 0 para k = 2, ..., n. As:


ai,1 = li,1 l1,1

i = 1, ..., n

Para i = 1, se tiene
2
a1,1 = l1,1 l1,1 = l1,1

l1,1 =

a1,1

(5)

(l1,1 = a1,1 no es posible porque A es simtrica denida positiva).


Para i = 1, ..., n
li,1 =

ai,1
l1,1

(6)

Segunda columna: j = 2
Se tiene
n

n
t
li,k lk,2
=

ai,2 =
k=1

li,k l2,k = li,1 l2,1 + li,2 l2,2 + li,3 l2,3 + ... + li,n l2,n = li,1 l2,1 + li,2 l2,2
k=1

ya que l2,k = 0 para k = 3, ..., n


1

i = 2, ..., n

Mtodos Numricos

M. Audelo

Los elementos li,1 para i = 1, ...n son calculados en la etapa precedente. Debemos calcular li,2 para i = 2, ...n
Para i = 2, se tiene
2
2
+ l2,2
a2,2 = l2,1 l2,1 + l2,2 l2,2 = l2,1

2
a2,2 l2,1

(7)

ai,2 li,1 l2,1


l2,2

(8)

l2,2 =
Y para i = 3, ..., n
li,2 =

j-sima columna: 1 < j n


Supongamos conocidas la j 1 columnas de L. La j-sima columna de L se determina como sigue:
j

n
t
li,k lk,j

ai,j =

k=1

li,k lj,k

i = j, ..., n

k=1

Note que
li,j+1 = li,j+2 = ... = li,n = 0
Para i = j se tiene
j

aj,j =

j1

j1
2
lj,k
+ lj,j lj,j =

lj,k lj,k =
k=1

k=1

2
2
lj,k
+ lj,j
k=1

De donde
j1

lj,j =

aj,j

2
lj,k
k=1

Para i = j + 1, ..., n, se tiene


j1

ai,j =

li,k lj,k + li,j lj,j


k=1

con lo cual
j1

li,j =

ai,j

lj,j

j1

Note que aj,j >


k=1

li,k lj,k
k=1

2
lj,k
, luego lj,j > 0. Adems lj,j

(9)

aj,j para j = 1, ..., n.

Hacemos notar que en la prctica, dada una matriz simtrica A, el algoritmo de Choleski permite identicar
si A es denida positiva o no, por lo que en cada etapa del algoritmo de Choleski se verica si
j1

aj,j

2
lj,k
>0
k=1

y en consecuencia lj,j > 0, para j = 1, ..., n.


En el procedimiento de factorizacin de A en la forma LLT descrito, no se consideran los errores de redondeo.
Por otro lado, en el algoritmo se asume que la matriz A es simtrica. En realidad la primera tarea es vericar
que la matriz A sea simtrica.
Con todos estos elementos se establece el siguiente algoritmo de factorizacin de Choleski.
2

Mtodos Numricos

1.1

M. Audelo

Algortimo de factorizacin LLT

ENTRADA n Z+ , A = (aij )
SALIDA Mensaje 1: "La matriz no es simtrica", Mensaje 2: "La matriz A no es definida positiva",

L = (li,j ),
x T = (x1 , x2 , ..., xn )
1. Verificar que la matriz A es simtrica
2. Si a11 > 0, entonces

l11 = a11
Caso contrario, continuar en 6
3. Para i = 1, ..., n
i1
li1 = al11
4. Para j = 2, ..., n
s=0
Para k = 1, ..., j 1
s = s + ljk ljk
Si ajj s > 0 entonces

ljj = ajj s
caso contrario, continuar en 6
Para i = j + 1, ..., n
s=0
Para k = 1, ..., j 1
s = s + lik ljk
lij = aijljjs
5. Escribir L = (lij )
6. Escribir mensaje 2: "La matriz no es definida positiva"
7. Fin
Nota: Para j = n, se tiene
n

n
t
li,k lk,n
=

ai,n =
k=1

n1

li,k ln,k =
k=1

li,k ln,k + li,n ln,n


k=1

y para i = n
n1

an,n =

n1
2
2
ln,k
+ ln,n

ln,k ln,k + ln,n ln,n =


k=1

k=1
n1

ln,n =

an,n

2
ln,k
k=1

Para j = n, el bucle i = n + 1, ..., n no se realiza

1.2

Algoritmo mtodo de Choleski

ENTRADA n Z+ , A = (aij ), b T = (b1 , b2 , ..., bn )

SALIDA Mensaje: "A no es simtrica, definida positiva", solucin


x T = (x1 , x2 , ..., xn )
T
1. Aplicar el algoritmo de factorizacin LL . Si A no es simtrica, definida positiva, continuar
en 5

2. Resolver el sistema de ecuaciones L


y = b

T
3. Resolver el sistema de ecuaciones L x =
y

T
4. Escribir la solucin x = (x1 , x2 , ..., xn ). Continuar en 6
5. Escribir mensaje: "A no es simtrica, definida positiva"
6. Fin

Mtodos Numricos

1.3

M. Audelo

Programa en Matlab

clear; % borra la memoria, elimina las variables almacenada


clc; % borra la pantalla
disp(PROGRAMA PARA RESOLVER UN SISTEMA DE ECUACIONES);
disp( MTODO DE CHOLESKI);
% Ingresa la dimensin de la matriz
n=input(Digite el orden de la matriz A: );
% Ingresa los coeficientes de la Matriz A
for i=1:n
for j=1:n
fprintf(a(%d,%d) = ,i,j);
a(i,j)=input(\);
end
end
% Verificacin de matriz simtrica
m=0;
for i=1:n
for j=1:n
if a(i,j)==a(j,i)
m=m+1;
end
end
end
aux=0;
if m==n^2
% Ingresa los coeficientes independientes
for i=1:n
fprintf(b(%d) = ,i);
b(i)=input(\);
end
% factorizacin cholesky
l(1,1)=sqrt(a(1,1));
for i=2:n
l(i,1)=a(i,1)/l(1,1);
end
for j=2:n
suma=0;
for k=1:j-1
suma=suma+(l(j,k)*l(j,k));
end
if a(j,j)-suma>0
l(j,j)=sqrt(a(j,j)-suma);
else
aux=1;
disp(La matriz no es definida positiva);
break;
end
for i=j+1:n
suma=0;
for k=1:j-1
suma=suma+(l(i,k)*l(j,k));
end
l(i,j)=(a(i,j)-suma)/l(j,j);
end
4

Mtodos Numricos

M. Audelo

end
else
disp(La matriz A no es simtrica)
aux=1;
end
% Resuelve el sistema de ecuaciones
if aux==0
%Sustitucin hacia adelante Ly=b
y(1)=b(1)/l(1,1);
for i=2:n
sum=b(i);
for j=1:i-1
sum=sum-l(i,j)*y(j);
end
y(i)=sum/l(i,i);
end
%Sustitucin hacia atras LT x=y
x(n)=y(n)/l(n,n);
for i=n-1:-1:1
sum=y(i);
for j=i+1:n
sum=sum-l(j,i)*x(j);
end
x(i)=sum/l(i,i);
end
l
fprintf(La Solucin es:);
x
end

Ejemplo 1 Hallar la solucin del sistema de ecuaciones A


x = b , donde


1 1 2 3
3
1 2 4 1
2

A=
b =
2 4 9 2 ,
3
3 1 2 14
11
Solucin 2 Apliquemos el mtodo de Choleski. Observamos primeramente que la matriz A es simtrica,
esto es A = AT
Pasemos al algoritmo de factorizacin de Choleski
Etapa 1 (j = 1)
l11 =
Para i = 2, 3, 4 : li1 =

a11 = 1 = 1

ai1
l11

l21

l31

l41

a21
1
= =1
l11
1
a31
2
= =2
l11
1
a41
3
= =3
l11
1

Etapa 2 (j = 2)

Mtodos Numricos

M. Audelo

2 =
a22 l21

l22 =
Para i = 3, 4 : li2 =

21 = 1

ai2 li1 l21


l22

l32

l42

a32 l31 l21


421
=
=2
l22
1
a42 l41 l21
131
=
= 2
l22
1

Etapa 3 (j = 3)
l33 =
Para i = 4 : li3 =

2 l2 =
a33 l31
32

944=1

ai3 li1 l31 li2 l32


l33

l43 =

a43 l41 l31 l42 l32


2 3 2 (2) 2
=
=0
l33
1

Etapa 4 (j = 4)
l44 =

2 l2 l 2 =
a44 l41
42
43

14 9 4 0 = 1

En consecuencia

1 0
1 1
L=
2 2
3 2

0
0
1
0

0
LT =
0
0

0
0
,
0
1

1
1
0
0

2 3
2 2

1 0
0 1

Se verica inmediatamente que A = LLT


Pasamos a la resolucin de los sistemas de ecuaciones

L
y = b

LT
x =
y

El sistema de ecuaciones L
y = b es el siguiente:

y1

y1 + y2
2y1 + 2y2 + y3

3y1 2y2

cuya solucin es
y T = (3, 1, 1, 0)

El sistema de ecuaciones LT
x =
y es el siguiente:

cuya solucin es
x T = (4, 1, 1, 0)

+ y4

x + x2 + 2x3 + 3x4

1
x2 + 2x3 2x4
x3

x4

=3
=2
=3
= 11

=3
= 1
= 1
=0

También podría gustarte