DESCOMPOSICIÓN LU

Páginas: 6 (1452 palabras) Publicado: 14 de noviembre de 2013
DESCOMPOSICIÓN LU

Implementar el algoritmo de descomposición LU visto en teoría.
Descomposición LU (I)
función lu_.m:
function [L,U]=lu_(a)
% descomposicion LU sin pivotacion
% a: matriz cuadrada
[n,m]=size(a);
if n~=m error('Matriz no cuadrada.'); end
for j=1:n-1
if a(j,j)==0 error('Pivote nulo.'); end
for i=(j+1):n
factor=a(i,j)/a(j,j);
a(i,j)=factor;
fork=j+1:n
a(i,k)=a(i,k)-factor*a(j,k);
end
end
end
L=tril(a,-1)+eye(n);
U=triu(a);



Calcula U triangular superior, L triangular inferior con 1s en la diagona de forma que A=L*U


function [l,u]=LUdoolitle(a)

n=length(a);
l=a*0; u=a*0;
for k=1:n
u(k,k:n)=a(k,k:n)-l(k,1:k-1)*u(1:k-1,k:n);
l(k,k)=1;
l(k+1:n,k)=(a(k+1:n,k)-l(k+1:n,1:k-1)*u(1:k-1,k))/u(k,k);
endEscribe un programa que permita obtener las matrices correspondientes a la factorización LU, a partir de la
matriz de coeficientes de un sistema de ecuaciones lineales.
La función en Matlab debe admitir como entradas la matriz de coeficientes de un sistema y un vector columna
con los términos independientes, y debe devolver, las matrices L,U y P y un vector columna con las
soluciones delsistema.
function [P, L, U,x] = plu(A,b)
[m, n] = size(A);
if m ~= n
error('La matriz debe ser cuadrada')
end
P = eye(n, n);
L = eye(n, n);
U = zeros(n, n);
tol = sqrt(eps);
sign = 1;

for k = 1:n
if abs(A(k, k)) < tol
for r = k:n
if abs(A(r, k)) >= tol
break
end
if r == n
if nargout == 4
sign = 0;
return
else
disp('A es singular con tolerancia')
error(['No hay pivotaje enlas columnas' int2str(k) '.'])
end
end
end
A([r k], 1:n) = A([k r], 1:n);
if k > 1, L([r k], 1:k-1) = L([k r], 1:k-1); 
end
P([r k], 1:n) = P([k r], 1:n);
sign = -sign;
end
for i = k+1:n
L(i, k) = A(i, k) / A(k, k);
for j = k+1:n
A(i, j) = A(i, j) - L(i, k)*A(k, j);
end
end
for j = k:n
U(k, j) = A(k, j) * (abs(A(k, j)) >= tol);
end
end

Z=P*b;
Y=inv(L)*Z;
x=inv(U)*Y;
L
U P
disp('La solución del sistema es:')
disp(x)
end

4 Factorizacion LU (sin intercambio de filas)
%
% [L, U] = slu(A) usa la eliminacion gausiana para computar una matriz
% triangular inferior L y una matriz triangular superior U tal forma que
% L*U = A. El algoritmo se detendra si la entrada de pivote es muy pequena.
[n, n] = size(A);
for k = 1:n
if abs(A(k, k)) < sqrt(eps)disp([’Pivote muy pequeno encontrado en columna’ int2str(k) ’.’])
end
L(k, k) = 1;
for i = k+1:n
L(i,k) = A(i, k) / A(k, k);
for j = k+1:n
A(i, j) = A(i, j) - L(i, k)*A(k, j);
end
end
for j = k:n
U(k, j) = A(k, j);
end
end






Calcula la descomposición LU con pivoteo
% parcial de una matriz A de orden N x N
%
% Uso
% [B, pinfo, error] = lud(A)
%
% entrada:
% A: La matriz A de ordenN x N a factorizar
%
% salida:
% B: La descomposicion LU de A
% pinfo: informacion del pivote
% error: Bandera de error
% error = 0 Indica que la reduccion se pudo
% realizar, B es triangular superior
% error = 1 Indica que la dimension de A o B
% no es correcta y hubo error
8%
iflag = 0;
% Obtener el tamanio de A y comprobar las dimensiones
[m,n] = size(A);
if ( m ~= n )
iflag =1;
return
end
% Empieza la factorizacion LU con descomposicion
for k = 1:n-1
% Buscar en pivote indice
[amax, l ] = max(abs(A(k:n,k)));
l = l + k - 1;
ipivt(k) = l;
% Intercambiar columnas si es necesario
if( k ~= l )
tmp = A(k,k:n);
A(k,k:n) = A(l,k:n);
A(l,k:n) = tmp;
end
if( amax > 0 ) % Si amax == 0 subcolumna A(k:n,k) es cero
for i = k+1:n
% Computa multiplicadores
A(i,k) =-A(i,k)/A(k,k);
% Realiza la eliminacion por filas
A(i,k+1:n) = A(i,k+1:n) + A(i,k) * A(k,k+1:n);
end
end
end




ECUACIONES TRIDIAGONALES

Si se tiene una matriz tridiagonal de la forma





Entonces en una matriz de 10000 elementos, n=10. Hay E=9702 elementos iguales a cero. Y 208 elementos distintos de cero. Por lo que resulta conveniente almacenar la matriz de una forma...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Descomposicion lu
  • Descomposicion LU
  • Descomposicion lu
  • Descomposición lu
  • Descomposicion LU. Metodos numericos
  • Lu
  • Progeria Lu Lu
  • Descomposicion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS