View
382
Download
17
Category
Preview:
DESCRIPTION
Bai viet cung cap 1 so thong tin don gian ve ma tran, cach phan tich ve ma tran don gian hon = Doolittle va Crout dung khu Gauss
Citation preview
Phép phân tích ma trận:
VD: Cho ma trận A(3x3) là ma trận ko suy biến (Định thức khác 0). Phépbiến đổi ma trận A thành tích 2 ma trận L(3x3) và R(3x3) gọi là phép phântích ma trận.
[ ] = = [L] * [R] = *
I. Phân tích ma trận bằng phương pháp DoolittlePhương pháp phân tích đưa ma trận A(3x3) về 2 ma trận L, R códạng như sau gọi là phương pháp Doolittle
[L] =1 0 01 01 ; [R] = 00 0
Để tìm ra 2 ma trận trên, ta thử nhân chúng lại với nhau!
[A] = [L] * [R] = + ++ + +Thực hiện phép khử Gauss tiến đối với ma trận trên, ta có:B1: Lấy dòng thứ nhất làm trụ.Dòng thứ 2 - Dòng thứ nhất * l21 để khử a21
Dòng thứ 3 - Dòng thứ nhất * l31 để khử a31
[A1] = 00 +B2: Lấy dòng thứ 2 làm trụ.Dòng thứ 3 – Dòng thứ 2 * l32 để khử a32
[A2] = 00 0
Ta có thể thấy, ma trận [A2] chính là ma trận [R], còn những phần tửlij mà ta nhân với dòng trụ để khử aij chính là những giá trị trong matrận [L] Để phân tích ma trận [A] theo phương pháp Doolittle, ta dùng
phương pháp khử Gauss tiến.Code thuật toán!
function [ l,r ] = doolittle( a )%DOOLITTLE Thuc hien phan tich ma tran a = pp Doolittle% Khoi tao cac ma tran 0 la ma tran vuong cap n = ma tran an = size(a,1);r = zeros(n);l = zeros(n);
% Dung phuong phap khu Gauss tien de bien doi ma tranfor k = 1:n-1
for i = k+1:nif a(i,k)~=0
ptc = a(i,k)/a(k,k);a(i,k+1:n) = a(i,k+1:n) - ptc*a(k,k+1:n);a(i,k) = ptc;
endend
end
% Trich ra 2 ma tran l, rl = tril(a);for i=1:n
l(i,i) = 1;end
r = triu(a);for i=1:n
r(i,i) = a(i,i);end
end
VD minh họa: nhập vào ma trận A = [1,2,3;4,5,6;7,8,9]>> A = [1,2,3;4,5,6;7,8,9]
A =
1 2 34 5 6
7 8 9
>> [L,R] = doolittle(A)
L =
1 0 04 1 07 2 1
R =
1 2 30 -3 -60 0 0
>>II. Phân tích ma trận bằng phương pháp Crout
Tương tự như phương pháp phân tích ma trận Doolittle, phương phápCrout phân tích ma trận [A] về 2 ma trận [L], [R] sau:
[L] =0 00 ; [R] =
10 10 0 1Tương tự, ta cũng nhân 2 ma trận trên lại với nhau!
[A] = [L] * [R] = + ++ + +Thực hiện phép khử Gauss theo chiều từ trái sang phải cho ma trậntrên, ta có:B1: Lấy cột thứ nhất làm trụCột thứ 2 – Cột thứ nhất * r12 để khử a12
Cột thứ 3 – Cột thứ nhất * r13 để khử a13
[A1] =0 0 +
B2: Lấy cột thứ 2 làm trụCột thứ 3 – Cột thứ 2 * r23 để khử a23
[A2] =0 00
Ta có thể thấy, ma trận [A2] chính là ma trận [L], còn những phần tửrij mà ta nhân với cột trụ để khử aij chính là những giá trị trong matrận [R] Để phân tích ma trận [A] theo phương pháp Crout, ta dùng
phương pháp khử Gauss từ trái sang.Code thuật toán!.
function [ l,r ] = crout( a )%CROUT Thuc hien phan tich ma tran a = pp CROUT% Khoi tao cac ma tran 0 la ma tran vuong cap n = ma tran an = size(a,1);r = zeros(n);l = zeros(n);
% Dung phuong phap khu Gauss tu trai sang de bien doi ma tranfor k = 1:n-1
for i = k+1:nif a(k,i)~=0
ptc = a(k,i)/a(k,k);a(k+1:n,i) = a(k+1:n,i) - ptc*a(k+1:n,k);a(k,i) = ptc;
endend
end
% Trich ra 2 ma tran l, rl = tril(a);for i=1:n
l(i,i) = a(i,i);end
r = triu(a);for i=1:n
r(i,i) = 1;end
end
VD minh họa: nhập vào ma trận A = [1,2,3;4,5,6;7,8,9]
>> A = [1,2,3;4,5,6;7,8,9]
A =
1 2 34 5 67 8 9
>> [L,R] = crout(A)
L =
1 0 04 -3 07 -6 0
R =
1 2 30 1 20 0 1
>>
Recommended