hập ma trận Nhập trực tiếp danh sách các phần tử Phát sinh ma trận bằng các hàm sẵn có Nhập từ file Tạo ma trận bằng các file .m Dấu ; kết thúc một dòng.. Tạo ma trận bằng file .m Fi
Trang 1Giới thiệu môn học
Matlab và Ứng dụng
Lớp 08TH1D, 08TH2D Học kỳ 2 năm học 2009
Học kỳ 2 năm học 2009 2010 2010
GV: ThS Nguyễn Thành Nhựt
1 ntnhut@hcmus.edu.vn
• Phần mềm Matlab 7.0 hoặc mới hơn
• Chủ động tự học với tài liệu cung cấp trước
2 ntnhut@hcmus.edu.vn
Trang 2Nội dung môn học
1. Giới thiệu sơ lược về phần mềm Matlab
2. Tính toán trên Ma trận, vector
Trang 3Cách tính điểm
2. Thi Thực hành giữa kỳThi Thực hành giữa kỳ 20%20%
•
• Tuần lễ 33 (19/04/2010) Tuần lễ 33 (19/04/2010)
3. Thi Thực hành cuối kỳ 70%
5 ntnhut@hcmus.edu.vn
1 Brian Hahn Brian Hahn Daniel T Valentine, Daniel T Valentine, Essential
2002.
2.
2 Các tài liệu khác tại Các tài liệu khác tại www.mathworks.com
4. Trang web môn học
6 ntnhut@hcmus.edu.vn
Trang 41 ntnhut@hcmus.edu.vn
Giới thiệu Matlab
Trang 5…
3 ntnhut@hcmus.edu.vn
Maple
4 ntnhut@hcmus.edu.vn
Trang 65 ntnhut@hcmus.edu.vn
Chạy file setup.exe từ CD phần mềm và theo
hướng dẫn tiếp theo của chương trình cài đặt.
Trang 7Toolbox trong Matlab
Toolboxlà các thư viện hàm sẵn có để hỗ trợ
Khởi động/Thoát chương trình Matlab
Trang 8Giao diện Matlab
9 ntnhut@hcmus.edu.vn
backspace, delete xoá ký tự trước, sau
home, end về đầu, cuối dòng lệnh
Trang 9Biểu thức
Biểu thức ((expression expression) trong Matlab ) trong Matlab
Trang 10Một số ví dụ về biểu thức trong Matlab
Biến
Biến ((variable variable))
Mỗi khi một cái tên mới xuất hiện với phép
gán, Matlab tạo biến và cấp phát bộ nhớ cho nó
Trang 11Tên biến:
Bắt đầu bằng 1 chữ cái, tiếp theo là chữ cái, chữ
số hoặc dấu gạch dưới “_” Các chữ cái phân biệt
chữ hoa, chữ thường
Ví dụ:
Hợp lệ: “x”, “a_b1”, “v1”
Không hợp lệ: “_a”, “1x”, “abc*”
Biến đặc biệt “ans”:
lưu giá trị phép toán vừa tính
Lệnh “who” và “whos”:
cho biết thông tin về các biến đang hiện hữu
15 ntnhut@hcmus.edu.vn
Trang 12Độ ưu tiên phép toán
4 * , / , * , / , \\ trái qua phải
5 + , + , trái qua phải
HhQm thử: >> -2^3 + 4 * (5 – 7) \ 6 * 8
17 ntnhut@hcmus.edu.vn
Kiểu số trong Matlab
Trang 13Hằng số
Hằng số ((constant constant) trong Matlab ) trong Matlab
eps Epsilon = 2^(Epsilon = 2^( 52)52)
realmax (2 – eps)*2^1023
HaH Not A Number Not A Number Vô định Vô định
19 ntnhut@hcmus.edu.vn
rat a/b (phân số) 2600/9
20 ntnhut@hcmus.edu.vn
Trang 14Xoá giá trị của biến
Xoá biến x là xoá vùng nhớ đã cấp phát cho
Hàm
Hàm ((function function))
hàm toán học, từ sơ cấp đến cao cấp
Có 2 loại hàm trong Matlab
Không thể thấy source code của các hàm built-in
Ngược lại, có thể xem và chỉnh sửa source code của
các hàm lưu trong các file m.
Trang 15Xem trợ giúp (Help)
Tìm tên hàm Help \ Functions –
Alphabetical List hoặc tìm trong Index
Tìm hiểu về một vấn đề gì đó Chẳng hạn lĩnh vực toán Help \
Mathematics
23 ntnhut@hcmus.edu.vn
Trang 161 ntnhut@hcmus.edu.vn
Ma trận (matrix)
Ma trận là một mảng hình chữ nhật các con 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.
Trang 17hập ma trận
Nhập trực tiếp danh sách các phần tử
Phát sinh ma trận bằng các hàm sẵn có
Nhập từ file
Tạo ma trận bằng các file m
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 ,
3 ntnhut@hcmus.edu.vn
Trang 18Đường chéo của ma trận
5 ntnhut@hcmus.edu.vn
Trích một phần tử
Phần tử Aijđược trích bằng biểu thức A(i,j)
ma trận là một vector cột dài)
A(8) là phần tử thứ 8 duyệt theo cột từ trái qua phải, từ trên xuống dưới
Trang 19Chỉ số vượt khỏi kích thước ma trận
Dấu hai chấm “:” (colon)
quan trọng nhất trong Matlab
Trang 20Dùng dấu hai chấm trong chỉ số
Ví dụ:
A(1:k,j) gồm k số đầu tiên ở cột thứ j của ma trận A.
sum(A(1:4,4)) tính tổng 4 số đầu tiên ở cột thứ 4 của ma trận A.
Dấu hai chấm đứng một mình sẽ chỉ toàn bộ phần tử của dòng hoặc cột
Từ khoá “end” chỉ chỉ số cuối cùng của dòng hoặc cột
Ví dụ:
A(:,end) chỉ toàn bộ phần tử ở cột cuối cùng.
9 ntnhut@hcmus.edu.vn
Trang 2116.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0
12 ntnhut@hcmus.edu.vn
Trang 22Tạo ma trận bằng file m
File m là một file văn bản ghi các dòng lệnh Matlab.
Có thể soạn thảo bằng MATLAB Editor hoặc bất kỳ trình soạn thảo văn bản nào.
Lưu file có đuôi m
Gõ tên file để thực thi nội dung các dòng lệnh trong file.
Ví dụ:
tạo một file có nội dung như sau:
A=[ 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0];
Lưu với tên magik.m Dòng lệnh
>>magik
sẽ đọc file và tạo biến A là ma trận như trên.
13 ntnhut@hcmus.edu.vn
Trang 23Không được xoá 1 phần tử kiểu như X(1,2) = []
Dùng chỉ số với dấu : để xoá 1 hay nhiều phần tử
X(2:2:10) = [] X 16 9 2 7 13 12 1
15 ntnhut@hcmus.edu.vn
Trang 24Tiếp theo
1 ntnhut@hcmus.edu.vn
Trang 254 ntnhut@hcmus.edu.vn
Trang 26Copyright © 2006 ntnhut@mathdep.hcmuns.edu.vn
ma trận đơn giản chỉ là một mảng 2 chiều
Các phép toán cộng, trừ vẫn không đổi giữa
ma trận và mảng Nhưng các phép toán
mang tính nhân sẽ khác
toán (mang tính nhân) trên mảng
Mảng (Array or Vector)
5 ntnhut@hcmus.edu.vn
Phép toán trên vector (mảng 1 chiều)
vector cột [1
2 34]
Trang 28Khi thực hiện một phép
toán giữa ma trận và một
con số (vô hướng), nó
thực hiện phép toán trên
Trang 29253
Trang 3013 ntnhut@hcmus.edu.vn
Trang 31Vẽ đồ thị trong
Matlab
1 ntnhut@hcmus.edu.vn
ĐỒ THỊ 2D
Lệnh plot
>> plot(x,f(x))Với:
f(x)- hàm số cần vẽ
x– vectơ miền giá trị của hàm f
2 ntnhut@hcmus.edu.vn
Trang 34Ví dụ vẽ đồ thị với các tham số
>> x = 0:pi/20:2*pi;
>> plot(x, sin(x),’-.*r’);
Trang 35Lệnh hold on
Khi muốn vẽ thêm đồ thị trên đồ thị hiện có, ta sử dụng
lệnh hold on Để tắt chế độ này, sử dụng hold off
Ví dụ vẽ nhiều đồ thị với các tham số
>> x = 0:pi/20:2*pi;
>> plot(x, sin(x),’-.*r’);
>> hold on
>> plot(x, sin(x – pi/2),’ om’);
>> plot(x, sin(x – pi), ‘:bs’);
>> hold off
10 ntnhut@hcmus.edu.vn
Trang 3611 ntnhut@hcmus.edu.vn
Các tham số khác
LineWidth: độ rộng của nét vẽ, tính bằng pt
MarkerEdgecolor: màu của đường viền marker
MarkerFacecolor: màu bên trong marker
Markersize: độ lớn của marker, tính bằng pt
Trang 3714 ntnhut@hcmus.edu.vn
Trang 38Xác định kiểu trục tọa độ
axis([xmin xmax ymin ymax])
Ví dụ về kiểu trục toạ độ
Trang 3918 ntnhut@hcmus.edu.vn
Trang 40Xác định các mốc ghi trên trục tọa độ
Trang 41Bổ sung một số hàm
Matlab cơ bản
…help, workspace,phép toán tập hợp, vector, ma trận, các hàm toán học, số học, ngày, giờ,
đại số tuyến tính…
1 ntnhut@hcmus.edu.vn
Copyright © 2006 ntnhut@mathdep.hcmuns.edu.vn
Workspace
Cú pháp Ý nghĩa
help
help afunctionafunction xem chú thích một hàm
demo xem các demo của Matlab
ver xem phiên bản Matlab đang dùng
clear
clear var1 var2var1 var2 …… xoá biến xoá biến var1var1, , var2var2, …, …
quit thoát chương trình
2
Trang 42ismember(A,B) xem phần tử nào của A nằm trong B
setdiff(A,B) liệt kê các phần tử thuộc A nhưng không
thuộc B
setxor(A,B) liệt kê các phần tử của cả 2 tập hợp nhưng
không thuộc phần giao
3
Các hàm Toán học
Cú pháp Ý nghĩa
sin(x), cos(x), tan(x) các hàm lượng giác
asin(y), acos(y), atan(y) các hàm lượng giác ngược
log(x), log10(x), log2(x) logarit cơ số e, 10, 2
2x>= y
4
Trang 43Copyright © 2006 ntnhut@mathdep.hcmuns.edu.vn
Số học
primes(k) liệt kê tất cả các số nguyên tố nhỏ hơn k
perms(A) liệt kê tất cả các hoán vị của A
nchoosek(A,k) liệt kê tất cả tập con có k phần tử lấy từ A
5
Copyright © 2006 ntnhut@mathdep.hcmuns.edu.vn
Chuyển đổi cơ số
bin2dec(‘0,1’s string’) chuyển số nhị phân sang hệ 10
Trang 44Copyright © 2006 ntnhut@mathdep.hcmuns.edu.vn
Vector, ma trận
Cú pháp Ý nghĩa
size(A) danh sách kích thước các chiều của A
length(A) kích thước lớn nhất của A
max(A) trị (các trị theo cột) lớn nhất của A
min(A) trị (các trị theo cột) nhỏ nhất của A
linspace(a,b) tạo 100 giá trị cách đều nhau từ a đến b
linspace(a,b,m) tạo m giá trị cách đều nhau từ a đến b
end chỉ số cuối trong mảng
trace(A) tổng các trị trên đường chéo chính của A
pascal(n) tam giác pascal dạng ma trận, đọc theo các
đường chéo phụ
roots(A) nghiệm của ptrình có mảng hệ số là A
polyval(P,x) định giá trị của phương trình ứng với mảng
hệ số A tại giá trị x (P(x))
8
Trang 45Copyright © 2006 ntnhut@mathdep.hcmuns.edu.vn
?gày, giờ
Cú pháp Ý nghĩa
tic, đoạn lệnh; toc thời gian thực hiện đoạn lệnh
calendar(năm, tháng) in lịch một in lịch một thángtháng của của nămnăm nào đónào đó
eomday(năm, tháng) số ngày trong một số ngày trong một thángtháng của của nămnăm
nào đó
9
Trang 46Lệnh điều kiện và vòng lặp
…if…elseif…else…end
Switch…end For…end While…end
1 ntnhut@hcmus.edu.vn
hắc lại file.m
File mghi các dòng lệnh Matlab
Soạn thảo các file.m bằng MATLAB Editor hoặc bất
kỳ trình soạn thảo văn bản nào
Gõ tên file để thực thi nội dung các dòng lệnh trong
file
Có 2 loại file.m:
Scripts , chỉ thực thi các dòng lệnh, không có tham số
truyền vào hay trả về một giá trị nào cả.
Functions , có thể nhận tham số truyền vào và trả về giá trị
Trang 47thi Doan_lenh nếu bieu_thuc_logic là true
Doan_lenh cuối cùng.
4
Trang 48if a > 0disp(‘dương’)
Biểu thức logic với ma trận
Nếu A, B là con số , A==B trả về true hay
false theo đúng nghĩa của nó
Nếu A, B là các ma trận , A==B trả về ma trận
0/1 các vị trí bằng nhau hoặc khác nhau tương
ứng giữa các phần tử của hai ma trận.
6
Trang 49Biểu thức logic với ma trận
8
Trang 50case2, if nhuan(nam), ngay=29, else ngay=28, end
otherwise, disp(‘thang khong hop le')
Trang 514 6
12
Trang 52break dùng để thoát ngang vòng lặp hiện tại
Ví dụ: Ví dụ: cho n lớn hơn 2, đoạn lệnh sau kiểm tra cho n lớn hơn 2, đoạn lệnh sau kiểm tra
Trang 53Viết hàm trong Matlab
…nhập, xuất …
…function…
1 ntnhut@hcmus.edu.vn
hắc lại file script m
Ví dụ: soạn thảo script sau lưu vào file ‘timso.m’
disp('chuong trinh tim mot so trong mot mang so')
a = input('nhap vao mang so : ');
key = input('nhap vao so can tim: ');
fprintf('so can tim o vi tri %d
fprintf('so can tim o vi tri %d \ \n', k) n', k)
else
disp('khong co trong mang ')
end
2
Trang 54Khi thực thi file ‘timso.m’ trên cửa sổ dòng lệnh Matlab:
>>timso
chuong trinh tim mot so trong mot mang so
nhap vao mang so : [5 2 1
nhap vao mang so : [5 2 1 - -1 0 5] 1 0 5]
nhap vao so can tim: 5
so can tim o vi tri 1
fprintf(‘chuoi co dinh dang’)
Định dạng của Định dạng của fprintffprintf::
Trang 55Disp và fprintf
Ví dụ 1:
a = input(‘So thu nhat = ’);
b = input(‘So thu hai = ’);
a = input(‘So thu nhat = ’);
b = input(‘So thu hai = ’);
Tên hàm phải trùng với tên file.m Gọi lệnh bằng cách
gõ tên hàm (tên file.m)
Trang 58text
legend
Trang 59plotyy - Vẽ đồ thị trên 2 tung độ khác
z = (sin(x).^2)-(cos(y).^2);
plot(t,z) axis([0 2*pi -1 1])
Trang 63Ví dụ biểu đồ quạt
Y = [12 20 15 25 78]
pie(Y)
pie(Y,{‘Giai tich’,’Dai so’,’Xac suat’,…
’Co hoc’,’Tin hoc’})
pie3(Y)
pie(Y,[0 0 1 0 1])
Trang 66Đồ thị của dữ liệu rời rạc
stem / stem3 : đồ thị dạng rời rạc trong 2D / 3D
Trang 71Một số lệnh vẽ đồ thị trong 3 - D
plot3
contour / contourf / contour3
mesh / meshc / meshz
print -dtiff -r200 mygraph.tiff
print –deps2 mygraph.eps
…
Trang 72Sử dụng Plotting Tools
Trang 73Tính toán hình thức.
Trang 74Khai báo biến:
Khai báo biểu thức:
Trang 75Lệnh findsym: tìm biến hình thức trong
Trang 77Đạo hàm theo x: diff(f,x)
Đạo hàm theo y: diff(f,y)
Đạo hàm cấp 2 theo x: diff(f,x,2)
Đạo hàm cấp 2 theo y: diff(f,y,2)
Nếu x là biến mặc định của f thì diff(f,2) tương
đương với diff(f,x,2).
syms s t
f = sin(s*t)
diff(f,t) => ans = cos(s*t)*s
diff(f,s)=> ans = cos(s*t)*t
diff(f,t,2) => ans = -sin(s*t)*s^2
findsym(f,1) => ans = t
Suy ra biến mặc định là t do đó diff(f,2) = diff(f,t,2)
Trang 78o Đạo hàm đối với ma trận
Trang 79x a− f x
→
Trang 81collect(f) – f = f(x)
• Đơn giản hàm f bằng các nhóm các biến x có
cùng số mũ
• Trường hợp f có nhiều biến collect(f,y) sẽ chỉ
định gom nhóm theo biến y
• collect(f) gom nhóm theo biến mặc định được
Trang 82expand(f) : phân tích biểu thức f.
› expand(h) => ans = exp(a)*exp(b)
› cos(3*x) => ans = 4*cos(x)^3 – 3*cos(x)
Trang 83simplify(f): đơn giản biểu thức f.
› f = (1/a^3 + 6/a^2 + 12/a + 8)^1/3
› simplify(f) => ans = ((2*a + 1)^3/a^3)^1/3
› simple(f) => ans = (2*a + 1)/a
› syms x y positive
› h = log(x*y)
› simplify(h) => ans = log(x) + log(y)
› simple(h) => ans = log(x*y)
Trang 84subs(expr,old,new): thay thế old bằng new
trong biểu thức expr
Trang 85poly2sym(a,x): tạo một đa thức theo biến x
với các hệ số được lấy lần lượt từ mảng a
Trang 87› K = [a+b, a-b;b-a, a+b]
› G = [cos(s) sin(s);-sin(s) cos(s)]
Trang 88solve(f) : giải phương trinh f(x) = 0.
định được chỉ ra trong hàm findsym(f), ở đây
findsym(f) -> ans = x solve(f,a): giải theo
biến được chỉ định là a (tương tự cho b, c)
› solve(f,b)
› ans = -(a*x^2 + c)/x
g(x) Lưu ý: phải đặt trong dấu nháy
Trang 91f t g t g dt
Trang 941 Chọn
3 Đồ thị
Tạo một chương trình GUI đơn
giản
Trang 95Đặt tên file của chương trình
GUIDE Layout editor Bước 2 Chọn và đặt pushbutton
Trang 96Chuỗi hiển thị trên button
Tên hàm xử
lý Callback
Chạy thử lần 1 Nothing happen!
Chưa cài đặt xử
Trang 97Thêm code xử lý Đặt tên cho chương trình
• Nhấn phải chuột vào khoảng trống.
• Chọn Property Inspector
• Chỉnh Name:
Trang 99Thêm button ‘Plot’ Cài đặt Callback cho button ‘Plot’
Trang 100Cài đặt callback cho Grid on/off Cài đặt callback cho Clear
Trang 102Giao diện người dùng (GUI)
Viết lệnh cho các thành phần GUI
Hàm xử lý Callback của Push Button
• Khi nhấn chuột vào một nút nhấn, hàm sau được gọi
Huỳnh Văn Kha
Tên tag của button
VD: nhấn nút thì thay tên của nút (thuộc tính ‘String’ của nút)
Tên tag của button
Một số thuộc tính quan trọng của Button
• Enable: cho phép nhấn (on/off)
• String: chuỗi hiển thị trên nút
5/5/2010 Huỳnh Văn Kha
4
• String: chuỗi hiển thị trên nút
• Tag: tên đối tượng nút phân biệt với các đối tượng khác trong chương trình
• Value: giá trị của nút
Trang 103hoặc được chọn, ngược lại sẽ bằng thuộc tính Min function togglebutton1_Callback(hObject, eventdata, handles)
eventdata, handles) button_state = get(hObject,'Value');
if button_state == get(hObject,'Max')
% Toggle button ñược nhấn
elseif button_state == get(hObject,'Min')
% Toggle button không ñược nhấn
end
Toggle Button, Radio Button và Check Box
(Nút bật tắt, Nút chọn và Ô check)
• Mặc định Max=1, Min=0
• Cũng có thể thay đổi trạng thái cho các Toggle Button, Radio
Button và Check Box bằng cách đặt lại các thuộc tính
Value, Max, Min
5/5/2010 Huỳnh Văn Kha
togglebutton1 sang trạng thái được nhấn
Edit Text (Ô nhập văn bản)
5/5/2010 Huỳnh Văn Kha
8
Trang 104• Thuộc tính String chứa chuỗi mà người dùng nhập vào
• Nếu thuộc tính Max, Min được đặt sao cho Max–
Min>1 thì người dùng có thể nhập nhiều hàng
• Callback được gọi khi đang thay đổi nội dung của Edit
Text mà nhấp chuột ra bên ngoài (nhưng vẫn bên trong
GUI), hoặc khi người dùng nhấn Enter (với Edit Text một
hàng), Ctrl+Enter (với Edit Text nhiều hàng)
• Thuộc tính String trả về một chuỗi Muốn nhận dữ liệu số thì sử dụng hàm str2double Nếu người dùng không nhập
số thì str2double trả về NaN function edittext1_Callback(hObject, function edittext1_Callback(hObject, eventdata, handles)
user_entry = str2double(get(hObject,'string'));
if isnan(user_entry) errordlg('You must enter a numeric value','Bad Input','modal')
return end
% Proceed with callback
Slider (thanh trượt)
5/5/2010 Huỳnh Văn Kha
11
• Thuộc tính Value xác định trạng thái của Slider
• Thuộc tính Max và Min xác định cực đại và cực tiểu cho
thuộc tính Value của Slider
List Box và Pop-up Menu
5/5/2010 Huỳnh Văn Kha
12
Trang 105mục đầu tiên là 1
• Thuộc tính String là mảng cell chứa danh sách các mục
chọn của List Box và Pop-up Menu
chọn của List Box và Pop-up Menu
• Ví dụ dưới đây cho phép lấy giá trị của chuỗi được chọn trong
% Convert from cell array to string
• Khi các phím mũi tên thay đổi thuộc tính Value của List Box, callback Callback được gọi đồng thời đặt thuộc tính SelectionType của figure thành normal
• Phím Enter và Space không làm thay đổi thuộc tính Value
• Phím Enter và Space không làm thay đổi thuộc tính Value của List Box, nhưng Callback vẫn được gọi, đồng thời đặt thuộc tính SelectionType của figure thành open
• Nếu người dùng nhấp đúp chuột thì Callback được gọi sau mỗi lấn nhấp MatLab đặt thuộc tính SelectionType của figure thành normal ở lần thứ nhất và thành open ở lần thứ hai
• Do đó ta có thể biết được người dùng nhấp đúp chuột hay không dựa vào việc truy vấn thuộc tính SelectionType của figure
Button Group
5/5/2010 Huỳnh Văn Kha
5/5/2010 Huỳnh Văn Kha