Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Giới thiệu về lập trình script trong Matlab
Hoàng Gia Hưng1
1Khoa CNTT-TTTrường ĐHQT Bắc Hà
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Tóm lược nội dung
1 Các phép tính trên ma trận
2 Lập trình script trong Matlab
3 Hàm (functions) trong Matlab
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Tạo ma trận
Bằng lệnh gán, A=[1,2;3,4]
Bằng các lệnh zeros(2), ones(3), eye(3)
Bằng lệnh gallery
Bằng cách kết hợp các câu lệnh trên. Ví dụ: Tạo ma trận cóđường chéo bằng 5 còn tất cả các phần tử còn lại bằng 2
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Truy cập các phần tử của ma trận
Phần tử hàng i, cột j: A(i,j)
Các phần tử của một hàng hay một cột: A(i,:), A(:,i)
Tất cả các phần tử của ma trận A(:,:)
Biến ma trận thành 1 vector cột A(:)
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Một số thao tác đơn giản trên ma trận
Các phép toán đại số: +, -, *, /
Các phép toán đại số theo từng cặp phần tử của 2 ma trận.+, .-, .*, ./
Chuyển vị: .’
Quay ma trận (rot90), định dạng lại (reshape), lặp ma trận(repmat),...
Tính định thức (det), tính hạng (rank), tính vết (trace) củamột ma trận
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Thực hành trên lớp
1 Tạo ma trận đối xứng 5× 5 sao cho các phần tử của hàngthứ nhất chạy từ 1 đến 5 và phần tử trên các đường chéogiống hệt nhau
2 Tạo ma trận mới bằng cách hoán đổi vị trí của cột thứ 3 vàthứ 5 của ma trận trên
3 Tạo ma trận 5× 5 mà phần tử tăng dần đều theo hàng từ1-25
4 Tạo ma trận 5× 5 mà phần tử trên các hàng là số thứ tựcủa hàng đó (2 cách)
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Lập trình theo script mode vs shell mode
Lập trình shell: Từng câu lệnh được gõ trực tiếp trong cửasổ lệnh (command window) của Matlab và sẽ được Matlabdịch/thực hiện ngay sau khi người dùng gõ Enter
Lập trình script: Một nhóm các câu lệnh được viết trongmột file, Matlab sẽ dịch và thực hiện cả nhóm câu lệnh nàykhi người dùng yêu cầu⇒ tương tự việc điều khiển máytính theo một kịch bản (script) dựng trước
Lập trình script được sử dụng để viết một chương trìnhnhằm giải quyết một bài toán/vấn đề hoàn chỉnh
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Một ví dụ về lập trình script trong Matlab
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Cửa sổ soạn thảo của Matlab
Được gọi bằng lệnh "edit" trong cửa sổ lệnh hoặc thôngqua tab "New" trên menu của Matlab (ctrl+n)
Khả năng tô màu cho các câu lệnh và cấu trúc của Matlab-> dễ sửa lỗi
Lưu file: ctrl-s -> tên file (*.m)
Dịch và chạy file: F5 hoặc gõ tên file vào command windowcủa Matlab
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Phân tích một chương trình đơn giản
% twonums.m
a = input(’First number: ’);
b = input(’Second number: ’);
disp([’ Their sum is: ’ num2str(a+b)])
disp([’ Their product is: ’ num2str(a*b)])
Lệnh input: đưa ra thông báo nhắc (prompt) và nhập mộtsố từ bàn phím
Lệnh disp: hiển thị 1 chuỗi ký tự lên màn hình
Lệnh num2str: đổi 1 giá trị số (numeric) sang dạng chuỗi(string)
Quy tắc: tên file nên được đặt một cách hợp lý, tránh trùngvới các từ khóa/lệnh của Matlab
Kiểm tra: dùng lệnh which của Matlab, v.d. which twonums
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Chức năng của các hàm (functions)
Một chương trình lớn thường được phân mảnh thành mộtvài công đoạn tính toán tương đối hoàn thiện -> cácmodules tương đối độc lập
Liên kết modules: trao đổi dữ liệu giữa chúng như thế nào?
Xét một module có đoạn mã saua = input(’First number: ’);
b = input(’Second number: ’);
disp([’ Their sum is: ’ num2str(a+b)])
disp([’ Their product is: ’ num2str(a*b)])
Một module khác muốn sử dụng giá trị tổng/tích củamodule trên thì làm thế nào?
Tổ chức các modules thành các hàm -> một chương trìnhlớn có thể chứa nhiều hàm
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Cú pháp (syntax)
Xét một ví dụ đơn giản sau
function [output] = xsq(input)
output = input.^2;
Từ khóa: function
Biến chứa giá trị ra (output), biến chứa giá trị vào (input):biến địa phương
Cơ chế trao đổi dữ liệu
x=0:.1:1;
y=xsq(x);
1 input← x2 output← input.*input3 y← output
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Thực hành với 1 số câu lệnh vẽ đồ thị nâng cao
1 Viết một hàm tính giá trị của hàm số ax2+ bx + c với a, b,
c là 3 tham số đầu vào2 Viết một chương trình cho phép nhập a, b, c từ bàn phím
rồi sử dụng hàm đã tạo trong câu 1 vẽ đồ thị hàm sốax2
+ bx + c với x=0:.1:23 Viết một hàm cho phép tính giá trị của hai hàm số: 1
x2+1 và3
2x2+1
4 Viết 1 chương trình vẽ đồ thị hai hàm số ở câu 3 tại 25điểm trong khoảng [0,3] trên cùng một đồ thị với hai màuxanh blue và đỏ và hai loại markers khác nhau
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Thảo luận
Câu hỏi?
H. G. Hưng Phương pháp tính 2009
Các phép tính trên ma trậnLập trình script trong Matlab
Hàm (functions) trong MatlabThảo luận và bài tập
Bài tập về nhà
2.9 - 2.13
H. G. Hưng Phương pháp tính 2009