Tải bản đầy đủ (.pptx) (40 trang)

ma trận trong matlab

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.97 MB, 40 trang )

MA TRẬN TRONG
MATLAB
Tổng quan về Ma trận
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ụ



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
Ma trận (Matrix)

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.
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 và thuộc phân phối
chuẩn.
5. eye (line) : khai báo ma trận đơn vị.
6. pascal (line) : tạo ma trận đối xứng (ma trận vuông).
7. magic (line) : 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 ).
Nhập Ma Trận

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=




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 ,
Ví Dụ

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
>> 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
Thao tác trên Ma Trận
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 Diag
5. Lệnh Sum
6. Lệnh Det
7. Ma trận symbolic
8. Các toán hạng ma trận.
Thao tác trên Ma Trận
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]
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
Thao tác trên Ma Trận
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
a =
1 2 3
7 8 9
Thao Tác trên Ma trận
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'
b =
1 4 7
2 5 8
3 6 9
Thao tác trên Ma Trận
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ận 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
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

Tính Tổng hàng
>> tong_hang=sum(a,2)
tong_hang =
6
15
24
Thao tác trên Ma trận
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
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)
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ệ.
Thao tác trên Ma trận
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.
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.
Giải hệ phương trình tuyến tính


Một hệ phương trình tuyến tính có dạng tổng quát :
a
11
x
1
+ a
12
x
2
+a
1n
x
n
= b
1
a
21
x
1
+ a
22
x
2
+ a
2n
x
n
= b
2


a
m1
x
1
+ a
m2
x
2
+ a
mn
x
n
= b
m

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)
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
Giải hệ phương trình tuyến tính
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
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 = B
Với là ma trận nghịch đảo của ma trận hệ số A.


1.1 Lệnh inv
Lệnh inv(A): dùng để tính ma trận nghịch đảo
Giải hệ phương trình tuyến tính
Giải hệ phương trình tuyến tính

1.2 Lệnh pinv
pinv(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

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 :
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
Giải hệ phương trình tuyến tính
3.Phương pháp phân ra Ma trận
3.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.

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)
Giải hệ phương trình tuyến tính
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
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
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
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.
Ta có thể dùng lệnh Det để kiểm tra lại

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

Tải bản đầy đủ ngay
×