Giáo trình MATLAB cơ bản - Chương 1: MATLAB cơ bản
1. Khởi động MATLAB: MATLAB (Matrix laboratory) là phần mềm dùng để
giải một loạt các bài toán kĩ thuật, đặc biệt là các bài toán liên quan đến ma
trận.MATLAB cung cấp các toolboxes, tức các hàm mở rộng môi trường MATLAB
để giải quyết các vấn đề đặc biệt như xử lí tín hiệu số, hệ thống điều khiển,mạng
neuron, fuzzy logic, mô phỏng v.v.
Ðể khởi động MATLAB ta nhấn đúp vào icon của nó trên màn hình.
2.Ðánh lệnh trong cửa sổ lệnh : Khi ta đánh lệnh vào cửa sổ lệnh, nó sẽ được
thi hành ngay và kết quả hiện lên màn hình. Nếu ta không muốn cho kết quả hiện
lên màn hình thì sau lệnh ta đặt thêm dấu ;. Nếu lệnh quá dài, không vừa một
dòng dòng có thể đánh lệnh trên nhiều dòng và cuối mỗi dòng đặt thêm dấu . rồi
xuống dòng. Khi soạn thảo lệnh ta có thể dùng các phím tắt :
( Ctrl-P gọi lại lệnh trước đó
( Ctrl-N gọi lệnh sau
( Ctrl-B lùi lại một kí tự
( Ctrl-F tiến lên một kí tự
Ctrl-( Ctrl-R sang phải một từ
Ctrl-( Crtl-L sang phải một từ
home Ctrl-A về đầu dòng
end Ctrl-E về cuối dòng
esc Ctrl-U xoá dòng
del Ctrl-D xoá kí tự tại chỗ con nháy đứng
backspace Ctrl-H xoá kí tự trước chỗ con nháy đứng
µm contour(z,n) vµ contour(z,v) cho phÐp ta chØ râ sè l−îng møc contour hay mét møc contour cÇn vÏ nµo ®ã víi z lµ ma trËn sè liÖu, n lµ sè ®−êng contour vµ v lµ vec t¬ c¸c møc contour. MATLAB kh«ng ph©n biÖt gi÷a ®¹i l−îng vec t¬ mét phÇn tö hay ®¹i l−îng v« h−íng. Nh− vËy nÕu v lµ vec t¬ mét phÇn tö m« t¶ mét contour ®¬n ë mét møc hµm contour sÏ coi nã lµ sè l−îng ®−êng contour chø kh«ng ph¶i lµ møc contour. Nh− vËy,contour(z,v) còng nh− contour(z,n). §Ó hiÓn thÞ mét ®−êng ®¼ng møc ta cÇn cho v lµ mét vec t¬ cã 2 phÇn tö víi c¶ hai phÇn tö b»ng møc mong muèn.V Ý dô ®Ó t¹o ra mét ®−êng ®¼ng møc 3D cña hµm peaks VÝ dô : xrange = -3:.125:3; yrange = xrange; [X,Y] = meshgrid(xrange,yrange); 21 Z = peaks(X,Y); contour3(X,Y,Z) §Ó hiÓn thÞ mét møc ë Z = 1, ta cho v lµ [1 1] v = [1 1] contour3(X,Y,Z,v) Hµm ginput cho phÐp ta dïng chuét hay c¸c phÝm mòi tªn ®Ó chän c¸c ®iÓm vÏ. Nã tr¶ vÒ to¹ ®é cña vÞ trÝ con trá. VÝ dô sau sÏ minh ho¹ c¸c dïng hµm ginput vµ hµm spline ®Ó t¹o ra ®−êng cong néi suy hai biÕn. VÝ dô : Ta t¹o mét M-file cã tªn contourm.m nh− sau : disp('Left mouse button picks points') disp('Right mouse button picks last points') axis([0 10 0 10]) hold on x=[]; y=[]; n=0; but=1; while but==1 [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); ys=spline(t,y,ts); plot(xs,ys,'c-'); hold off §6. C¸c ph−¬ng tr×nh ®¹i sè tuyÕn tÝnh 1. HÖ ph−¬ng tr×nh ®Çy ®ñ:Ta xÐt hÖ ph−¬ng tr×nh Ax = B. §Ó t×m nghiÖm cña hÖ ta dïng lÖnh MATLAB: x= inv(A)*B hay: x = A\B 2. HÖ ph−¬ng tr×nh cã Ýt ph−¬ng tr×nh h¬n sè Èn(underdetermined): Khi gi¶i hÖ trªn ta ®· dïng nghÞch ®¶o ma trËn. Nh− vËy ta chØ nhËn ®−îc kÕt qu¶ khi ma trËn A vu«ng(sè ph−¬ng tr×nh b»ng sè Èn sè vµ ®Þnh thøc cña A ph¶i kh¸c kh«ng). HÖ cã sè ph−¬ng tr×nh Ýt h¬n sè Èn hay ®Þnh thøc cña ma trËn A cña hÖ ®Çy ®ñ b»ng 0 gäi lµ hÖ underdetermined. Mét hÖ nh− vËy cã thÓ cã v« sè nghiÖm víi mét hay nhiÒu biÕn phô thuéc vµo c¸c biÕn cßn l¹i. Víi mét hÖ nh− vËy ph−¬ng ph¸p Cramer hay ph−¬ng ph¸p ma trËn nghÞch ®¶o kh«ng dïng ®−îc. Khi sè ph−¬ng tr×nh nhiÒu h¬n sè Èn ph−¬ng ph¸p chia tr¸i còng cho nghiÖm víi mét vµi Èn sè ®−îc cho b»ng 0. Mét vÝ dô ®¬n gi¶n lµ ph−¬ng tr×nh x + 3y = 6. Ph−¬ng tr×nh nµy cã rÊt nhiÒu nghiÖm trong ®ã cã mét nghiÖm lµ x = 6 vµ y = 0: a = [ 1 3]; b = 6; 22 x = a\b x = 6 0 Sè nghiÖm v« h¹n cã thÓ tån t¹i ngay c¶ khi sè ph−¬ng tr×nh b»ng sè Èn. §iÒu nµy x¶y ra khi | A | = 0. Víi hÖ nµy ta kh«ng dïng ®−îc ph−¬ng ph¸p Cramer vµ ph−¬ng ph¸p ma trËn nghÞch ®¶o vµ ph−¬ng ph¸p chia tr¸i cho th«ng b¸o lµ ma trËn A suy biÕn. Trong tr−êng hîp nh− vËy ta cã thÓ dïng ph−¬ng ph¸p gi¶ nghÞch ®¶o ®Ó t×m ®−îc mét nghiÖm gäi lµ nghiÖm chuÈn minimum. VÝ dô: Cho hÖ ph−¬ng tr×nh x + 2y + z = 8 0x + y + 0z = 2 x + y + z = 6 Khi dïng phÐp chia tr¸i ta nhËn ®−îc: y=a\b Warning: Matrix is singular to working precision. y = Inf Inf Inf NÕu ta dïng ph−¬ng ph¸p gi¶ nghÞch ®¶o th× cã: a = [1 2 1;0 1 0;1 1 1] b = [8;2;6] x = pinv(a)*b x = 2.00000000000000 2.00000000000000 2.00000000000000 Mét hÖ còng cã thÓ cã v« sè nghiÖm khi cã ®ñ sè ph−¬ng tr×nh. VÝ dô ta cã hÖ: 2x - 4y + 5z = -4 -4x -2y +3z = 4 2x + 6y -8z = 0 Trong hÖ nµy ph−¬ng tr×nh thø 3 lµ tæng cña hai ph−¬ng tr×nh trªn nªn hÖ thËt sù chØ cã 2 ph−¬ng tr×nh. Tãm l¹i mét hÖ muèn cã nghiÖm duy nhÊt ph¶i cã c¸c ph−¬ng tr×nh ®éc lËp. ViÖc x¸c ®Þnh c¸c ph−¬ng tr×nh trong hÖ cã ®éc lËp hay kh«ng kh¸ khã, nhÊt lµ ®èi víi hÖ cã nhiÒu ph−¬ng tr×nh. Ta ®−a ra mét ph−¬ng ph¸p cho phÐp x¸c ®Þnh hÖ ph−¬ng tr×nh cã nghiÖm vµ liÖu nghiÖm ®ã cã duy nhÊt hay kh«ng. Ph−¬ng ph¸p nµy ®ßi hái sù hiÓu biÕt vÒ h¹ng cña ma trËn. Ta xem xÐt ®Þnh thøc cña ma trËn sau: ⎥⎥⎦ ⎤ ⎢⎢⎣ ⎡ − − 379 2106 143 NÕu ta lo¹i trõ mét hµng vµ mét cét cña ma trËn chóng ta cßn l¹i ma trËn 2×2. Tuú theo hµng vµ cét bÞ lo¹i ta cã 9 ma trËn con. §Þnh thøc cña c¸c ma trËn nµy gäi lµ ®Þnh thøc con. VÝ dô nÕu ta bá hµng 1 vµ cét 1 ta cã: 44 37 210 =− 23 C¸c ®Þnh thøc con cã thÓ dïng ®Ó x¸c ®Þnh h¹ng cña ma trËn. H¹ng cña ma trËn ®−îc ®Þnh nghÜa nh− sau: Mét ma trËn A m×n cã h¹ng r ≥ 1 nÕu vµ chØ nÕu ®Þnh thøc cña A chøa mét ®Þnh thøc r × r vµ mäi ®Þnh thøc con vu«ng cã r+1 hµng hay h¬n b»ng 0. §Ó x¸c ®Þnh h¹ng cña ma trËn ta cã lÖnh rank VÝ dô: a = [ 3 -4 1;6 10 2;9 -7 3]; rank(a) ans = 2 HÖ ph−¬ng tr×nh Ax = B cã m ph−¬ng tr×nh vµ n Èn cã nghiÖm nÕu vµ chØ nÕu rank(A) = rank([A B]). Gäi h¹ng cña A lµ r, nÕu r = n th× nghiÖm lµ duy nhÊt. NÕu r<n th× hÖ cã v« sè nghiÖm vµ r Èn cã thÓ biÓu diÔn nh− lµ tæ hîp tuyÕn tÝnh cña n-r Èn cßn l¹i mµ gi¸ trÞ cã thÓ chän bÊt k×. VÝ dô: Gi¶i hÖ ph−¬ng tr×nh 3x - 2y + 8z = 48 -6x + 5y + z = -12 9x + 4y + 2z = 24 Ta viÕt: a = [ 3 -2 8;-6 5 1;9 4 2]; b = [ 48;-12;24]; rank(a) ans = 3 rank([a b]) ans = 3 VËy hÖ cã nghiÖm duy nhÊt: x = a\b x = 2 -1 5 VÝ dô: Gi¶i hÖ 2x - 4y + 5z = -4 -6x - 2y + 3z = 4 2x + 6y - 8z = 0 Ta viÕt: a = [ 2 -4 5;-6 -2 3;2 6 -8]; b = [ -4;4;0]; rank(a) ans = 2 rank([a b]) ans = 2 VËy hÖ cã v« sè nghiÖm. Mét trong c¸c nghiÖm lµ: x=pinv(a)*b x = 24 -1.21481481481481 0.20740740740741 -0.14814814814815 3. HÖ ph−¬ng tr×nh overdetermined: HÖ ph−¬ng tr×nh trong ®ã sè ph−¬ng tr×nh ®éc lËp nhiÒu h¬n sè Èn gäi lµ hÖ overdetermined. §èi víi hÖ nµy ph−¬ng ph¸p Cramer vµ ph−¬ng ph¸p nghÞch ®¶o ma trËn kh«ng dïng ®−îc. Tuy nhiªn mét sè hÖ cho nghiÖm ®óng x¸c ®Þnh b»ng phÐp chia tr¸i. §èi víi c¸c hÖ kh¸c kh«ng cã nghiÖm chÝnh x¸c. Khi r = rank(a) = rank([a b]) hÖ cã nghiÖm vµ nÕu r = n nghiÖm lµ duy nhÊt. Khi rank(a) ≠ rank([a b]) hÖ kh«ng cã nghiÖm. VÝ dô: Gi¶i m¹ch ®iÖn gåm 3 nh¸nh nèi song song: nh¸nh 1 cã tæng trë Z1 = 5+2j vµ nguån e = 100 sin(314t + 300), nh¸nh 2 cã tæng trë Z2 = 3+4j vµ nh¸nh 3 cã tæng trë 5+6j. Ta viÕt ph−¬ng tr×nh cña m¹ch ®iÖn theo dßng nh¸nh. Sau ®ã rót ra ma trËn A vµ B. C¸c lÖnh MATLAB: a = [1 1 1;5+2*i 3+4*i 0;0 -(3+4*i) 5+6*i] e =100*exp(i*(30*pi/180)) b=[0;e;0]; i=a\b i = 25.25569272231586 +19.27124163998603i -15.63482777750950 -11.44276084484129i -9.62086494480636 - 7.82848079514474i §7. Néi suy 1. Néi suy hµm 1 biÕn:MATLAB dïng hµm interp1(x,y,xi,)víi x, lµ gi¸ trÞ cña hµm t¹i nh÷ng ®iÓm ®· cho vµ xi lµ gi¸ trÞ mµ t¹i ®ã ta cÇn néi suy ra gi¸ trÞ yi.<ph−¬ng ph¸p> cã thÓ lµ mét trong c¸c gi¸ trÞ sau : ‘nearest’- ph−¬ng ph¸p nµy ®Æt gi¸ trÞ néi suy vµo gi¸ trÞ ®· cho gÇn nhÊt, Ph−¬ng ph¸p nµy nhanh nh−ng kÕt qu¶ kÐm chÝnh x¸c nhÊt VÝ dô : x = [ 1 2 3 4 5 ]; y = [ 5.5 43.1 128 290.7 498.4 ]; yi = interp1(x,y,1.6,'nearest') yi = 43.1000 ‘linear’- ph−¬ng ph¸p nµy coi ®−êng cong ®i qua 2 ®iÓm cho tr−íc lµ ®−êng th¼ng. VÝ dô : yi = interp1(x,y,1.6,'linear') yi = 28.0600 ‘spline”- dïng ph−¬ng ph¸p néi suy spline VÝ dô : yi = interp1(x,y,1.6,'spline') yi = 24.9782 ‘cubic’- ph−¬ng ph¸p nµy coi ®−êng cong qua 2 ®iÓm lµ ®−êng cong bËc 3 VÝ dô : yi = interp1(x,y,1.6,'cubic') yi = 25 22.3840 2. Néi suy hµm hai biÕn: Hµm interp2 thùc hiÖn néi suy hµm 2 biÕn. D¹ng hµm tæng qu¸t : ZI = interp2(X,Y,Z,XI,YI,) Z - ma trËn ch÷ nhËt chøa gi¸ trÞ cña hµm 2 biÕn X,Y - m¶ng cã cïng kÝch th−íc,chøa gi¸ trÞ x,y ®· cho XI,YI- m¶ng chøa gi¸ trÞ cÇn néi suy C¸c gåm : ‘nearest’,’linear’,’cubic’ 3. Néi suy m¶ng nhiÒu chiÒu: interp3 néi suy hµm 3 biÕn interpn néi suy hµm nhiÒu biÕn §8. TÝch ph©n vµ ph−¬ng tr×nh vi ph©n 1. TÝch ph©n: §Ó tÝnh tÝch ph©n ta dïng hµm quad(tÝnh tÝch ph©n theo ph−¬ng ph¸p Simpson) vµ hµm quad8(tÝnh tÝch ph©n b»ng ph−¬ng ph¸p Newton-Cotes). VÝ dô : f = inline('1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6 '); q = quad(f,0,1) q = 29.8583 r = quad8(f,0,1) r = 29.8583 VÝ dô y = sin(x) quad(‘sin’,0,pi) ans = 2.00001659104794 quad8('sin',0,pi) ans = 1.99999999999989 Ta còng cã thÓ dïng ph−¬ng ph¸p h×nh thanh ®Ó tÝnh tÝch ph©n: VÝ dô y = sin(x) x = [0:pi/100:pi]]; y=sin(x); trapz(x,y) ans = 1.99983550388744 2. Vi ph©n sè:§Ó tÝnh vi ph©n ta dïng diff VÝ dô a = [ 1 4 2 5 7 4 8]; diff(a) ans = 3 -2 3 2 -3 4 3. Ph−¬ng tr×nh vi ph©n: Ph−¬ng tr×nh vi ph©n cÊp cao y(n) = f(t,y,y’, . . , y(n-1)) cã thÓ ®−a vÒ hÖ ph−¬ng tr×nh vi ph©n cÊp 1 b»ng c¸ch ®Æt y1 = y ; y2 = y’ , . . , yn = y(n-1). Nh− vËy 26 )y.,,.y,y,t(fy .... yy yy n21n 32 21 =′ =′ =′ lµ hÖ cã n ph−¬ng tr×nh vi ph©n cÊp 1. VÝ dô : y’’’ - 3y” - y’y = 0 víi y(0) = 0 y’(0) = 1 y” = -1 ®−îc biÕn ®æi thµnh 1233 32 21 yyy3y yy yy +=′ =′ =′ víi ®iÒu kiÖn ®Çu : y1(0) = 0 y2(0) = 1 y3(0) = -1 §Ó nhËp ph−¬ng tr×nh nµy vµo MATLAB ta dïng M-file f.m nh− sau : function dy = f(t,y); dy = [ y(2) ; y(3) ; 3*y(3)+y(3)*y(1)]; vµ gi¶i ph−¬ng tr×nh b»ng lÖnh : [ t , f] = solver (‘file’,tspan,y0) víi “file” lµ M-file chøa ODE tspan lµ vec t¬ [ t0 tfinal] xac ®Þnh kho¶ng t×m nghiÖm y0 lµ vec t¬ gi¸ trÞ ®iÒu kiÖn ®Çu. solver lµ c¸ch gi¶i, th−êng dïng ph−¬ng ph¸p Runge-Kutta bËc 2/3(ode23) hay 4/5(ode45) [ t , y] = ode45[‘f’,[ 0 1],[0 ; 1 ; -1]) Mçi hµng trong vec t¬ nghiÖm t−¬ng øng víi mét thêi ®iÓm trong vec t¬ cét t. Nh− vËy trong vÝ dô trªn, y(:,1) lµ nghiÖm, y(:,1) lµ ®¹o hµm bËc nhÊt cña nghiÖm vµ y(:,2) lµ ®¹o hµm bËc hai cña nghiÖm. VÝ dô: T×m dßng qua ®é khi ®ãng m¹ch RC nèi tiÕp vµo nguån mét chiÒu biÕt tÝch sè RC = 0.1, ®iÖn ¸p nguån lµ 10V vµ ®iÖn ¸p ban ®Çu trªn tô lµ 2V. Ph−¬ng tr×nh cña m¹ch lµ: e(t) = RC C C u dt du + Thay sè vµo ta cã: 0.1u′ + u = 10 u′ = -10u + 100 Ta cã c¸c lÖnh MATLAB: function uc=rc(t,u) uc=-10*u+100; [t,u]=ode45('rc',[0 4],2); plot(t,u,'-o')
File đính kèm:
- giao_trinh_matlab_co_ban_chuong_1_matlab_co_ban.pdf