Tải bản đầy đủ - 0 (trang)
5- Các phép toán về ma trận

5- Các phép toán về ma trận

Tải bản đầy đủ - 0trang

Giáo trình Matlab và ứng dụng

3



6



9



Ma trận B đợc gọi là ma trận chuyển vị của ma trận A. Phép chuyển

vị biến ma trận hàng (hoặc véc tơ) thành ma trận cột, ma trận cột

thành ma trận hàng (hoặc véc tơ). Nếu cả x và y là các véc tơ cột

các số thực, thì tích x*y không đợc định nghĩa nhng hai tích số x*y

và *x thì giống nh tích vô hớng.

Đôíi với ma trận hay véc tơ có các phần tử là số phức z, đại lợng z

biểu thị chuyển vị liên hợp của z. Phép chuyển vị không liên hợp của

số phức biểu thị bởi z. tơng tự nh các phép toán mảng khác. Ví dụ:

>>z = [1+2i 3+4i]

>>z

ans = 1-2i

3-4i

>>z.

ans = 1+2i

3+4i

Đối với các véc tơ phức, hai tích vô hớng x*y và y*x là liên hợp

phức của nhau và tích vô hớng của một véc tơ số phức với chính nó

x*x là một số thực.



4.5.2- Phép nghịch đảo ma trận

Nếu A là một ma trận vuông và không duy nhất, các phơng trình

AX = I và XA = I có cùng một lời giải. Lời giải này đợc gọi là phép

nghịch đảo của A, đợc biểu diễn bởi A-1 và đợc tính toán bởi hàm inv.

Cú pháp: B=inv(A)

Vd:

>>



A= 1



>>



B = -3



>>



A=[1:2;2:3]



2



B=inv(A)



2



A*B



ans =



1



0



2

3

2 -1

0

1

Lu ý trong một số trờng hợp kết quả của phép nghịch đảo có thể

không chính xác do sai số làm tròn. Nếu có cảnh báo (Warning) xuất



Bộ môn TĐH Xí nghiệp Công nghiệp



52



Giáo trình Matlab và ứng dụng

hiện ta phải kiểm tra lại bằng cách nhân hai ma trận trớc và sau khi

thực hiện phép nghịch đảo.

Nếu A vuông và không duy nhất, không có sai số làm tròn th× X =

inv(A)*B vỊ lý thut th× gièng nh X=A\B và Y= B*inv(A) giống nh

Y=B/A. Tuy nhiên, các phép toán sử dụng các phép \ và / thờng đợc sử

dụng hơn vì chúng đòi hỏi thời gian tính toán, bộ nhớ ít hơn và có

đặc tính xác định sai số tèt h¬n.



4.5.2 3- PhÐp céng - trõ ma trËn.( + , - )

Phép cộng và trừ ma trận đợc đợc định nghĩa nh là đối với mảng,

cộng hoặc trừ tơng ứng từng phần tử. Cộng và trừ yêu cầu cả hai ma

trận phải có cùng kích thớc hoặc một trong hai ma trận là vô hớng. Nếu

hai ma trận không cùng kích thớc, Matlab sẽ báo lỗi.

Cij = Aij + Bij

Dij = AÞj - Bij

>> A = [1:3; 4:6; 7:9]

A=

1



2



3



4



5



6



7



8



9



>> B = A’

B=

1



4



7



2



5



8



3



6



9



>> C = A + B

C=

2



6



10



6



10 14



10 14 18



Bộ môn TĐH Xí nghiệp Công nghiệp



53



Giáo trình Matlab và øng dơng



4.5.3 4- PhÐp nh©n, chia ma trËn:

PhÐp nh©n ma trận đợc định nghĩa theo cách mà phản ánh

thành phần của các phép biến đổi tuyến tính cơ bản và cho phép

biểu diễn ngắn gọn các hệ phơng trình tuyến tính thuần nhất.

Phép nhân ma trận C = A*B đợc định nghĩa khi số hàng của A (ma

trận bị nhân) bằng số cột của ma trận B (ma trận nhân).

Các phần tử trong ma trận C đợc tính nh sau: cij = aikbkj

VD các phần tử trong ma trận là c¸c sè thùc.

>> A = [1 2 1; 1 0 1]

A=

1



2



1



1



0



1



>> B = [1 0 2; 2 1 1; 1 1 1]

B=

1



0



2



2



1



1



1



1



1



>> C = A * B

C=

6



3



5



2



1



3



VD các phần tử trong ma trận là các số phức.

>> a=[1+2i 2+2i;1+3i 2+2i]

a=

1.0000 + 2.0000i 2.0000 + 2.0000i

1.0000 + 3.0000i 2.0000 + 2.0000i

>> b=[1+i 2+i;1+3i 2+i]

b=

1.0000 + 1.0000i 2.0000 + 1.0000i

1.0000 + 3.0000i 2.0000 + 1.0000i



Bộ môn TĐH Xí nghiệp Công nghiệp



54



Giáo trình Matlab vµ øng dơng

>> c=a*b

c=

-5.0000 +11.0000i 2.0000 +11.0000i

-6.0000 +12.0000i 1.0000 +13.0000i

VD các phần tử trong ma trận là các tham sè

>> syms a b c

>>d=[2*a b c; a b c; 0 0 a]

d=

[ 2*a, b, c]

[ a, b, c]

[ 0, 0, a]

>> e=[a b c; 2*a 2*b^2 c ; a 0 b]

e=

[



a,



b,



c]



[ 2*a, 2*b^2,

[



a,



0,



c]

b]



>> f=d*e

f=

[ 2*a^2+2*b*a+c*a,



2*b*a+2*b^3,



[ a^2+2*b*a+c*a,



b*a+2*b^3,



[



a^2,



0,



2*c*a+2*c*b]

c*a+2*c*b]

b*a]



PhÐp chia ma trËn thực chất là phép nhân với ma trận nghịch đảo.

C=



A

1

= A*

B

B



Lấy ma trận nghịch đảo thực hiện bằng hàm inv.

>> A = [1 2 1; 1 0 1]

A=

1



2



1



1



0



1



>> B = [1 0 2; 2 1 1; 1 1 1]

Bé m«n TĐH Xí nghiệp Công nghiệp



55



Giáo trình Matlab và ứng dụng

B=

1



0



2



2



1



1



1



1



1



>> C = inv(B)

C=

0



1.0000



-1.000



-0.5000 -0.5000

0.500



1.5000



-0.5000



0.5000



>> D = A*C

D=

- 0.5000



-0.5000



2.5000



0.5000



0.5000



-0.5000



Chó ý: Trong các phép tính trên nếu một trong hai ma trận là vô hớng (là một số thực hoặc số phức) thì tất cả các phần tử trong ma

trận sẽ đợc céng, trõ, nh©n, chia ( / ) víi sè thùc đó tuỳ thuộc vào

phép toán tơng ứng.

>> A = [1 2 1; 1 0 1]

A=

1



2



1



1



0



1



>> B = A*2

B=

2



4



2



2



0



2



4.5.4 5- PhÐp l thõa vµ sè mò cđa ma trËn

vµ p lµ một số nguyên dơng thì A^p nhân A với chính nã p lÇn.

VÝ dơ:

>>A = magic(3); ↵

>>X = A^3 ↵

X = 1197

Bộ môn TĐH Xí nghiệp Công nghiệp



1029



1149

56



Giáo trình Matlab và ứng dụng

1077



1125



1173



1101



1221



1053



Nếu A là một ma trận vuông và không duy nhất thì A^(-p) sẽ

nhân inv(A) với chính nó p lÇn. VÝ dơ:

>>Y = A^(-3) ↵

Y = 0.0053 -0.0068



0.0018



-0.0034



0.0001



0.0036



-0.0016



0.0070 -0.0051



Trong trờng hợp muốn luỹ thừa từng phần tử thì sử dụng phép

toán mảng.

>>Z = A.^3

Z = 512



1 216



27 125 343

64 729



8



Hệ phơng trình vi phân thờng tuyến tính có hệ số không

đổi có thể đợc viết: dx/dt = Ax trong đó x = x(t) là một véc tơ

của các hàm theo t và A là ma trận phụ thuộc vào t. Lời giải có thể

đợc biểu diễn dới thuật ngữ số mũ ma trận:

x(t) = etAx(0)

và đợc tính toán bởi hàm expm(A). Ví dụ:

>> A = pascal(3);

>>x0 = [1;1;1] ;↵

>>X = [];

>>for t = 0:.01:1



X = [X expm(A*t)*x0]↵

end



4.5.4 6- PhÐp quay ma trËn

Sư dơng lƯnh rot90 ®Ĩ quay ma trận đi 1 góc 90 độ theo ngợc

chiều kim ®ång hå.

>> a=[1 2 3;4 5 6;7 8 9]

a=

1

Bé m«n TĐH Xí nghiệp Công nghiệp



2



3

57



Giáo trình Matlab và ứng dụng

4



5



6



7



8



9



>> b=rot90(a)

b=

3



6



9



2



5



8



1



4



7



LƯnh rot90(A,k) sÏ quay Matlab trËn ®i mét gãc k*90 o với k = 1,

2,



4.5.7- Phép đảo ma trận

Đảo các phần tử của ma trận từ trái sang phải bằng lệnh fliplr,

đảo ma trận từ trên xuống dới dùng lệnh flipud

>> c=fliplr(b)



>>d = flipud(pascal(3))



c=



d=



9



6



3



1



3



6



8



5



2



1



2



3



7



4



1



1



1



1



4.5.8- Tính định thức ma trËn

>> A=[2 3 7;4 1 5;1 9 8]

A=

2



3



7



4



1



5



1



9



8



>> det(A)

ans =

90



4.6- ứng dụng các phép toán ma trận



4.6.1- Nhân đa thức

Để nhân hai đa thức ta dùng lệnh conv:

Bộ môn TĐH Xí nghiệp Công nghiệp



58



Giáo trình Matlab và ứng dụng

y1 = anxn + an-1xn-1+...+a0

y 2 = bnxn + bn-1xn-1+...+b0

Bíc1: LËp 2 ma trận hàng tên y1, y2 có các phần tử là các hệ số từ

an đến a0 và bn đến b0 giảm dần theo bậc của phơng trình ( Nếu

hệ số nào không có ghi 0 )

Bớc 2: dùng lệnh conv để nhân 2 đa thức.

>>y3= conv(y1,y2)

VD: y1 = 2x2 + 3x+1

y2 = 3x2 + 4x

>> y1 = [2 3 1]

>> y2 = [3 4 0]

>> y3 = conv(y1,y2)

>> y3 = 6 17 15 4 0

Chó ý: hµm conv chØ thực hiện nhân 2 đa thức. Muốn nhân

nhiều đa thức với nhau ta phải thực hiện nhiều lần hàm conv.



4.6.2- Giải phơng trình bậc cao

Sử dụng lệnh Roots để giải phơng trình bậc n:

y = anxn + an-1xn-1+...+a0

Bớc1: Lập 1 ma trận hàng có các phần tử là các hệ số từ a n đến a0

giảm dần theo bậc của phơng trình ( Nếu hệ số nào không có ghi 0 )

Bớc 2: Dùng lệnh Roots để giải ma trận vừa tạo đợc.

VD giải phơng trình sau: y = x5 -2x4 + 5x2 -1

>> y = [ 1



-2



0



5



0



-1]



y=

1



-2



0



5



0



-1



>> kq=roots(y)

kq =

1.5862 + 1.1870i

1.5862 - 1.1870i

-1.1606

-0.4744

Bộ môn TĐH Xí nghiệp Công nghiệp



59



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

5- Các phép toán về ma trận

Tải bản đầy đủ ngay(0 tr)

×