5
Phép phân tích ma trn: VD: Cho ma trn A (3x3) là ma trn ko suy biến (Định thc khác 0). Phép biến đổi ma trn A thành tích 2 ma trn L (3x3) và R (3x3) gi là phép phân tích ma trn. [ ]= = [L] * [R] = * I. Phân tích ma trn bằng phương pháp Doolittle Phương pháp phân tích đưa ma trận A(3x3) v2 ma trn L, R có dạng như sau gọi là phương pháp Doolittle [L] = 1 0 0 1 0 1 ;[R] = 0 0 0 Để tìm ra 2 ma trn trên, ta thnhân chúng li vi nhau! [A]=[L] * [R] = + + + + + Thc hin phép khGauss tiến đối vi ma trn trên, ta có: B1: Ly dòng thnht làm tr. Dòng th2 - Dòng thnht * l 21 để kha 21 Dòng th3 - Dòng thnht * l 31 để kha 31 [A1]= 0 0 + B2: Ly dòng th2 làm tr. Dòng th3 Dòng th2 * l 32 để kha 32 [A2]= 0 0 0

Phep phan tich ma tran Doolittle va Crout

Embed Size (px)

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

Page 1: Phep phan tich ma tran Doolittle va Crout

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

Page 2: Phep phan tich ma tran Doolittle va Crout

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

Page 3: Phep phan tich ma tran Doolittle va Crout

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

Page 4: Phep phan tich ma tran Doolittle va Crout

[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

Page 5: Phep phan tich ma tran Doolittle va Crout

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

>>