15
Các phép tính trên ma trận Lập trình script trong Matlab Hàm (functions) trong Matlab Thảo luận và bài tập Giới thiệu về lập trình script trong Matlab Hoàng Gia Hưng 1 1 Khoa CNTT-TT Trường ĐHQT Bắc Hà H. G. Hưng Phương pháp tính 2009

Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 2: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 3: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 4: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 5: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 6: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 7: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 8: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 9: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 10: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 11: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 12: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 13: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 14: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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

Page 15: Giîi thi»u v· lªp trình script trong Matlab · Hàm (functions) trong Matlab Th£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

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