Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
function [solucion,num_iteraciones]=metodo_jacobi(A,B,punto_inicial,error)
cont_iteraciones=0;
s=size(A);
num_ecuaciones=s(1);
for k=1:num_ecuaciones
B(k)=B(k)/A(k,k);
A(k,:)=A(k,:)/A(k,k);
A(k,k)=0;
end
M=-A;
x_ant=punto_inicial';
x_sig=M*x_ant+B';
deltax_n=x_sig-x_ant;
while norm(deltax_n,inf) > error
x_sig=M*x_ant+B';
deltax_n=x_sig-x_ant;
x_ant=x_sig;
cont_iteraciones=cont_iteraciones+1;
end
solucion=x_sig;
num_iteraciones=cont_iteraciones;
function [x,iter]=jac(A,b,x,tol,maxit)
N=diag(diag(A));
P=N-A; corr=1; errest=1; iter=0;
while abs(errest)>tol & iter<maxit
iter=iter+1;
x0=x;
corr0=corr;
x=N\(P*x0+b);
corr=norm(x-x0,inf);
normest=corr/corr0;
if normest>=1 & iter>=2
error('norma de la matriz de iteración > 1')
end
errest=normest/(1-normest)*corr;
end
iter
iter=
13
ans=
0.6763
0.1799
-0.0216
function[y,err,it]=JACOBIANO(A,b,maxiter,epsilon)
% y es vector solución
% err es el error final
% it es el numero de iteraciones final
% A matriz del sistema
% b vector del sistema
% maxiter es numero máximo de iteraciones
% epsilon es la cota del error
n=length(b);
it=0;
err=2*epsilon;
x=zeros(1,n);
y=zeros(1,n);
while it<maxiter & err>epsilon
for i=1:n
S=0;
for j=1:n;
if i~=j;
S=S+A(i,j)*x(j);
end
end
y(i)=(b(i)-S)/A(i,i);
end
it=it+1;
err=norm(x-y,1);
x=y;
end
y
it
err