Seidel con Relajación
Matlab
Publicado el 24 de Febrero del 2018 por Natus
21.884 visualizaciones desde el 24 de Febrero del 2018
Seidel con Relajación
A=[4 3 0; 3 4 -1; 0 -1 4]; % Matriz de coeficientes
b=[24;30;-24]; % Terminos independientes
w=1.25; % Lambda Relajador
tol=0.00001; %Tolerancia
it=20; % Numero de iteraciones donde debe de parar en caso la tolerancia no lo detenga
function [Navi] = GNavi(A,b,w,tol,it)
if nargin<5, tol=sqrt(eps);
end
n=size(A,1);
x=zeros(n,1);
r = b - A*x;
error = norm(r);
if error<tol, return, end
b = w * b;
M = w * tril(A,-1) + diag(diag(A));
N = -w * triu(A,1) + (1.0 - w) * diag(diag(A));
k=0;
iter=0;
while error>=tol && k<it
x_1 = x;
x = M \ ( N*x + b );
error = norm(x - x_1)/norm(x);
iter = iter+1;
Navi=[iter x_1'];
fprintf(' %d %5.4f %5.4f %5.4f \n',Navi);
end
No hay comentarios