Sunteți pe pagina 1din 1

function [x] = jacobi(A, b, x0, N, TOL)

%A matriz de coeficientes del sistema, debe ser estrictamente dominante


%b es el lado derecho del sistema
%x0 vector de condiciones iniciales
%N Maximo numero de iteraciones
%TOL presicion deseada
%Salida x: solucion del sistema
solHallada = 0;
[n, m] = size(A);
k = 1;
x = x0;
while(k < N)
for i=1:n
sumatoria = 0;
for j=1:n
q = -1 / A(i, j);
if(i != j)
sumatoria = sumatoria + A(i, j) * x(j);
end
end
x(i) = q*(b(i) + sumatoria) / A(i, j);
end
errorJ = norm(x - x0);
fprintf("iteraciones #%d, el error es %f\n", k, errorJ);
for i=1:n
fprintf("x(%d) = %f\n", i, x(i));
end
fprintf("\n");
if(errorJ < TOL)
solHallada = 1;
fprintf("el metodo convergio en %d iteraciones", k);
break; %Rompe el while
end
k++;
x0 = x;
end %Cierra el while
if(solHallada == 0)
fprintf("El metodo no convergio");
end
end %Termina la funcion

S-ar putea să vă placă și