Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- clc;
- mode = input('Chon cau hoi (1 hoac 2): ');
- if mode == 1
- a = input('A = ');
- b = input('B = ');
- [r, c]=size(a);
- [h, k]=size(b);
- if r ~= c || h ~= r || k ~= 1 || det(a) == 0
- disp('Phuong trinh AX=B khong phai he Cramer');
- else
- disp('Phuong trinh AX=B la he Cramer');
- for i = 1 : r;
- temp = a;
- temp(:,i) = b;
- x = det(temp)/det(a);
- disp(['x', num2str(i), ' = ', num2str(x)]);
- end;
- end;
- end;
- if mode == 2
- a = input('A = ');
- [h, w] = size(a);
- if h ~= w
- disp('A khong phai ma tran vuong.');
- else
- disp('A la ma tran vuong.');
- if det(a) == 0
- disp('A khong kha nghich.');
- else
- disp('A kha nghich.');
- b = eye(h);
- disp([a, b]);
- % 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
- for i = 1: h
- % Nếu a(i, i) = 0, thì đưa hàng xuống dưới. Còn không sẽ làm phép
- % chia với số 0, xảy ra lỗi. Việc đưa lên hay đưa xuống thì ma trận
- % nghịch đảo vẫn như nhau
- if (a(i, i) == 0)
- for j = i+1:h
- if (a(j, i) ~= 0)
- s = a(i, :);
- a(i, :) = a(j, :);
- a(j, :) = s;
- t = b(i, :);
- b(i, :) = b(j, :);
- b(j, :) = t;
- break;
- end;
- end;
- end;
- for j = i+1:h
- b(j, :) = b(j, :) - b(i, :)*a(j, i)/a(i, i);
- a(j, :) = a(j, :) - a(i, :)*a(j, i)/a(i, i);
- end;
- end;
- % 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
- for i = 1: h
- for j = i+1:h
- 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);
- 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);
- end;
- end;
- % Cuối cùng ra ma trận chéo A
- % Chia từng hàng của A với mỗi phần tử nằm trên đường chéo chính
- for i = 1: h
- b(i, :) = b(i, :)/a(i, i);
- a(i, :) = a(i, :)/a(i, i);
- end;
- disp('A^-1 = ');
- disp(b);
- end;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement