Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.85 KB | None | 0 0
  1. 9
  2. function x = GaussSeidel(A,b,es,maxit)
  3. % GaussSeidel: Gauss Seidel method
  4. % x = GaussSeidel(A,b): Gauss Seidel without relaxation
  5. % input:
  6. % A = coefficient matrix
  7. % b = right hand side vector
  8. % es = stop criterion (default = 0.00001%)
  9. % maxit = max iterations (default = 50)
  10. % output:
  11. % x = solution vector
  12. if nargin<2,error('at least 2 input arguments required'),end
  13. if nargin<4|isempty(maxit),maxit=50;end
  14. if nargin<3|isempty(es),es=0.00001;end
  15. [m,n] = size(A);
  16. if m~=n, error('Matrix A must be square'); end
  17. C = A;
  18. for i = 1:n
  19. C(i,i) = 0;
  20. x(i) = 0;
  21. end
  22. x = x';
  23. for i = 1:n
  24. C(i,1:n) = C(i,1:n)/A(i,i);
  25. end
  26. for i = 1:n
  27. d(i) = b(i)/A(i,i);
  28. end
  29. iter = 0;
  30. while (1)
  31. xold = x;
  32. for i = 1:n
  33. x(i) = d(i)-C(i,:)*x;
  34. if x(i) ~= 0
  35. ea(i) = abs((x(i) - xold(i))/x(i)) * 100;
  36. end
  37. end
  38. iter = iter+1;
  39. if max(ea)<=es | iter >= maxit, break, end
  40. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement