Ing sistemas informacion

Solo disponible en BuenasTareas
  • Páginas : 2 (377 palabras )
  • Descarga(s) : 0
  • Publicado : 6 de septiembre de 2012
Leer documento completo
Vista previa del texto
Sistemas Triangulares

function v = triangularInferior(M)
l = length(M);
x = 0;
j = 1;
for i = 2:l
A = M(i,:);
x = x + sum( A(1:i-1));
end
v = (x ~= 0);

function x =resuelveCaso1Full(A, b)
x = []
largo = length(b)
i = 1
j = 1
if ~ triangularInferior(A)
A = fliplr(flipud(A));
end
% si hay seros en la diagonal o no anda
x = [b(1)/A(1,1)]
for k=2:largo
i =i+1
j = j+1
AUX = A(i,:)
vec = AUX(1:(k-1))
x = [x, ( b(k) - sum(vec.*x)) / A(i,j)]

end



Algoritmo LU

function LU = LUfactor(A)
[m,n] = size(A);
if m~=nerror('A no es una matriz cuadrada');
else
for k = 1:n-1
for i = k+1:n
A(i,k) = A(i,k)/A(k,k);
if A(k,k) == 0, error ('Elemento diagonal nulo');
endj = [k+1:n]; A(i,j) = A(i,j) - A(i,k)*A(k,j);
end
end
end
LU = A;

function [L,U] = LUfactorizacion(A)
U = LUfactor(A); %Obtengo una matriz entera que tiene L en su parteestrictamente inferior y U en su parte superior
n = length(A);
L = diag(ones(1,n)); %Hago una matriz identidad

for i = 2:n
for j = 1:i-1
L(i,j)=U(i,j);
U(i,j)=0;
end
endAlgoritmo de jacobi

function x = MetodoJacobi(A,b,tol)
D = diag(diag(A),0);
invD = D^-1;

B = -1* (invD*(A-D));
c = invD*b;

n = length(A);
e = tol + 1; %error inicial debe ser menorque la tolerancia claro.
x = zeros(size(b)); %vector de incognitas

while e > tol
errorAnterior=x;%antes de hacer una iteracion cargo en x2 el error anterior
%
x = B*x+c;
%e = norm(errorAnterior - x);
end

Algoritmo de Gauss – Seidel

function gaussseidelb=gaussseidelb(A,b)
e = length(b);
XO=zeros(1,e);
X=XO;
K=0;
Norma=1;
%Para no complicarme no pongoeso del error!!! no lo hago generico
while Norma>0.00001
K=K+1;
for i=1:e
suma=0;
for j=1:e
if i ~= j
suma=suma+A(i,j)*X(j);
end...
tracking img