Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
618,75 KB
Nội dung
1
CHƯƠNG 1:MATLABCƠBẢN
§1.CÁCTOÁNTỬCƠBẢNCỦAMATLAB
1.Cáctoántửcơbản:Matlablàmộtphầnmềmcaocấpdùngđểgiảicácbài
toán.ĐểkhởiđộngMATLABtabấmđúpvàoiconcủanó.CácfileMATLAB
códạng*.mvàchỉchạytrongmôitrườngMATLAB.MATLABxửlísốliệu
nhưlàmatrận.Khitađánhlệnhvàocửasổlệnh,nósẽđượcthihànhngayvà
kết quả hiện lên mànhình.Nếutakhông
muốnchokếtquảhiệnlên màn
hìnhthìsaulệnhtađặtthêmdấu“;”.Nếulệnhquádài,khôngvừamộtdòng
dòngcóthểđánhlệnhtrênnhiềudòngvàcuốimỗidòngđặt
thêmdấu rồi
xuốngdòng.Khisoạnthảolệnhtacóthểdùngcácphímtắt:
↑Ctrl‐Pgọilạilệnhtrướcđó
↓Ctrl‐N gọilệnhsau
←Ctrl‐Blùil
ạimộtkítự
→Ctrl‐Ftiếnlênmộtkítự
Ctrl‐→ Ctrl‐R sangphảimộttừ
Ctrl‐← Crtl‐Lsangphảimộttừ
home Ctrl‐A vềđầudòng
end Ctrl‐Evềcuốidòng
escCtrl‐
U xoádòng
delCtrl‐D xoákítựtạichỗconnháyđứng
backspace Ctrl‐H xoákítựtrướcchỗconnháyđứng
)CácphéptoáncơbảncủaMATLABgồm:
+ cộng
‐trừ
* nhân
/ chiaph
ải
\ chiatrái
^ luỹthừa
‘ chuyểnvịmatrậnhaysốphứcliênhợp
)Cáctoántửquanhệ:
<nhỏhơn
<=nhỏhơnhaybằng
>lớnhơn
>=
lớnhơnhoặcbằng
==bằng
2
~=khôngbằng
)Cáctoántửlogic:
& và
| or
~ not
)Cáchằng:
pi3.14159265
isốảo
jtươngtựi
eps saisố2
‐52
realmin sốthựcnhỏnhất2
‐1022
realmax sốthựclớnnhất2
1023
infvôcùnglớn
NaN Notanumber
2.Nhậpxuấtdữliệutừdònglệnh:MATLABkhôngđòihỏiphảikhaibáo
biếntrướckhidùng.MATLABphânbiệtchữhoavàchữthường.Cács ố
liệuđưavàomôitrườnglàmviệccủaMATLABđượclưulạisuốtphiênlàm
việcchođếnkhigặplệnhclearall.MATLABchophéptanhậpsốliệutừdòng
lệnh.Khinhậpma
trậntừbànphímtaphảituântheocácquyđịnhsau:
•ngăncáchcácphầntửcủamatrậnbằngdấu “,”haydấutrống
•dùngdấu“;”đểkếtthúcmộthàng
•baocácphầntửcủamatrậnbằngcặpdấungoặcvuông[]
Đểnhậpcácmatrậnsau:
⎡⎤ ⎡⎤
⎢⎥ ⎢⎥
=− = − =
⎡⎤
⎣⎦
⎢⎥ ⎢⎥
⎢⎥ ⎢⎥
⎣⎦ ⎣⎦
124 1
A325 B1421 C4
153 7
tadùngcáclệnh:
A=[123;3‐24;153]
B=[1421]
C=[1;4;7]
3.Nhậpxuấtdữliệutừfile
:MATLABcóthểxửlíhaikiểufiledữliệu:file
3
nhịphân*.matvàfileASCII*.dat.ĐểlưucácmatrậnA,B,Cdướidạngfile
nhịphântadùnglệnh:
saveABCABC
vànạplạicácmatrậnA,Bbằnglệnh:
loadABCAB
NếumuốnlưusốliệucủamatrậnBdướidạngfileASCIItaviết:
saveb.datB/ascii
Taviếtchươngtrình
ct1_1.mnhưsau:
clear
A=[123;456]
B=[3;‐2;1];
C(2)=2;C(4)=4
disp(’Nhanphimbatkydexemnhap/xuatdulieutufile’)
saveABCABC%luuA,B&CduoidangMAT‐filecoten’ABC.mat’
clear(’A’,’C’)%xoaA
vaCkhoibonho
loadABCAC%docMAT‐filedenhapAvaCvaobonho
saveb.datB/ascii%luuBduoidangfileASCIIcoten’b.dat’
clearB
loadb.dat%docASCII
b
x=input(’Nhapx:’)
formatshorte
x
formatrat,
x
formatlong,x
formatshort,x
4.Nhậpxuấtdữliệutừbànphím:Lệnhinputchophéptanhậpsốliệutừ
bànphím.Vídụ:
4
x=input(’Nhapx:’)
Lệnh
formatchophépxácđịnhdạngthứccủadữliệu.Vídụ:
formatrat%sohuuti
formatlong%sosẽcó14chusosaudauphay
formatlonge%sodangmu
formathex%sodanghex
formatshorte%sodangmungan
formatshort%trovesodangngan(default)
Mộtcáchkhácđểhiểnthịgiátrịcủabiếnvà chuỗilàđánhtênbiếnvàocửa số
lệnhMATLAB.Tacũngcóthểdùng
dispvàfprintfđểhiểnthịcácbiến.Ví
dụ:
disp(ʹTrisocuax=ʹ),disp(x)
Taviếtchươngtrình
ct1_2.mnhưsau:
clc
f=input(ʹNhapnhietdoFahrenheit[F]:ʹ);
c=5/9*(f‐32);
fprintf(ʹ%5.2f(doFahrenheit)la%5.2f(doC).\nʹ,f,c)
fid=fopen(ʹct1_2.datʹ,ʹwʹ);
fprintf(fid,ʹ%5.2f(doFahrenheit)la%5.2f(doC).\nʹ,f,c);
fclose(fid);
Trongtrườnghợptamuốnnhậpmộtchuỗitừbànphím,tacầnphảithêmkí
tựsvàođốisố.Vídụ:
ans=input(ʹBantraloi<co>hoac<khong>:ʹ,ʹsʹ)
5.Cáchàmtoánhọc:
a.Cáchàmtoánhọccơbản:
exp(x) hàm
x
e
sqrt(x) cănbậchaicủax
log(x)logarittựnhiên
5
log10(x) logaritcơsố10
abs(x)moduncủa sốphứcx
angle(x) argumentcủasốphứca
conj(x) sốphứcliênhợpcủax
imag(x) phầnảocủax
real(x) phầnthựccủax
sign(x)
dấucủax
cos(x)
sin(x)
tan(x)
acos(x)
asin(x)
atan(x)
cosh(x)
coth(x)
sinh(x)
tanh(x)
acosh(x)
acoth(x)
asinh(x)
atanh(x)
b.Cáchàmtoánhọctựtạo:MATLABchophéptatạohàmtoánhọcvà
lưunóvàomộtfileđểdùngnhưlàhàmcósẵn củaMATLAB.Vídụtacầntạo
hàm:
1
2
1
f(x)
18x
=
+
vàhàm:
22
112
12
2
2
212
112
f(x ,x )
x4x5
f(x)
f(x,x)
2x 2x 3x 2.5
⎡⎤
+−
⎡⎤
==
⎢⎥
⎢⎥
−−−
⎣⎦
⎣⎦
Muốnthếtatạorafile
f1.mnhưsau:
functiony=f1(x)
y=1./(1+8*x.^2);
vàfilef2.m:
6
functiony=f2(x)
y(1)=x(1)*x(1)+4*x(2)*x(2)‐5;
y(2) = 2*x(1)*x(1)-2*x(1)-3*x(2) -2.5;
Khinhậplệnh
f1(2)tacógiátrịcủahàmf1tạix=2.Khinhậplệnhf2([24])ta
cógiátrịcủahàmf2tạix
1=2vàx2=4.Lệnhfeval(‘f1’,2)vàfeval(‘f2’,[24])
cũngchokếtquảtươngtự.
Cáchthứhaiđểbiểudiễnmộthàmtoánhọcmộtbiếntrêndònglệnhlà
tạoramộtđốitượnginlinetừmộtbi ểuthứcchuỗi.
Vídụtacóthểnhậptừ
dònglệnhhàmnhưsau:
f1=inline(’1./(1+8*x.^2)’,’x’);
f1([01]),feval(f1,[01])
Tacũngcóthểviết:
f1=ʹ1./(1+8*x.^2)ʹ;
x=[01];
eval(f1)
Nếuhàmlàđathứctachỉcầnnhậpmatrậncáchệsốtừsốmũcaonhất.
VídụvớiđathứcP
4(x)=x
4
+4x
3
+2x+1taviết:
P=[14021]
Đểnhânhaiđathứctadùnglệnh
conv;đểchia2đathứctadùnglệnh
deconv.Muốntínhtrịsốcủađathứctadùnglệnhpolyvalvàlệnhpolyvalm
dùngkhiđathứclàmatrận.
c.Cáclệnhxửlíhàm:Lệnhfplotvẽđồthịhàmtoánhọcgiữacácgiátrị
đãcho.Vídụ:
fplot(‘f1’,[‐55])
gridon
Chomộthàmtoánhọcmộtbiến,tacóthểdùnglệnh
fminbndcủaMATLAB
đểtìmcựctiểuđịaphươngcủahàmtrongkhoảngđãcho.Vídụ:
7
f=inline(ʹ1./((x‐0.3).^2+0.01)+1./((x‐0.9).^2+0.04)‐6ʹ);
x=fminbnd(f,0.3,1)
Lệnh
fminsearch tương tự hàm fminbnd dùngđểtìm cực tiểuđịa
phươngcủahàmnhiềubiến.Tacóhàm3biếnlưutrongfile
three_var.mnhư
sau:
functionb=three_var(v)
x=v(1);
y=v(2);
z=v(3);
b=x.^2+2.5*sin(y)‐z^2*x^2*y^2;
Bâygiờtìmcựctiểuđốivớihàmnàybắtđầutừx=‐0.6,y=‐1.2vàz=0.135
bằngcáclệnh:
v=[‐0.6‐1.20.135];
a=fminsearch(ʹthree_varʹ,v)
Lệnh
fzero dùngđểtìmđiểm zero của hàmmột biến. Ví dụđểtìm giá trị
khôngcủahàmlâncậngiátrị‐0.2taviết:
f=inline(ʹ1./((x‐0.3).^2+0.01)+1./((x‐0.9).^2+0.04)‐6ʹ);
a=fzero(f,‐0.2)
Zerofoundintheinterval:[‐0.10949,‐0.264].
a=
‐0.1316
6.Cácphéptoántrênmatrậnvàvectơ:
a.Kháiniệmchung:Giảsửtatạoracácmatrậnavàbbằngcáclệnh:
a=[123;456];
b=[3‐21];
Tacóthểsửađổichúng:
8
A=[a;789]
B=[b;[10‐1]]ʹ
Toántử‘dùngđểchuyểnvịmộtmatrậnthựcvàchuyểnvịliênhợpmộtma
trậnphức.Nếuchỉmuốnchuyểnvịmatrậnphức,tadùngthêmtoántử“.”
nghĩa
làphảiviết“.’”.Vídụ:
C=[1+2*i2‐4*i;3+i2‐2*j];
X=Cʹ
Y=C.’
b.Chỉsố
:Phầntửởhàngicộtjcủamatrậnm×ncókíhiệulàA(i,j).
Tuynhiêntacũngcóthểthamchiếutớiphầntửcủamảngnhờmộtchỉsố,ví
dụA(k)
vớik=i+(j‐1)m.Cáchnàythườngdùngđểthamchiếuvectơhàng
haycột.Trongtrườnghợpmatrậnđầyđủthìnóđượcxemlàmatrậnmộtcột
dàitạotừcáccột
củamatrậnban đầu.NhưvậyviếtA(5)cónghĩa làtham
chiếuphầntửA(2,2).
Đểxácđịnhkíchthướccủamộtmatrậntadùnglệnh
length(trảvềkích
thướclớnnhất)hay
size(sốhàngvàcột).Vídụ:
c=[1234;5678];
length(c)
[m,n]=size(c)
c.Toántử“:”:Toántử“:”làmộttoántửquantrọngcủaMATLAB.Nó
xuấthiệnởnhiềudạngkhácnhau.Vídụ:
1:10
tạomộtvectơhàngchứa10sốnguyêntừ1đến10.Lệnh:
100:‐7:50
tạomộtdãysốtừ100đến51,giảm7mỗilần.Lệnh:
0:pi/4:pi
9
tạomộtdãysốtừ0đếnpi,cáchđềunhaupi/4
Cácbiểuthứcchỉsốthamchiếutớimộtphầncủamatrận.ViếtA(1:k,j)
là thamchiếuđến k phần tử đầu tiên
của cộtj.Ngoàiratoán tử “:” tham
chiếutớitấtcảcácphầntửcủamộthànghaymộtcột.Vídụ:
B=A(:,[132])
tạoramatrậnBtừmatrậnAbằngcáchđổithứtựcáccộttừ[123]thành
[132]
d.Tạomatrậnbằnghàmcósẵn:MATLABcungcấpmộtsốhàmđểtạo
cácmatrậncơbản:
zeros tạoramatrậnmàcácphầntửđềulàzeros
z=zeros(2,4)
ones tạoramatrậnmàcácphầntửđềulà1
x=ones(2,3)
y=5*ones(2,2)
rand tạoramatrậnmàcácphầntửngẫunhiênphânbốđều
d=rand(4,4)
randntạoramatrậnmàcácphầntửngẫunhiênphânbốtrựcgiao
e=randn(3,3)
magic(n)tạoramatrậncấpngồmcácsốnguyêntừ1đếnn
2
vớitổng
cáchàngbằngtổngcáccộtnphảilớnhơnhaybằng3.
pascal(n)tạoramatrậnxácđịnhdươngmàcá cphầntửlấytừtamgiác
Pascal.
pascal(4)
eye(n)tạomatrậnđơnvị
10
eye(3)
eye(m,n)tạomatrậnđơnvịmởrộng
eye(3,4)
e.Lắpghép
:Tacóthểlắpghép(concatenation)cácmatrậncósẵnthành
mộtmatrậnmới.Vídụ:
a=ones(3,3)
b=5*ones(3,3)
c=[a+2;b]
f.Xoáhàngvàcột:Tacóthểxoáhàngvàcộttừmatrậnbằngdùngdấu
[].Đểxoácộtthứ2củamatrậnbtaviết:
b(:,2)=[]
Viết
x(1:2:5)=[]nghĩalàtaxoácácphầntửbắtđầutừđếnphầntửthứ5và
cách2rồisắpxếplạimatrận.
g.Cáclệnhxửlímatrận:
Cộng:X=A+B
Trừ:X=A‐B
Nhân :X=A*B
:X.*Anhâncácphầntửtươngứngvớinhau
Chia:X=A/BlúcđóX*B=A
:X=A\BlúcđóA*X=B
:X=A./Bchiacácphầntửtươngứngvớinhau
Luỹthừa :X=A^2
:X=A.^2
Nghịchđảo :X=inv(A)
Địnhthức :d=det(A)
7. Tạo số ngẫu nhiên: MATLAB cócác lệnh tạo số ngẫu nhiên là rand và
randntạoracácsốngẫunhiêntheophânbốGauss.
rand(m,n)tạoramatrậncácsốngẫunhiênphânbốđồngnhất.
randn(m,n)tạoramatrậncácsốngẫunhiêntheophânbốchuẩnGauss.
rand(3,3)
[...]... while mà không quan tâm đến điều kiện kết thúc vòng lặp đã thoả mãn hay chưa. §2. ĐỒ HOẠ TRONG MATLAB 1. Các lệnh vẽ: MATLAB cung cấp một loạt hàm để vẽ biểu diễn các vec tơ số liệu cũng như giải thích và in các đường cong này. plot đồ họa 2‐D với số liệu 2 trục vô hướng và tuyến tính plot3 đồ họa 3‐D với số liệu 2 trục vô hướng và tuyến tính polar đồ hoạ trong hệ toạ độ cực loglog đồ hoạ với các trục logarit ... trở về trục toạ độ cũ MATLAB chọn các giới hạn trên trục toạ độ và khoảng cách đánh dấu dựa trên số liệu dùng để vẽ. Dùng lệnh axis có thể đặt lại giới hạn này. Cú pháp của lệnh: axis[ xmin , xmax , ymin , ymax] Ta xét chương trình ct1_13.m như sau: 16 x = 0:0.025:pi/2; plot(x, tan(x), ʹ‐roʹ) axis([0 pi/2 0 5]) MATLAB chia vạch trên trục dựa trên phạm vi dữ liệu và chia đều. Ta có thể ... axis([0 50 ‐25 25 ‐25 25]) 22 hold on for i = 1:4 000 A(1,3) = y(2); A(3,1) = ‐y(2); ydot = A*y; y = y + h*ydot; set(p, ʹXDataʹ, y(1), ʹYDataʹ, y(2), ʹZDataʹ, y(3)) % thay doi toa do drawnow i = i + 1; end 13. Đồ hoạ 3D: a.Các lệnh cơ bản: Lệnh mesh và surf tạo ra lưới và mặt 3D từ ma trận số liệu. Gọi ma trận số liệu là z mà mỗi phần tử của nó z(i, j) xác định tung độ ... Graphic User Interface) giữa người dùng và MATLAB. Trong giao diện này ta có thể xuất dữ liệu dưới 2 dạng: văn bản và đồ hoạ. Mỗi một GUI có một hay nhiều layout(diện mạo). Việc tạo GUI tạo nên một công cụ đồ hoạ phục vụ 28 nhập xuất dữ liệu một cách trực giác, rất thuận tiện. Ngoài ra có thể dùng GUI để giám sát các quá trình, hiển thị các đối tượng 2. Nhập xuất kí tự, số liệu ra GUI: a. Tạo khung hình: Ta xét các lệnh sau(ct1_35.m): ... phần tử của ma trận được biểu diễn bằng một bar. Ta xét chương trình ct1_17.m: y = [5 2 1 6 7 3 8 6 3 5 5 5 1 5 8]; 18 bar(y) b. Mô tả dữ liệu trên trục: Ta dùng các hàm xlabel và ylabel để mô tả các dữ liệu trên trục. Ta xét chương trình ct1_18.m: nhdo = [29 23 27 25 20 23 23 27]; ngay = 0: 5: 35; ... hàm text. Ta có chương trình ct1_15.m: x = ‐pi: .1: pi; y = sin(x); plot(x, y) xlabel(ʹt = 0 to 2\piʹ, ʹFontsizeʹ, 16) ylabel(ʹsin(t)ʹ, ʹFontsizeʹ, 16) 17 title(ʹ\it{Gia tri cua sin tu zero đến 2 pi}ʹ, ʹFontsizeʹ, 16) text(3*pi/4, sin(3*pi/4),ʹ\leftarrowsin(t ) = 0.707ʹ, ʹFontSizeʹ, 12) 12. Định vị văn bản trên hình vẽ: Ta có thể sử dụng đối tượng văn bản để ghi chú các trục ở vị trí bất kì. MATLAB định vị văn bản theo đơn vị dữ liệu trên ... [xi,yi,but] = ginput(1); plot(xi, yi, ʹgoʹ) n = n + 1; x(n, 1) = xi; y(n,1) = yi; end t = 1:n; ts = 1: 0 .1: n; xs = spline(t, x, ts); 25 ys = spline(t, y, ts); plot(xs, ys, ʹc‐ʹ); hold off 14. Vẽ các vectơ: Có nhiều hàm MATLAB dùng hiển thị các vec tơ có hướng và vec tơ vận tốc. Ta định nghĩa một vec tơ bàng cách dùng một hay 2 đối số. Các đối số mô tả thành phần x và thành phần y của vec tơ. Nếu ta dùng 2 đối ... text(3*pi/4, sin(3*pi/4),ʹ\leftarrowsin(t ) = 0.707ʹ, ʹFontSizeʹ, 12) 12. Định vị văn bản trên hình vẽ: Ta có thể sử dụng đối tượng văn bản để ghi chú các trục ở vị trí bất kì. MATLAB định vị văn bản theo đơn vị dữ liệu trên trục. Ví dụ để vẽ hàm y = Aeαt với A = 0.25 , t = 0 đến 900 và α = 0.005 ta viết chương trình ct1_16.m: t = 0: 900; plot(t, 0.25*exp(‐0.005*t)) plot(t, y) text(300, .25*exp(‐.005*300), ʹ\bullet\leftarrow\fontname{times}0.25{\ite}^{‐ 0.005{\itt}} tai,... {\itt} = 300ʹ, ʹFontSizeʹ, 14)%ghi chu tai t = 300 Tham số HorizontalAlignment và VerticalAlignment định vị văn bản so với các toạ độ x, y, z đã cho. 13. Đồ hoạ đặc biệt: a. Khối và vùng: Đồ hoạ khối và vùng biểu diễn số liệu là vec tơ hay ma trận. MATLAB cung cấp các hàm đồ hoạ khối và vùng : bar hiển thị các cột của ma trận m*n như là m nhóm, mỗi nhóm có n bar barh ... MATLAB chia vạch trên trục dựa trên phạm vi dữ liệu và chia đều. Ta có thể mô tả cách chia nhờ thông số xtick và ytick bằng một vec tơ tăng dần. Ví dụ xét chương trình ct1_14.m: x = ‐pi: .1: pi; y = sin(x); plot(x, y) set(gca, ʹxtickʹ, ‐pi :pi/2:p); set(gca, ʹxticklabelʹ, {ʹ‐piʹ, ʹ‐pi/2ʹ, ʹ0ʹ, ʹpi/2ʹ, ʹpiʹ}) 11. Ghi nhãn lên các trục toạ độ: MATLAB cung cấp các lệnh ghi nhãn lên đồ hoạ gồm : title thêm nhãn vào đồ hoạ xlabel thêm nhãn vào trục x .
1
CHƯƠNG 1: MATLAB CƠ BẢN
§1. CÁCTOÁNTỬCƠBẢNCỦA MATLAB
1.Cáctoántử cơ bản: Matlab làmộtphầnmềmcaocấpdùngđểgiảicácbài
toán.Đểkhởiđộng MATLAB tabấmđúpvàoiconcủanó.Cácfile MATLAB
códạng*.mvàchỉchạytrongmôitrường MATLAB. MATLAB xửlísố liệu
nhưlàmatrận.Khitađánhlệnhvàocửasổlệnh,nósẽđượcthihànhngayvà
kết.
§1. CÁCTOÁNTỬCƠBẢNCỦA MATLAB
1.Cáctoántử cơ bản: Matlab làmộtphầnmềmcaocấpdùngđểgiảicácbài
toán.Đểkhởiđộng MATLAB tabấmđúpvàoiconcủanó.Cácfile MATLAB
códạng*.mvàchỉchạytrongmôitrường MATLAB. MATLAB xửlísố liệu
nhưlàmatrận.Khitađánhlệnhvàocửasổlệnh,nósẽđượcthihànhngayvà
kết