Advertisement
Looong

Matlab Đại Số Chính Thức 2 :v

Jan 8th, 2014
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.83 KB | None | 0 0
  1. clear all;
  2. clc;
  3.  
  4. mode = input('Chon cau hoi (1 hoac 2): ');
  5.  
  6. if mode == 1
  7.     a = input('A = ');
  8.     b = input('B = ');
  9.     [r, c]=size(a);
  10.     [h, k]=size(b);
  11.    
  12.     if r ~= c || h ~= r || k ~= 1 || det(a) == 0
  13.         disp('Phuong trinh AX=B khong phai he Cramer');
  14.     else
  15.         disp('Phuong trinh AX=B la he Cramer');
  16.        
  17.         for i = 1 : r;
  18.             temp = a;
  19.             temp(:,i) = b;
  20.             x = det(temp)/det(a);
  21.             disp(['x', num2str(i), ' = ', num2str(x)]);
  22.         end;
  23.     end;
  24. end;
  25.  
  26. if mode == 2
  27.     a = input('A = ');
  28.     [h, w] = size(a);
  29.    
  30.     if h ~= w
  31.         disp('A khong phai ma tran vuong.');
  32.     else
  33.         disp('A la ma tran vuong.');
  34.        
  35.         if det(a) == 0
  36.             disp('A khong kha nghich.');
  37.         else
  38.             disp('A kha nghich.');
  39.            
  40.             b = eye(h);
  41.            
  42.             disp([a, b]);
  43.            
  44.             % Biến đổi theo hàng từ trên xuống từ trái qua phải để A là ma trận bậc thang trên
  45.             for i = 1: h
  46.                 % Nếu a(i, i) = 0, thì đưa hàng xuống dưới. Còn không sẽ làm phép
  47.                 % chia với số 0, xảy ra lỗi. Việc đưa lên hay đưa xuống thì ma trận
  48.                 % nghịch đảo vẫn như nhau
  49.                 if (a(i, i) == 0)
  50.                     for j = i+1:h
  51.                         if (a(j, i) ~= 0)
  52.                             s = a(i, :);
  53.                             a(i, :) = a(j, :);
  54.                             a(j, :) = s;
  55.                            
  56.                             t = b(i, :);
  57.                             b(i, :) = b(j, :);
  58.                             b(j, :) = t;
  59.                             break;
  60.                         end;
  61.                     end;
  62.                 end;
  63.                
  64.                 for j = i+1:h
  65.                     b(j, :) = b(j, :) - b(i, :)*a(j, i)/a(i, i);
  66.                     a(j, :) = a(j, :) - a(i, :)*a(j, i)/a(i, i);
  67.                 end;
  68.             end;
  69.            
  70.             % Biến đổi theo hàng từ dưới lên từ phải qua trái để A là ma trận bậc thang dưới
  71.             for i = 1: h
  72.                 for j = i+1:h
  73.                     b(h-j+1, :) = b(h-j+1, :) - b(h-i+1, :)*a(h-j+1, h-i+1)/a(h-i+1, h-i+1);
  74.                     a(h-j+1, :) = a(h-j+1, :) - a(h-i+1, :)*a(h-j+1, h-i+1)/a(h-i+1, h-i+1);
  75.                 end;
  76.             end;
  77.             % Cuối cùng ra ma trận chéo A
  78.            
  79.             % Chia từng hàng của A với mỗi phần tử nằm trên đường chéo chính
  80.             for i = 1: h
  81.                 b(i, :) = b(i, :)/a(i, i);
  82.                 a(i, :) = a(i, :)/a(i, i);
  83.             end;
  84.            
  85.             disp('A^-1 = ');
  86.             disp(b);
  87.         end;
  88.     end;
  89. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement