Вы находитесь на странице: 1из 16

Matemtica

computacional I

FACTORIZACIN DE CHOLESKY-CROULT
NOMBRE Y APELLIDOS: PABLO ENCISO DE PAZ
CDIGO: 091110J
PROFESOR: HUMBERTO GALVEZ

DECOMPOSICION CHOLESKY
function [l,lt]=choleski(a)
[n,m]=size(a);
%comprobacion si la matriz es simetrica cuadrada y definida positiva
if(n~=m)
disp('La matriz no es cuadrada')
return
end
for i=1:n
P=a(1:i,1:i);
aux=det(P);
if aux<=0
disp('la matriz no es positiva definida')
return
end
end
if a'~=a
disp('La matriz no es simetrica')
return
end
%factorizacion de la matriz para encontrar l y l'
l(1,1)=sqrt(a(1,1));
for i=2: n
l (i,1)=a(i,1)/l(1,1);
end
for i=2:n
sum=0;
for j=1:i-1
sum=sum+(l(i,j))^2;
end
l(i,i)=sqrt(a(i,i)-sum);
for k=i+1:n
sum1=0;
for j=1:i-1
sum1=sum1+l(k,j)*l(i,j);
l(k,i)=(a(k,i)-sum1)/l(i,i);
end
end
end
lt=l'

EJEMPLOS 1

A =

16 10 14 18

10

64

14

38

34

14

18
4

t
[L, L ] = choleski (A)

4.0000

2.5000 7.5993
L=

2.3112

3.5000 -0.6251 5.0358


4.5000 -0.6908 -2.8162

1.0000 -0.0658 0.4883 2.0896

4.0000
0
Lt

2.5000

7.5993 -0.6251
0

3.5000

0
0

5.03
0

4.5000
-0.6908
-2.8162
2.3112

2.8967

1.0000
-0.0658
0.4883
2.0896

2.8967

EJEMPLO 2

A=

3 35

25

t
[L, L ] = choleski (A)

1.4142 0.7071 0.7071


0
Lt =

1.2247
0

L=

1.4142

1.2247

0.7071

0.7071

1.2247

3.6742

2.0000
0

0.5000

5.7228 0.4805

0.5000

3.2433

0.7071

1.2247

0.7071

1.2247

2.0000

0.7071

1.2247

0.5000

5.7228

0.7071

3.6742

0.5000

0.4805

3.2433

EJEMPLO 3

15

6 18

15

B= 3
3

9 105

24

3 15 18 24

75

t
[L, L ] =choleski (B)

2.4495 1.2247 1.2247 1.2247


0
Lt

2.1213 2.1213 2.1213


0

0
0

L=

1.2247

0
0
0

3.4641
0

0.8660

9.9121

6.3640

0.8660

0.8323
5.6176

2.4495

1.2247

2.1213

1.2247

2.1213

3.4641

1.2247

2.1213

0.8660

9.9121

1.2247

6.3640

0.8660 0.8323 5.6176

EJEMPLO 4
18 11 15 19 5
21 66 6 9

A= 15 6 44 5 11
19 8 7 69 16
5

7 12 16 39

t
[L, L ] = choleski (A)

2.0000

L=

1.5000

0.8660

1.0000

0.5774

0.8165

0.4082

0.7071

0.5000

0.2887

2.0000
0
Lt

1.2247 0.7071

1.0000

1.5000 1.0000

0.5000

0.8660

0.2887

0.5774
0.8165

0.4082

1.2247

0.7071

0.7071

1.0000

EJEMPLO 5
14 9
9

13 17 3

62

A= 13 2
17
3

4
-3

3 -3

32 - 1 1
1
0

-1 0
0 -11

t
[L, L ] =choleski (A)

2.0000

1.5000

0.8660

0
0

L = 1.0000

0.5774

0.8165

0.5000

0.2887

0.4082

0.7071

2.0000

Lt

1.2247

1.5000

1.0000

0.8660

0.5774

0.8165

0.7071

0.5000
0.2887
0.4082

0
1.0000

0
0
1.2247

0
0

0.7071
0

0.7071
1.0000

FACTORIZACIN LU CROULT

% FACTORIZACION LU CROULT
Clc %permite borrar el rea de trabajo
Clear %permite borrar las variables almacenadas
Forma t long %permite utilizar la mxima capacidad de la maquina
Fprintf ('

FACTORIZACION LU CROULT\n\n\n ' );

%fprintf me permite ingresar comentarios de manera textual que pueden


%orientar al usuario en el uso del programa
%input es un comando de solicitud de entrada de datos del usuario.
A=input ('Ingrese la matriz A = \n');
b=input ('\ingres el vector b, correspondite a los trminos
Independientes b=\n');
[n,m]=size(A);
C= [A, b];
% la matriz C, representa la forma de la matriz aumentada [Ab]
fprintf('\nLa Matriz C, que corresponte a la matriz aumentada [Ab] es
= \n');
Disp (C)
if n==m
for k=1: n
%La instruccin iterativa for permite repetir estamentos a un
%nmero especfico de veces
u (k,k)=1; %princio del metodo
Suma=0;
for p=1: k-1
Suma=suma+L (k, p)*u (p, k);
end
L (k, k) = (A (k, k)-suma);
For i=k+1:n
Suma=0;
for r=1:k-1
suma =suma+L (i, r)*u(r, k);
end
L (i, k)=(A (i, k)-suma);
%obtencin de la matriz L
end
for j=k+1: n
Suma =0;
for s=1:k-1
Suma =suma+L (k, s)*u(s, j);
end
u(k , j)=(A(k ,j)-suma)/L(k,k); %obtencin de la matriz U

end
end
memoriau=1; %clculo del determinante de u
memoriaL=1; %clculo del determinante inicial de L
for i=1: n
memoriaL=memoriaL*L(i,i);
en d
Producto=memorial*memoriau; %clculo del determinante total

if producto~=0
for I =1:n
Suma =0;
for p=1:i-1
suma =suma+L (i, p)*z(p);
end
z(i)=(b(i)-suma)/L(i,i); %obtencin del vector Z
end

for I =n:-1:1
Suma =0;
for p= (i+1):n
suma = suma+u(i,p)*x(p);
end
x(i)=(z(i)-suma)/u(i,i); % solcion, calculos de las variables
end
else
fprintf ('\nEl determinante es igual a cero, por lo tanto el
sistema tiene infinita o ninguna solucin\n')
end
end
fprintf ('\n Matriz Ab:\n')
disp. (C)
fprintf('\n Matriz L:\n')
disp(L)
fprintf('\n Matriz U:\n')
disp(u)
fprintf('\n El vector Z:\n')
disp(z)
fprintf('\n\nLa solucin de X1 hasta Xn es:\n');
%a continuacin de utiliza una instruccin for, para mostrar el usuario,
%los resultados de una manera ms ordenada
for i=1: n
xi =x (1,i);
fprintf ('\nX%g=',i)
disp(xi);
end

EJEMPLO 1
1

5
3

8
8

A= 1

FACTORIZACION LU CROULT

1.00000000000000

0
3.00000000000000

-9.00000000000000

L= 1.00000000000000
0

-3.00000000000000

1.00000000000000
4.25000000000000
8.00000000000000
14.62500000000000

1.00000000000000
4.00000000000000

5.33333333333333

-4.00000000000000
0

-33.00000000000000
16.50000000000000

5.00000000000000

0.66666666666666

8.00000000000000

7.00000000000000

0
1.88888888888889

1.00000000000000
0.77777777777778

U=
0
1.06250000000000

0
0.81250000000000

0
1.00000000000000

1.77777777777778

1.00000000000000

0
1.00000000000000

0
1.00000000000000

EJEMPLO 2
2
4
A=

FACTORIZACION LU CROULT

2.00000000000000

0
4.00000000000000
0
L= 3.00000000000000
0
2.00000000000000
0
1.00000000000000
6.53763440860215

-8.00000000000000

-1.50000000000000

-6.06250000000000

3.00000000000000

-4.87500000000000

-0.50000000000000

2.31250000000000

1.91752577319588

0.62886597938144

1.00000000000000
1.50000000000000

2.50000000000000

0
-0.37500000000000
U=
0
0.70103092783505

4.50000000000000

1.00000000000000

1.62500000000000

0
-0.31958762886598

0
0.8172043010752

0
1.00000000000000

3.00000000000000

0.50000000000000

1.00000000000000

1.00000000000000

EJEMPLO 3
2

A= 4

7
9
8

4
6

6
5

FACTORIZACION LU CROULT

2.00000000000000
0
3.00000000000000
0

0
0.50000000000000

L= 4.00000000000000
0

-4.00000000000000

7.00000000000000
-15.00000000000000

-16.50000000000000
0

7.00000000000000
-12.66666666666667

1.00000000000000
3.00000000000000
0
-8.00000000000000
U=
0
-0.05555555555556
0
1.00000000000000
0
1.00000000000000

-18.00000000000000

-72.00000000000000

-9.50000000000000
1.24444444444444

-48.00000000000000

2.50000000000000

3.50000000000000

1.00000000000000

-3.00000000000000

0
2.16666666666667

EJEMPLO 4
5

2.00000000000000

1.00000000000000

0
-0.53333333333333

A=

FACTORIZACION LU CROULT

5.00000000000000

0
4.00000000000000

-5.20000000000000

0
L= 1.00000000000000
0

1.20000000000000

8.07692307692308

1.00000000000000

6.20000000000000

5.23076923076923

6.44761904761905

0
1.00000000000000
0.37813884785820

1.00000000000000
0.40000000000000
0
-1.03846153846154
U=
0
1.07619047619048

4.20000000000000

1.80000000000000

7.76923076923077

1.20000000000000

1.00000000000000

-0.23076923076923

0
0.35238095238095

0
1.00000000000000

0
1.89143279172821

0
1.00000000000000

-1.07692307692308

EJEMPLO 5

0.60000000000000

1.00000000000000

2.56190476190476

5
3

8
6

7
5

A= 1
2
1

6
7
8

5
4
5

FACTORIZACION LU CROULT

1.00000000000000
0
2.00000000000000
0
L=

-7.00000000000000

1.00000000000000
0

3.00000000000000

-5.14285714285714

2.00000000000000
-0.61111111111111

-7.00000000000000
0

2.00000000000000

1.00000000000000
-2.00000000000000

-3.00000000000000
14.9090909090909

1.00000000000000
5.00000000000000
8.00000000000000
7.00000000000000
0
1.57142857142857

1.00000000000000
0.85714285714286

U=
0
1.30555555555556

0
0.88888888888889

0
1.00000000000000

0
9.45454545454545

0
1.00000000000000

5.14285714285714

9.00000000000000

1.71428571428571

1.00000000000000

Вам также может понравиться