1. Trang chủ
  2. » Giáo Dục - Đào Tạo

giáo trình matlad cơ bản và ứng dụng

80 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo trình Matlab cơ bản và ứng dụng
Tác giả Nguyễn Thị Hồng
Người hướng dẫn P. T. S. Nguyễn Văn A
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Khoa học Máy tính
Thể loại Giáo trình
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 80
Dung lượng 1,04 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Th vi n hàm c a MATLAB bao gồm rất nhiều ch ng trình tính toán con; Các ch ng trình con này giúp ng i s dụng gi i quy t nhiều lo i bài toán khác nhau, đặc bi t là các bài toán về ma tr n

Trang 1

CH NG 1

GI I THI U V MATLAB

MATLAB là s n phẩm phần mềm c a công ty MathWorks Inc u điểm nổi b t c a MATLAB là kh nĕng tính toán và biểu di n đồ ho kỹ thu t nhanh chóng, đa d ng và chính xác cao Th vi n hàm c a MATLAB bao gồm rất nhiều ch ng trình tính toán con; Các ch ng trình con này giúp ng i s dụng gi i quy t nhiều lo i bài toán khác nhau, đặc

bi t là các bài toán về ma tr n, s ph c, h ph ng trình tuy n tính cũng nh phi tuy n MATLAB cũng cho phép x lý d li u và biểu di n đồ ho trong không gian 2D và 3D với nhiều d ng đồ thị thích hợp, giúp ng i s dụng có thể trình bày k t qu tính toán một cách

tr c quan và thuy t phục h n Thêm vào đó, các phiên b n MATLAB ngày càng phát triển nhiều module phần mềm bổ sung, gọi là các Toolbox (bộ công cụ) với ph m vi ch c nĕng chuyên dụng cho t ng chuyên ngành cụ thể

Tài li u này giới thi u cách s dụng MATLAB phần cĕn b n và ng dụng các bộ công

cụ Control system toolbox và SIMULINK để mô ph ng, phân tích động học các h th ng điều khiển Các ví dụ và hình minh ho trong tài li u đ ợc th c hi n với phiên b n

MATLAB 7 Release 14

1.1 KH I Đ NG

• Nhắp đúp chuột vào biểu t ợng MATLAB trên màn hình Desktop; hoặc :

• Chọn Start > Programs > MATLAB 7.0 > MATLAB 7.0

Trang 2

C a sổ l nh Command Window : Đây là c a sổ chính c a MATLAB T i đây ta

th c hi n toàn bộ vi c nh p l nh và nh n k t qu tính toán Dấu >> là dấu đợi l nh Sau khi nh p l nh và k t thúc bằng động tác nhấn phím ENTER, MATLAB s x lý l nh và

xuất k t qu liền ngay d ới dòng l nh Ví dụ :

>> a=5*2+6 (nh p l nh và nhấn Enter )

16

C a sổ Command History : Tất c các l nh đã s dụng trong Command Window

đ ợc l u gi và hiển thị t i đây Có thể lặp l i l nh cũ bằng cách nhắp đúp chuột vào l nh

đó Cũng có thể cắt dán, sao chép, xoá c nhóm l nh hoặc t ng l nh riêng r

C a sổ Workspace Browser : Khái ni m Workspace (không gian làm vi c) là một

vùng nhớ động trong bộ nhớ c a ch ng trình, t động hình thành khi MATLAB đ ợc kh i động và t động xóa khi thoát MATLAB Workspace l u gi các bi n khi ta s dụng MATLAB Tất c các bi n tồn t i trong Workspace đều đ ợc hiển thị t i c a sổ Workspace Browser với các thông tin về tên bi n, giá trị, kích cỡ Byte và lo i d li u

C a sổ th mục hi n hành Current Directory : Đ ợc hiển thị khi nhắp chuột vào ô Current Directory Nh c a sổ này ng i s dụng có thể nhanh chóng nh n bi t các th

mục con và các t p tin (file) đang có trong th mục hi n hành Các thao tác m file, l u file, tìm M-file để th c thi có m c u tiên cao nhất cho th mục hi n hành Mặc định khi

kh i động MATLAB thì th mục hi n hành là ' \Th mục cài đặt MATLAB\work'

Tên th mục hi n hành cũng đ ợc chỉ rõ trên thanh toolbar (vị trí )

Trên đây chỉ là một cách hiển thị tổ hợp các c a sổ trong màn hình MATLAB Tùy theo thói quen và nhu cầu s dụng, ng i dùng có thể thay đổi linh ho t cách hiển thị thông

qua menu Desktop > Desktop layout > (Với các phiên b n tr ớc nh MATLAB 6 R12

và MATLAB 6.5 R13 chọn menu View > Deskstop Layout >…)

1.3 TI N ÍCH TR Ợ GIÚP

Ti n ích trợ giúp (Help) c a MATLAB rất phong phú Có thể gọi t menu help trên

thanh menu hoặc nh p l nh t i Command window theo cú pháp:

help tênl nh % xem trợ giúp t i command window

doc tênl nh % xem tr ợ giúp trong c a sổ Help

Th c hi n một trong các cách sau đây :

• Nhắp chuột vào nút U góc trên, ph i c a màn hình MATLAB

• Chọn menu File > Exit MATLAB

Trang 3

1.5 TÍNH TOÁN T I COMMAND WINDOW

Với các bài toán đ n gi n, chỉ cần dùng ít câu l nh MATLAB, chúng ta th ng gi i

S dụng dấu = ta có thể khai báo một bi n, đồng th i gán giá trị cho bi n đó Các bi n

đ ợc phân bi t với nhau b i tên bi n

Tên bi n hợp l : a; b; A; A1; A2; chieu_cao; TT; TT_1; TT_2

Tên bi n không hợp l : 1B; 2B; G(s); G'; G*, chieu cao; chieu-cao

Các tên bi n sau đây là khác nhau: S; s ; the_tich; The_tich; THE_TICH

Trang 4

M t s l u ý khi nh p l nh:

- Bình th ng MATLAB luôn hiển thị k t qu c a câu l nh trên màn hình N u mu n MATLAB không hiển thị k t qu thì cu i câu l nh ta đặt thêm dấu chấm phẩy (;)

- Nhiều câu l nh có thể đặt chung trên một dòng nh ng bắt buộc ph i phân cách nhau

b i dấu phẩy (,) hoặc chấm phẩy (;) Không cho phép phân cách các l nh bằng kho ng tr ng N u cu i l nh nào có dấu phẩy thì MATLAB hiển thị k t qu , còn

dấu chấm phẩy thì không hiển thị k t qu

ví dụ trên, n u nh p l nh :

>> S=a*b; V=S*h thì MATLAB chỉ hiển thị giá trị c a V, không hiển thị giá trị c a S

- Các phím mũi tên ↑ ↓ ← → trên bàn phím rất h u ích khi nh p l nh Để gọi l i l nh

v a gõ, b n có thể nhấn phím mũi tên ↑, ti p tục nhấn phím này, nó s gọi ti p l nh

tr ớc đó Phím mũi tên ↓ có tác dụng ng ợc với ↑ Các phím mũi tên ← và → có

thể dùng để thay đổi vị trí con tr trong dòng l nh t i dấu nhắc c a MATLAB, giúp

b n d dàng chỉnh s a nội dung dòng l nh

Xem n i dung c a Workspace:

Cách 1: Vào c a sổ Workspace Browser xem danh sách li t kê

Cách 2: Dùng l nh who ho ặc whos

>> who % li t kê tên các bi n đang có trong Workspace ra màn hình Command Your variables are:

S V a ans b h

>> whos % li t kê c tên bi n và các thông tin liên quan

Name Size Bytes Class

Grand total is 6 elements using 48 bytes

L u n i dung c a Workspace thành t p tin d li u :

- Cách 1: Vào menu File > Save Workspace As > chọn th mục khác (n u cần) >

nh p tên t p tin > ấn nút Save T p tin d li u có tên tổng quát là *.mat

- Cách 2: Nh p l nh >>save ' đường dẫn\ tênfile.mat '

Ví dụ: >>save ' C:\ MATLAB 7\ Work \ mydata1.mat '

N u b n không nh p đ ng d n thì mặc định là l u vào th mục hi n hành

T ải n i dung c a m t t p tin d li u vào l i Workspace :

- Cách 1: Vào menu File > Import Data > MATLAB Data File (*.mat) > chọn tên t p

tin > ấn nút Open

- Cách 2: Nh p l nh >>load ' đường dẫn\ tênfile.mat '

- Cách 3: Vào c a sổ Current Directory, nhắp đúp chuột vào tên t p tin cần m

Trang 5

Thao tác trên các bi n có trong Workspace :

• Xem l i giá trị c a bi n: Gõ tên bi n t i dấu nhắc l nh

>>V=S*h V=60

• Xoá s ch nội dung đang có trên màn hình Command window (nh ng không xoá

bi n) và đ a con tr về đầu màn hình :

>> clc

• Xoá một s bi n :

>> clear tênbi n_1 tênbi n_2 tênbi n_n

% chú ý là tr ng hợp này, gi a các tên bi n có kho ng tr ng

Ví dụ, để xoá hai bi n S và V ta gõ l nh :

>> clear S V

• Xoá h t mọi bi n trong Workspace :

>> clear Các thao tác xem nội dung, xoá, l u, đổi tên, chỉnh s a giá trị (edit value) c a bi n

cũng có thể th c hi n t i c a sổ Workspace Browser

Thao tác trên th m c:

• Xem đ ng d n và tên th mục hi n hành: >> cd

Khi mới kh i động MATLAB7, th mục hi n hành mặc định là 'C:\MATLAB7\work'

• T o th mục mới : >> mkdir('đ ng d n', 'tên th m c m i')

Ví dụ: >> mkdir('C:\matlab7\work','Nguyen Van A')

N u b n không nh p đ ng d n thì mặc định là l u vào th mục hi n hành

L ưu ý: tên th mục cho phép có kho ng tr ng gi a các t , nh ng tên bi n và tên file

thì không đ ợc phép

B n cũng có thể nhắp ph i chuột trong c a sổ Current Directory, chọn new > folder

> nh p (gõ) tên th mục mu n t o mới > nhấn Enter

Trang 6

CH NG 2

M-FILE

Trong MATLAB, M-file là các file ch ng trình đ ợc so n th o và l u d ng vĕn

b n Cĩ hai lo i M-file là Script file (file l nh) và Function file (file hàm) C hai đều cĩ

phần tên m rộng là ".m " MATLAB cĩ rất nhiều M-file chuẩn đ ợc xây d ng sẵn Ng i

dùng cũng cĩ thể t o các M-file mới tuỳ theo nhu cầu s dụng

2.1 L P TRÌNH D NG SCRIPT FILE

Thay vì nh p và th c thi t ng câu l nh t i c a sổ Command window, b n cĩ thể so n

và l u tất c các câu l nh cần thi t để gi i bài tốn vào một Script file Sau đĩ b n chỉ cần

gõ tên file để th c thi tồn bộ ch ng trình

1) M c a sổ Editor :

Cách 1: Trong command window gõ l nh edit

Cách 2: Vào menu File >New >M-File

Cách 3: Nhắp chuột vào icon (icon đầu tiên trên thanh toolbar)

THEO TRÌNH T THU T TỐN

CH NG TRÌNH DÙNG LÀM GÌ, AI VI T, ĐÂU,

KHI NÀO ?

vù ng soạn thả o

Trang 7

• Ký hi u % có thể dùng bất c chỗ nào trong ch ng trình để t o câu ghi chú, gi i thích Các câu ghi chú đặt phía trên dòng l nh đầu tiên s hi n trên màn hình khi

Nhap chieu dai a:

sau đó ch ng i dùng nh p một giá trị s t bàn phím, nh n giá trị v a nh p và gán vào bi n a

Ví d 1: So n th o t p tin vd1.m v ới nội dung nh sau :

3) L u: Vào menu File > Save > đặt tên t p tin > nhắp nút save

T p tin Scrift file có phần m rộng là ".m", và đ ợc l u vào th mục hi n hành

N u không có s l a chọn khác thì th mục hi n hành đ ợc mặc định là th mục

work c a MATLAB Tên t ập tin phải bắt dầu bằng ký tự chữ, không có khoảng

tr ống giữa các ký tự (gi ng nh quy định về tên bi n) L u ý kiểm tra và tắt các

phần mềm gõ ti ng Vi t nh Vietkey, Unikey,…n u cần

4) Gọi th c hi n SCRIPT FILE:

Cách 1: Trong c a sổ so n th o nhắp chuột vào nút run trên thanh toolbar

Cách 2: Tr về màn hình Command window và gõ tên file (không có phần m rộng

.m), sau đó nhấn Enter để thực thi

Ví dụ để th c thi file "vd1.m " v a t o, t i dấu nhắc l nh ta gõ : >> vd1

L u ý là dù gọi th c hi n theo cách 1 hay cách 2 thì MATLAB cũng đều xuất

k t qu tính toán t i c a sổ Command Window

5) M một M-file đang có để xem l i hay chỉnh s a:

Cách 1: Trong c a sổ Editor hoặc Command window, vào menu File >open >… Cách 2: Vào c a sổ Workspace, nhắp đúp chuột vào tên M-file cần m

Cách 3: T i Command window, gõ l nh edit (' đ ng d n\tên file')

% Chuong trinh tinh the tich hinh hop

% DHSPKT, 10/2004

% Nguoi viet: Nguyen Van A

% -

a = input('Nhap chieu dai a:');

b = input('Nhap chieu rong b:');

h = input('Nhap chieu cao h:');

S=a*b; % Dien tich day

Trang 8

2.2 L P TRÌNH D NG FUNCTION FILE

T ng t nh trong toán học, các hàm (function) trong MATLAB s nh n vào giá

trị c a các đ i s và tr về giá trị t ng ng c a hàm Trình t t o và th c thi một file hàm bao gồm các b ớc nh sau:

1) M c a sổ Editor : th c hi n t ng t nh Scrift file

• Tham s ra (cũng gọi là tham bi n) dùng để ch a các k t qu x lý c a hàm

Khi gọi th c hi n hàm ta có thể thay chúng bằng các tên bi n cụ thể

• Tham s vào (cũng gọi là tham trị, hay đ i s ) là các bi n trong hàm mà s

nh n các giá trị vào cụ thể khi gọi th c hi n hàm

Tên các tham s vào, ra trong phần danh sách đ ợc phân cách nhau bằng dấu

phẩy N u chỉ có 1 tham s ra thì không cần dùng dấu ngoặc vuông [ ]

3) L u: nh cách l u c a Scrift file Khi l u hàm, MATLAB s lấy tên hàm làm tên file, ng i l p trình không nên s ửa lại tên này để tránh l n lộn khi gọi th c

hi n hàm

4) Gọi th c hi n Function file: t c a sổ Command th c hi n nh sau:

N u chỉ có một tham s ra:

>> tênbi n = tênfile (danh sách các giá trị vào)

N u có nhiều tham s ra:

>> [tênbi n1, tênbi n2, ] = tênfile (danh sách các giá trị vào)

Ví d 2: T o t p tin tt_hinhhop.m

function V = tt_hinhhop(a,b,h)

% chuong trinh tinh the tich hinh hop

% khi biet cac canh a(dai),b(rong),h(cao)

S=a*b;

V=S*h;

Th c thi trong Command window :

>> TT=tt_hinhhop(5,2,4) % tham bi n V có thể đổi tên tuỳ ý, ví dụ đổi là TT

TT = 40

Trang 9

Chú ý:

- Khi b n gõ l nh help tênfilehàm thì các câu ghi chú phía trên dòng khai báo

function hoặc d ới dòng function nh ng tr ớc dòng l nh đầu tiên trong file hàm s

đ ợc hi n trên màn hình

- Khi gọi th c thi một file hàm ta dùng tên file, không phải tên hàm Do đó n u ví

dụ 2 ta đặt tên file là "vd2.m" thì khi th c thi ph i dùng l nh:

>> TT=vd2(5,2,4)

Ví d 3: T o file hàm dttt_hinhhop.m v ới 2 tham s ra

% CTr tinh dien tich day va the tich hinh hop

% khi biet cac canh a(dai),b(rong),h(cao)

function [S,V] = dttt_hinhhop(a,b,h)

S=a*b; % dien tich day

V=S*h; % the tich

Th c thi trong Command window :

>> [DT,TT] = dttt_hinhhop(5,2,4) % Các tham bi n S,V có thể đổi tên tuỳ ý

% chương trình đổi độ sang radian

function rad = change(do)

Trang 10

Đ c đi m c a hàm :

Các hàm chỉ thông tin với MATLAB thông qua các bi n truyền vào cho nó và các

bi n ra mà nó t o thành, các bi n trung gian bên trong hàm thì không t ng tác với môi

tr ng MATLAB

Khi MATLAB th c hi n lần đầu các file hàm, nó s m file và dịch các 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 sau đó không có s thay đổi gì trong M file, quá trình dịch s không

x y ra lần th hai 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ớ Bằng l nh clear function ta có thể xoá c ỡng b c các hàm đã

dịch, nh ng v n gi nguyên các M-file

Mỗi hàm có không gian làm vi c riêng c a nó (local workspace), tách bi t với môi

tr ng MATLAB (s dụng base workspace), m i quan h duy nhất gi a các bi n trong hàm với môi tr ng bên ngoài là các bi n vào và ra c a hàm đó N u b n thân các bi n c a hàm bị thay đổi thì s thay đổi này chỉ tác động bên trong c a hàm đó và 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 a hàm s đ ợc gi i phóng ngay sau khi hàm th c thi xong nhi m vụ, 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

Các hàm có thể s dụng chung các bi n với hàm khác hay với môi tr ng MATLAB n u các bi n đ ợc khai báo là bi n toàn cục Để có thể truy c p đ ợc các bi n bên trong một hàm thì các bi n đó ph i đ ợc khai báo là bi n toàn cục trong mỗi hàm s

dụng nó

Một M-file có thể ch a nhiều hàm Hàm chính (main function) trong M-file này

ph i đ ợc đặt tên trùng với tên c a M-file 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 (local function) chỉ đ ợc s dụng b i hàm chính, t c là ngoài hàm chính ra thì không có hàm nào khác có thể 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 , t o thu n lợi cho vi c l p một file hàm duy nhất để gi i bài toán ph c t p

Ví d 5 : T o file hàm tinh_gia_tien.m có nội dung sau

function gia = tinh_gia_tien(L,d)

% CTr tinh gia tien khoi thep hinh tru

% khi biet chieu dai L (mm),duong kinh d (mm)

Trang 11

2.3 Bi n c c b và bi n toàn c c

a) Bi n c c b

Bi n cục bộ chỉ có ph m vi s dụng trong một hàm Các bi n cục bộ không l u gi

trong Workspace T i Command window ta không thể truy c p đ ợc các bi n cục bộ Các

bi n trong các file hàm đều là bi n cục bộ, tr phi có s ch động khai báo khác đi

Ví dụ: các bi n a, b, h, S,V trong file hàm tt_hinhhop.m là các bi n cục bộ

b) Bi n toàn c c

Bi n toàn cục có ph m vi s dụng trong nhiều hàm hoặc nhiều M-file Các bi n toàn

cục đ ợc l u gi trong Workspace c a MATLAB và hiển thị t i c a sổ Workspace

browser T i Command window ta chỉ có thể truy c p đ ợc các bi n toàn cục

Ví dụ: Các bi n trong các Script-file là các bi n toàn cục

Các bi n t o tr c ti p t i Command window là các bi n toàn cục

Để các bi n trong Script-file tr thành bi n cục bộ, ta có thể chuyển một Script-file thành m ột Function-file đ n gi n không có các tham s vào, ra Ví dụ, t Scrift-file vd1.m

ta t o file hàm vd1B.m có nội dung nh sau:

function vd1B()

a = input('Nhap chieu dai a:');

b = input('Nhap chieu rong b:');

h = input('Nhap chieu cao h:');

S=a*b % dien tich day

V=S*h % the tich

Khi gọi th c hi n bằng l nh >>vd1B hoặc >>vd1B( ), ta v n có các k t qu t ng t

>>vd1, chỉ khác là các bi n a, b, h, S, V bây gi là bi n cục bộ nên không còn truy c p

đ ợc t c a sổ Command window Sau khi hàm th c thi xong, n u gõ l nh:

>> a

B n s nh n đ ợc dòng thông báo sau :

??? Undefined function or variable 'a '

% hàm hoặc bi n 'a' ch a đ ợc định nghĩa

Trang 12

CH NG 3

CÁC KI U D LI U VÀ PHÉP TÍNH

MATLAB có kh nĕng tính toán trên mọi kiểu d li u s và ch D li u s có thể

là s th c, s ph c, vect , ma tr n D li u ch có thể là chuỗi ký t , biểu th c logic, biểu

Trang 13

Ví d 2 Gi i ph ng trình b c hai ax2 + bx + c = 0 ; với a = 1; b = - 5 ; c = 2

Ta bi t các nghi m c a ph ng trình b c hai có d ng :

2 1,2

4.5616

>> x2 = (- b - delta^(1/2))/(2*a) x2 =

hay 2.2251e-308 + realmax: s chấm động d ng lớn nhất, ≈ 21023

hay 1.7977e+308 + Inf hay inf : s vô cùng (Infinity), với Inf = +∞ ; -Inf = -∞

+ NaN hay nan : (Not-a-number) không ph i là s , ví dụ k t qu phép chia 0/0 + eps : độ chính xác t ng đ i c a s có chấm động, bằng 2-52

hay 2.2204e-016

3) Đ nh d ng s

Khi hiển thị k t qu tính toán ra màn hình, MATLAB dùng định d ng s mặc định là

format short Tùy theo yêu cầu ta có thể định d ng l i các con s khi hiển thị Vi c định

d ng này không nh h ng đ n độ chính xác tính toán vì MATLAB v n l u gi các bi n trong bộ nhớ với giá trị th c s c a nó

L nh s d ng D ng hi n th Ví d : hi n th s π: >> pi

format bank 2 ch s th p phân 3.14

format 4 ch s th p phân 3.1416

format short 4 ch s th p phân 3.1416

format short e 4 ch s th p phân

với dấu chấm động 3.1416e+00 (= 3.1416*10^0) format long 14 ch s th p phân 3.14159265358979

Để đọc gi i thích chi ti t về l nh format, b n gõ l nh: help format

Trang 14

4) M t s hàm toán c b ản :

Khi s dụng các hàm này, đ i s x là s th c, ph c, vect , hay ma tr n đều đ ợc

sqrt(x) Cĕn b c hai c a x, t ng đ ng l nh x^(1/2) exp(x) Hàm mũ c s e c a x (= e x

)

Ví d ụ: exp(0)= e0

=1; exp(1)= e1 =2.7182 log(x) Logarit c s e c a x (= lnx)

abs(x) - Tìm giá trị tuy t đ i c a x n u x là s th c

- Tìm môđun c a x n u x là s ph c round(x) Làm tròn x tới s nguyên gần nhất

rem(x,y) Tìm phần d c a x /y , có dấu lấy theo x

mod(x,y) Tìm phần d c a x /y, có dấu lấy theo y

sign(x) Hàm lấy dấu c a x (hàm signum); tr về 1 n u

x>0; tr về -1 n u x<0; tr về 0 n u x=0

Ví d ụ: sign(5)=1; sign (-5)=-1; sign(0)=0

sin(x) sin c a x, với x là radian

cos(x) cos c a x, với x là radian

tan(x) tang c a x, với x là radian

asin(x) arcsin c a x, với x là radian

acos(x) arccos c a x, với x là radian

atan(x) arctg c a x, với x là radian

sinc(x) = (sin(πx)) /πx n u x ≠0

= 1 n u x=0 sind(x); cosd(x); tand(x) sin; cos; tang c a x, với x là độ

asind(x); acosd(x); atand(x) arcsin; arccos; arctg c a x, với x là độ

sinh(x) sinhyperbol c a x ; sinh(x) = (ex - e-x)/2

cosh(x)

coshyperpol c a x ; cosh(x) = (ex + e-x)/2

⇒ cosh(x) + sinh(x) = ex cosh(x) - sinh(x) = e-x tanh(x) tanhyperpol(x) ; tanh(x) = sinh(x) / cosh(x)

MATLAB có rất nhiều hàm toán học đ ợc xây d ng sẵn Để tìm hiểu kỹ h n, b n

có thể gõ l nh help elfun, help elmat, help specfun hoặc help datafun

Trang 15

• Trong Matlab các ký t i và j dùng để ký hi u toán t o

N u i hoặc j đã đ ợc s dụng cho các giá trị khác thì ta ph i định nghĩa l i nh sau: i=sqrt(-1) hoặc j = sqrt(-1)

Ví d : >> z = 3 - 5i % hoặc >> z = 3 - i*5

3.0000 - 5.0000i

>> z=5*exp(4i) % t c là z=5e4i z=

>> z2=modul*exp(theta*i) % th l i, n u tính đúng thì s có z2=z1 z2= 2.0000 + 3.0000i

Trang 16

3.3 CHU I

Trong MATLAB, chuỗi là dãy ký t đặt trong cặp dấu nháy đ n ' '

Mỗi ký t c a chuỗi chi m 2 byte trong bộ nhớ

>>s = '46' % s là bi n chuỗi, ch a 2 ký t 4 và 6, chi m 4 byte

>>str = 'the tich hinh hop' % str là bi n chuỗi, ch a 17 phần t , chi m 34 byte

>>a=46 % a là bi n s th c, chi m 8 byte bộ nhớ

>>c=46+32i % c là bi n s ph c, chi m 16 byte bộ nhớ

Các hàm x lý chu i thông d ng :

ischar(s); isstr(s) Hàm tr về 1 (True) n u s là chuỗi

strcat (s1, s2, ) N i các chuỗi thành hàng, t động ngắt bớt kho ng

tr ng cu i chuỗi n u có

strvcat (s1,s2, ) Ghép các chuỗi thành cột (ma tr n ký t ), t động

thêm kho ng tr ng, b qua chuỗi rỗng str2mat (s1,s2, ) Ghép các chuỗi thành cột (ma tr n ký t ), t động

thêm kho ng tr ng, chuỗi rỗng cũng tính là 1 cột disp(s) Hiển thị nội dung c a bi n s ra màn hình

fprintf Đ a d li u có định d ng ra file hoặc màn hình

strcmp(s1,s2) So sánh hai chuỗi, true n u s1 gi ng s2

strncmp(s1,s2,N) True n u N ký t đầu c a s1, s2 gi ng nhau

eval('chuỗi') X lý chuỗi nh một l nh MATLAB

ng d ng:

Ghép m ảng chu i v i s và hi n th k t quả :

>> a= 12;

>> str=['Gia tri cua a la: ', num2str(a)] ;

>> disp(str) % hi n nội dung, không cho hi n tên bi n

Trang 17

Chao cac ban

Chung ta bat dau nhe !

L u ý :

H K t qu l nh strvcat ('Hello','Yes') t ng t nh ['Hello';'Yes ']

% strvcat t động thêm hai kho ng tr ng sau chuỗi Yes để ghép hợp l , t c là hai

hàng ph i có s phần t (s ký t ) bằng nhau là 5

H K t qu l nh strvcat('Hello','','Yes') khác với str2mat ('Hello', '','Yes')

% ví dụ này strvcat t o 2 hàng vì b qua chuổi rỗng'', còn str2mat t o 3 hàng

H K t qu l nh strcat('Chao ','Ban') khác với ['Chao ', 'Ban']

% strcat t o k t qu ChaoBan, các kho ng tr ng sau t Chao bị b qua

Ví d : So n th o t p tin: tthinhtru.m

% Chuong trinh tinh the tich hinh tru

% khi biet ban kinh R ,chieu cao h

function V = tthinhtru(R,h)

S=pi*R^2;

V=S*h;

disp (['Ban kinh R = ',num2str(R)])

disp (['Chieu cao h = ',num2str(h)])

disp ('The tich :') %fprintf('The tich :\n')

Th c thi t i Command window :

Trang 18

3.4 VÉCT

Trong MATLAB, các thu t ng véct và m ảng đ ợc dùng không phân bi t

• Để khai báo một véct c t (m ng cột) ta nh p các phần t nằm trong dấu ngoặc vuông

[ ], phân cách nhau b i dấu chấm phẩy

• Để khai báo một véct hàng (m ng hàng) ta nh p các phần t nằm trong dấu ngoặc

vuông [ ], phân cách nhau b i kho ng trắng hoặc dấu phẩy

c a tổng bình ph ng các phần t c a a)

prod(a) Tích các phần t

Trang 19

min(a) Phần t bé nhất c a vect a max(a) Phần t lớn nhất c a vect a mean(a) Trung bình cộng c a các phần t

Ví d ụ: a) Cho n=50 Tìm tổng n s chẵn đầu tiên

b) Cho n=50 Tìm tổng n s lẻ đầu tiên b) Cho n=5 Tìm n!

Cộng + c=a+2 c= [(a1+2);(a2+2); ; (an+2)]

Tr - c=a-2 c= [(a1-2);(a2-2); ; (an-2)]

Các phép tính gi a hai véc t :

Lũy th a .^ c=a.^b c= [(a1^b1);(a2^b2); ; (an^bn)] Tích có h ớng .* c=a.*b c= [(a1*b1);(a2*b2); ; (an*bn)] Chia ph i ./ c=a./b c= [(a1/b1);(a2/b2); ; (an/bn)] Chia trái .\ c=a.\b c= [(a1\b1);(a2\b2); ; (an\bn)]

Cộng hai vect + c=a+b c= [(a1+b1);(a2+b2); ; (an+bn)]

Tr hai véct - c=a-b c= [(a1-b1);(a2-b2); ; (an-bn)] Chuyển vị (cột thành

hàng hay ng ợc l i) ' a' a=[a1; a2 ; ;an] thì a'=[a1 a2 an]

a=[a1 a2 an] thì a'=[a1; a2 ; ;an] Tích vô h ớng '* c=a'*b c= (a1*b1)+(a2*b2)+ + (an*bn)

Trang 20

trong đó : aT là vect chuyển vị c a a,

||a|| và ||b|| là chuẩn Euclid c a a và b

- Biểu di n trong MATLAB:

>> theta = acos(a'*b/(norm(a).*norm(b))) % tính góc gi a hai véct c ột a và b

- Có thể t o một véct hàng có thang chia logarit bằng cách dùng l nh:

logspace(giá tr ị đầu, giá trị cu i, s phần t )

Đ i với hàm logspace, giá trị đầu và giá trị cu i đ ợc nh p b i s mũ th p phân, ví dụ: thay vì nh p 100 (10^2) ta chỉ cần nh p 2 N u ta không nh p s phần t thì mặc định là 50

Trang 21

• Các phép tính cộng, tr , nhân, luỹ th a, chia ph i, chia trái gi a ma tr n và một s vô

h ớng có thể th c hi n với mọi ma tr n Cú pháp t ng t nh vect với s vô h ớng,

ví dụ: A+2; A-2; A.*2; A.^2; A./2 ; A.\2; Các phép tính này s đ ợc th c hi n cho t ng

s h ng c a ma tr n đây có hai tr ng hợp cần l u ý là A.*2 = A*2 và A./2 = A/2

• Các phép tính gi a hai ma tr n nh cộng, tr , chấm nhân, chấm chia chỉ th c hi n đ ợc

với các ma tr n có cùng kích th ớc (cùng s hàng và s cột) Cụ thể là:

- Phép tính A+B ho ặc A-B th c hi n cộng hoặc tr t ng ng t ng s h ng

- Phép chấm nhân A *B th c hi n nhân t ng ng t ng s h ng

- Phép chấm chia A./B hoặc A.\B th c hi n chia ph i hoặc trái t ng ng t ng s h ng

• Phép nhân A*B đ ợc hiểu là phép nhân ma tr n nh trong toán học, chỉ th c hi n đ ợc

ma tr n A vuông hay không vuông, còn inv(A)*B chỉ dùng đ ợc khi A vuông

• Phép luỹ th a A.^2 (có dấu chấm) th c hi n luỹ th a t ng s h ng t ng ng, có thể

th c hi n với ma tr n A bất kỳ Còn phép luỹ th a A^2 tương đương với A*A , chỉ có

nghĩa khi A là ma tr n vuông

Trang 22

Ví d 2: Kiểm ch ng các phép tính trên ma tr n

>> syms a1 a2 a3 a4 b1 b2 b3 b4; % hàm syms để khai báo các bi n ch

>> A=[a1 a2; a3 a4] , B=[b1 b2; b3 b4]

Trang 23

(a) T o vect a ch a các phần t hàng hai c a ma tr n X

(b) T o vect b ch a hai phần t cu i hàng hai c a ma tr n X

Trang 24

c a ma tr n A det(A) Tính định th c c a ma tr n vuông A

poly(A) Tìm đa th c đặc tr ng c a ma tr n vuông A

eig(A) Tìm giá trị riêng c a ma tr n vuông A

diag(A) Lấy đ ng chéo chính c a ma tr n A

tril(A) Lấy các phần t t đ ng chéo chính tr xu ng

triu(A) Lấy các phần t t đ ng chéo chính tr lên

Trang 25

Ví d 5 Tìm giá tr riêng và vect riêng c a ma tr n

N u ma tr n A là ma tr n vuông cấp n thì có n s λ tho mãn Ax = λx Giá trị λ gọi

là giá trị riêng và vect cột x gọi là vect riêng c a ma tr n A T ng ng với mỗi giá trị riêng λ là một vect riêng x

Trong Matlab, các giá trị riêng có thể tìm bằng cách dùng l nh eig(A) Để tìm đồng

th i c giá trị riêng và véct riêng c a A có thể dùng l nh [X,D]=eig(A) Các phần t trên

đ ng chéo chính c a ma tr n chéo D là các λ, còn các cột c a ma tr n X là các véct riêng làm tho mãn AX=XD

Trang 26

(không ph i h Cramer) thì ma tr n A không vuông nên không dùng đ ợc hàm inv(A) B t

bu c ph ải dùng phép chia trái x=A\b

Trang 27

Trong MATLAB, đa th c đ ợc biểu di n nh một vect hàng với các phần t là các

h s c a đa th c sắp theo th t gi m dần t b c cao nhất đ n b c 0

[k,d]=deconv (p1,p2) Chia hai đa th c ( k= k t qu ; d =phần d )

k=polyder(p) Tìm đ o hàm c a đa th c p

k=polyder(p,q) Tìm đ o hàm c a đa th c tích (p*q)

[n,d]=polyder(num,den) Tìm đ o hàm (d ng n/d) c a phân th c (num/den)

p=poly(r) L p đa th c p t vect r ch a các nghi m

polyval(p,x) Tính giá trị c a đa th c t i x (x có thể là m ng)

Trang 28

K t qu trên t ng ng với đa th c : x5

Trang 29

Tr ng hợp này Y(s) có c c bội p(1) = p(2) = -1

(nói cách khác là m u s c a Y(s) có nghi m bội p(1) = p(2) = -1 )

(s p )(s p )(s p ) (s 6)(s 4)(s 2)

Trang 30

CH NG 4

4.1 Bi u th c logic

Biểu th c logic th ng đ ợc s dụng để biểu di n đi u ki n trong các vòng lặp hay

trong các câu l nh điều ki n Các biểu th c logic trong MATLAB đ ợc thành l p trên c s các toán t quan h và toán t logic Toán t quan h là các ký hi u thể hi n s so sánh, toán t logic là các ký hi u dùng để liên k t các biểu th c logic

12.5>12 là biểu th c logic, có giá trị là 1

6~=6 là biểu th c logic, có giá trị là 0

ischar(s) True n u s là chuỗi ký t

isstr(s) True n u s là chuỗi ký t

isnumeric(x) True n u x là s (con s , m ng s , )

isempty(x) True n u x (chuỗi, m ng, ma tr n, ) là rỗng

strcmp(s1,s2) True n u 2 chuỗi s1, s2 gi ng nhau

isglobal(x) True n u x là bi n toàn cục

Trang 31

Ví d : Vi t ch ng trình yêu cầu ng i dùng nh p vào t bàn phím điểm s c a

một học sinh N u điểm s t 1 đ n 4 thì xuất ra dòng nhắn "lo i y u", n u điểm s là 5

hoặc 6 thì xuất ra dòng nhắn "lo i trung bình", n u điểm s là 7 hoặc 8 thì xuất dòng nhắn

"lo i khá", n u điểm s là 9 hoặc 10 thì xuất dòng nhắn "lo i gi i" N u điểm s nằm ngoài

ph m vi t 1 đ n 10 thì xuất dòng nhắn "S li u không hợp l "

diem= input('Nhap diem so: ');

if (diem>=1)&(diem<=4) fprintf('loai yeu') elseif (diem==5)|(diem==6) fprintf('loai trung binh') elseif (diem==7)|(diem==8)

fprintf('loai kha') elseif (diem==9)|(diem==10) fprintf('loai gioi') else

fprintf('So lieu khong hop le') end

Trang 32

Điều ki n trong cấu trúc switch-case ph i có giá trị d ng s nguyên hoặc d ng

chuỗi l nh case s so sánh giá trị c a điều ki n với các giá trị th để th c hi n kh i l nh

t ng ng N u không có giá trị th nào phù hợp thì th c hi n kh i l nh 3

disp('ch ương trình tính tổng giai thừa 1!+2! +3!+ +n!')

n = input ('Nhap gia tri n:');

Trang 33

Khác với vòng lặp for, s lần lặp c a vòng lặp while không đ ợc xác định

Ta xét ví dụ tính tổng n s chẵn phần trên bằng vòng lặp while (thay vì for) :

% chương trình in ra và tính tổng n số chẵn đầu tiên

while i<=n S=S+2*i;

fprintf('%2d la so chan thu:%3d\n',2*i,i) i=i+1;

end disp(['Tong can tim la: ',num2str(S)]);

Ghi chú : Vi c kiểm tra điều ki n nh p n>0 cũng đ ợc th c hi n bằng vòng lặp while để

có thể lặp vô h n lần N u kiểm tra bằng cấu trúc if – end thì chỉ lặp đ ợc 1 lần

Trang 34

4.4 Các l nh t o s gián đo n

• L nh continue

Trong vòng lặp for hay while, khi gọi continue ngay l p t c chu trình tính

chuyển sang b ớc lặp k ti p, mọi l nh ch a đ ợc th c hi n c a vòng lặp (thuộc về

b ước lặp hiện tại) s bị b qua

• L nh break

L nh break m nh h n l nh continue, nó làm ng ng ngay l p t c vòng lặp đang tính L nh break có tác dụng c trong các cấu trúc điều ki n if, switch N u break đ ợc s dụng ngoài vòng lặp for hay while trong ph m vi c a một M-file, khi

ấy M-file s bị ng ng t i vị trí c a break

Ví d ụ: Vi t đo n ch ng trình tìm và in ra màn hình các s nguyên t bé h n 100

clear, clc disp('================================================') disp('Chuong trinh tim va in ra cac so nguyen to < 100') fprintf('%3d la so nguyen to thu:%3d\n',2,1)

count=1; % bien dung de dem so thu tu for m= 3:1:100

for k=2:1:m-1

if mod(m,k)==0, break, end end

if k == m-1, count=count+1;

fprintf('%3d la so nguyen to thu:%3d\n',m,count) end

end

• L nh return

Vi c thi hành các M-file hàm 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 L nh return giúp ta k t thúc một hàm mà không cần

else

DET=det(A) end

Trang 35

y1= x2+3x + 5 trong kho ng [0,10]

trong đó tham s S là chuỗi ký t tuỳ chọn để khai báo màu v , kiểu nét và/

hoặc ký hi u đánh dấu t i các điểm d li u N u không dùng tham s S thì mặc định

là màu xanh d ng (blue), nét liền (solid), không có ký hi u đánh dấu

- solid x x-mark v triangle (down)

: dotted + plus ^ triangle (up) - dashdot * star < triangle (left)

dashed s square > triangle (right)

point o circle p pentagram

d diamond h hexagram

Trang 36

5 grid ho ặc grid on % hi n các ô l ới to độ

6 hold ho ặc hold on % gi nguyên đồ thị để v ti p trên cùng h trục to độ

7 legend('chúthích1', 'chúthích2', ) % t o ô chú thích khi v nhiều đồ thị

Để v hai hay nhiều đồ thị trên cùng một h trục to độ ta có thể dùng l nh hold on

nh trên hoặc dùng l nh plot với cú pháp tổng quát :

plot(x1,y1,S1,x2,y2,S2,…) trong đó x1,y1,S1 ng với đồ thị th nhất; x2,y2,S2 ng với đồ thị th hai,…

ví dụ trên, thay vì dùng l nh hold on ta có thể v k t hợp hai đồ thị y1 và y2 bằng

một l nh plot duy nhất nh sau:

>> plot(x,y1,'k',x,y2,'b ')

-1 0 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Do thi sin(x) va cos(x)

truc x

cos(x)

Trang 37

5.2 H TR C TO Đ (axis), C A S V (figure), Đ TH CON (subplot)

L nh axis là công cụ dùng để qu n lý hình dáng và thang chia c a c hai trục đ ng

và ngang L nh này có nhiều tuỳ chọn, để bi t một cách đầy đ về nó, b n có thể gõ l nh

help axis hay doc axis Một s cách th ng dùng c a l nh axis là:

vuông, so với mặc định là ch nh t) axis equal Lấy thang chia gi ng nhau cho c hai trục

axis off Tắt b ch độ nền trục, nhãn, ô l ới,

N u mu n v nhiều đồ thị trên các figure (c a sổ v ) khác nhau, ta t o figure mới

bằng l nh figure hoặc chọn menu file > new > figure trong c a sổ figure đang v Mỗi đ i

t ợng đồ họa t o mới nh figure, axis, line, đ ợc MATLAB t động gán cho một số hiệu để qu n lý, gọi là handle Tr ng hợp tổng quát thì giá trị handle là một s th c

Riêng đ i với figure thì mỗi figure t o mới s đ ợc gán với handle là một s nguyên

d ng, ví dụ: 1, 2, 3, B n có thể chuyển qua l i gi a các figure đang có bằng cách dùng chuột để chọn hoặc dùng l nh figure(H) trong đó H là s hi u c a figure

Các l nh tìm handle th ng dùng là gcf (Get handlle to current figure – tìm handle

c a figure hi n hành), gca ( Get handle to current axis – tìm handle c a h trục hi n hành),

findobj(gcf, 'Type','Line') (tìm handle c a các đ ng đồ thị trong figure hi n hành)

Mặt khác, một c a sổ figure có thể ch a nhiều h n một h trục L nh

subplot(m,n,p) chia figure thành một ma tr n (m x n) vùng đồ ho con gọi là subplot, và

chọn p là subplot hi n hành Các subplot đ ợc đánh s lần l ợt t trái qua ph i, t trên

figure % m mới một c a sổ figure tr ng

subplot(2,2,1) % t o 4 subplot và chọn subplot 1 góc trên trái

plot(x,y), axis([0 2*pi -1 1]), title('sin(x)')

subplot(2,2,2) % chọn subplot 2 góc trên ph i

plot(x,z), axis([0 2*pi -1 1]), title('cos(x)')

subplot(2,2,3) % chọn subplot 3 góc duới trái

plot(x,u), axis([0 2*pi -1 1]), title('2sin(x)cox(x)')

subplot(2,2,4) % chọn subplot 4 góc d ới ph i

plot(x,v), axis([0 2*pi -1 1]), title('tan(x)')

Trang 38

với x ∈ [xmin,xmax] ; y ∈ [ymin,ymax]

ezplot(x,y) V đồ thị hàm tham s x=x(t); y=y(t) với t ∈[-2π, 2π] ezplot(x,y, [tmin,tmax]) v đồ thị x=x(t); y=y(t) với t ∈[tmin, tmax]

Hàm s cần v có thể nh p theo nhiều cách Hai cách th ng dùng là:

Cách 1 Nh p biểu th c hàm trong cặp dấu nháy ' '

Cách 2 Khai báo bi n bằng hàm syms ; sau đó nh p biểu th c hàm

Ví dụ, hàm y=2sinxcosx có thể nh p bằng một trong hai cách:

Cách 1: >> y= '2*sin(x)*cos(x)'

Cách 2: >> syms x ; y=2*sin(x)*cos(x)

Trang 39

Khi v bằng hàm ezplot thì tiêu đề đồ thị s đ ợc t o t động (không cần dùng l nh title) Sau khi v b n cũng có thể dùng các l nh ti n ích hold, grid, legend, axis,…t ng t

đồ thị c a hàm plot Các tuỳ chọn về màu, kiểu nét và marker không có trong cú pháp c a

l nh ezplot do đó n u mu n thi t đặt theo ý riêng, b n ph i điều chỉnh thông qua handle và

l nh set nh sau:

Cách 1:

h=ezplot(y) % v và l u handle c a đ ng đồ thị vào bi n h

set(h, 'Color','màu','Linestyle','ki unét',…) % thi t đặt l i màu, kiểu nét,… Cách 2: (MATLAB 6.x chỉ dùng đ ợc cách này)

+

=+ −

Trang 40

>> axis square ; grid

5) V đ th hàm x=x(t); y=y(t) trong khoảng m c đ nh t ∈[-2π, 2π]

Ngày đăng: 22/12/2022, 16:06

🧩 Sản phẩm bạn có thể quan tâm

w