39
MA TRẬN TRONG MATLAB

Ma Trận trong Matlab

Embed Size (px)

Citation preview

Page 1: Ma Trận trong Matlab

MA TRẬN TRONG MATLAB

Page 2: Ma Trận trong Matlab

1. Định nghĩa .• Trong Matlab thì ma trận được

hiểu theo một cách đơn giản .Ma trận là một “mảng hình chữ nhật” các số.

• Ma trận gồm các dòng (row) và các cột (column). Các dòng hay cột gọi chung là Vector

• Ví dụ

Tổng quan về Ma trận

• Một con số trong Matlab là một ma trận 1x1

• Thế mạnh của Matlab so với các ngôn ngữ lập trình khác là tính toán rất nhanh trên ma trận

Page 3: Ma Trận trong Matlab

Matlab cung cấp cho chúng ta 7 hàm để tạo các ma trận cơ bản:1. Zeros (line,column) : cho phép tạo một ma trận toàn số 0.2. Ones (line,column) : cho phép tạo ra ma trận toàn số 1.3. Rand (line,column) : cho phép tạo ra một ma trận với các phần tử là

sinh ngẫu nhiên và cùng loại.4. Randn (line,column) : tạo một ma trận mà các phần tử của ma trận

được sinh ra một cách ngẫu nhiên.5. Eye (line) : khai báo ma trận đơn vị.6. Pascal () : tạo ma trận đối xứng (ma trận vuông).7. Magic () : tạo ma trận không đối xứng.Note : Bạn có thể nhập trực tiếp các phần tử của ma trận đó theo cú pháp sau (các phần tử của một hàng được cách nhau bởi dấu (,) hoặc một dấu cách , giữa các hàng thì được cách nhau bởi dấu (;) hay dấu ngắt ).

Ma trận (Matrix)

Page 4: Ma Trận trong Matlab

Nhập trực tiếp danh sách các phần tử

Phát sinh ma trận từ các hàm có sẵn Nhập từ File Tạo ma trận bằng các File.m

Ví dụ: A=[16 3 2 ;5 10 11 ; 9 6 7]

A=

Nhập Ma Trận

• Dấu [và] mở đầu và kết thúc nhập Ma trận.

• Dấu ; kết thúc một dòng.• Các phần tử cách nhau bằng khoảng

trắng hoặc dấu ,

Page 5: Ma Trận trong Matlab

nhập ma trận từ các hàm có sẵn:

>> zeros(2,3)

ans =

0 0 0

0 0 0

>> diag([1 2 3])

ans =

1 0 0

0 2 0

0 0 3

Ví Dụ>> eye(2)

ans =

1 0

0 1

>> rand(1,8)

ans =

0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185

>> ones(2,3)

ans =

1 1 1

1 1 1

Page 6: Ma Trận trong Matlab

1. Sự móc nối Ma trận.2. Xóa dòng và cột của ma trận.3. Ma trận chuyển vị4. Lệnh Diag5. Lệnh Sum6. Lệnh Det7. Ma trận symbolic8. Các toán hạng ma trận.

Thao tác trên Ma Trận

Page 7: Ma Trận trong Matlab

1.Sự móc nối Ma trận. Matlab cho phép kết hợp các ma trận con để tạo ra một ma trận lớn hơn. Ví Dụ : >> b=ones(3,3)>> c=zeros(3,3)>> a=[b c;c b]

Thao tác trên Ma Trận

a = 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1

Page 8: Ma Trận trong Matlab

2.Xóa dòng và Cột của Ma Trận Matlab cho phép xóa dòng hoặc cột của ma trận bằng cách gán các giá trị rỗng cho hàng hoặc cột của ma trận.Một giá trị rỗng được ký hiệu bởi []. Ví Dụ :

>> a=[1 2 3;4 5 6;7 8 9]a = 1 2 3 4 5 6 7 8 9>> a(2,:)=[] : Xóa hàng 2

Thao tác trên Ma Trận

a = 1 2 3 7 8 9

Page 9: Ma Trận trong Matlab

3.Ma trận chuyển vị Ma trận chuyển vị của ma trận A là một ma trận mà các hàng của ma trận A là các cột của ma trận này.

Ví dụ :

a =

1 2 3

4 5 6

7 8 9

>> b=a'

Thao Tác trên Ma trận

b = 1 4 7 2 5 8 3 6 9

Page 10: Ma Trận trong Matlab

4.Lệnh Diag : Dùng để tạo ma trận đường chéo và rút ra đường chéo của ma trận.

◦ Cú pháp : Diag(v,k) là một vecto n phần tử thì kết quả là một ma trâng vuông bậc n+|k|.Trong đó các phần tử của v nằm trên đường chéo thứ k

1. k= 0 , đường chéo là đường chéo chính.2. k>0 , đường chéo thứ k nằm trên đường chéo chính .3. k<0 , đường chéo thứ k nằm dưới đường chéo chính. Diag(X,k): nếu X là một ma trận thì kết quả là môt vecto cột

hình thành từ những phần tử của đường chéo chính thứ k. Diag(X): trả về một vecto là đường chéo chính của ma trận. Diag(Diag(X)): trả về là một ma trận đường chéo .

Thao tác trên Ma Trận

Page 11: Ma Trận trong Matlab

5.Lệnh Sum:Tính tổng các hàng và các cột của ma trận.◦ Cú pháp :

1. Sum(X) hay Sum(X,1)trả về một vecto mà mỗi phần tử là tổng của từng cột trong ma trận.

2. Sum(X,2) : trả về vecto mà mỗi phần tử là tổng của từng hàng trong ma trận.

◦ Ví Dụ:với ma trận a cho ở trên. Tính tổng Cột

>> tong_cot=sum(a) tong_cot = 12 15 18

Thao tác trên Ma Trận

• Tính Tổng hàng>> tong_hang=sum(a,2)

tong_hang = 6

15 24

Page 12: Ma Trận trong Matlab

6.Ma trận Symbolic: có 2 cách định nghĩa một ma trận symbolic.◦ Từ tham số.◦ Từ các số thực.

Để định nghĩa ma trận symbolic , hai lệnh sym và syms thường được sử dụng:◦ Sym(‘a’): trả về kết quả là một biến symbolic tên là a.◦ Sym([...;...;...;]): trả về một ma trận symbolic.◦ Sym(A): với A là một số thực hay ma trận số thực sẽ trả về một biến hay

ma trận Symbolic.◦ Sym arg1 arg 2 tương đương với arg1=sym(‘arg1’); arg2=sym(‘arg2’).

Thao tác trên Ma trận

Page 13: Ma Trận trong Matlab

7.Lệnh Det :dùng tính định thức của Ma trận.◦ Cú pháp : Det(A) : kết quả là biểu thức Symbolic nếu A là ma trận

symbolic, là một giá trị số nếu A là một ma trận số.◦ Ví Dụ :

>> syms a b c d>> a=[a b;c d]a = [ a, b][ c, d] >> r=Det(a)

Thao tác trên Ma trận

r =a*d-b*c

• Định thức của ma trận đơn vị bằng 1

• Định thức của một ma trận đường chéo là tích của các phần tử đường

chéo.

Chú ý : + ) Định thức của nó bằng 0 người ta gọi đó là ma trận suy biến.

+) Định thức dùng để giải hệ phương trình tuyến tính ,xác định điều kiện có nghiệm hay không của hệ.

Page 14: Ma Trận trong Matlab

8.Các toán hạng trên Ma trận: trong Matlab tồn tại các toán hạng sau.

Thao tác trên Ma trận

A + B A, B phải có cùng kích thước ,ngoại trừ 1 trong 2 là giá trị vô hướng

A – B

A, B phải có cùng kích thước, ngoại trừ 1 trong 2 là giá trị vô hướng

A* B Số cột của A = số hàng của B,ngoại trừ 1 trong 2 là giá trị vô hướng

A.* B Nhân từng phần tử của A với từng phần tử của B, A;B cùng kích thước

A \ B Chia trái ma trận X=A\B tương đương với giải PT : A*X=B

A. \ B Chia trái mảng tương đương với B(i,j)\A(i,j).A;B cùng kích thước

A / B Chia phải ma trận X=A/B tương đương với giải PT:B*X=A

A./ B Chia phải mảng tương đương với A(i,j)/B(i,j).A;B cùng kích thước

A ^ B Lũy thừa ma trận. Lỗi sẽ phát sinh nếu A và B đều là ma trận

A.^ B Lũy thừa mảng.Kết quả là một ma trận mà các số hạng A(i,j)^B(i,j).A;B cùng kích thước.

Page 15: Ma Trận trong Matlab

Một hệ phương trình tuyến tính có dạng tổng quát :

a11x1 + a12x2 +a1nxn = b1

a21x1 + a22x2 + a2nxn = b2

am1x1 + am2x2 + amnxn = bm

Một số phương pháp để giải hệ này:◦ Nghịch đảo Ma Trận ◦ Phương pháp khử Gauss◦ Phương Pháp khử Gauss- Jordan◦ Phương pháp phân rã ma trận(LU)

Giải hệ phương trình tuyến tính

Với : A = [aịj]mxn là ma trận hệ số

A* = [Ab]mx(n+1) là ma trận đầy đủ

• Một trong số ứng dụng của MATLAB là giải hệ phương trình đại số tuyến tính .

• Trong MATLAB có một số hàm đã được xây dựng và để sử dụng cho các phương pháp này

Page 16: Ma Trận trong Matlab

1. Nghịch đảo ma trận.2. Phương pháp khử Gauss – Jordan.3. Phương pháp phân ra ma trận(LU).4. Hạng của ma trận và điều kiện có nghiệm của hệ

phương trình A*X = B.

Giải hệ phương trình tuyến tính

Page 17: Ma Trận trong Matlab

1.Nghịch đảo ma trận.Xét phương trình tuyến tính. Dưới dạng ma trận hệ có dạng sau.

AX = B X = BVới là ma trận nghịch đảo của ma trận hệ số A.

Giải hệ phương trình tuyến tính

1.1 Lệnh invLệnh inv(A): dùng để tính ma trận nghịch đảo

Page 18: Ma Trận trong Matlab

Giải hệ phương trình tuyến tính

Page 19: Ma Trận trong Matlab

• 1.2 Lệnh pinvpinv(A) : dùng để tính giá trị nghịch đảo của ma trận mxn, với

m≠n . Lệnh này không sử dụng được với phương pháp symbolic. Ví dụ : giải hệ phương trình tuyến tính A*X=B sau

Giải hệ phương trình tuyến tính

Page 20: Ma Trận trong Matlab

2.Phương pháp khử Gauss – Jordan. Lệnh rref(A) : trả về ma trận là bước cuối cùng trong phương pháp này.

Trong đó A là ma trận vuông hay hình chữ nhật. Lệnh rref cho phép sử dụng với phương pháp symbolic.

Ví dụ : giải hệ phương trình tuyến tính sau :

Giải hệ phương trình tuyến tính

Khi sử dụng phương pháp này sẽ dẫn tới bất tiện là ta phải tiến hành lại từ đầu thủ tục Gauss - Jordan cho từng vecto cột B

Page 21: Ma Trận trong Matlab

3.Phương pháp phân ra Ma trận3.1 Lệnh [L,u] = lu(A) : trả về ma trận tam giác trên U, ma trận tam giác dưới L. Phân ra ma trận A thành các ma trận tam giác : A= L*U• Trong đó : L: ma trận tam giác dưới cỡ nxn, các phần tử đường chéo

chính đều bằng 1 U : ma trận tam giác trên.

Giải hệ phương trình tuyến tính

Như vậy hệ phương trình được viết lại sau :A*X=B (LU)*X=BĐặt U*X=Y thì:A*X=B L*Y=B

U*X=Y

Bằng cách thế ngược một lần nữa để tìm X. Như vậy nghiệm của hệ A*X=B là X= U\(L\B)

Page 22: Ma Trận trong Matlab

3.2 Ví dụ : giải hệ phương trình A*X=B , trong đó

Giải hệ phương trình tuyến tính

Page 23: Ma Trận trong Matlab

4. Hạng của ma trận và điều kiện có nghiệm của hệ A*X=B Hạng của ma trận A là số hàng khác 0 trong dang rút gọn của A .Ký

hiệu là r(A) Điều kiện có nghiệm của hệ phương trình tuyến tính A*X=B, có n ẩn

số :◦ r(A) = r() = n thì hệ có nghiệm duy nhất.◦ r(A) = r() < n thì hệ có vô số nghiệm phụ thuộc vào n - r(A) tham số◦ r(A) ≠ r() : không tồn tại lời giải của hệ phương trình A*X=B.Trong Toolbox của MATLAB có một số lệnh liên quan đến hạng của một ma trận, không gian cơ sở của ma trận.

Giải hệ phương trình tuyến tính

Page 24: Ma Trận trong Matlab

4.1 Lệnh rank

rank(A) : trả về là một số nguyên là hạng của Ma trận.

Ví dụ : Xét điều kiện có nghiệm của các hệ phương trình tuyến tính sau :

Giải hệ phương trình tuyến tính

Page 25: Ma Trận trong Matlab

4.2Lệnh null. null(A)trả về ma trận rỗng R(n x 0) nếu ma trận A không suy biến

Ví dụ : xét hai ma trận magic 3 x 3 và 4 x 4.

Giải hệ phương trình tuyến tính

Ta có thể dùng lệnh Det để kiểm tra lại

Page 26: Ma Trận trong Matlab

4.3 Lệnh clospace .

clospace(A) : nếu A là ma trận symbolic kích thước n x n , không suy biến

Kết quả trả về là một mà trận mà các cột là vecto cơ sở của không gian .

Ví Dụ :

Giải hệ phương trình tuyến tính

Page 27: Ma Trận trong Matlab

1. Định nghĩa.2. Cách tìm.3. Lệnh eig.4. Lệnh poly.5. Tính định thức , nghịch đảo, lũy thừa của ma trận

thông qua ma trận giá trị riêng và vecto riêng.

Giá trị riêng và vecto riêng

Page 28: Ma Trận trong Matlab

1.Định nghĩa. Cho ma trận vuông A cấp n . Số được gọi là một giá trị riêng của ma trận A nếu tồn tại vecto cột x ≠ 0, x , sao cho A x = x . Khi đó vecto x được gọi là vecto riêng của ma trận A tương ứng với giá trị riêng .

2. Cách tìm.Với A là ma trận vuông cấp n đã cho thì vecto cột x ≠ 0 là vecto riêng của ma trận A khi và chỉ khi A x = x hay :

A x - x=0

x = Ix (I là ma trận đơn vị có kích thước n x n)

A x - I x = 0

(A - I) x = 0

Giá riêng là nghiệm của đa thức |A - I| = 0

Nếu khai triển định thức ta sẽ được một đa thức với biến . Đa thức này gọi là đa thức đặc trưng .Nếu A là mà trận n x n thì đa thức này có dạng sau :

Giá trị riêng và vecto riêng của MT

Page 29: Ma Trận trong Matlab

3.Lệnh eig Tính giá trị riêng và vecto riêng của ma trận vuông sử dụng được cho

các hai phương pháp số va symbolic. Cú pháp : d = eig(A) : trả về ma trận d mà các giá trị riêng là các phần

tử năm trên đường chéo chính .

[V,D] = eig(A) : trả về vecto riêng chứa ma trận V và giá trị riêng chứa trong ma trận D. Ví dụ :

Giá trị riêng và vecto riêng của MT

Page 30: Ma Trận trong Matlab

4.Lệnh poly Trả về đa thức của ma trận A.

Cú pháp : poly(A) nếu A là một ma trận symbolic , thì kết quả trả về là một đa thức đặc trưng. Nếu A là một hàm ma trận số thì kết quả trả về là một mảng chứa các hệ số của đa thức này.

Ví Dụ :

Giá trị riêng và vecto riêng của MT

Page 31: Ma Trận trong Matlab

5.Tính định thức , nghịch đảo, lũy thừa của ma trận thông qua ma trận giá trị riêng và vecto riêng.

MATLAB cung cấp một số hàm để tính định thức, nghịch đảo, và lũy thừa của ma trận nhe det, inv, expm. Ngoài ra căn cứ vào các tính chất của ma trận , ta có thể tính toán thông qua các biểu thức :

Giá trị riêng và vecto riêng của MT

• Với D và V là các giá trị riêng và các vecto riêng đã được chuẩn hóa của ma trận A. Vì ma trận các giá trị riêng là ma trận đường chéo có nghĩa là các phần tử khác không chỉ nằm trên đường chéo chính do vậy việc thực hiện nghịch đảo ma trận, tính định thức ma trận, lấy lũy thừa ma trận được đơn giản đi rất nhiều nếu chúng ta thực hiện trên ma trận đường chéo chính

Page 32: Ma Trận trong Matlab

Tiếp ◦ Chú ý : Hàm eig của MATLAB không cung cấp cho chúng ta ma trận

vecto riêng được chuẩn hóa . Do đó để sử dụng các tính chất của ma trận ở trên chúng ta cần chuẩn hóa chúng trước

◦ Ví Dụ 1 :

Giá trị riêng và vecto riêng của MT

Page 33: Ma Trận trong Matlab

Ví dụ 2: Tính tần số riêng và vecto riêng của hệ dao động điều hòa :

Giá trị riêng và vecto riêng của MT

Page 34: Ma Trận trong Matlab

Tiếp ví dụ 2:

Giá trị riêng và vecto riêng của MT

Page 35: Ma Trận trong Matlab

Các hàm trong Matlab là được đặt trong thư mục matfun.

Bảng tóm tắt các hàm

Các Loại Hàm Mô tả

Phân tích Ma trận norm Tính chuẩn các vecto hoặc ma trận

normest Chuẩn 2 của ma trận

rank Hạng của ma trận

det Định thức của ma trận

trace Tổng của các phần tử nằm trên đường chéo của ma trận

null Null space

orth Ma trận trực giao

rref Reduced row echelon form

subspace Angle between two subspace

Page 36: Ma Trận trong Matlab

Các phương trình tuyến tính

\ and/- Line equation solution

inv Ma trận nghịch đảo

cond Điều kiện đại số cho phép nghịch đảo

Condest Ước lượng cho chuẩn 1 đại số

chol Tham số Cholesky

cholinc Tham số Cholesky không đẩy đủ

lu Tham số LU

luinc Tham số LU không đầy đủ

qr Orthogonal-trianglar decomposition.

lsqnonneg Nonnegative least-squares

pinv Nghịch đảo của ma trận ảo

lscov Least squares with known covariance

Bảng tóm tắt các hàm

Page 37: Ma Trận trong Matlab

Trị riêng và các giá trị tự do

eig Trị riêng và vecto riêng

svd Phân tích các giá trị tự do

eigs Một vài giá trị riêng

svds Một vài giá trị tự do

poly Đa thức đặc trưng

polyeig Polynomail eigenvalue problem

condeig Condition number for eigenvalues

hess Hessenberg form

qz Tham số QZ

schur Phân tích Schur

Bảng tóm tắt các hàm

Page 38: Ma Trận trong Matlab

Các hàm ma trận expm Ma trận mũ

logm Ma trận logarithm

sqrtm Matrix square root

funm Evaluate general matrix function

Bảng tóm tắt các hàm

Page 39: Ma Trận trong Matlab

THANKS YOU!