ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
GIÁO TRÌNH:
PHẦN MỀM HỖ TRỢ TÍNH TOÁN MATLAB
Số tin chỉ: 3
Hệ đào tạo: Chính quy Ngành: Công nghệ thông tin
Khoa Công nghệ thông tin
Họ tên giảng viên: Trần Hải Thanh
Đơn vị công tác: Bộ môn Khoa học máy tính
1
MỤC LỤC
MỤC LỤC 2
CHƯƠNG 1 3
NHẬP MÔN MATLAB 3
1.1 Giới thiệu Matlab 3
1.2 Hệ thống Matlab 4
1.3 Câu lệnh và các biến trong Matlab 5
1.3.1 Đặc điểm biến trong Matlab 5
1.3.2 Một số lệnh đối với biến 5
1.3.3 Một số biến đã được định nghĩa trước 6
1.3.4 Biến toàn cục (Global variable) 7
1.4 Script file(M_File) 7
1.5 Hàm M_File 9
1.6 Vẽ các hàm 12
CHƯƠNG 2 14
MA TRẬN VÀ CÁC PHÉP TOÁN TRÊN MA TRẬN 14
2.1 Các phép toán số học và logic trong Matlab 14
2.1.1 Phép toán số học 14
2.1.2 Các phép toán quan hệ 15
2.1.3 Các phép toán logic và các hàm logic 15
2.1.4 Số phức và các phép toán về số phức 16
2.1.5 Các hàm toán học 17
2.2 Ma trận 17
2.3 Xử lý trong ma trận và vector 20
2.4 Các ma trận đặc biệt 21
2.5 Các phép toán vector 22
2.6 Các phép toán về ma trận 23
2.7 Các hàm logic trên ma trận và vector 26
CHƯƠNG 3 27
LẬP TRÌNH TRONG MATLAB 27
3.1 Cấu trúc if-else-end 27
3.2 Cấu trúc switch-case 28
3.3 Cấu trúc lặp 29
CHƯƠNG 4 32
CÁC HÀM TOÁN HỌC TRONG ĐẠI SỐ VÀ GIẢI TÍCH SỐ 32
4.1 Các phép tính đối với đa thức và tối ưu hoá 32
4.1.1 Các phép tính đối với đa thức 32
4.1.2 Hàm eval tính giá trị của hàm một biến 37
4.1.3 Tìm cực trị của hàm 38
4.1.4 Tìm giá trị không 39
4.2 Phép lấy tích phân 41
4.3 Phép lấy vi phân 43
CHƯƠNG 5 46
ĐỒ HOẠ HAI CHIỀU 46
5.1 Sử dụng lệnh plot 46
5.2 Kiểu đường, dấu và màu 49
5.3 Kiểu đồ thị 51
5.4 Đồ thị lưới, hộp chứa trục, nhãn và lới chú giải 52
5.5 Kiến trúc hệ trục toạ độ 55
2
5.6 In hình 56
5.7 Thao tác với đồ thị 56
CHƯƠNG 6 59
ĐỒ HOẠ TRONG KHÔNG GIAN BA CHIỀU 59
6.1 Đồ thị đường thẳng 59
6.2 Đồ thị bề mặt và lưới 60
6.3 Thao tác với đồ thị 63
6.4 Các đặc điểm khác của đồ thị trong không gian ba chiều 66
6.5 Bảng màu 67
6.6 Sử dụng bảng màu 68
6.7 Sử dụng màu để thêm thông tin 69
6.8 Hiển thị bảng màu 70
6.9 Thiết lập và thay đổi bảng màu 72
CHƯƠNG 1
NHẬP MÔN MATLAB
1.1 Giới thiệu Matlab
MatLab là một phần mềm chuyên dụng chạy trong môi trường Windows
do hãng MathWork sản xuất và cung cấp. Có thể coi MatLab là một ngôn ngữ
tính toán, kỹ thuật. Nó tích hợp các công cụ rất mạnh phục vụ tính toán, lập
trình, thiết kế, mô phỏng,… trong một môi trường rất dễ sử dụng trong đó các
bài toán và các lời giải được biểu diễn theo các ký hiệu toán học quen thuộc.
Các ứng dụng điển hình:
- Toán học tính toán
- Phát triển thuật toán
- Tạo mô hình, mô phỏng
- Khảo sát, phân tích số liệu
- Đồ hoạ khoa học kỹ thuật
- Phát triển ứng dụng, gồm cả xây dựng giao diện người dùng đồ hoạ
GUI
Matlab là một hệ thống tương tác mà phần tử dữ liệu cơ bản là một mảng
mà không cần khai báo kích thước. Điều này cho phép giải nhiều bài toán
kỹ thuật , đặc biệt là các bài toán liên quan đến ma trận và vector.
Matlab (Matrix Laboratory).
3
Ban đầu Malab được viết chỉ để phục vụ cho việc tính toán ma trận. Trải
qua thời gian dài, nó đã được phát triển thành một công cụ hữu ích, một ngôn
ngữ của tính toán kỹ thuật.
Trong môi trường đại học, nó là một công cụ chuẩn cho các khoá học mở
đầu và cao cấp về toán học, khoa học và kỹ thuật.
Trong công nghiệp, nó là công cụ được lựa chọn cho việc phân tích, phát
triển và nghiên cứu hiệu suất cao.
Malab cung cấp một họ các giải pháp theo hướng chuyên dụng hoá được
gọi là các Toolbox. Các toolbox cho phép người sử dụng học và áp dụng các kỹ
thuật chuyên dụng cho cho một lĩnh vực nào đó. Toolbox là một tập hợp toàn
diện các hàm của Matlab (M-File) cho phép mở rộng môi trường Matlab để
giải các lớp bài toán cụ thể. Các lĩnh vực trong đó có sẵn các toolbox bao gồm:
xử lý tín hiệu, hệ thống điều khiển, logic mờ, mô phỏng,…
1.2 Hệ thống Matlab
Hệ thống Matlab gồm 5 thành phần chính:
- Ngôn ngữ Matlab: là một ngôn ngữ ma trận, mảng cấp cao với các câu
lệnh, hàm, cấu trúc dữ liệu, vào/ ra, các tính năng lập trình hướng đối tượng.
Nó cho phép lập trình các ứng dụng từ nhỏ đến các ứng dụng lớn và phức tạp.
- Môi trường làm việc Matlab: Đây là một bộ các công cụ và phương
tiện mà ta sử dụng hoặc lập trình. Nó bao gồm các phương tiện cho việc quản
lý các biến trong không gian làm việc Workspace cũng như xuất nhập dữ liệu,
gỡ rối,…
- Xử lý đồ họa: Đây là hệ thống đồ hoạ của Matlab. Nó bao gồm các lệnh
cao cấp cho trực quan hoá dữ liệu hai chiều và ba chiều, xử lý ảnh, ảnh động,…
Nó cung cấp các lệnh cấp thấp cho phép ta tuỳ biến giao diện đồ họa cũng như
xây dựng một giao diện đồ hoạ mạnh và hoàn chỉnh các ứng dụng của Matab.
- Thư viện toán học Matlab: Đây là tập hợp khổng lồ các thuật toán tính
toán từ các hàm cơ bản như sin, cos,… tới các hàm cấp cao như nghịch đảo ma
trận, tìm trị riêng ma trận,…
4
- Giao diện chương trình ứng dụng Matlab API (Application
program Interface): Đây là thư viện cho phép viết các chương trình C và
Fortran tương thích với Matlab, Simulink, một chương trình đi kèm với
Matlab, là một hệ thống tương tác với việc mô phỏng các hệ động học phi
tuyến. Nó là một chương trình đồ hoạ sử dụng chuột để thao tác cho phép mô
hình hoá một hệ thống bằng cách vẽ một sơ đồ khối trên màn hình. Nó có thể
làm việc với các hệ thống tuyến tính, hệ thống phi tuyến, hệ thống liên tục theo
thời gian, hệ gián đoạn theo thời gian,…
1.3 Câu lệnh và các biến trong Matlab
1.3.1 Đặc điểm biến trong Matlab
- Không cần khai báo biến và kiểu của biến. Tuy nhiên trước khi gán một
biến bởi một biến khác thì cần đảm bảo rằng biến ở bên phải phép gán có một
giá trị xác định.
- Bất kỳ một phép toán nào gán một giá trị vào một biến sẽ tạo ra biến đó
nếu cần (biến đó chưa xác định) hoặc ghi đè lên giá trị hiện tại nếu nó đã tồn tại
trong workspace
- Tên biến bao gồm một dãy các chữ cái, chữ số và dấu gạch dưới và một
số ký tự đặc biệt (bắt đầu bằng chữ cái), MatLab phân biệt chữ in hoa và in
thường, độ dài tối đa là 31 ký tự: Bình thường Matlab có sự phân biệt các biến
tạo bởi chữ cái thường và chữ cái in hoa. Các lệnh của Matlab nói chung
thường sử dụng chữ cái thường. Việc phân biệt đó có thể được bỏ qua nếu ta
thực hiện lệnh: casensen off
1.3.2 Một số lệnh đối với biến
Clear: lệnh xoá tất cả các biến đã được định nghĩa trước trong chương trình.
Lệnh gán(=): dùng để gán giá trị cho biến
Ví dụ:
>> h=3+5 ↵
h =
8
>> k=h+2
5
k =
10
Lời giải thích(%): Các ký hiệu sau dấu % đều bị bỏ qua.
Clear biến 1, biến 2…: Xoá các biến đã được liệt kê trong câu lệnh.
Who: Hiển thị các biến đã được định nghĩa trong chương trình.
Whos: hiển thị các biến đã được định nghĩa trong chương trình cùng với các
thông số của biến.
Size(Tên biến đã được định nghĩa): Cho biết kích cỡ của biến dưới dạng ma
trận với phần tử thứ nhất là số hàng của ma trận, phần tử thứ 2 là số cột của ma
trận.
Save: Lưu giữ các biến vào một File có tên là Matlab.mat
Load: Tải các biến đã được lưu giữ trong một File đưa vào vùng làm việc
X= input(dòng thông báo): Lệnh vào dữ liệu cho biến x từ bàn phím.
Disp(Biểu thức): Lệnh hiển thị dữ liệu lên màn hình.
1.3.3 Một số biến đã được định nghĩa trước
Ans: tự động gán tên này cho kết quả của một phép tính mà ta không đặt tên
Realmax: đưa ra giá trị của số lớn nhất mà máy tính có thể tính toán được.
Ví dụ:
>> realmax ↵
ans =
1.7977e+308
Realmin: Đưa ra giá trị của số nhỏ nhất mà máy tính có thể tính toán được.
Ví dụ:
>> realmin ↵
ans =
2.2251e-308
i, j: đơn vị ảo của số phức.
inf: infinity - Vô cùng lớn
Nan: Not a number - biểu diễn dạng 0/0, ∞/∞
Eps: độ sai số nhỏ nhất. Nếu cộng với một được một số nhỏ nhất lớn hơn một.
Ví dụ:
6
>> eps ↵
ans =
2.2204e-016
>> 1+eps
ans =
1.0000
1.3.4 Biến toàn cục (Global variable)
Matlab cho phép sử dụng cùng một biến cho các hàm hoặc giữa các hàm
và chương trình chính của Matlab, điều này được thông qua việc khai báo biến
toàn cục.
Global biến 1 biến 2 …
(Lưu ý các biến cách nhau bằng dấu khoản trống, không sử dụng dấu phẩy)
Việc khai báo biến toàn cục phải được thực hiện ở chương trình chính
hoặc ở File lệnh (scrìptile) hoặc ở file hàm (Function) có sử dụng các biến.
Biến toàn cục có tác dụng cho đến khi kết thúc quá trình tính toán hoặc khi
toàn bộ Workspace được xoá. Không được đưa tên biến toàn cục vào danh sách
các đối số của hàm. Khi sử dụng biến toàn cục các lệnh sau tỏ ra rất cần thiết.
Để loại bỏ các biến toàn cục ta sử dụng lệnh Clear global
Để kiểm tra xem một biến có là biến toàn cục hay không ta dùng lệnh
isglobal(Tên biến), nếu là biến toàn cục thì trả về giá trị là 1, ngược lại trả về
giá trị 0.
1.4 Script file(M_File)
Trong Matlab, yêu cầu tại dấu nhắc của Matlab trong cửa sổ lệnh là
nhanh và hiệu quả. Tuy nhiên vì số lệnh tăng lên, hoặc khi muốn thay đổi giá
trị của một hoặc nhiều biến và thực hiện lại một số lệnh với giá trị mới, nếu cứ
lặp đi lặp lại tại dấu nhắc thì sẽ trở nên buồn tẻ, do vậy Matlab cung cấp một
giải pháp cho vấn đề này là: Cho phép thay thế các lệnh của Matlab bằng một
file văn bản đơn giản, và yêu cầu Matlab mở file thực hiện lệnh chính xác như
là tại dấu nhắc của Matlab tại cửa sổ lệnh, những file này gọi là Script file hay
còn gọi là M_file. Danh từ Script để chỉ rằng thực tế Matlab đọc từ file kịch
7
bản tìm thấy trong file. Danh từ M_file để chỉ rằng tên script file đó phải kết
thúc bằng phần mở rộng là ‘.m’. Tên của file phải bắt đầu bằng một ký tự.
Các bước thực hiện như sau:
Bước 1: File/ New/ M-file, môi trường soạn thảo Editor/ Debugger xuất
hiện
B ước 2: Trên màn hình soạn thảo gõ vào các lệnh sau:
%tinh gia tri bieu thuc
x=input('Nhap x=');
y=x+3;
z=y+4;
y
z
disp(y);
disp(z);
Bước 3: Ghi lại nội dung tập tin với tên vidu.m rồi trở về cửa sổ lệnh.
Bước 4: Tại cửa sổ lệnh gõ tên tệp tin, ta được kết quả sau:
>> vidu ↵
Nhap x=3 ↵
y =
6
z =
10
8
6
10
1.5 Hàm M_File
Khi sử dụng các hàm của Matlab như hàm sin, cos,… Matlab nhận giá
trị truyền vào, sau đó hàm trả về kết quả tính toán. Các lệnh tính toán bằng hàm
cũng như các biến trung gian được tạo ra bởi các lệnh này ta đều không nhìn
thấy, tất cả những gì thấy được chỉ là giá trị nhập vào và các giá trị đưa ra, vì
vậy có thể coi một hàm như một hộp đen. Các thuộc tính này làm cho hàm trở
lên hữu dụng đối với các lệnh tính toán mà phải dùng đến các hàm toán học
phức tạp thường xuất hiện khi ta giải quyết vấn đề lớn. Dựa vào ưu điểm này,
Matlab cung cấp một cấu trúc để ta có thể tự tạo một hàm cho mình dưới dạng
M_file.
Cú pháp khai báo hàm M_file:
Funtion [tên kết quả] = tên hàm[(danh sách các biến)]
Phần thân của chương trình hàm là các lệnh của Matlab thực hiện việc
tính toan giá trị của đại lượng được nêu trong phần tên kết quả theo các biến
được nêu trong phần danh sách các biến.
Các biến chỉ có tác dụng nội trong hàm khai bào, các biến trong danh
sách được phân cách nhau bởi dấu phẩy “,”
Các quy luật và thuộc tính của hàm M_file
Hàm M_file phải tuân theo những quy luật và thuộc tính nhất định,
ngoài ra chúng còn có một số tính chất sau:
(1) Tên hàm phải trùng tên file (tên hàm không có phần mở rộng ‘.m’)
(2) Khi Matlab thực hiện lần đầu hàm M_file, nó sẽ mở file văn bản
tương ứng và dịch dòng lệnh của file đó ra một dạng mã lưu trong bộ nhớ nhằm
mục đích tăng tốc độ thực hiện các lời gọi hàm tiếp theo. Nếu trong hàm có
chứa lời gọi hàm M_file khác thì các hàm đó cũng được dịch vào trong bộ nhớ.
(3) Các dòng chú thích cho tới dòng đầu tiên không phải là chú thích
trong hàm M_file là những dòng văn bản, nó sẽ hiện ra khi sử dụng lệnh Help.
9
Ví dụ:
>> help vidu ↵
tinh gia tri bieu thuc
(4) Mỗi hàm có một không gian làm việc riêng tách biệt so với môi
trường Matlab, mối quan hệ duy nhất giữa các biến trong hàm với môi trường
Matlab là các biến vào ra của hàm đó.
Nếu bản thân hàm giá trị bị thay đổi thì sự thay đổi này chỉ tác động bên
trong của hàm đó mà không làm ảnh hưởng đến các biến của môi trường
Matlab.
Các biến được tạo ra bên trong một hàm thì chỉ nằm trong không gian
làm việc của hàm đó và được giải phóng khi hàm kết thúc, vì vậy không thể sử
dụng thông tin của lần gọi trước cho lần gọi sau.
(5) Số các tham số vào và ra khi một hàm được gọi thì chỉ có tác dụng
bên trong hàm đó.
Biến nargin chứa các tham số đưa vào.
Biến nargout chứa các giá trị đưa ra.
Trong thực tế thì các biến này thường được sử dụng để xác định giá trị
ra dựa vào số lượng các đối số đưa vào.
(6) Việc thi hành hàm M_file sẽ kết thúc khi gặp dòng cuối cùng của file
đó hoặc gặp dòng lệnh Return giúp ta kết thúc một hàm mà không cần phải thi
hành hết các lệnh của hàm đó.
Ví dụ: Tính giá trị tổng bình phương hai số được nhập từ bàn phím
Bước 1: Tạo hàm M_file:
% ham M_file
function y=fvidu(x1,x2)
y=x1*x1+x2*x2;
vao=nargin
ra=nargout
Sau đó ghi tên file: fvidu.m
Bước 2: Tạo script file
%Scip file
10
t1=input('Nhap so thu nhat:');
t2=input('Nhap so thu hai:');
kq=fvidu(t1,t2);
kq
Sau đó ghi tên file là: vidu
Bước 3: Thoát khỏi script file, Tại dấu nhắc của Matlab gõ vào tên file
vidu được kết quả sau:
>> vidu
↵
Nhap so thu nhat:3
↵
Nhap so thu hai:4
↵
vao =
2
ra =
1
kq =
25
(7) Một M_file có thể chứa nhiều hàm. Hàm chính trong M_file này
phải được đặt tên trùng với tên của M_file như đã đề cập ở trên. Các hàm khác
được khai báo thông qua câu lệnh Function được viết sau hàm đầu tiên. Các
hàm con chỉ được sử dụng bởi các hàm chính, có nghĩa là ngoài hàm chính ra
thì không có hàm nào khác để gọi được chúng. Tính năng này cung cấp một
giải pháp hữu hiệu để giải quyết từng phần của hàm chính một cách riêng rẽ
làm giảm bớt các khó khăn khi ta lập trình một hàm lớn.
Ví dụ: Ở ví dụ trước hàm M_file ta sửa lại như sau:
% ham M_file
function y=fvidu(x1,x2)
vao=nargin;
ra=nargout;
vao
ra
y=hamcon(x1,x2);
11
function z=hamcon(x1,x2);
z=x1*x1+x2*x2;
Kết quả ta thu được như trước.
Sự khác biệt của hàm M_file và Script file
(1) Điểm giống nhau:
- Cùng là các file văn bản
- Có cùng phần mở rộng là ‘.m’.
(2) Điểm khác nhau:
- Các hàm M_file không được nhập từ cửa sổ lệnh.
- Hàm M_file chỉ trao đổi thông tin với Matlab thông qua các biến truyền vào
và các biến ra mà nó tạo thành, các biến trung gian ở trong hàm thì không xuất
hiện hay tương tác với môi trường Matlab.
Nói tóm lại, hàm M_file cung cấp cho ta một phương pháp đơn giản để
mở rộng khả năng của Matlab. Trong thực tế rất nhiều hàm của Matlab là các
hàm M_file.
1.6 Vẽ các hàm
Khi muốn vẽ một hàm nào đó, phải xác định hàm đó trong một file ‘.m’
sau đó sử dụng lệnh: Fplot(‘tên hàm’, [khoảng vẽ])
Ví dụ: Tạo hàm M_file
% ham M_file
function y=fvidu(x)
y=x*x;
trong cửa sổ lệnh nhập vào lệnh: >> fplot('fvidu',[-1,1]) ↵
ta được kết quả hình vẽ như sau:
12
Lưu ý: - Tên hàm phải đặt trong dấu nháy đơn (Tên hàm nhận vào dưới dạng
một xâu ký tự)
- Phải chỉ ra đoạn cần vẽ.
Bài tập: Lập chương trình nhập vào từ bàn phím ba số thực a,b,c. Sau đó vẽ đồ
thị của hàm số y=ax
2
+bx+c (sử dụng file hàm và script file).
13
CHƯƠNG 2
MA TRẬN VÀ CÁC PHÉP TOÁN TRÊN MA TRẬN
2.1 Các phép toán số học và logic trong Matlab
2.1.1 Phép toán số học
Matlab có hai kiểu phép toán số học, đó là phép toán ma trận (matrix
arithmatic operation) và phép toán mảng (array arithmatic operation). Phép
toán ma trận được định nghĩa bởi các luật của đại số tuyến tính. Phép toán
mảng được thực hiện tương ứng từng phần tử, chẳng hạn phép nhân mảng hai
ma trận A{a(i,j)} và B{b(i,j) } được thực hiện bằng cách nhân tương ứng từng
phần tử của A và B. c(i,j)=a(i,j)*b(i,j)
Để phân biệt giữa phép toán ma trận và phép toán mảng người ta đưa
thêm vào trước các toán tử một dấu chấm “.”
Phép toán ma trận theo luật
đại số tuyến tính
Phép toán mảng không theo
luật đại số tuyến tính
Phép toán Toán tử Phép toán Toán tử
Cộng
Trừ
Nhân.
Chia phải
+
-
*
/
Cộng
Trừ
Nhân.
Chia phải
+
-
.*
./
14
Chia trái
Luỹ thừa.
Phép gán.
\
^
=
Chia trái
Luỹ thừa.
Phép gán.
.\
.^
=
Thứ tự ưu tiên các phép toán
Ngoặc đơn
Luỹ thừa
Nhân, chia
Cộng, trừ
2.1.2 Các phép toán quan hệ
Các phép toán quan hệ bao gồm
- 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: ~ =
Biểu thức có các toán tử quan hệ nhận giá trị đúng (true) hoặc sai
(false). Trong Matlab, biểu thức đúng có giá trị là 1, biểu thức sai có giá trị là
0.
Ví dụ:
>> x=3==3
x =
1
>> x=3~=3
x =
0
2.1.3 Các phép toán logic và các hàm logic
Các phép toán logic được thực hiện bởi các câu lệnh sau:
- Phép And: &
- Phép Or: |
- Phép phủ định: ~
15
Các hàm logic: and, or, xor, not
2.1.4 Số phức và các phép toán về số phức
Biểu diễn số phức:
Tên biến = Phần thực + Phần ảo i
hoặc
Tên biến = Phần thực + Phần ảo j
Ví dụ: a= 2+3i
Các phép toán đối với số phức: Cộng(+), trừ(-), nhân(*), chia(/)
Các hàm đặc biệt trên số phức: x=a+bi
real(x): Trả về phần thực của số phức x
image(x): Trả về phần ảo của số phức x
conj(x): Trả về số phức liên hợp của số phức x
Ví dụ:
>> x=1+1i ↵
x =
1.0000 + 1.0000i
>> conj(x) ↵
ans =
1.0000 - 1.0000i
abs(x): Trả về modul của số phức x
Ví dụ
>> x=3+4i ↵
x =
3.0000 + 4.0000i
>> abs(x) ↵
ans =
5
angle(x): agument của số phức x (arctn(b/a))
Ví dụ:
x =
1.0000 + 1.0000i
16
>> angle(x) ↵
ans =
0.7854
2.1.5 Các hàm toán học
Trong mục này giới thiệu một số hàm toán học thông dụng thường gặp
khi lập trình.
Tên hàm Cú pháp Giải thích
Sin sin(x) Hàm sin
cos cos(x) Hàm cos
Tan tan(x) Hàm tang
asin asin(x) Hàm arcsin
acos acos(x) Hàm arccos
atan atan(x) Hàm arctang
acos acos(x) Hàm arccos
sinh sinh(x) Hàm sin hyperbolic
cosh cosh(x) Hàm cos hyperbolic
tanh tanh(x) Hàm tang hyperbolic
asinh asinh(x) Hàm arcsin hyperbolic
acosh acosh(x) Hàm arccos hyperbolic
atanh atanh(x) Hàm arctang hyperbolic
abs abs (x) Giá trị tuyệt đối hoặc modulo của số phức
round round(x) Làm tròn đến số nguyên gần nhất
Fix fix(x) Làm tròn về không
floor floor(x) Làm tròn về -
∞
ceil ceil(x) Làm tròn về +
∞
rem rem(x,y) Phần dư của x chia y
gcd gcd(x,y) Ước số chung lớn nhất của hai số nguyên x và y
Lcm lcm(x,y) Bội số chung nhỏ nhất của hai số nguyên x và y
exp exp(x) Luỹ thừa của e
Log log(x) Logarit cơ số e
Log2 log2(x) logarit cơ số 2
Log10 log10(x) logarit cơ số 10
sqrt sqrt(x) Căn bậc hai của x
2.2 Ma trận
Khái niệm
Ma trận là một mảng hai chiều mà các phần tử có thể là số thực hoặc số
phức hoặc cũng có thể là các ký tự không số.
17
Khi biểu diễn ma trận trong Matlab thì tên ma trận là một chuỗi có tối đa
là 31 ký tự và bắt đầu là chữ sau đó có thể là chữ hoặc số hoặc một số ký tự đặc
biệt (ngoại trừ các ký tự: +,-,*,/, ).
Bao quanh các phần tử của ma trận là dấu ngoặc vuông: [a
i j
]
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
Các hàng được phân cách nhau bởi dấu chấm phẩy
Các cách để nhập dữ liệu cho ma trận
(1) Liệt kê trực tiếp
Ví dụ:
>> M=[3 2 3;3 4 5] ↵
M =
3 2 3
3 4 5
(2) Nhập thông qua lệnh input
Ví dụ:
>> M=input('Hay nhap ma tran M=') ↵
Hay nhap ma tran M=[3 4 5;4 3 2] ↵
M =
3 4 5
4 3 2
Chú ý: - Khi kết thúc lệnh có thể dùng dấu chấm phẩy (;) hoặc không.
Nếu kết thúc bằng dấu chấm phẩy thì kết quả không hiển thị lên màn hình. Nếu
không sử dụng dấu chấm phẩy thì kết quả được hiển thị lên màn hình. Tuy
nhiên trong cả hai trường hợp dữ liệu đều được lưu trong không gian làm việc
của Matlab và được sử dụng cho lần tiếp theo.
Ví dụ:
>> a=[1 2;2 3]; ↵
>> b=[4 5;1 2]; ↵
>> c=a*b ↵
c =
18
6 9
11 16
- Các phần tử trong ma trận có thể là số phức:
Ví dụ:
>> M=[1+i 2+2i; 1+2i 2+i] ↵
M =
1.0000 + 1.0000i 2.0000 + 2.0000i
1.0000 + 2.0000i 2.0000 + 1.0000i
- Các phần tử trong ma trận có thể là các ký tự (biểu tượng). Nhưng
trước hết cần khai báo bằng lệnh Syms (Khai báo là các biến Symbolic)
Ví dụ:
>> syms sinx cosx tanx ↵
>> b=[sinx cosx; cosx tanx] ↵
b =
[ sinx, cosx]
[ cosx, tanx]
Hiển thị dữ liệu của ma trận
- Gõ trực tiếp tên ma trận sau đó nhấn phím ↵
Ví dụ:
>> b=[sinx cosx; cosx tanx]; ↵
>> b ↵
b =
[ sinx, cosx]
[ cosx, tanx]
- Dùng lệnh disp để hiển thị dữ liệu nhưng không hiển thị tên ma trận.
Ví dụ:
>> b=[sinx cosx; cosx tanx]; ↵
>> disp(b) ↵
[ sinx, cosx]
[ cosx, tanx]
19
2.3 Xử lý trong ma trận và vector
Tạo vector
Để tạo vector ta có các cách sau:
STT Cú pháp Chú thích Ví dụ
1 X=[x
1
x
2
x
n
]
Tạo vector hàng x chứa các
phần tử đặc biệt
>> x=[1 4 2]
x =
1 4 2
2 X=first:last
Tạo vector hàng x bắt đầu
tại first và kết thúc là phần
tử có giá trị nhỏ hơn hoặc
bằng last, phần tử sau bằng
phần tử trước cộng 1
>> x=1:4.3
x =
1 2 3 4
3 X=first:inc:last
Tạo vector x bắt đầu tại
first, phần tử sau bằng phần
tử trước cộng inc, kết thúc là
phần tử có giá trị nhỏ hơn
hoặc bằng last
>> x=1:2:6
x =
1 3 5
4 X=linspace(first, last, n)
Tạo vector hàng x bắt đầu
tại first, kết thúc là last,
vector có n phần tử.
>>
x=linspace(2,8,4)
x =
2 4 6 8
Truy nhập tới các phần tử của ma trận
Matlab cho phép ta xử lý đến từng phần tử của ma trận. Để truy nhập tới
phần tử của ma trận ta sử dụng tới chỉ số của từng phần tử:
Cú pháp: Tên ma trận(chỉ số hàng, chỉ số cột)
Ví dụ:
>> a=[1 3; 2 1] ↵
a =
1 3
2 1
>> a(1,2)
ans =
3
20
Lưu ý: Chỉ số của mảng phải là số nguyên dương hoặc có kiểu logic
2.4 Các ma trận đặc biệt
Ma trận zeros: zeros(số hàng, số cột)
Tất cả các phần tử trong ma trận đều bằng không
Ví dụ:
>> c=zeros(2,3) ↵
c =
0 0 0
0 0 0
Ma trận Ones: Ones(số hàng, số cột)
Ví dụ
>> c=ones(2,3) ↵
c =
1 1 1
1 1 1
Ma trận ma phương
Tổng tất cả giá trị các phần tử trên hàng=tổng tất cả giá trị các phần tử
trên cột=tổng các giá trị các phần tử trên đường chéo của ma trận
Cú pháp: magic(cấp ma trận)
Ví dụ:
>> magic(3) ↵
ans =
8 1 6
3 5 7
4 9 2
Ma trận eye (Ma trận đồng nhất)
Tất cả các phần tử trên đường chéo bằng 1, các phần tử khác có giá trị 0.
Cú pháp: eye(số hàng, số cột)
Ví dụ:
>> m=eye(2,3) ↵
21
m =
1 0 0
0 1 0
Ma trận pascal
Cú pháp: Pascal(cấp ma trận)
Ví dụ
>> m=pascal(3) ↵
m =
1 1 1
1 2 3
1 3 6
Ma trận compan(tạo ma trận vuông rỗng: [])
Cú pháp: compan(cấp ma trận)
2.5 Các phép toán vector
Phép
toán
Biểu thức Cú pháp
Ví dụ
Gán A=B A=B
>> A=[1 3 4];
>> B=A;
>> B
B =
1 3 4
Cộng, trừ A+B, A-B A+B, A-B
>> C=A+B
C =
2 6 8
Nhân A.B A.*B
>> C=A.*B
C =
1 9 16
Chia trái B\A B.\A
>> D=C.\A
D =
1.0000 0.3333 0.2500
22
Chia phải A/B A./B
>> D=C./A
D =
1 3 4
Luỹ thừa A
B
A.^B
>> D=A.^B
D =
1 27 256
Ngoài ra còn có phép cộng, trừ, nhân, chia, luỹ thừa một số với một vector
Tìm kiếm mảng con
Nhiều khi ta muốn biết các chỉ số hay danh sách các chỉ số của những
phần tử của một mảng mà thoả mãn một biểu thức quan hệ, trong Matlab để
thực hiện việc đó ta sử dụng hàm Find, hàm này trả về danh sách con chỉ số tại
những phần tử mà biểu thức quan hệ của chúng là đúng.
Ví dụ:
>> A=[-3 -1 -5 0 5 6] ↵
A =
-3 -1 -5 0 5 6
>> find(abs(A)>3) ↵
ans =
3 5 6
Hàm cho biết số phần tử của vector: length(tên vector)
2.6 Các phép toán về ma trận
Phép chuyển vị
Phép chuyển đổi vetor hàng thành vector cột gọi là phép chuyển vị, thực
hiện phép chuyển vị bằng dấu nháy đơn (‘).
Ví dụ:
>> A=[2 3 4;3 4 5] ↵
A =
2 3 4
3 4 5
23
>> A' ↵
ans =
2 3
3 4
4 5
Nếu cả hai vector x và y là các vector mà các phần tử là các số thực thì
tích x*y không được định nghĩa, nhưng x*y` được coi như là tích vô hướng.
Ví dụ:
>> x=[2 3 4] ↵
x =
2 3 4
>> y=[1 2 3] ↵
y =
1 2 3
>> t=x*y' ↵
t =
20
Đối với ma trận hay vector 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;↵
>> z' ↵
ans =
1.0000 - 2.0000i
Ví dụ:
>> A=[1+2i 2+i; 3-i 4+2i] ↵
A =
1.0000 + 2.0000i 2.0000 + 1.0000i
3.0000 - 1.0000i 4.0000 + 2.0000i
24
>> A' ↵
ans =
1.0000 - 2.0000i 3.0000 + 1.0000i
2.0000 - 1.0000i 4.0000 - 2.0000i
Phép nghịch đảo của ma trận
Nếu A là một ma trận vuông, định thức của A khác không, khi đó A
-1
được gọi là nghịch đảo của A nếu A.A
-1
= I.
Cú pháp: inv(A)
Ví dụ:
>> A=[1 2; 3 4] ↵
A =
1 2
3 4
>> inv(A) ↵
ans =
-2.0000 1.0000
1.5000 -0.5000
Về mặt lý thuyết thì B*inv(A) tương đương B/A, inv(A)*B tương
đương A\B, tuy nhiên các phép toán / \ thường được sử dụng nhiều hơn, vì
chúng thực hiện nhanh hơn, sai số ít hơn.
Phép cộng, trừ trên ma trận
Phép cộng, trừ ma trận được định nghĩa như là đối với mảng, cộng hoặc
trừ trên ma trận phải đảm bảo 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.
A±B ={a
i j
± b
i j
}, c ± B ={c ± b
i j
}
Phép nhân, chia trên ma trận
C = A*B khi đó C = {c
i j
: c
i j
=Σa
i k
b
k j
}
C = A/B tương đương C = A*inv(B)
Phép luỹ thừa và số mũ của ma trận
Nếu p là một số nguyên dương thì A^p = A*A*…*A (nhân A lần)
25