Facebook
From aa, 7 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 310
  1. function [x,err]=gauss_jordan_elim(A,b)
  2. A = [-1 2;3 -4;] % input for augmented matrix A
  3. b = [-6; 14;] % intput for matrix B
  4. [n,m]=size(A); % finding the size of matrix A
  5. err =0; % calculation of error
  6. x=zeros(n,1); % calling fuction zero
  7. if n ~= m
  8.     disp('error: n~=m'); % displaying error if found
  9.     err = 1;
  10. end % end of the scope of if
  11. if length(b) ~= n  % finding the legth of matrix B
  12.     disp('error: wrong size of b'); % displaying error, if found
  13.     err = 2;
  14. else
  15.     if size(b,2) ~= 1
  16.         b=b';
  17.     end % end of the scope of if-else
  18.     if size(b,2) ~= 1
  19.         disp('error: b is a matrix'); % displaying erron in matrix B
  20.         err = 3;
  21.     end
  22. end
  23. if err == 0
  24.     Aa=[A,b];
  25.     for i=1:n
  26.         [Aa(i:n,i:n+1),err]=gauss_pivot(Aa(i:n,i:n+1));
  27.         if err == 0
  28.             Aa(1:n,i:n+1)=gauss_jordan_step(Aa(1:n,i:n+1),i);
  29.         end
  30.     end
  31.     x=Aa(:,n+1);
  32. end
  33. A=0;
  34. function A1=gauss_jordan_step(A,i) % calling of fuction function
  35.  
  36. [n,m]=size(A); % determination of size of matrix A
  37. A1=A; % assigning A to A1
  38. s=A1(i,1);
  39. A1(i,:) = A(i,:)/s;
  40. k=[[1:i-1],[i+1:n]];
  41. for j=k
  42.     s=A1(j,1);
  43.     A1(j,:)=A1(j,:)-A1(i,:)*s;
  44. end % end of for loop
  45. function [A1,err]=gauss_pivot(A) % calling of fucntion
  46. [n,m]=size(A); % finding the size of matrix A
  47. A1=A; % process of assigning
  48. err = 0; % error flag
  49. if A1(1,1) == 0
  50.     check = logical(1); % logical(1) - TRUE
  51.     i = 1;
  52.     while check
  53.         i = i + 1;
  54.         if i > n  
  55.             disp('error: matrix is singular');
  56.             err = 1;
  57.             check = logical(0);
  58.         else
  59.             if A(i,1) ~= 0 & check
  60.                 check = logical(0);
  61.                 b=A1(i,:);      % process to change row 1 to i
  62.                 A1(i,:)=A1(1,:);
  63.                 A1(1,:)=b;
  64.             end
  65.         end
  66.     end
  67. end