Tên_ biến = giá trị hoặc biểu thức tính toán được + Biến variable trong Matlab la †1 kí hiệu được sử dụng để chứa 1 giá trị.. + Bên phải toán tử gán = là một giá trị hoặc một biểu thức
Trang 1C1 LAM QUEN VOI MATLAB
1.1 Vai nét vé Matlab
Matlab vừa là một ngôn ngữ lập trình vừa là một phần mềm ứng dụng tính toán rất hiệu quả
Khởi động Matlab màn hình deskfop mặc định như hình Sau:
Eile Edit View Web ‘window Help
Oe BS | Bp] 2B | current rectory: [omar aBensiwork xị |
aw ll | ai | Hy Stak [Bee Using Toolbox Path Cache Type “help toolbox_path_cact 4]
Name [size | Bytes| Class To get started, select "MATLAB Help" from the Help menu
>>
ni —_—:
(mney Workspace Current Directory
# 10/11/04 6:52 PH %
| 4) Start | Ready 4 ị Dm
e Cửa sổ : Command Window ( Của số lệnh ) là nơi chúng ta làm việc với chương trình Matlab Matlab hiển
thị dấu nhắc >> khi sẵn sang làm việc và trước khi vào
lệnh ta phải để con trổ ngay sau dấu nhắc
Trang 2e Sau khi vao xong 1 lệnh nào đó ta nhấn phím Enter dé
Matlab thi hành , các kết quả sẽ hiển thị ngay trên cửa
sổ lệnh Khi vào lệnh nếu thấy sai, nhấn phím Esc để
xóa dòng lệnh và vào lại dòng lệnh
e Matlab cho phép dùng phím 1†để lấy lại các dòng lệnh
đã vào trước đó từng dòng một sau đó tiến hành sữa nội dung (Edi9 dòng lệnh này bằng cách dùng các
phím mũi tên trái phải ‹.-› và các phim Back Space,
Delete nhằm giảm thời gian vào lệnh
e Trên màn hình desktop còn có cửa số Command History là nơi ghi lại toàn bộ các dòng lệnh đã vào trên cửa sổ lệnh, ta có thể copy 1 dòng lệnh trên cửa sổ Command History bằng cách dùng con chuột chiếu sáng dòng lệnh , xong giữ phím trái chuột , kéo và thả vào cửa số lệnh
I.2 Làm quen với các lệnh cơ bản của Matlab
1 Các phép toán số học trên các vô hướng:
Matlab
/ Chia phai a/b = : a/b
Trang 3+ Luu y : Phép tinh chia trai : 7/2 = 2\7 = 3.5 ( nét gach
nghiêng ngã về mẫu số )
+ Matlab hiển thị số : 3.456 x10 dưới dạng 3.456e+03 + Matlab thực hiện các phép tính với độ chính xác cao,
nhưng ở chế độ mặc định chỉ hiển thị 4 chữ số thập
phân
2 Thứ tự ưu tiên các phép toán
tính từ cặp trong cùng nhất
qua phải
tiên, được tính từ trái qua
phải
tiên, được tính từ trái qua
phải
+ Nên dùng thêm các cặp dấu ngoặc trong trường hợp
tính toán các biểu thức phức tạp, chúng làm biểu thức trở
nên dễ đọc, tránh các sai sót khi viết biểu thức
đ Toán tử gán
Toán tử = trong Matlab được gọi là toán tử gán hoặc thay thế
Mẫu dòng lệnh dùng phép gán như sau :
Trang 4Tên_ biến = giá trị hoặc biểu thức tính toán được
+ Biến ( variable ) trong Matlab la †1 kí hiệu được sử dụng
để chứa 1 giá trị
+ Tên biến ( variable name ) : bắt đầu bằng một chữ cái
(letter ), tiếp theo là các chữ cái, chữ số hoặc kí tự gạch
chân Tối đa là 31 kí tự, Matlab phân biệt rõ chữ hoa chữ
thường Các tên biến ví dụ volume, Volume, VOLUME
biểu thị các biến khác nhau Tên biến xuất hiện bên trái
toán tử gán = và chỉ một tên biến mà thôi
+ Bên phải toán tử gán = là một giá trị hoặc một biểu thức mà Matlab có thể tính toán được Nếu biểu thức này
có chứa các biến thì các biến này phải có giá trị xác định trước : chúng được gán hoặc tính toán từ những dòng lệnh trước
+ Ví dụ :
e Phép gán : x + 2 = 20 là sai vì bên trái toán tử gán
không phải là 1 tên biến
e Phép gán : x = 5 + y chỉ đúng nếu giá trị của biến y
đã được xác định từ trước, nếu không Matlab sẽ báo sai
e >>x=5;
>>X=X+3;
Phép gán đầu gán biến x giá trị bằng 5 , phép gán
sau có nghĩa là giá trị mới của x bắng giá trị cũ của
x ( đã được xác định là 5 ) cộng với 3 Sau 2 phép gán x có giá trị là 8
Trang 5
Vậy toán tử gán =, không mang ý nghĩa sự bằng
nhau theo nghĩa toán học mà nó chỉ thay thế giá trị tính được ỏ vế phải vào ô nhó của biến bên vế trái
4 Các lệnh quản lí một phiên làm việc:
Việc chúng ta vào lệnh và Matlab trả lời trên cửa số lệnh
theo kiểu hồi , đáp được Matlab gọi là một phiên làm việc
tương tác hoặc đơn giản hơn là một phiên làm việc
Trong Matlab Workspace( không gian làm việc ) quản lí tên, kích thước và giá trị của các biến được dùng trong
phiên làm việc hiện hành
Name Size Bytes] Class
Ha 1x1 8) double array
Fp ixl 8) double array
EH: 1x1 8| dnuhle array
Cửa số Workspace chứa 3 biến a,b,c
Một số lệnh thông dụng của Matlab được tóm tắt trong
bảng sau:
chất hình thức,giá trị các biến vẫn
tồn tại
Trang 6
khỏi bộ nhớ
Exist(‘name’) Hỏi Matlab xem có tồn tại tập tin hay
biến đã được thành lập có tên là
name chưa?
Quit Thoát khỏi chương trình Matlab
bộ nhớ
thước của chúng trong bộ nhớ và chỉ
rõ phần ảo của chúng nếu có
Dấu chấm phẩy ; ở cuối dòng lệnh
ngăn không cho Matlab hiển thị các kết quả ra cửa sổ lệnh
Khi dòng lệnh quá dài cần xuống dong , dau 3 chấm ở cuối dòng lệnh báo cho Matlab biết dòng lệnh còn tiếp tục ở dòng tiếp theo
Dấu phẩy , ngăn cách các phần tử
trong 1 mảng
Dấu 2 chấm : được dùng để phát
sinh một mảng có các phần tử cách đều nhau
% Dấu phần trăm % Matlab xem những
gì sau dấu % là lời bình, lời chú giải cho dòng lệnh Thường dùng khi viết chương trình
Trang 7
+ Nếu dòng lệnh có dấu chấm phẩy ; ổ cuối dòng Matlab
sẽ không hiển thị kết ra màn hình sau khi tính nhưng vẫn giữ giá trị của biến trong bộ nhớ Ví dụ :
>>x=D5+10”3
x=
35
>> y = 34241;
>>y
y=
10
+ Khi dòng lệnh exist(‘name’) dé héi, néu Matlab tra Idi 1 thì biến name đã tồn tại, nếu là 0 thì biến đó chưa được
tạo ra
+ Matlab luôn giữ giá trị sau cùng của biến trong bộ nhớ
trừ khi ta đã thoát khổi Matlab bằng lệnh gqưif hoặc xóa
biến đó đi bằng lệnh clear tên_ biến.Muốn biết giá trị hiện
hành của 1 biến nào đó ta chỉ cần vào tên biến, xong Enter
+ Lệnh cíclau màn hình cửa số lệnh cho sạch sẽ, dễ nhìn, nó không tác động gì đến các giá trị của các biến trong Workspace
5 Các hàm lập sẵn trong Matlab
Matlab có hằng trăm hàm được xây dựng sẵn, ví dụ hàm lấy căn bậc 2 sqrt, hàm sin Cặp dấu ngoặc đơn ( ), được viết đi sau tên hàm, bao lấy đối số của hàm có thể là số hoặc biểu thức tính được Lưu ý : Tên các hàm được viết
bằng chữ thường Ví dụ:
Trang 8>> Z = sqrt(25)
Z=
5
>> y=sin(pi/4)
y=
0.7071
Cac ham théng dung trong Matlab
sqrt(x) : ham rut can bac hai vx
exp(x) : ham e*(e = 2,71828 )
log(x) : hàm lôgarit tự nhiên ( cơ số e )
log10(x): hàm lôgarit cơ số 10
sin(x) : ham sin
cos(x) : ham cos
tan(x) : ham tang
cot(x) : ham cotang
asin(x) : ham arcsin
acos(x) : ham arccos
atan(x) : ham arctang
atan2(y,x) : trả về 1 cung (góc) @ (radian) nam trong khoảng [ -z.z], sao cho tang z = y/x Ví dụ
atan2(1,-1) có kết quả là 2,3562 Đây chính là góc
tạo bởi trục Ox và tia OM với điểm M có toa dé (x,y)
acot(x) : hàm arccotang
sinh(x) : ham sin hyperbolic, có hàm ngược là hàm asinh(x)
cosh(x) : hàm cos hyperbolic, có hàm ngược là hàm
acosh(x)
Trang 9e tanh(x) : ham tang hyperbolic, c6 hàm ngược là ham atanh(x)
e coth(x) : hàm cotang hyperbolic, có hàm ngược là hàm acoth(x)
e abs(x) : hàm lấy giá trị tuyệt đối hoặc môđun của số
phức
e rem(x,y) : trả về phần dư khi chia x cho y Ví dụ
rem(10,3) = 1
e round(x): hàm làm tròn đến số nguyên gần nhất
Ví dụ : round(3.8) = 4, round(3.49) = 3, round(3.5) = 4
e ceil(x): ham làm tròn đến số nguyên gần nhất dướng
về dương vô cực œ
Ví dụ : ceil(3.1)= 4, ceil(-3.9) = -3
e floor(x) : hàm làm tròn đến số nguyên gần nhất
hướng về âm vô cực -«
e fix(x) : hàm làm tròn đến số nguyên gần nhất hướng
về zero
e sign(x) : ham signum
Nếu x là số thực ,hàm signum được định nghĩa như sau :
† x>0 sign(x) =0 x=0
-1 x <0
e gcd(m,n) : trả về ước số chung lớn nhất của 2 số nguyên dương m,n
e lcm(m,n) : trả về bội số chung nhỏ nhất của 2 số nguyên dương m,n
Để nhận sự trợ giúp của Matlab về một hàm nào đó trong cửa sổ lệnh ta gõ help tên_hàm, thông tin về đối
số , ứng xử của hàm sẽ xuất hiện ngay trong cửa sổ lệnh
9
Trang 10cùng 1 số hàm liên quan Ví dụ sau khi gõ xong heip log, nhận được thông tin sau :
>> help log
LOG Natural logarithm
LOG(X) is the natural logarithm of the elements of X
Complex results are procedure if X is not positive
See also LOG2 , LOG10 , EXP , LOGM
6 Các hằng định nghĩa trước trong Matlab
Matlab có một số hằng đặc biệt đã được định nghĩa
trước, ta có thể thay đổi các giá trị này nếu muốn nhưng tốt nhất là tôn trọng các giá trị đã được Matlab gắn sẵn Các biến và hằng đặc biệt thông dụng:
Biến, hằng Ý nghĩa
bi Số pi = 3.14159
ans (answer) Biến tạm chứa kết quả sau
cùng nhất
số lớn hơn 1 Độ chính xác của dấu
chấm động
i,j Don vi ao v-1 inf Vô cùng lớn « ( Ví dụ 5/0 ) nan (Not a number) Kết quả số không
xác định
10
Trang 11+ Số phức : z = 5 - 4i khi đưa vào dòng lệnh có dạng :
>>zZ=5- 4i ( không có dấu * giữa số 4 và đơn vị ảo ¡ )
Hai số phức liên hiệp có phần thực bằng nhau và phần
ảo đối nhau Ví dụ : 4 + 3i và 4 — 3i Tích của chúng sẽ là
số thực
+ Các phép tính cộng trừ nhân chia số phức thực hiện
tương tự như số thực
Một số hàm liên quan đến số phức như sau:
e abs(z) : lấy mođun (suất) của số phức
e anglc(z): lấy góc pha của số phức
e real(x): lấy phần thực
e imag(x) : lấy phần ảo
e conj(x) : trả về số phức liên hiệp của số phức z
Qui ước viết số phức trong Matlab có thể gây ra sai lầm
nếu ta không cẩn thận, ví dụ : >> x = 7/2*i cho kết quả là
3.Bi trong khi >> y= 7/2i cho kết quả bằng -3.5i
Một số ví dụ để làm quen với Matlab
1 Có một bể chứa hình trụ tròn có chiều cao 12m,
bán kính 5m Người ta muốn xây dựng một bể chứa
thứ hai có cùng chiều cao, nhưng thể tích lớn hơn
cái thứ nhất là 25% Hỏi bán kính tương ứng là bao
nhiêu mét 2
Thực hiện trên cửa sổ lệnh các dòng lệnh như sau :
>>r=5)
>>h= 12;
>> V = pi*r42*h;
>> v= 1.25*Vv;
>> r = sqrt(v/(pi*h))
11
Trang 12f=
5.5902
Đáp số : Bán kính bể thứ hai la r = 5,5902 m
Dòng lệnh cuối cùng không có dấu ; để Matlab hiển thị
giá trị của r
2 Giải phương trình bậc 2 trong R : 2x?+ 5xT— 3= 0
>>a=2;
>>b=5;
>>C=-3;
>>delta=b^2-4”a”c
delta=
49
>>x1= (-b+sqrt(delta))/(2”a)
x1=
0.5000
>>x2= (-b-sqrt(delta))/(2”a)
x2=
-3
1.4 Làm quen nhanh với một số vấn đề cơ bản của
Matlab
1 Mang (array) va da thức 1 biến
Lưu ý ở đây giới thiệu là mảng 1 chiều còn gọi là
vecto
a Mang là tập hợp số được sắp xếp có thứ tự Ví du
mảng x gồm 4 số 2,7,0,-3 được khai báo với Matlab
như sau :
12
Trang 13>>x=[2,7,0,-3]; cach nhau bang dau ,
hoặc:
>>x=[2 7 0 -3]; cách nhau bằng khoảng trắng Mảng y gồm 4 số 7,-3,2,0
Matlab có thể cộng hai mắng x,y có cùng kích thước
để được 1 mắng z cùng kích thước,chỉ bằng dòng
lệnh z=x+y như minh hoạ sau đây:
>>x=[2,7,9,-3]
>>y=[7,-3,2,0]
>>Z=X+y
Z=
Đây chính là điểm mạnh của Matlab so với các ngôn ngữ lập trình khác.Do vậy chương trình viết bằng Matlab sẽ rất gọn
Mảng có các phần tử cách đều :
Khi ta muốn khai báo một mảng tăng u có phần tử đầu tiên là 0, phần tử cuối cùng là 10, trong đó 2 phần tử liên tiếp cách nhau một gia số A= 0.1 > 0, ta
vào lệnh như sau:
>>u= [0:0.1:10];
Dạng tổng quát dé khai báo là :
Tên_ mảng=[ ptử đầu a: gia số A:ptử cuối b J;
+ Lưu ý: Nếu a»b thì gia số A phải là số âm
+ Số phần tử trong 1 mảng được tính bởi hàm /ength,
muốn truy xuất giá trị phần tử thứ n của mảng ta sử
13
Trang 14dụng kí hiệu : Tên mảng(n) Số n được gọi là chỉ số
của mảng Ví dụ :
>>u=[0:0.1:10];
>>length(u) % tính số phần tử của mảng u
ans =
101
>>u(5) % truy xuất phần tử thứ 5 cuả mảng u
ans =
0.4000
>>u(80) % truy xuất phần tử thứ 80 của mang u
ans =
7.9000
>> W=2”cos(U);
>> m=length(w)
m=
101
+ Dòng lệnh w = 2*cos(u) bắt Matlab thực hiện 101 lần phép tính 2*cos(u) với từng giá trị của mảng u và phát sinh ra mảng mới w có 101 phần tử
Các mắng nói trên được gọi chính xác là mảng kiểu dòng ( row array ) Matlab còn có mảng kiểu cột
(column array): các phần tử của mảng được phân
cách nhau bằng dấu chấm phẩy ; thay vì dấu phẩy ,
hoặc khoảng trống như mắng kiểu dòng
>> v=[1,3,5,7] % mảng kiểu dòng
V=
1 3 5 7
14
Trang 15>> v=[1;3;5;7] % mang kiéu cét
V=
Tìm nghiệm của đa thức một biến:
Ta có thể mô tả 1 đa thức trong Matlab bằng 1 mảng
có các phần tử là các hệ số của đa thức, bắt đầu
bằng hệ số tương ứng với lũy thừa có bậc cao nhất
trong đa thức Nghiệm của 1 đa thức được giải bằng
hàm roots(a) trong đó a là mảng chứa các hệ số của
đa thức theo lũy thừa giảm Kết quả của hàm roots
là 1 mảng kiểu cột, chứa các nghiệm của đa thức
Ví dụ 3: Tìm nghiệm của đa thức xŠ + 6x -11x + 290
>>a=[1,6,-11,290]; % các hệ số của đa thức
>>roots(a)
ans=
-10.0000
2.0000 + 5.0000i
2.0000 — 5.0000i
Đa thức trên có 3 nghiệm là x= -10 và x= 2+5i (một nghiệm thực và 2 nghiệm phức liên hiệp)
Cả hai dòng trên có thể gộp thành 1 lệnh duy nhất :
>>roots([1,6,-11,290]);
15