Advertisement
Guest User

diagonally dominant

a guest
Jul 20th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. B = [2 8 -1;5 -1 1;-1 1 4];
  2. A = [11;10;3];
  3. E = [B A];
  4. n =length(B);
  5. max= 10^(4);
  6. tol =10^(-7);
  7. M= zeros(n,n+1);
  8. p = zeros(1,n);
  9. e=0;
  10. id=1
  11. for i =1:n
  12. m =B(i,i);
  13. for j = 1:n
  14. if(B(i,j)> m)
  15. p(id)=j;
  16. id=id+1;
  17. end
  18. end
  19. end
  20. flag = 1;
  21. R=unique(p);
  22. if(numel(p)>numel(R))
  23. disp('cant do gauss');
  24. flag = 0;
  25. else
  26. for i =1:n
  27. e=find(p==i);
  28. M(i,:)=E(e,:);
  29. end
  30. for i = 1:n
  31. s = 0;
  32. for j = 1 : n
  33. s = s+abs(M(i,j));
  34. end;
  35. s = s-abs(M(i,i));
  36. if(abs(M(i,i))< s)
  37. disp('cant do gauss seidal');
  38. flag = 0;
  39. end
  40. end
  41.  
  42. end
  43. if (flag == 1)
  44. x = zeros(1,n);
  45. for j = 1:max
  46. x_bar = x;
  47.  
  48. for i = 1:n
  49.  
  50.  
  51. x(i) = (M(i,end)-sum(M(i,1:end-1).*x)+M(i,i)*x(i))./M(i,i);
  52.  
  53.  
  54. end
  55. if(abs(x_bar-x)<tol)
  56. break;
  57. end
  58. end
  59. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement