function [x]=jacob(A,b) % esta rutina implementa el metodo Jacobi % basico. % tol=1.e-4; itmax=1000; [n,n]=size(A); xo=zeros(n,1); it=0; error=1000.0; while it<=itmax & error >tol it=it+1; D=diag(diag(A)); D1=inv(D); x=D1*(D-A)*xo+D1*b; verr=x-xo; error=norm(verr)/norm(x); xo=x; end x=xo; disp('el numero de iteraciones es') disp(it) disp('el error es') disp(error) _____________________________________ function [x]=gaussseidel(matriz,vector) % esta rutina implementa el metodo de Gauss-Seidel % basico. % tol=1.e-4; itmax=1000; [n,n]=size(matriz); x0=zeros(n,1); it=0; error=1000.0; % calculo de las matrices D=diag(diag(matriz)); E=-(tril(matriz)-D); F=-(triu(matriz)-D); while it<=itmax & error >tol it=it+1 x=(D-E)\(F*x0+vector); error=norm(x-x0)/ norm(x) x0=x; end disp('el numero de iteraciones es') disp(it) disp('el error es') disp(error) ------------------------------------------- function [x]=sor1(matriz,vector,w); [n,n]=size(matriz); tol=1.e-4; itmax=300; x0=zeros(n,1); it=0; error=1000.0; % calculo de las matrices D=diag(diag(matriz)); E=-(tril(matriz)-D); F=-(triu(matriz)-D); while it<=itmax & error >tol it=it+1 x=(D-w*E)\(w*F*x0+(1-w)*D*x0+w*vector); error=norm(x-x0)/ norm(x) x0=x; end disp('el numero de iteraciones es') disp(it) disp('el error es') disp(error)