You are on page 1of 3

Phân tích LU theo phương pháp Doolittle

B = zeros(n,1);
disp('Nhap ma tran A:');
for i = 1:n
for j = 1:n
A(i,j) = input(sprintf('Nhap phan tu a(%d,%d): ', i,j));
end
end
disp('Nhap vecto B:');
for i = 1:n
B(i) = input(sprintf('Nhap phan tu b(%d): ', i));
end

% Phân tích Doolittle của A


L = eye(n); % Khởi tạo ma trận L là ma trận đơn vị
U = A; % Khởi tạo ma trận U là sao chép ma trận A ban đầu
for j = 1:n
for i = j+1:n
% Tính U và L cho cột j
L(i,j) = U(i,j)/U(j,j);
U(i,j:n) = U(i,j:n) - L(i,j)*U(j,j:n);
end
end

% Giải hệ phương trình AX=B với phân tích Doolittle đã tính được
% Giải Ly = B để tìm vectơ y
y = zeros(n,1);
for i = 1:n
y(i) = B(i) - L(i,1:i-1)*y(1:i-1);
end

% Giải Ux = y để tìm nghiệm vectơ x


x = zeros(n,1);
for i = n:-1:1
x(i) = (y(i) - U(i,i+1:n)*x(i+1:n))/U(i,i);
end

% In ra kết quả
disp('He phuong trinh AX=B co nghiem la:');
disp(x);
Nhap so chieu cua ma tran:
3
Nhap ma tran A:
Nhap phan tu a(1,1):
2
Nhap phan tu a(1,2):
-5
Nhap phan tu a(1,3):
4
Nhap phan tu a(2,1):
3
Nhap phan tu a(2,2):
3
Nhap phan tu a(2,3):
9
Nhap phan tu a(3,1):
3
Nhap phan tu a(3,2):
6
Nhap phan tu a(3,3):
5
Nhap vecto B:
Nhap phan tu b(1):
1
Nhap phan tu b(2):
0
Nhap phan tu b(3):
4
He phuong trinh AX=B co nghiem la:
2.6176
0.1176
-0.9118

L =

1.0000 0 0
1.5000 1.0000 0
1.5000 1.2857 1.0000

U =

2.0000 -5.0000 4.0000


0 10.5000 3.0000
0 -0.0000 -4.8571

You might also like