Jacobi method in Scilab, what is wrong with my implementation -
hy,
i have below jacobi method implementation in scilab, receaive errors,
function [x]= jacobi(a,b) [n m] = size (a); // determinam marimea matricei
//we check if matrix quadratic
if n<>m error('matricea ar trebui sa fie patratica'); abort; end
we initialize zeros matrix
x = zeros(n,1) // matrice cu zerouri x = [0, 0 ... 0] // initializarea variabilelor itmax=1000.; //numar maxim de iteratii eps=0.0000000000000001 // toleranta maxima nrit=0; ready=0; while (ready==0) i=1:n s=0 j=1:n if i<>j s=a(i,j)+x(j); end end y(i)=(1/a(i,i))*(b(i)-s); end abso = norm(x(1),y(1)); i=2:n if abso<norm(x(i),y(i)) abso=norm(x(i),y(i)); end end nrit=nrit+1; if((nrit==itmax)|(abso<eps)) ready=1; end x=y; end i=1:n disp(y(i),'rezidurile medii'); end x
what wrong it!
sincerly,
i don't know errors , noticed there issues in implementation well, can use following code works fine:
jacobi alghoritm
function [x]= jacobi(a,b) [n m] = size (a); // determinam marimea matricei if n<>m error('matricea ar trebui sa fie patratica'); end // initializarea variabilelor x = zeros(n,1) // matrice cu zerouri x = [0, 0 ... 0] itmax=1000.; //numar maxim de iteratii eps=0.0000000000000001 // toleranta maxima nrit=0; ready=0; while (ready==0) i=1:n s=0 j=1:n if i<>j s=s+a(i,j)*x(j); end end y(i)=(1/a(i,i))*(b(i)-s); end abso = abs(x(1)-y(1)); i=2:n if abso<abs(x(i)-y(i)) abso=abs(x(i)-y(i)); end end nrit=nrit+1; if((nrit==itmax)|(abso<eps)) ready=1; end x=y; end
let's saved in file @ ~/jacobi.sci
usage (in scilab)
-->exec('~/jacobi.sci', -1) -->jacobi([3,-1,-1;-1,3,1;2,1,4],[1,3,7]) ans = 1. 1. 1.
Comments
Post a Comment