Chương III:
TÍNH TOÁN TRÊN MATLAB
3.1 Mảng
Mảng là một tập hợp số liệu mà ta muốn tính toán.
Để tạo mảng, đặt các phần tử của mảng vào giữa 2 dấu ngoặc vuông
3.1.1 Khai báo mảng
M = [a b c]
hoặc
M = [a, b, c]
VD: >> A = [3 6 4]
hoặc
A = [3, 6, 4] % vector hàng
M = [ x; y; z]
VD: >> B = [5; 1; 9] % vector cột
Mảng có ít phần tử.
Biến = giới hạn đầu : giới hạn cuối
hoặc biến = giới hạn đầu : bước chạy : giới hạn cuối
VD: Tạo 1 vectơ t chạy từ 0 đến 0.6 với bước chạy tiến là 0.1
>> t = 0: 0.1:0.6
t=0
0.1000
0.2000
0.3000 0.4000 0.5000 0.6000
Biến = linspace(giới hạn đầu, giới hạn cuối, số phần tử)
VD: Tạo 1 vectơ t chạy từ 0 đến 10 với 5 phần tử ở giữa
>> t = linspace(0,10,5)
t=0
2.000
4.000
6.000 8.000 10.000
Mảng có số lượng lớn các phần tử
3.1.2 Tính toán dùng số liệu mảng
Các toán tử nhân, chia, mũ phải thêm dấu chấm
.* ./ .^
VD: Tính X = sin(A2)/(1+3A)
>> X = sin (A.^2)./(1+3.*A)
>> X = 0.0412-0.0522
-0.0221
3.2 Toán tử quan hệ quyết định chương trình
Nhỏ hơn:
<
Nhỏ hơn hoặc bằng:
<=
Lớn hơn:
>
Lớn hơn hoặc bằng:
>=
Bằng:
==
Không bằng (khác): ~=
3.3 Ma trận
3.3.1 Định nghĩa: Ma trận là một mảng nhiều chiều và theo nguyên tắc:
Bao quanh các phần tử của ma trận bằng dấu ngoặc vuông [aij].
Các phần tử trong một hàng của ma trận được cách nhau bởi ký tự trắng
(space) hoặc dấu phẩy (,).
Kết thúc một hàng trong ma trận bởi dấu (;). Nói cách khác dấu (;) phân
cách giữa các hàng của ma trận
3.3.2 Nhập ma trận
Liệt kê trực tiếp:
VD:
>>A =[1 2 3; 4 5 6]
>> B =[1 2 3;
4 5 6]
Nhập thông qua lệnh input:
>> input('Nhap gia tri cho ma tran C = ') ↵
>> Nhap gia tri cho ma tran C = [1 3 4;4 5 7;7 5 8] ↵
>> ans =
1
3
4
4
5
7
7
5
8
Để hiển thị lại ma trận ta gõ tên ma trận sau đó enter.
VD: >> A
A=
1 2 3
4 5 6
3.3.3 Ma trận con và phần tử
Ta có thể lấy một phần tử hoặc ma trận con của một ma trận đã có.
Tên của ma trận (Chỉ số hàng, chỉ số cột)
A(i,j) số liệu của phần tử hàng i và cột j
>> A(2,3)
ans =
6
>> B = C (2 : 3 , 1 : 3)
B=
4
5
7
7
5
8
3.3.4 Nhân 2 ma trận
Phép nhân 2 ma trận là C = A*B.
>> A = [6 -2; 10 3; 4 7];
>> B = [9 8; -5 12];
>> C = A*B
C=
64
24
75
116
1
116
Muốn nhân 2 ma trận thì số cột của ma trận A phải bằng số hàng của
ma trận B
3.3.5 Hoán vị ma trận
Phép chuyển đổi véctơ hàng thành véctơ cột gọi là phép hoán vị.
Thực hiện phép chuyển vị bằng toán tử dấu nháy đơn ( ‘ ).
>> a = [1 2 3; 4 5 6; 7 8 9]
a=
1
2
3
4
5
6
7
8
9
>> b = a’
b=
1
4
7
2
5
8
3
6
9
3.3.6 Xóa hàng và cột ma trận
Muốn xóa hàng hay cột ta gán giá trị rỗng (ký hiệu []) cho
hàng hoặc cột của ma trận.
>> a = [1 2 3; 4 5 6; 7 8 9];
>> a (2,:) = []
a=
1
2
3
7
8
9
>> a (:,3) = []
a=
1
2
7
8
3.3.7 Các ma trận đặc biệt
zeros(m,n) là ma trận m x n với các phần tử bằng 0
ones(m,n) là ma trận m x n với các phần tử bằng 1
eye(m,n) là ma trận m x n với số 1 trên đường chéo chính
>> zeros (2,3)
ans =
0
0
0
0
0
0
>> B = [ones(2) zeros(2,3); zeros(3,2) 7*eye(3)]
B=
1
1
0
0
1
1
0
0
0
0
0
7
0
0
0
0
0
7
0
0
0
0
0
7
0
3.3.8 Các hàm ma trận
expm(A)
tìm hàm mũ của ma trận A, tức eA
logm(A)
tìm log(A)
sqrtm(A)
tìm căn A
det(A)
tính định thức A
3.4 Ứng dụng các phép toán ma trận
3.4.1 Giải phương trình bậc cao:
anxn + an-1xn-1+...+a0 = 0
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 x5 - 2x4 + 5x2 - 1 = 0
>> y = [ 1 -2 0 5
>> kq = roots(y)
kq =
1.5862 + 1.1870i
1.5862 - 1.1870i
-1.1606
-0.4744
0.4627
0
-1];
3.4 Ứng dụng các phép toán ma trận
3.4.2 Biết nghiệm tìm lại phương trình
Sử dụng lệnh poly.
>> r = [1, 3 + 5i, 3 - 5i];
>> poly(r)
ans =
1 -7 -40 34
3.4 Ứng dụng các phép toán ma trận
Như vậy việc giải hệ PT tuyến tính thực chất là thực
hiện phép toán về ma trận.
Vì vậy, nghiệm của hệ phương trình là: u = A\b
Việc giải trong Matlab gồm 3 dòng sau:
>> b = [8; -6; 4];
>> A = [2 4 -3; -2 3 2; -2 4 1];
>> u = A\b
Chú ý: dấu \ là dấu chia trái dùng để giải hệ phương
trình khi hệ chỉ có một nghiệm