THỰCHÀNH MATLAB TàiliệuThựchànhLaboratory NguyễnThànhNhựt HoàngVănHà BùiXuânThắng 8 -2010 Lờimởđầu MATLAB là một hệ tính toán, lập trình cao cấp với thư viện hàm phong phú, đadạng. Chínhvì thế, MATLABđượcsửdụnglàmộttrongnhững công cụ tính toán hiệu quả trong giảng dạy, học tập và nghiên cứu trong các trườngđạihọc.QuyểnsáchnàyrađờiđểphụcvụchomônhọcThựchành LaboratorycủasinhviênKhoaToán-TinhọcTrườngĐạihọcKhoahọcTự nhiênĐạihọcQuốcgiaThànhphốHồChíMinh.Ngoàira,giáotrìnhnày cũngcóthểdùnglàmtài liệuchosinhviêncácmônhọcnhưTinhọctính toánhayMATLABvàứngdụngcủacácngànhKhoahọc-Kỹthuật. Quyểnsáchnàycóthểdùngchosinhviêntựhọchoặcgiảngviêndạy trựctiếpchosinhviênngaytrongphòngthựchành.Nộidunggồmcảphần tóm tắt lý thuyết và hướng dẫn các bước thực hành từ cơ bản đến nâng cao. Songsongđólàhệthốngcácbàitậpphongphúđượcsoạnvàsưutầmbởi cácgiảngviênnhiềukinhnghiệm. Xin cám ơn TS Phạm Thế Bảo, ThS Vũ Đỗ Huy Cường, ThS Đặng Thị Bạch Tuyết, GV Bùi Ngọc Nam, GV Nguyễn Trần Lan Anh của khoa Toán- Tinhọc,TrườngĐạihọcKhoahọcTựnhiên,ĐạihọcQuốcgiaThànhphố HồChíMinhđãthamgiađónggópsoạngiáotrìnhnàythậtcôngphu.Tuy nhiên với phiên bản lần đầu tiên này, quyển sách không tránh khỏi những sai sótnhấtđịnh. Mongquýđộcgiảđónggópcácýkiếnđángquýđểcáctác giảcóthểhoànthiệnhơnquyểngiáotrìnhnàychonhữnglầntáibảnsau. ThànhphốHồChíMinh,tháng09năm2010. Nhómtácgiả Mụclục Lờimởđầu 1 1 Matlabcơbản 5 1.1 GiớithiệuMatlab. . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Phéptoán,biến,vector,matrận . . . . . . . . . . . . . . . . 8 1.2.1 Biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.2 Phéptoán . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.3 Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2.4 Matrận . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.3 BiểuthứcLogic . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.3.1 Cáctoántửlogic . . . . . . . . . . . . . . . . . . . . . 19 1.3.2 Vectơvàbiểuthứclogic . . . . . . . . . . . . . . . . . 20 1.3.3 Cáchàmlogic:All,AnyvàFind . . . . . . . . . . . . . 20 1.4 Lệnhđiềukiệnvàvònglặp. . . . . . . . . . . . . . . . . . . . 21 1.4.1 LệnhIF . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.4.2 LệnhFOR. . . . . . . . . . . . . . . . . . . . . . . . . 22 1.4.3 LệnhWHILE . . . . . . . . . . . . . . . . . . . . . . . 23 1.4.4 LệnhSWITCH. . . CASE. . . . . . . . . . . . . . . . . 24 1.4.5 ScriptvàHàm. . . . . . . . . . . . . . . . . . . . . . . 24 1.5 Vẽđồthị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.5.1 Vẽđồthịtrong2-D. . . . . . . . . . . . . . . . . . . . 28 1.5.2 Vẽđồthịtrong3-D. . . . . . . . . . . . . . . . . . . . 33 2 Đạisốtuyếntính 38 2.1 Cácphéptoánmatrận,cácphépbiếnđổisơcấp . . . . . . . 38 2.1.1 Cácphéptoánmatrận. . . . . . . . . . . . . . . . . . 38 MỤCLỤC 3 2.1.2 Cácphépbiếnđổisơcấp. . . . . . . . . . . . . . . . . 42 2.2 Ma trận nghịch đảo, Phương trình ma trận và Hệ phương trình tuyếntính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.2.1 Matrậnnghịchđảo. . . . . . . . . . . . . . . . . . . . 44 2.2.2 Matrậngiảnghịchđảo. . . . . . . . . . . . . . . . . . 46 2.2.3 Giảiphươngtrìnhmatrận. . . . . . . . . . . . . . . . 49 2.3 Hệphươngtrìnhtuyếntính . . . . . . . . . . . . . . . . . . . 51 2.3.1 Đưavềdạngmatrận. . . . . . . . . . . . . . . . . . . 51 2.3.2 Sửdụngtínhtoánsymbolic . . . . . . . . . . . . . . . 52 2.4 Địnhthức,giảihệphươngtrìnhtuyếntínhbằngđịnhthức . . 54 2.4.1 Địnhthức . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.4.2 Giảihệphươngtrìnhtuyếntínhbằngđịnhthức . . . . 55 2.5 Đathứcđặctrưng,trịriêngvàvectơriêng . . . . . . . . . . . 55 3 Giảitíchhàmmộtbiến 58 3.1 Cácphéptoántậphợp . . . . . . . . . . . . . . . . . . . . . . 58 3.1.1 Địnhnghĩatậphợpvàcáchkhai báotậphợptrong Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.1.2 Cácphéptoántrongtậphợp . . . . . . . . . . . . . . 59 3.2 symbolicmathcơbản . . . . . . . . . . . . . . . . . . . . . . 66 3.2.1 Kháiniệmchung . . . . . . . . . . . . . . . . . . . . . 66 3.2.2 KhởiđộngTOOLBOX. . . . . . . . . . . . . . . . . . 66 3.3 Cácbàitoándãysốvàchuỗisố . . . . . . . . . . . . . . . . . 71 3.3.1 Kháiniệmvềdãysố,chuỗisốvàcáchkhaibáotrong matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.3.2 MộtsốhàmvềxửlídãysốvàchuỗisốtrongMatlab . 72 3.4 Cácbàitoángiớihạnhàmsốvàtínhliêntụccủahàmsố. . . 76 3.4.1 Giớihạncủahàmsố . . . . . . . . . . . . . . . . . . . 76 3.4.2 Sựliêntụccủahàmsố . . . . . . . . . . . . . . . . . . 77 3.5 Cácbàitoántíchphânhàmmộtbiến. . . . . . . . . . . . . . 80 3.5.1 Tíchphânbấtđịnh. . . . . . . . . . . . . . . . . . . . 80 3.5.2 Tíchphânxácđịnh. . . . . . . . . . . . . . . . . . . . 80 3.5.3 Tíchphânsố . . . . . . . . . . . . . . . . . . . . . . . 81 3.5.4 Các hàm trong Matlab dùng cho bài toán vi phân hàm mộtbiến. . . . . . . . . . . . . . . . . . . . . . . . . . 83 4 MỤCLỤC 4 CơhọcvàXácsuất-Thốngkê 88 4.1 Cơhọc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.1.1 Độnghọcchấtđiểm . . . . . . . . . . . . . . . . . . . 88 4.1.2 Sóngcơhọc . . . . . . . . . . . . . . . . . . . . . . . . 93 4.2 Xácsuất-Thốngkê . . . . . . . . . . . . . . . . . . . . . . . 97 4.2.1 Tínhtoánxácsuấtcơbản . . . . . . . . . . . . . . . . 97 4.2.2 Thốngkêmôtả. . . . . . . . . . . . . . . . . . . . . . 99 4.2.3 Kiểmđịnhgiảthiết:z-testvàt-test . . . . . . . . . 99 5 Giaodiệnđồhọangườidùng–GUI 102 5.1 TổngquanvềcáctệptinGUI . . . . . . . . . . . . . . . . . . 102 5.1.1 TệptinMvàtệptinFIG . . . . . . . . . . . . . . . . 102 5.1.2 CấutrúctệptinMcủaGUI . . . . . . . . . . . . . . . 102 5.2 VídụtạomộtGUIđơngiản. . . . . . . . . . . . . . . . . . . 103 5.3 MộtsốcomponenttrongGUI . . . . . . . . . . . . . . . . . . 103 CHƯƠNG 1 Matlabcơbản 1.1 GiớithiệuMatlab Matlablàmộtngônngữlậptrìnhcấpcaođượcsửdụngrộngrãitrongmôi trườnghọcthuật vàcôngnghệ. Matlabđượcxemlàlựachọnưutiênvì cókhảnănghỗtrợtối ưuchoviệcnghiêncứucũngnhưdạyhọcđối với cácmôntoánhọc,kỹthuậtvàkhoahọc.MatlabđượcviếttắttừMATrix LABoratory do mục đích ban đầu của Matlab là xây dựng nên một công cụ hỗtrợviệctínhtoáncácmatrậnmộtcáchdễdàngnhất. Một trongnhiềulýdokhiếnngười sửdụngthíchdùngMatlabchínhlà chếđộtươngtác(interactivemode). Ởchếđộnày, saukhi gõcâulệnhvà thựcthi,kếtquảsẽđượcinrangaytrongcửasổdònglệnh(commandwin- dow). Tuy nhiên, nếu người dùng chỉ cần thực thi câu lệnh nhưng không cần in kết quảracửasổdònglệnh,tathêmdấuchấmphẩy(;)ngaysaucâulệnh. 6 Matlabcơbản Hơnnữa, ởbêntrái mànhình, người dùngcóthểthấy3tabCurrentdi- rectory,WorkspacevàCommandhistory.Trongđó, •Currentdirectory: thể hiện thư mục đang làm việc. Khi muốn thực thi một tập tin .m nào đó, người dùng phải chắc chắn rằng tập tin .m phải đượcnhìnthấytrongtabnày. •Workspace: chứa danh sách các biến đã được khai báo và sử dụng trong chươngtrình.Ởtabnày,ngườidùngcóthểđọcđượctênbiến,giátrị, kíchthướccủabiến,.... •Command history: chứa danh sách các câu lệnh đã được thực thi trong cửa sổ dòng lệnh (command window). Người dùng có thể nhấp đôi vào một lệnh bất kì để chương trình thực hiện lại lệnh đó. Hoặc người dùng có thể dùng phím mũi tên lên (↑), xuống (↓) trong cửa sổ dòng lệnh để tìmlạicáclệnhmàchươngtrìnhđãthựcthi. Bêncạnhđó,Matlabvẫnduytrìchếđộkịchbản(scriptmode)hỗtrợcho người dùng khi lập trình các hàm hay chương trình từ đơn giản đến phức tạp. 1.1GiớithiệuMatlab 7 Cáccâulệnhsẽđượclưutrongmộttậptincóđuôi .m(ví dụ: example.m) vàđượcthựcthimộtlầnkhichươngtrìnhkhởichạy. Đểtạomộttậptin.m, người dùngvàoFilechọnNew →M-Filehaynhấn vàobiểutượng nằmtrênthanhMATLABToolbar. TrongMatlab, khi muốnviết một dòngchúthích, tađặt dấuphầntrăm (%)ởđầudòng.Tiệnlợihơn,tacóthểsửdụngphímtắtCtrl+Rđểbiến cácdòngđãchọntrởthànhchúthíchvàCtrl+Tđểloại bỏkýhiệuchú thíchtrướccácdòngchúthích. Đểthựcthi một tậptin.m, tanhấnvàobiểutượng nằmtrênthanh EditorToolbarhoặcsửdụngphímtắtF5.Tươngtựnhưcácngônngữlập trình khác, ở chế độ kịch bản, Matlab cũng hỗ trợ công cụ debug giúp người dùng kiểm tra chương trình của mình từng bước nhằm phát hiện lỗi sai trong quátrìnhviết. 8 Matlabcơbản 1.2 Phéptoán,biến,vector,matrận 1.2.1 Biến Trong ngôn ngữ lập trình Matlab, một biến(variable) được khai báo và khởi tạothôngquacâulệnhgán. >>num = 98 num = 98 >>pi = 3.1415926535897931 pi = 3.1416 >>msg = ’Good morning’ msg = Good morning Tênbiếnbaogồmcáckýtựchữ, sốvàkýhiệugạchdưới (_). Tênbiến phảibắtđầubằngkýtựchữvàcóđộdàitùythích.Tuynhiên,Matlabchỉ ghinhớ31kýtựđầutiên.Đồngthời,Matlabluônphânbiệtchữinvàchữ thườngkhiđặttênbiếnhoặctênchươngtrình. Cáckiểutênbiếnhợplệ:arg1,no_name,vars,Vars Khitênbiếnđượcđặtkhônghợplệ,Matlabsẽxuấthiệnthôngbáo: >>4rum = ’Forum’ ??? 4rum = ’Forum’ | Error: Unexpected MATLAB expression. Nếutênbiếnchưađược khởi tạomàxuất hiệnkhi chạymột dònglệnh nàođó,Matlabsẽxuấthiệnthôngbáo: ??? Undefined function or variable ... Chúý: TrongngônngữlậptrìnhMatlab, mỗi biếnkhi khởi tạosẽđược xem như một mảng. Nếu biến có giá trị đơn thì mảng có kích thước 1x1. Nếu 1.2Phéptoán,biến,vector,matrận 9 biến là ma trận hoặc vector thì kích thước của mảng chính là kích thước của matrậnhoặcvectorđó. ĐâylàmộtđiểmkhácbiệtcủaMatlabsovới các ngônngữlậptrìnhkhác. Đểlấykíchthướccủamộtbiến, tasửdụnghàm size(). >>size(num) ans = 1 1 >>size(msg) ans = 1 12 NgônngữlậptrìnhMatlabxemchuỗikýtựnhưmảngmộtchiềuchứacác kýtự.Dođó,kíchthướccủabiếnmsglà1dòng,12cột. 1.2.2 Phéptoán Matlabcungcấpcácphéptoánsốhọccơbảnnhưsau Phéptoán Dạngđạisố Matlab Cộng a + b a+b Trừ a −b a-b Nhân a ∗ b a*b Chiaphải a/b a/b Chiatrái b/a a\b Lũythừa a b a ˆ b >>1+2; 5-3; 2*4; 5 ˆ 2*(10-4); >>9/3 ans = 3 >>9\3 ans = 0.3333 10 Matlabcơbản Hơnnữa,Matlabcònhỗtrợmộtsốhàmsốhọcđơngiảnnhưhàmlàmtròn round(), làm tròn lên ceil (), làm tròn xuống floor(), lấy phần dư mod(), tìm ướcchunglớnnhấtgcd(), tìmbội chungnhỏnhấtlcm(), vàhàmlấycăn sqrt(). >>round(1.6) ans = 2 >>floor(10.8) ans = 10 >>mod(10,8) ans = 2 >>gcd(45,30) ans = 15 >>lcm(45,30) ans = 90 >>sqrt(9) ans = 3 Ngoàiracòncócácphéptoánsosánhnhưbằng(==),khác(∼=),lớnhơn (>), nhỏhơn(=), vànhỏhơnhoặcbằng(>1 ∼= 2 ans = 1 >>5 == 10 ans = 0 Cuối cùnglàcácphéptoánluậnlýbaogồmand(&&), or (||)vànot (!). 1.2Phéptoán,biến,vector,matrận 11 Một số khác 0 được xem là một giá trị đúng trong các phép toán luận lý của Matlab.Giátrịtrảvềcủacácbiểuthứcluậnlýtươngtựnhưbiểuthứcso sánh. >>n = 15 >>mod(n,2)==0 && mod(n,3)==0 ans = 0 >>mod(n,2)==0 || mod(n,3)==0 ans = 1 BÀITẬP 1. Tínhbằngtaycácbiểuthứcsau,rồithửlạibằngMatlab: a. 10/2 \5–3+2*4 b. 3ˆ2/4 c. 3ˆ2ˆ2 d. 2+round(6/9+3*2)/2–3 e. 2+floor(6/11)/2–3 f. 2+ceil(-6/9)–3 g. fix(-4/9)+fix(3*(5/6)) 2. Choa=36, b=15. Tínhbằngtaycácbiểuthứcsau, rồi thửlại bằng Matlab: a. mod(a,b) b. rem(a,b) c. gcd(a,b) d. lcm(a,b) Thửlạivớicáccặpgiátrị(a,b)khác. 3. Dự đoán kết quả những câu sau, giải thích và kiểm tra lại bằng Matlab a. 1&-1 12 Matlabcơbản b. 13&(-6) c. 03&1 1.2.3 Vector Vectorlàmộtdạngđặcbiệtcủamatrậncómộtdònghoặcmộtcột.Trong cácngônngữlậptrìnhkhác, sinhviênđãđượclàmquenvới vectorthông quatêngọidanhsách(list)hoặcmảngmộtchiều(1-Darray). Đểkhởi tạovector dòngchứacácgiátrị rời rạc, cácphầntửtrongvec- tor phải nằm trong cặp ngoặc vuông ([]) và được ngăn cách nhau bởi khoảng trắnghoặcdấuphẩy(,). >>arr1 = [1 2 3] arr1 = 1 2 3 >>arr2 = [0,-5] arr2 = 0 -5 >>arr3 = [arr1 arr2] arr3 = 1 2 3 0 -5 Đểkhởi tạovectordòngchứacácgiátrị liêntục(mặcđịnhtrongMatlab là1)hoặccáchnhaumộtkhoảnggiátrị nhấtđịnh(còngọi làbướcnhảy), Matlabsửdụngdấuhaichấm(:).Đồngthời,giátrịđầuvàcuốicủavector khôngcầnthiếtđặttrongcặpdấungoặcvuông([]). 1.2Phéptoán,biến,vector,matrận 13 >>arr1 = 1:5 arr1 = 1 2 3 4 5 >>arr2 = [1:0.5:2] arr2 = 1.0000 1.5000 2.0000 >>arr3 = 10:-1:6 arr3 = 10 9 8 7 6 Hơn nữa, để tạo một vector rỗng - vector không chứa giá trị - trong Matlab, chúngtakhaibáonhưsau: >>emp_vect = [] emp_vect = [] Ngượclại, đểtạoravectorcột, chúngtacầnnghịchđảovectorcộtbằng cách sử dụng dấu nháy đơn (’) hoặc sử dụng dấu chấm phẩy (;) để ngăn cách giữacácphầntử. >>col_arr = [1:3]’ >>col_arr = [1;2;3] col_arr = 1 2 3 Giátrị củamộtphầntửtại mộtvị trí bấtkỳtrongvectorđượctruyxuất thôngquachỉ số. TrongMatlab, chỉ sốluônbắtđầutừ1vàcóthểlàmột giátrịđơnhoặcmộtmảng. •Tríchphầntửthứi:X(i) •Tríchnhiềuphầntử:X([danh sách vị trí]) 14 Matlabcơbản >>arr = 10:-1:0 arr = 10 9 8 7 6 5 4 3 2 1 0 >>arr(5) ans = 6 >>arr(1:3) ans = 10 9 8 >>arr([10:-2:6]) ans = 1 3 5 >>arr([7,8,11]) ans = 4 3 0 Đểxóamộtphầntửtrongvector, chúngtasẽgánphầntửđóvới vector rỗng. >>arr([2 5]) = [] arr = 10 8 7 5 4 3 2 1 0 >>size(arr) ans = 1 9 BÀITẬP 1. Chox=[3157926],dựđoánkếtquảcácdònglệnhsauvàthửlại bằngMatlab a. x(3) b. x(1:7) c. x(1:end) d. x(1:end-1) e. x(6:-2:1) 1.2Phéptoán,biến,vector,matrận 15 f. x([16211]) g. sum(x) 2. Chox=[1528901] vày=[5226002], giải thíchkếtquảcác dònglệnhsau a. x>y b. yy)|(yy)&(y>diag([3 4 5]) ans = 3 0 0 0 4 0 0 0 5 >>rand(2,1) ans = 0.8147 0.9058 >>ones(2) ans = 1 1 1 1 Tương tự như vector, giá trị của một phần tử tại một vị trí bất kỳ trong ma trậnđượctruyxuấtthôngquachỉsốdòngvàchỉsốcột. •Tríchphầntửtạidòngicộtj:A(i,j) •Trích nhiều phần tử: A([danh sách các dòng, danh sách các cột]) •Tríchđườngchéochínhcủamatrận:diag(A) •Tríchtấtcảphầntửcủamatrận:A(:) •Tríchtấtcảphầntửtạicộti:A(:,i) •Tríchtấtcảphầntửtạidòngj:A(j,:) 18 Matlabcơbản >>mat = rand(2,3) ans = 0.1270 0.6324 0.2785 0.9134 0.0975 0.5469 >>mat(1,3) ans = 0.2785 >>mat([2],[1 3]) ans = 0.9134 0.5469 >>mat(:,2) ans = 0.6324 0.0975 Chúý:TrongMatlab,chỉsốcuốicùngcủadònghaycộtcủamatrậnhoặc vectorcóthểđượcthaythếbởichữend. BÀITẬP Chox=[148], y=[215], vàA=[2797; 3156; 8125]. Xétxem dònglệnhnàohợplệ,dựđoánkếtquả,giảithíchvàthửlạibằngMatlab a. [x; y ] b. [x; y] c. A(:,[14]) d. A([23],[31]) e. A(:) f. [A; A(end, :)] g. A(1:3,:) h. [A; A(1 : 2, :)] 1.3BiểuthứcLogic 19 1.3 BiểuthứcLogic 1.3.1 Cáctoántửlogic MộtbiểuthứclogictrongMatlabđượcxâydựngtừ6toántửquanhệlà: >,=,2 & x 2chokếtquảlà0 0 0 1 1 1 1 1 1làvectơchứakếtquảso sánhtừngphầntửtươngứngcủa xvới2vàx(x>2) sẽxuấtracácgiá trịlớnhơn2. 1.3.3 Cáchàmlogic:All,AnyvàFind Mộtsốhàmlogicthôngdụnglà:any,all,find any: Kiểmtraxemcótồntại một phầntửnàocủavectơthỏađiềukiện không?Nếucóthì chokếtquảlà1, ngượclại là0. Ví dụ, any(x>0): kiểm traxemcótồntạiphầntửnàocủavectơxdươnghaykhông. 1.4Lệnhđiềukiệnvàvònglặp 21 all: kiểmtratấtcảcácphầntửcủavectơcóthỏađiềukiệnkhông?Kết quảlà1nếuđúng.Vídụ,all(x < 5):tấtcảcácphầntửcủaxcó< 5hay không? Lưuý:kếtquảcủaallvàanylàvôhướng(1hoặc0). find:trảvềcácchỉsốcủamộtvectơthỏađiềukiệnlogicnàođó.Vídụ, A = [1 2 4;4 5 6] find(isprime(A)):xuấtracácvịtrícủamatrậnAcógiátrịlàsốnguyên tố. 1.4 Lệnhđiềukiệnvàvònglặp 1.4.1 LệnhIF Cúpháp: ifBiểuthứcđiềukiện Lệnhthựcthi end hoặc ifBiểuthứcđiềukiện1 LệnhthựcthinếuĐk1đúng elseifBiểuthứcđiềukiện2 LệnhthựcthinếuĐk2đúng . . . end Vídụ1.4.1. Hoánvịxvàynếux > y if x > y temp = y; y = x ; x = temp; end Ví dụ 1.4.2.Biện luận số nghiệm của phương trình ax 2 +bx+c = 0, (a = 0) delt = bˆ2 - 4*a*c; if delt < 0 disp(’PT Vo nghiem’); 22 Matlabcơbản elseif delt == 0 disp(’PT co nghiem kep’); else disp(’PT co 2 nghiem phan biet’); end Lưuý:Nếucâulệnhfđượcđặttrên1dòngthìphảidùngdấu","sauif.Ví dụ,if x > 0, x = sqrt(x); end. 1.4.2 LệnhFOR Cúpháp: for var = start : step : end Lệnh thực thi end Vòng lặp với biến chạy là var bắt đầu từ start và kết thúc là end, mỗi bước lặp sẽ tăng một bước nhảy là step. step có thể là dương (vòng lặp tăng dần) hoặcâm(giảmdần).Nếukhôngchỉrastep,bướcnhảymặcđịnhlà1. Vídụ1.4.3. Xuấtcácgiátrịtừ1đến5ramànhình for i=1:5, disp(i), end Xuấtcácgiátrịchẵntừ1đến10theothứtựngược for i=10:-2:1, disp(i), end Vídụ1.4.4. Tínhgiaithừan! = 1 ×2 ×. . . ×(n −1) ×n n = 10; fact = 1; for k=1:n fact = k*fact; end Tacóthểthaythếdùngmộtvectơchạymộtvòngfor: for var = v, ..., end. Vídụ1.4.5. Tínhtíchtấtcảcácphầntửtrongvectơa = [1 2 3 -2 4] prod = 1; for i = v, prod = prod*i, end 1.4Lệnhđiềukiệnvàvònglặp 23 1.4.3 LệnhWHILE Cúpháp: while Biểu thức điều kiện Các lệnh thực thi end Cáclệnhsẽđượcthựchiệnkhinàobiểuthứcđiềukiệncònđúng. Ví dụ1.4.6. Tìmgiátrịlớnnhấtcủanđểtổng1 2 + 2 2 + . . . + n 2 béhơn 100. S = 1; n=1; while (S + (n+1)ˆ2) 1 m = n+1 else m = n - 1 với a. n = 7, m = ? b. n = 0, m = ? c. n = -10, m = ? 2. if T < 30 h = 2*T + 1 elseif T < 10 h = T - 2 else h = 0 end a. T = 50, h = ? b. T = 15, h = ? c. T = 0, h = ? 3. if 0 < x < 10 y = 4*x elseif 10 < x < 40 y = 10*x else y = 500 end a. x = -1, y = ? b. x = 5, y = ? c. x = 30, y = ? 4. ViếtScriptđểtínhhàmsau h(T) = T - 10 khi 0 < T < 100 = 0.45T + 900 khi T > 100 Thử các trường hợp a. T = 5 b. T = 110. 5. Chovectơx = [1 8 3 9 0 1],viếtcácdònglệnhđể a. Tínhtổngcácphầntử.(Sosánhkếtquảvớilệnhsum) b. Viết hàm tính tổng dãy con từ 1 đến j. (So sánh kết quả với lệnh cumsum) 1.4Lệnhđiềukiệnvàvònglặp 27 6. Viếthàmtínhtổhợpnchậprtheocôngthứcsau C r n = n! n!(n −r)! 7. TạomatrậnM ×Ncácsốngẫunhiên(dùnglệnhrand).Chuyểncác giátrịnhỏhơn0.2thành0,cácgiátrịlớnhơnhaybằng0.2thành1. 8. Tạomột vec tơngẫunhiêngồm1.000.000phầntửtínhtổngbình phươngcácphầntửsửdụng2cách: a. Dùngphéptoántrênmatrận. b. Vònglặpfor. Đothời gianchạygiữa2cáchbằngcáchsửdụngcặplệnhtic... toc. Ví dụ, tamuốnđothời giantínhhàmx=sin(t) với thì dùng: tic x = sin(t)toc. 9. Tạomộtvectơcógiátrị nguyêngồm100.000phầntửtrongkhoảng [0, 100],tìmtấtcảnhữngphầntửchiahếtcho3bằng2cách: a. Dùngphéptoántrênmatrận. b. Dùngforvàif. Đothờigianchạygiữa2cách. 10. Chox=[416]vày=[627],tínhcácmảng/vector/matrậnsau a. aij=xiyj b. bij=xi/yj c. ci=xiyi,tínhtổngcácphầntửcủac. d. dij=xi/(2+xi+yj) 11. Chomộtvectơbấtkỳ, ví dụx=[-405-3037-16], viếtscriptđể đếm xem trong vec tơ có bao nhiêu giá trị âm, bao nhiêu giá trị dương, vàbaonhiêugiátrịbằng0. 12. Viếtscriptđểtínhtrongmộtvectorcácsốngẫunhiên(sửdụnglệnh rand): 28 Matlabcơbản a. Cóbaonhiêuphầntửđứngtrướcmột phầntửcógiátrị nằm trongkhoảng0.8đến0.85. b. Cóbaonhiêuphầntửtrongkhoảng[0.01,0.5]đứngtrướcgiátrị trungbìnhcủavectorđó. (Dựđoánkếtquảtrướckhithựcthilệnh.) 13. Viết một script yêu cầu nhập một nhiệt độ Fahrenheit rồi chuyển sang độCelciustươngứng. Scriptvẫnchạyđếnkhi khôngnhậpnhiệtđộ nữathìthôi.[Sửdụnghàmisempty.] 14. Giảsửtađầutưvàomộtquỹtíndụngmộtsốtiềnbanđầulàa, số tiềnsinhlời hàngnămlà10%sốtiềnvốntíchlũy. Hãytínhsốnăm khimàlợinhuậnthuđượcgấpđôitiềnvốnbanđầu. 1.5 Vẽđồthị 1.5.1 Vẽđồthịtrong2-D Lệnhcơbản: plot(x,f(x)) Vớix:vectơchứamiềngiátrịcủahàmf.f(x):cácgiátrịcủafứngvớix. Vídụ1.5.1. Vẽđồthịy= sin(x)từ[0, 2π] x = 0 : pi/100 : 2*pi; y = sin(x); plot(x, y); 1.5Vẽđồthị 29 Chúthíchtrênđồthị: text(x, y, ’...’):đặtmộtchúthích(trongdấu’’)lênđồthịtạitọađộ (x, y). gtext(’...’): đặt chú thích lên đồ thị, vị trí được xác định bởi click chuột. title(’...’):tựađềcủađồthị. xlabel(’...’):ghinhãnchotrụcOx. ylabel(’...’):ghinhãnchotrụcOy. hold on/off: bật/tắtchếđộchophépvẽnhiềuđồthị trongcùngmộthệ trụctọađộ. Cáctùychỉnhvềnétvẽ,dấuvàmàusắc: Lệnh:plot(x,y,’Nét vẽ_Dấu_Màu sắc’) Nétvẽ: Dấu(marker): 30 Matlabcơbản Màusắc: gồm8tùychọnlà’r’ -đỏ, ’k’ -đen, ’w’ -trắng, ’y’ -vàng, ’c’ - cyan,’b’-xanhnướcbiển,’g’-xanhlácây,’m’-tím. Vídụ1.5.2. x = 0:pi/20:2*pi; plot(x, sin(x),’-.*r’); hold on plot(x, sin(x – pi/2),’–om’); plot(x, sin(x – pi), ‘:bs’); hold off 0 1 2 3 4 5 6 7 −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 Tùychỉnhmàusắcvàđộlớncủanétvẽ: LineWidth:độrộngcủanétvẽ,tínhbằngpt. MarkerEdgecolor:màucủađườngviềndấu(marker). MarkerFacecolor:màubêntrongdấu. Markersize:độlớncủadấu,tínhbằngpt. 1.5Vẽđồthị 31 Vídụ1.5.3. x=-pi:pi/10:pi; y=tan(sin(x))-sin(tan(x)); plot(x,y,’—rs’,’LineWidth’,2,’MarkerEdgecolor’,’k’,... ’MarkerFacecolor’,’g’,’Markersize’,10) −4 −3 −2 −1 0 1 2 3 4 −3 −2 −1 0 1 2 3 Xácđịnhtọađộ: axis([xmin xmax ymin ymax]) xlim([xmin xmax]) ylim([ymin ymax]) Tùychỉnhcáckiểutrụctọađộ: axis on/off/auto axis normal/square/equal/tight axis ij/xy grid on/off 32 Matlabcơbản Cáckiểutùychỉnhhệtrụctọađộ subplot-Vẽnhiềuđồthịtrongcùngmộtcửasổ: subplot(m, n, p):tạoramộtmatrậnmhàng,ncộtchứa m×nđồthị,p làvịtrícủatừngđồthị,thứtựtừtrênxuốngdướitheohàng. Vídụ1.5.4. Vẽ4đồthịtrongcùng1cửasổ t = 0:pi/20:2*pi; [x,y] = meshgrid(t); subplot(2,2,1) plot(sin(t),cos(t)) axis equal subplot(2,2,2) z = sin(x)+cos(y); plot(t,z) axis([0 2*pi -2 2]) subplot(2,2,3) z = sin(x).*cos(y); plot(t,z) axis([0 2*pi -1 1]) subplot(2,2,4) z = (sin(x).ˆ2)-(cos(y).ˆ2); plot(t,z) axis([0 2*pi -1 1]) 1.5Vẽđồthị 33 1.5.2 Vẽđồthịtrong3-D Lệnhcơ bản: plot3(x, y, z) Trong plot3, ta cầnxác địnhcác vectơ (x, y, z).Đểvẽmặt(x, y, z= f(x, y)),sửdụnglệnhmeshgrid(x,y). Vídụ1.5.5. t = 0:0.02*pi:25*pi; x = sin(t); y = cos(t); z = t; plot3(x,y,z); 34 Matlabcơbản −1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1 0 20 40 60 80 Vídụ1.5.6. Vẽmặtz(x, y) = x 2 ye −x 2 −y 2 với −4 ≤ x ≤ 4và −4 ≤ y ≤ 4. [x,y]=meshgrid([-4:0.1:4]); z=x.*x.*y.*exp(-x.ˆ2-y.ˆ2); plot3(x,y,z) −4 −2 0 2 4 −4 −2 0 2 4 −0.2 −0.1 0 0.1 0.2 1.5Vẽđồthị 35 Mộtsốlệnhvẽđồthịtrong3-Dkhác: • contour / contourf / contour3 • mesh / meshc / meshz • surf / surfc • waterfall • bar3 / bar3h • pie3 / fill3 • comet3 / scatter3 / stem3 (Xemhướngdẫnchitiếttronghelp) Invàxuấtđồthị: •Dùnglệnh print -dtiff -r200 mygraph.tiff print –deps2 mygraph.eps •SửdụngPlottingTools XuấtđồthịrafilesửdụngPlottingTools 36 Matlabcơbản BÀITẬP 1. Vẽđồthịhàmsốx,x 3 ,e x vàe x 2 với0 < x < 4. 2. Vẽđồthịhàmsốf(x) = sin(1/x)với0.01 < x < 0.1. 3. Vẽ lại đồ thị hàm số e x , (0 < x < 4) nhưng với đường đứt nét, màu đỏ vàdấu(marker)làdấu+. 4. Vẽ lại đồ thị hàm số e x 2 (0 < x < 4) nhưng với đường gạch chấm, màu xanh và dấu (marker) là hình tam giác hướng lên trên. (Thử lại với các thamsốkhác(Màusắc,kiểuđường,dấu)) 5. Vẽ đồ thị hàm số f(x) = x 1+x 4 , −5 ≤ x ≤ 5 với: Kiểu đường là nét gạch chấm,độrộng2pt,màuđỏthẫm. Dấu(marker)làhìnhtròn,độrộng6pt,màutôcủadấulàxanh,màu đườngviềnlàđen. 6. Vẽhaihàmy= x 2 vày= sin(3x)trêncùngmộtđồthị. 7. Vẽ hai hàm sốf= x sin(x), 0 ≤ x ≤ 20 và g= 50x, 20 ≤ x ≤ 25 trên 2 hệtrụctọađộkhácnhau. 8. VẽđườngtròncótâmO(0, 0)bánkínhbằng3. Địnhtọađộchotrục Ox và Oylà từ -6 đến 6. Tạo đường lưới trên hình vẽ và thử lại với các lệnhaxisnormal/square/equal/tight. 9. Vẽđồthị hàmsốy=cos(t)trongkhoảng0B = [5,6;7,8] >>A+B ans = 6 8 10 12 >>A*B ans = 19 22 43 50 >>A/B ans = 3 -2 2 -1 >>A\B ans = -3 -4 4 5 Bêncạnhđó,Matlabcònhỗtrợmộtsốhàmsơcấpliênquanđếnmatrận màngườidùngkhôngphảiviếtlạichươngtrìnhđểtínhtoánnhưcácngôn ngữlậptrìnhkhác. •Chuyểnvị:A’ •Địnhthức:det(A) •Matrậnnghịchđảo:A ˆ (-1)hoặcinv(A) •Hạngcủamatrận:rank(A) •Vếtcủamatrận:trace(A) •Tìm dạng bậc thang rút gọn theo phương pháp Gauss Jordan: rref(A) •Tínhtổngcácphầntửcủamatrậntheocột:sum(A) 40 Đạisốtuyếntính >>A = [2 4 1 ; 6 7 2 ; 3 5 9] >>det(A) ans = -77 >>rank(A) ans = 3 >>trace(A) ans = 18 >>sum(A) ans = 11 16 12 Đặcbiệthơn,đểthựchiệncácphéptoánnhân,chiagiữaphầntửvớiphần tửcủahaimatrận,haylũythừatừngphầntửcủamatrận,chúngtathêm dấuchấm(.)vàotrướcphéptoáncầntính. >>A = [1,2;3,4] >>B = [5,6;7,8] >>A.*B ans = 5 12 21 32 >>A./B ans = 0.2000 0.3333 0.4286 0.5000 >>A.\B ans = 5.0000 3.0000 2.3333 2.0000 >>A. ˆ 3 ans = 1 8 27 64 2.1Cácphéptoánmatrận,cácphépbiếnđổisơcấp 41 BÀITẬP 1. Chox=[2516]. a. Cộngthêm16vàotấtcảcácphầntử. b. Cộngthêm3vàocácphầntửởvịtrílẻ. c. Lấycănbậc2tấtcảcácphầntử. d. Bìnhphươngtấtcảcácphầntử. 2. Chox,ylầnlượtlàcácvectorcột.x=[3268]’,y=[4135]’. a. Lấytổngcácphầntửcủaxcộngthêmvàotừngphầntửcủay. b. Luỹthừamỗiphầntửcủaxvớisốmũtươngứnglàcácphầntử củay. c. Chiacácphầntửcủayvớicácphầntửtươngứngcủax. d. Nhâncácphầntửcủaxvới cácphầntửtươngứngcủay, đặt trongvectorz. e. Tínhtổngcácphầntửcủaz,gánchow. f. Tínhx.*y–w. g. Tíchvôhướngcủaxvày 3. Chox=[148],y=[215]vàA=[316;527].Xétxemdònglệnh nàohợplệ,dựđoánkếtquả,giảithích;rồithửlạibằngMatlab: a. x+y b. x+A c. x’+y d. A–[x’y’] e. A–3 4. ChoA=[2797;3156;8125],dựđoánkếtquả,giảithích;rồi thửlạibằngMatlab: a. A’ b. sum(A) 42 Đạisốtuyếntính c. sum(A’) d. sum(A,2) e. [[A; sum(A)] [sum(A, 2); sum(A(:))]] 5. Hãytạoramatrận4x4cógiátrịnguyênnằmtrongkhoảng[-10,10], Sauđó: a. Cộngmỗiphầntửcủamatrậncho15 b. Bìnhphươngmỗiphầntửcủamatrận c. Cộngthêm10vàocácphầntửởdòng1vàdòng2 d. Cộngthêm10vàocácphầntửởcột1vàcột4 e. Tínhnghịchđảomọiphầntử f. Lấycănbậchaimọiphầntử 2.1.2 Cácphépbiếnđổisơcấp Sau đây, chúng ta sẽ làm quen với các phép biến đổi sơ cấp trên dòng và cột củamatrận.Đốivớiphépbiếnđổisơcấptrêndòng,để •Biếndòngithànhαlầndòngi:A(i,:) = A(i,:)*α •Biếndòng i thànhdòng i cộng αlầndòng j: A(i,:) = A(i,:) + A(j,:)*α •Hoánvịdòngivàdòngj:A = A([thứ tự dòng],:) 2.1Cácphéptoánmatrận,cácphépbiếnđổisơcấp 43 >>A = [2 4; 3 8; 6 7] >>A(1,:) = A(1,:)*10 A = 20 40 3 8 6 7 >>A(2,:) = A(2,:) + 3*A(3,:) A = 20 40 21 29 6 7 >>A = A([3 1 2],:) A = 6 7 20 40 21 29 Tươngtự,tacócácphépbiếnđổisơcấptrêncộtlà •Biếncộtithànhαlầncộti:A(:,i) = A(:,i)*α •Biến cột i thành cột i cộng α lần cột j: A(:,i) = A(:,i) + A(:,j)*α •Hoánvịcộtivàcộtj:A = A(:,[thứ tự cột]) BÀITẬP ChomatrậnA=[241;672;359],viếtlệnhMatlabđể a. GánchovectorxlàdòngthứnhấtcủaA. b. Gánchomatrậnylàhaidòngcònlại(cuối)củaA. c. TínhtổngtheodòngmatrậnA. d. TínhtổngtheocộtmatrậnA. e. Tìmphầntửlớnnhấtvàphầntửnhỏnhấtcủamatrận. f. TínhtổngcácphầntửcủaA 44 Đạisốtuyếntính 2.2 Ma trậnnghịchđảo, Phương trìnhma trậnvàHệphươngtrìnhtuyếntính 2.2.1 Matrậnnghịchđảo Địnhnghĩa2.2.1. Matrậnđơnvị cấpnlàmatrậnvuôngcấpncócác phầntửtrênđườngchéochínhlà1,cácphầntửcònlạilà0.Vídụ: _ ¸ ¸ ¸ ¸ ¸ ¸ _ 1 0 . . . 0 0 . . . . . . . . . . . . . . . . . . . . . . 0 0 . . . 0 1 _ ¸ ¸ ¸ ¸ ¸ ¸ _ TrongMatlab,chúngtasửdụnghàmeye(n)đểtạomatrậnđơnvịcấpn. Vídụ2.2.2. Tatạomatrậnđơnvị3x3bằngcodematlabnhưsau. >> eye(3) ans = 1 0 0 0 1 0 0 0 1 Địnhnghĩa2.2.3. ChoAlàmatrậnvuôngcấpn. MatrậnAđượcgọi làmatrậnkhảnghịchnếunhưtồntại matrậnBvuông cấpnsaocho A.B= B.A = I n . Tasửdụnghàminv(A)hoặcsửdụngphéptoánA −1 đểtínhtoánmatrận nghịchđảo. Vídụ2.2.4. ChomatrậnAnhưsau: _ _ −3 4 6 0 1 1 2 −3 4 _ _ 2.2Matrậnnghịchđảo,PhươngtrìnhmatrậnvàHệphương trìnhtuyếntính 45 >> inv(A) ans = -4.0000 -3.0000 2.0000 -1.0000 -1.0000 0 6.0000 4.0000 -3.0000 Vídụ2.2.5. ChomatrậnAnhưsau: _ _ 8 + 3i 9 −i 3 + 2i 9 −3i 6 5 −2i 1 + 2i 1 −2i 10 + i _ _ MatrậnnghịchđảocủaAlà >> inv(A) ans = -0.0126 - 0.0995i 0.0515 + 0.1266i -0.0686 - 0.0138i 0.0990 + 0.1053i -0.0075 - 0.1357i 0.0235 + 0.0126i -0.0469 + 0.0264i 0.0465 - 0.0155i 0.1001 + 0.0085i Vídụ2.2.6. ChomatrậnBnhưsau,Bkhôngkhảnghịchkhiđóhàminv sẽtrảracácgiátrịnhưsau: _ _ 3 4 6 −5 2 16 2 1 −1 _ _ inv(B) Warning: Matrix is singular to working precision. ans = Inf Inf Inf Inf Inf Inf Inf Inf Inf 46 Đạisốtuyếntính BÀITẬP 1. TựtạongẫunhiênmatrậnAlàmatrậnvuông25phầntửthuộc C. a. KiểmtramatrậnAcókhảnghịchhaykhông,nếukhôngthìcho lạimatrậnngẫunhiênkhác. b. XácđịnhmatrậnnghịchđảocủaAbằngcácphépbiếnđổi sơ cấptrêndòng(làmtừngbước). 2. TựtạomatrậnngẫunhiênAlàmatrậnvuông100phầntửthuộc C. a. KiểmtramatrậnAcókhảnghịchhaykhông,nếukhôngthìcho lạimatrậnngẫunhiênkhác. b. XácđịnhmatrậnnghịchđảocủaAbằngcácphépbiếnđổi sơ cấptrêndòng(khôngcầnlàmtừngbước). c. Dùnghàminvhoặcphéptoánmũ-1đểxácđịnhmatrậnnghịch đảocủaA. 3. Cho ma trận bất kì không khả nghịch 100 phần tử. Dùng các phép biến đổi sơcấptrêndòngđểkiểmtratínhkhôngkhảnghịchcủamatrận đó. 4. Cho các cặp ma trận A,B theo thứ tự. Xác định A −1 B −1 , (AB) −1 , B −1 A −1 a. _ 1 2 4 −1 _ , _ 2 −3 −4 1 _ b. _ _ 2 3 −i 1 i −3 1 0 1 2 i −1 _ _ , _ _ 1 2 2i + 1 0 1 2 3 1 i + 1 _ _ 2.2.2 Matrậngiảnghịchđảo ChomatrậnAkíchthướcm× n. MatrậnBlàmatrậngiảđảocủaAlà matrậnthỏa4tínhchấtsau: 1. ABA = A 2.2Matrậnnghịchđảo,PhươngtrìnhmatrậnvàHệphương trìnhtuyếntính 47 2. BAB= B 3. (AB) ∗ = AB 4. (BA) ∗ = BA Trong đó ma trận AB và BA là ma trận Hermit, tức là ma trận phức có tính đốixứngliênhợp. Ghichú 2.2.7. Trườnghợpđặtbiệt: 1. NếuA ∗ AkhảnghịchthìmatrậnB=(A ∗ A) −1 A ∗ làmatrậngiảđảo tráicủaA. 2. NếuAA ∗ khảnghịchthìmatrậnB=A ∗ (AA ∗ ) −1 làmatrậngiảđảo phảicủaA. Vídụ2.2.8. MatrậnHermitChomatrậnAnhưsau _ 7 5 + i 5 −i 9 _ MatrậnchuyểnvịcủaAlà >> A’ ans = 7.0000 5.0000 + 1.0000i 5.0000 - 1.0000i 9.0000 TanhậnthấyrằngmatrậnchuyểnvịcủaAcũngbằngchínhAdovậyma trậnAchínhlàmatrậnHermit. Tiếptheo,tasẽdùngMatlapđểtínhtoánmatrậngiảđảocủaA.Tasử dụnghàmpinv(A) Vídụ2.2.9. ChomatrậnAnhưsau _ 2 4 3 5 1 7 _ SauđódùnghàmpinvđểtínhmatrậngiảđảocủaAvàkiểmtradựavào địnhnghĩa. 48 Đạisốtuyếntính pinv(A) ans = -0.0263 0.0789 0.2789 -0.1168 -0.0211 0.1032 >> A*pinv(A)*A ans = 2.0000 4.0000 3.0000 5.0000 1.0000 7.0000 BÀITẬP 1. ChomatrậnAnhưsau: _ ¸ ¸ ¸ ¸ _ 81 + 7i 10 + 8i 16 + 7i 14 + 8i 91 28 + 7i 97 42 + 7i 13 + 8i 55 + 4i 96 + 3i 92 + 3i 91 + 9i 96 + 7i 49 79 + 10i 63 + 7i 96 + 2i 80 + i 96 _ ¸ ¸ ¸ ¸ _ Xácđịnhmatrậngiảđảotráihoặcgiảđảophải(nếucó)củaAtheo 2cách: - Sửdụnghàmpinv.Chobiếtmatrậngiảđảotrênlàmatrậngiả đảotráihayphải(nếucó). - Khôngsửdụnghàmpinv. 2. (*)ChomatrậnA ∈ M 4x7 (R)vớicácphầntửbấtkì. a. KiểmtratínhnghịchđảocủaB= AA T vàC= A T A. b. NếuBkhôngkhảnghịchtìmmatrậngiảđảocủaB(nếucó). (NếuBkhảnghịchtalàmtươngtựvớiC). c. (**)Nếu sử dụng hàm pinv thì cho biết ma trận đó là giả đảo trái haygiảđảophải. d. Thựchànhlạicáicâu(a),(b),(c)vớitínhtoánsymbolic. 2.2Matrậnnghịchđảo,PhươngtrìnhmatrậnvàHệphương trìnhtuyếntính 49 2.2.3 Giảiphươngtrìnhmatrận Địnhnghĩa2.2.10.Cho phương trình AX=B. Trong đó A là ma trận mxn, BlàmatrậnmxkvàXlàẩn.TacầntìmX. Ghichú 2.2.11. NếuAlàmatrậnvuôngtứcm=nvàkhảnghịch.Tadùng nghịchđảocủaA. TrongMatlabtasửdụngphéptoán\gọilàphépchiatráihoặchàmmldi- vide(A,b). Vídụ2.2.12. Chophươngtrìnhmatrậnnhưtrên. A=[2 4 3;5 1 7;2 3 5];b=[2 5;4 1;3 7]; >> X=A\b X = 0.0270 -2.2703 0.0811 1.1892 0.5405 1.5946 Đối với phương trình XA=b, ta dùng pháp toán chia phải / hoặc hàm mrdi- vide(b,A). Để giải phương trình ma trận trong Matlab,ta chỉ sử dụng hàmlinsolve(A,b,opts). Trongđóoptslàthamsốchỉ tínhchấtcủamatrậnA. Điềunàyrấtquan trọngvìnóảnhhưởngđếntốcđộtínhtoáncủahàm. Ví dụ2.2.13. NếuAlàmatrậnđối xứng, tanhậpvàocâulệnhnhưsau linsolve(A,b,SYM).Sauđâylàbảngcácgiátrịcủathamsốopts. 50 Đạisốtuyếntính Bảng2.2.1:Giátrịcủathamsốopts Giátrịthamsố ThuộctínhcủamatrậnA LT Matrậntamgiácdưới UT Matrậntamgiáctrên UHESS MatrậnHessenbergtrên SYM Matrậnđốixứng POSDEF Matrậnxácđịnhdương RECT Matrậnchữnhật TRANSA Matrậnđốixứngliênhợp BÀITẬP 1. ChomatrậnAnhưsaurand(50,50).TìmmatrậnXthỏa: a. 12X −2.5A = I 50 b. XA 50 = B.VớiBlàmatrậnngẫunhiênkhácA. 2. ChomatrậnA ∈ M 2x3 (C), matrậnB ∈ M 2x2 (C). TìmmatrậnX thỏaAX=B. 3. ChomatrậnA,B ∈ M 100x70 (C).TìmmatrậnXthỏa: a. 100A + 10X= B b. XA = B 4. Giảiphươngtrìnhmatrậnsau: a. X _ _ 13 −8 −12 12 −7 −12 6 −4 −5 _ _ = _ _ 1 2 3 4 5 6 7 8 9 _ _ b. _ _ 1 −i 2 + i 108 −i 12 −7i 9 22 −5i 3i 5 + 10i −25 _ _ X _ _ 1 −1 −1 1 1 1 1 1 −1 _ _ = _ _ 0 0 1 1 1 0 0 1 −1 _ _ 2.3Hệphươngtrìnhtuyếntính 51 2.3 Hệphươngtrìnhtuyếntính 2.3.1 Đưavềdạngmatrận Để giải hệ phương trình tuyến tính, ta đưa về dạng ma trận với b là ma trận m×1.Ngoàicácphươngpháptrên,tacóthểsửdụnghàmrref([Ab])để đưamatrậnvềdạngbậcthangrútgọn. Vídụ2.3.1. Giảihệphươngtrìnhtuyếntínhsau: _ _ _ x 1 + 7x 2 −2x 3 = 21 2x 1 + 3x 2 + 7x 3 = 2 x 1 + 8x 2 + 2x 3 = −1 TađưaphươngtrìnhtrênvềmatrậnA,vectơxvàbcódạng: A = _ _ 1 7 −2 2 3 7 1 8 2 _ _ , x = _ _ x 1 x 2 x 3 _ _ , b = _ _ 21 2 −1 _ _ Sauđógiảiphươngtrìnhmatrận:Ax=b. Ghi chú 2.3.2. Trướckhi giải phươngtrìnhtrên, tacầnxemxét phương trìnhnàycónghiệmhaykhôngbằngcáchsosánhhạngcủamatrậnAvà A’=[AB]. Vídụ2.3.3. Chophươngtrìnhsau: _ _ 2 4 3 5 1 7 2 3 5 _ _ X = _ _ 2 5 4 1 3 7 _ _ >> A=[2 4 3;5 1 7;2 3 5];b=[2;4;3]; >> rank(A) ans = 3 52 Đạisốtuyếntính >> rank([A b]) ans = 3 Ta nhận thấy rank(A)=rank(A’)=m do vậy phương trình trên có nghiệm duy nhất. 2.3.2 Sửdụngtínhtoánsymbolic Ngoài phương pháp đưa về dạng ma trận, ta có thể nhập trực tiếp hệ phương trìnhvàsửdụnghàmsolve. Dạng1:solve(’phươngtrình’,’biến’) Vídụ2.3.4. >> solve(’x^2+2*x+a’,’x’) ans = - (1 - a)^(1/2) - 1 (1 - a)^(1/2) - 1 >> solve(’x^2+2*x+a’,’a’) ans = - x^2 - 2*x Dạng2: solve(’phương trình thứ 1’,...,’phương trình thứ n’,’biến thứ 1’,...,’biến thứn’) Vídụ2.3.5. >> S=solve(’x^2-3*x+y’,’y-2+8*x+2*a’,’x’,’y’) S = x: [2x1 sym] y: [2x1 sym] 2.3Hệphươngtrìnhtuyếntính 53 >> S.x ans = (8*a + 113)^(1/2)/2 + 11/2 11/2 - (8*a + 113)^(1/2)/2 >> S.y ans = - 2*a - 4*(8*a + 113)^(1/2) - 42 4*(8*a + 113)^(1/2) - 2*a - 42 >> S=solve(’x^2-3*x+y’,’y-2+8*x+2*a’,’x’,’a’) S = a: [2x1 sym] x: [2x1 sym] >> S.a ans = 2*(9 - 4*y)^(1/2) - y/2 - 5 - y/2 - 2*(9 - 4*y)^(1/2) - 5 >> S.x ans = 3/2 - (9 - 4*y)^(1/2)/2 (9 - 4*y)^(1/2)/2 + 3/2 54 Đạisốtuyếntính BÀITẬP 1. Giảicácphươngtrìnhvàhệphươngtrìnhsauđây: a. x 3 −5x 2 + 3 2 x + 10 = 22 b. Giảihệphươngtrìnhsautheohaicáchdùngmatrậnhoặcdùng hàmsolvevàrútranhậnxétvềhaiphươngpháptrên. _ ¸ ¸ ¸ _ ¸ ¸ ¸ _ x 1 + 3x 2 + 5x 3 −4x4 = 1 x 1 + 8x 2 −17x 3 + 9x 4 = 20 2 3 x 1 + 7 8 x 2 −6x 3 −4x 4 = 20 12x 1 −7x 2 + 22x 3 −x 4 = −1 2. Chohệphươngtrìnhsau: _ x + 5.000y= 17.0 15x + 7.501y= 25.503 a. Giảihệphươngtrìnhtrên. b. Thaygiátrị25.503bằngcácgiátrịsau25.504;25.505;25.501và chobiếtnghiệmcủanóthayđổinhưthếnàosovớiphươngtrình banđầu. c. Chobiếtýnghĩacủahàmrcond. 2.4 Địnhthức, giải hệ phương trìnhtuyến tínhbằngđịnhthức 2.4.1 Địnhthức Mệnhđề2.4.1. ChoA ∈ M n (F).Tacó: a. Akhảnghịch ⇐⇒ |A| = 0. b. Akhôngkhảnghịch ⇐⇒ |A| = 0. Tadùnghàmdetđểtínhđịnhthứccủamatrậnvuông. 2.5Đathứcđặctrưng,trịriêngvàvectơriêng 55 Vídụ2.4.2. Tínhđịnhthứccủamatrậnsau: _ _ 8 9 3 9 6 5 1 1 10 _ _ >> det(A) ans = -316 2.4.2 Giảihệphươngtrìnhtuyếntínhbằngđịnhthức ĐựaphươngtrìnhvềdạngmatrậnAX=b.SauđósửdụngquitắcCramer sauđâyđểgiải. Thuậttoán2.4.3. QuitắcCramer: Kíhiệu: ∆ = |A| ∆ j = |A j |(vớiA j làmatrậnAxóacộtjvàthaybằngcộtb). Trườnghợp1: Nếu∆=0 thì hệ có nghiệmduynhất: x 1 = ∆ 1 ∆ , x 2 = ∆ 2 ∆ , ..., x n = ∆ n ∆ . Trườnghợp2:Nếu∆ = 0và ∃j ∈ 1, 2, ..., n : ∆ j = 0thìhệvônghiệm. Trườnghợp3:Nếu∆ = 0và ∀j ∈ 1, 2, ..., n : ∆ j = 0thìhệcóvôsốnghiệm hoặcvônghiệm. 2.5 Đa thức đặc trưng, trị riêng và vectơ riêng Địnhnghĩa2.5.1. ChoA ∈ M n (F).Giátrịλ ∈ Fđượcgọilàgiátrịriêng củamatrậnAnếutồntạivetơu = 0 ∈ F n saocho : Au = λu. KhiđóvectơuđượcgọilàvectơriêngcủamatrậnAứngvớitrịriêngλ. 56 Đạisốtuyếntính Mệnhđề2.5.2. Giátrị riêngcủamatrậnAlànghiệmcủaphươngtrình det(A −λI) = 0,goilàphươngtrìnhđặttrưngcủaA. Tasửdụnghàmpolyđểtínhphươngtrìnhđặttrưng.Hàmtrênsẽtrả ramộtvectơdòngmàmỗi phầntửlàhệsốtươngứngtheothứtựcủađa thứcđặctrưng. Vídụ2.5.3. ChomatrậnAnhưsau: _ _ 3 −2 7 −5 9 21 12 4 −3 _ _ TínhđathứcđặctrưngcủamatrậnA. >> p=poly(A) p = 1.0e+003 * 0.0010 -0.0090 -0.1870 1.7030 ĐathứcđặctrưngcủaAlà:λ 3 −9λ 2 −187λ + 1703. Sauđótacóthểdùnghàmroots(p)đểtínhnghiệmcủađathứctrên. Hàm[V,D]=eig(A)chotagiátrị riêngvàvectơriêngtươngứng(vectơ riêngtrongmatrậnVlàvectơcột). >> [V,D]=eig(A) V = 0.3521 0.3915 -0.0549 0.6761 -0.9163 0.9788 -0.6472 0.0847 0.1972 D = -13.7070 0 0 0 9.1952 0 0 0 13.5117 Với trị riêng là -13.707 ta có vectơ riêng tương ứng là (0.3521,0.6761,-0.6472). 2.5Đathứcđặctrưng,trịriêngvàvectơriêng 57 BÀITẬP 1. Cho ma trận A ∈ M 50 (F). Xác định các vectơ x nào khi thực hiện tích Axthìkhônglàmthayđổihướngcủavectơx. 2. Tínhđịnhthứccủacácmatrậnsauđây: a. _ _ 2 −5i 23.2 3 −6i 21.2i 3 −7i 11 40 −8i 2 + i 12 −23i _ _ b. _ _ 12222.555 −50000 28123445 197772.22345 −596959394 32344634596.232 −19284785763.2315 −23454564 −235856394.111223 _ _ Kiểmtralạibằngtínhtoánsymbolic. 3. Viếtchươngtrìnhbiệnluậnhệphươngtrìnhtuyếntínhvàthựchiện vớihệphươngtrìnhsau: _ _ 2 8 + m 11 3 + m 7 2 9 1 12 −m _ _ CHƯƠNG 3 Giảitíchhàmmộtbiến 3.1 Cácphéptoántậphợp 3.1.1 Địnhnghĩatậphợpvàcáchkhai báotậphợp trongMatlab •Tậphợp Đólànhữngđốitượngđượcnhómtheomộttínhchấtnàođó. •KhaibáotậphợptrongMatlab MộttậphợptrongMatlabđượckhaibáobằngcáchliệtkêdướidạng mộtvector(vectordònghoặcvectorcột). Vídụ3.1.1. tậphợpA = [1 4 8 9 10]cóthểkhaibáonhưsau: •vectordòng >>A= [1, 4, 8, 9, 10] A= 1 4 8 9 10 •hoặcvectorcột 3.1Cácphéptoántậphợp 59 >>A= [1; 4; 8; 9; 10] A = 1 4 8 9 10 •hoặcđólàtậprỗng >>A= [ ] A = [ ] •ĐểgọicácphầntửtrongtậpA >> A(1) ans= 1 >>A(2) ans= 4 >>A(5) ans= 10 3.1.2 Cácphéptoántrongtậphợp Đốivớimộttậphợpchotrước,nhữngthôngtinvềnóbaogồm: 1. Biếttậpcóphảitậprỗnghaykhông(isempty) Hàm isempty(A)trong Matlab có một đối số, giá trị trả về sẽ là 1 nếu Alàtậprỗng,ngượclạithìgiátrịtrảvềlà0. 60 Giảitíchhàmmộtbiến >>isempty(A) ans= 0 >>B= [ ] B = [ ] >>isempty(B) ans= 1 2. Tìmsốphầntửtrongtậphợp (length) Hàmlength(A) trongMatlabđểchobiếtchiềudài củavectorA, nó cũngchínhlàsốphầntửcủatậphợpAmàtaliệtkê. >>length(A) ans= 5 3. Biếtphầntửchotrướccóthuộctậphợpđãchohaykhông (ismember) Hàmismember(s, A) gồm2đối số. Alàtậphợpchotrướcvàslà phầntửtacầnxácđịnhcóthuộctậphợpAhaykhông. Giátrị của ismember(s, A)sẽlà1nếusthuộcA,ngượclạilà0. >>ismember(2,A) ans= 0 >> ismember(8,A) ans= 1 Ngoàira,đốisốsởtrêncóthểlàmộttậphợp(vector).Giátrịtrảvề củaismember(s, A)sẽlàmộtvectorcóchiềudàibằngđúngchiềudài củamảngsvàcógiátrị tươngứnglà0(nếuphầntửcủastại vị trí đókhôngthuộcA)hoặc1(nếuphầntửcủastạivịtríđóthuộcA). 3.1Cácphéptoántậphợp 61 >>s= [0, 3, 9] s= 0 3 9 >>ismember(s,A) ans= 0 0 1 4. Liệtkêtấtcảcáctậpconcókphầntửcủatậphợpchotrước (nchoosek) Hàmnchoosek(A, k)trongMatlabdùngđểtìmtấtcảcáctậpconk phần tử của tập A, tập A gồm có n phần tử. Giá trị trả về là một ma trậngồmcóC k n dòngvàkcột.Mỗidòngcủamatrậnkếtquảlàmột tậpcongồmkphầntử. >>C= nchoosek(A,4) C= 1 4 8 9 1 4 8 10 1 4 9 10 4 8 9 10 5. Loạibỏnhữngphầntửtrùngnhautrongtậphợp (unique) ChomộttậphợpAchotrước,cóthểtrongtậphợpđócóchứanhững phần tử được liệt kê nhiều lần. Để loại những phần tử trùng nhay trong tậphợpA, tadùnghàmunique(A). NếucácphầntửAkhôngtrùng nhau, thìunique(A)chokếtquảlàA. Ngượclại, kếtquảtrảvềsẽlà mộttậphợp(vector)cósốphầntửíthơnsốphầntửcủaAvàđược sắptheothứtựtăngdần. >>unique(A) ans= 1 4 8 9 10 >>D= [1, 9, 4, 8, 10, 1, 8, 4, 9, 10] D= 1 9 4 8 10 1 8 4 9 10 >>unique(D) 1 4 8 9 10 Khi cóhai tậphợpchotrước, thì cácphéptoángiữachúnggồmcó phéphội,giaovàhiệu. 62 Giảitíchhàmmộtbiến 6. Hộigiữahaitậphợp (union) Hàmunion(A,B)dùngđểtìmhộicủahaitậphợpAvàB.Kếtquả củaunion(A,B)làmộttậphợptrongđóliệtkêcácphầntửtrong A vàBmàkhôngcósựliệtkêlặplại. Ngoài rakếtquảtrảvềsẽđược sắptheothứtựtăngdần. >>E= [2, 3, 5] E= 2 3 5 >>union(A,E) ans= 1 2 3 4 5 8 9 10 >>F= [4, 2, 5, 3, 2, 5] F= 4 2 5 3 2 5 >>union(A,F) ans= 1 2 3 4 5 8 9 10 Dĩnhiên,tacóthểápdụnghàmunionđểtìmhộicủanhiềuhơnhai tậphợpbằngcáchdùnglồngcáchàmunionvàovớinhau >>G= [6, 7] F= 6 7 >>union(union(A,E),G) ans= 1 2 3 4 5 6 7 8 9 10 7. Giaogiữahaitậphợp (intersect) Hàmintersect(A,B)dùngđểtìmphầngiaocủahaitậpAvàB.Kết quảcủaintersect(A, B) làmột tậphợpliệt kênhữngphầntửnào thuộccảhai tậpAvàB, vàtậpgiaonàycũngsẽđượcsắpxếptheo thứtựtăngdần. 3.1Cácphéptoántậphợp 63 >>intersect(A,F) ans= 4 >>intersect(A,E) ans= [ ] Tươngtựnhưtronghàmunion,tacóthểdùnghàmintersect đểtìm giaocủanhiềuhơnhaitậphợpbằngcáchlồngcáchàmintersect vào vớinhau >>intersect(intersect(A,F),E) ans= [ ] 8. Hàmhiệugiữahaitậphợp (setdiff ) setdiff(A, B) sẽ trả về tập A \ B để tìm những phần tử chỉ chứa trong AmàkhôngchứatrongB. Kếtquảcũngđượcsắptheothứtựtăng dầnnhưhaihàmtrên. >>H= [10, 5, 8, 9] F= 10 5 8 9 >>setdiff(A,H) ans= 1 4 >>K= [ ] K= [ ] >>setdiff(K,H) ans= [ ] 9. Hàmtínhhộihiệugiao(setxor) setxor(A,B)dùng để tính (A ∪ B )\(A ∩ B), kết quả là một tập hợp chỉ chứacácphầntửcótrongA, Bmàkhôngchứatrongphầngiao củaAvàB.Cũnggiốngnhưtrên,kếtquảtrảvềsẽlàmộttậpđược sắptheothứtựtăngdần. 64 Giảitíchhàmmộtbiến >>setxor(A,H) ans= 1 4 5 BÀITẬP 1. ChotậpA={2,4,6,8,10,1,0} a. ChobiếttậpAcóphảirỗnghaykhông? b. TínhtổngtấtcảcácphầntửtrongtậpA. c. Xemphầntử0cótrongtậpAhaykhông? 2. ChotậpA,Bgồmcócácphầntửsauđây:A={1,5,9,4,3,2,0,3, 6}vàB={3,4,8,9,10,4,6} a. TậpAgồmcóbaonhiêuphầntử? b. DùnglệngisemptyđểbiếtxemAvàBcóphảilàtậptrốnghay không? c. NếuAvàBlà2tậpkháctrốngthìtìmA∪BvàA∩B. d. XemtậpAcóchứaphầntửtrùngnhauhaykhông? 3. ChohaitậpAvàBnhưtrênbài2. a. Xemtập{0, 2, 4}cóthuộcphầngiaocủahai tậpAvàBhay không? b. TìmphầntửlớnnhấtvàbénhấtcủacảhaitậpAvàB. c. KiểmtraxemtậpAcóphảilàtậpconcủatậpBhaykhông?Và BcóphảilàtậpconcủaAhaykhông? 4. Phát sinh ngẫu nhiên một tập hợp C gồm 100 phần tử bằng hàm rand củaMatlab a. KiểmtraxemtậphợpCcóchứanhữngphầntửnàotrùngnhau haykhông? b. KiểmtraxemgiátrịlớnnhấtcủaAcólớnhơn1haykhông?và giátrịbénhấtcủaAcónhỏhơn0haykhông? c. Phát sinh ngẫu nhiên 1 tập B gồm 10 phần tử. Tính (A∪B)\(A∩B). 3.1Cácphéptoántậphợp 65 5. Phát sinhngẫunhiên1 tậpDgồm9 phầntửbằng lệnhD=3- 3*rand(1,9) a. Kiểmtraxemtậphợpđócóthuộctậpsốnguyênhaykhông? b. Liệtkêtấtcảcáctậpcongồm4phầntửcủatậpD. c. LiệtkêtấtcảcáctậpconcủaD. 6. Mỗi sinhviênnamkhoaToán-Tinhọcđềuchơi bóngđáhoặcbóng chuyền.Biếtrằngcó350bạnchơibóngđá,260bạnchơibóngchuyền và 70 bạn chơi cả hai môn thể thao này. Hỏi khoa Toán-Tin học có bao nhiêusinhviênnam(dùngcácphéptoántậphợp)? 7. Cho x = 1 : 180, y= 1 : 150. Dùng chỉ số logic và hàm mod, liệt kê các phần tử của tập hợp A = các ước số nguyên dương của 180 và của tập hợpB=cácướcnguyêndươngcủa150. XácđịnhcáctậphợpA∪B,A∩B,A\B,B\A . 8. Phát sinh ngẫu nhiên hai số nguyên dương m và n không vượt quá 20. Phát sinh tập hợp A gồm m phần tử nguyên ngẫu nhiên trong khoảng [-10,10] vàBgồmnphầntửngẫunhiêntrongkhoảng[-20, 20]. Xác định: a. A⊂BhayB⊂AhayA=Bkhông? b. A\B;B\A;A∪B;A∩B. c. A 2 ;B 2 ;A×B;B×A. d. Nhậpmộtsốnguyênx.Kiểmtrax ∈ Ahayx ∈ Bkhông? 9. ChoA={1,5,9,4,3,2,0,3,6}vàB={3,4,8,9,10,4,6}vàC= {0,2,4}.Tìm a. (A ∪ B) ∩ C. b. (A ∪ B ∪ C)\(A ∩ B ∩ C). c. A ∩ C ∪ B. 10. ChotậpA,BvàCnhưtrên. a. Tậpnàocónhiềuphầntửnhất. 66 Giảitíchhàmmộtbiến b. Tìmgiátrịlớnnhấttrongcả3tậphợptrên. c. LiệtkêtấtcảcáctậpconcủatậpC.XemtậpconnàocủatậpC làtậpconcủaA. 3.2 symbolicmathcơbản 3.2.1 Kháiniệmchung SymbolicMathToolboxeskếthợptínhtoánbằngchữvàomôi trường MATLAB. Cáctoolboxnàybổsungcáctiệníchsốvàđồthị với cáckiểu tínhtoántoánhọckhácnhau. Tiệních Nộidung Calculus đạohàm,tíchphân,giớihạn,tổngvà chuỗiTaylor LinearAlgebra nghịchđảo,địnhthức,giátrịriêng,phân tíchvàdạngchínhtắccủamatrận Simplification phươngpháprútgọncácbiểuthứcđạisố SolutionofEquations giảibằngchữvàbằngsốcácphươngtrình đạisốvàviphân VariablePrecisionArithmetic đánhgiáđộchínhxáccủacácbiểuthức đạisố Transform biếnđổiLaplace,Fourrier SpecialMathematicalFunction cáchàmtoánhọcđặcbiệtcủacácứng dụngtoánhọckinhđiển 3.2.2 KhởiđộngTOOLBOX 1. Cácđốitượngchữ: Trongphầnnàychúngtasẽxemxétcáchtạovàdùngcácđối tượng chữ. Chúngtacũngsẽ xemxét các biếnchữmặc định. Symbolic MathToolboxđịnhnghĩamộtkiểudữliệuMATLABmớigọilàđối tượngchữhaysym.Bêntrong,mộtđốitượngchữlàmộtcấutrúcsố liệumànólưubiểudiễnchuỗi cáckí tự. SymbolicMathToolbox 3.2symbolicmathcơbản 67 dùngcácđốitượngchữđểbiểudiễncácbiếnchữ,cácbiểuthứcchữ, cácmatrậnchữ. 2. Tạocácbiếnvàcácbiểuthứcchữ: Lệnhsymchophéptaxây dựngcácbiếnvàcácbiểuthứcchữ. >> x = sym(’x’) >>a = sym(’alpha’) tạoracácbiếnchữlàxvàavớixlàxvàalàalpha. Giảsửtamuốntamuốndùngbiếnchữđểbiểudiễntỉ lệvàngρ= 1 + √ 5 2 Tadùnglệnh: >> rho = sym(’(1 + sqrt(5))/2’) Bâygiờtacóthểthựchiêncácphéptoánkhácnhauvớirho.Vídụ: >> f = rho^2 - rho -1 f= (1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2) Tarútgọnbiểuthức: >> simplify(f) ans = 0 Bâygiờgiảsửtamuốngiải phươngtrìnhbậchai f=ax 2 + bx + c. Phátbiểu: >> f = sym(’a*x^2 + b*x + c’) gán biểu thức chữ ax 2 +bx+c cho biến f. Tuy nhiên trong trường hợp nàySymbolicMathToolboxkhôngtạoracácbiếntươngứngvới cácsốhạnga, b, cvàxtrongbiểuthức. Đểthựchiệncácphéptoán bằngchữ(ví dụtíchphân, đạohàm, thaythếv.v)trênftaphải tạo cácbiếnmộtcáchrõràng,nghĩalàcầnviết: 68 Giảitíchhàmmộtbiến >> a = sym(’a’) >> b = sym(b) >> c = sym(’c’) >> x = sym(’x’) hayđơngiảnlà: >> syms a b c x Nóichunglàtacóthểdùngsymhaysymsđểtạocácbiếnchữnhưng nêndùngsymsđểtiếtkiệmthờigian. 3. Biếnđổigiữasốvàchữ (a) Tạocácbiếnthựcvàphức:Lệnhsymchophéptamôtảcác thuộctínhtoánhọccủacácbiếnchữbằngcáchdùngtuỳchọn real.Phátbiểu: >> x = sym(’x’,’real’) >> y = sym(’y’,’real’) hayhiệuquảhơn: >> syms x y real >> z = x + i*y tạorabiếnchữxvàycóthuộctínhlàsốthực.Đặcbiệt: >> f = x^2 + y^2 thựcsựlàsốkhôngâm.Nhưvậyzlàbiếnphứcvàcáclệnh: >> conj(x) ans= x >> conj(z) ans= x - i*y >> expand(z*conj(z)) ans= x^2 + y^2 3.2symbolicmathcơbản 69 Lệnh conj là toán tử tạo số phức liên hợp. Để xóa thuộc tính real củaxtadùnglệnh: >> syms x unreal hay: >> x = sym(’x’,’unreal’) Lệnhclearxkhôngxoáthuộctínhsốreal củax. (b) Tạo các hàmtrừu tượng: Nếuta muốntạo một hàmtrừ tượng(nghĩalàmộthàmkhôngxácđịnh)f(x)cầndùnglệnh: >> f = sym(’f(x)’) Khi nàyf hoạtđộngnhưlàf(x)vàcóthểxửlí bằngcáclệnh toolbox.Vídụđểtínhviphânbậc1taviết: >> df = (subs(f,’x’,’x+h’) -f)/’h’ hay >> syms x h >> df = (subs(f,x,x+h)-f)/h df = (f(x+h)-1f(x))/h ứng dụng này của hàm sym sẽ rất hữu ích trong biến đổi Fourrier, Laplace. (c) DùngsymđểtruycậpcáchàmcủaMaple:Tacóthểtruy cậphàmgiaithừak!củaMaplekhidùngsym. >> kfac = sym(’k!’) Đểtính6!hayk!taviết: >> syms k n >> subs(kfac,k,6) ans = 720 >> subs(kfac,k,n) ans = n! 70 Giảitíchhàmmộtbiến (d) Vídụtạomatrậnchữ: Một ma trận vòng là ma trận mà hàng sau có được bằng cách dịch các phần tử của hàng trước đi 1 lần.Ta tạomộtmatrậnvòngAbằngcácphầntửa, bvàc: >> syms a b c >> A = [a b c; b c a; c a b] A= a b c b c a c a b 4. Tạocáchàmtoánhọcbằngchữ: (a) Dùngcácbiểuthứcchữ: >> syms x y z >> r = sqrt(x^2 + y^2 + z^2) >> t = atan(y/x) >> f = sin(x*y)/(x*y) tạoracácbiểuthứcchữr, tvàf. Tacóthểdùngcáclệnhdiff, int, subs haycáclệnhSymbolicMathToolboxkhácđểxửlí cácbiểuthứcnhưvậy. (b) TạocácM-file: M-file cho phép ta dùng các hàm tổng quát hơn. Chẳnghạn, tamuốntạorahàmsin c = sin(x) x tasẽviết một M-filecónộidungnhưsau: function z = sinc(x) if isequal(x, sym(0)) z = 1; else z = sin(x)/x; end Tacóthểmởrộngcácví dụnhưvậychocáchàmvàbiếnkhác nhau. 3.3Cácbàitoándãysốvàchuỗisố 71 Mộtsốhàmvàbiến/hằngtoánhọctrongMatlab Tênhàm Ghichú Tênhàm Ghichú cos(x) exp(x) hàmemũ sin(x) log(x) logarittựnhiên tan(x) log10(x) logaritcơsố10 acos(x) cos −1 (x) abs(x) trịtuyệtđối asin(x) sin −1 (x) sqrt(x) cănbậchai atan(x) −π/2 ≤ tan −1 ≤ π/2 real(x) phầnthực atan2(x) −π ≤ tan −1 ≤ π imag(x) phầnảo cosh(x) (e x + e −x )/2 conj sốphứcliênhợp sinh(x) (e x −e −x )/2 round làmtròn tanh(x) (e x −e −x )/(e x + e −x ) fix làmtròn acosh(x) cosh −1 (x) sign(x) 1(dương)/0/-1(âm) asinh(x) sinh −1 (x) mod(y,x) phầndưcủay/x atanh(x) tanh −1 (x) rem(y,x) phầndưcủay/x max giátrịlớnnhấtvàchỉsốcủanó eval(f) giátrịmộtbiểuthức min giátrịbénhấtvàchỉsốcủanó feval(f,a) giátrịcủahàm sum tổng polyval giátrịcủahàmđathức sum tổng polyval giátrịcủahàmđathức prod tích poly giátrịcủahàmđathức norm chuẩnvectorhoặcmatrận sort sắpxếptheothứtựtăng roots nghiệmđathức poly giátrịcủahàmđathức i,j sqrt(−1) pi π break thoátvònglặpwhile/for Inf,inf ∞ nargin sốđốisốvào nargout khôngxácđịnh varargin danhsáchcácđốisốvào varargout danhsáchđốisốra 3.3 Cácbàitoándãysốvàchuỗisố 3.3.1 Khái niệmvềdãysố, chuỗi sốvàcáchkhai báo trongmatlab •Dãy số có thể xem là một danh sách các số có thứ tự x 1 , x 2 , x 3 , ..., x n , . . . Trongđóa 1 làgiátrịđầutiên,a 2 làgiátrịthứ2.Tổngquáta n làgiá 72 Giảitíchhàmmộtbiến trị thứn. Đối với dãyvôhạn, giátrị tiếptheosaux n luôntồntại là x n+1 .Ngườitakíhiệunhưsau{x n }hoặc {x n } ∞ n=1 Chẳnghạntacódãysố {x n }= 1 n , trongđóx 1 =1, x 2 = 1 2 , . . . x k = 1 k , x k+1 = 1 k+1 , . . .. •Chuỗisốcóthểđượcđịnhnghĩathôngquadãysố,trongđóphầntử thứnlàs n = ∑ n i=1 x i . Chuỗi ∑ ∞ n=1 1 n đượcxemnhưmộtdãysốcós 1 = ∑ 1 n=1 1 n =1, s 2 = ∑ 2 n=1 1 n = 1 + 1 2 , . . . , s k = ∑ k n=1 1 n = 1 + 1 2 + . . . + 1 k , s k+1 = s k + 1 k+1 • CáchkhaibáodãysốvàchuỗisốtrongMatlab Đểkhai báochuỗi trongmatlabtalàmnhưsau: ví dụtrongtrường hợpchuỗix n = 1 n talàmnhưsau: >> syms n >> xn = 1/n Tươngtựnhưthếđốivớichuỗisố,chuỗis n đượckhaibáonhưsau: >> syms k n >> sn = symsum(1/k, 1, n) vàđốivớichuỗihàm ∑ ∞ k=1 x k takhaibáonhưsau: >> syms x k n >> sn = symsum(x^k, k, 1, n) 3.3.2 Một sốhàmvềxửlí dãysốvàchuỗi sốtrong Matlab 1. Hàmtínhgiớihạn(limit) Hàmlimit trongMatlabdùngđểtínhgiớihạncủadãysốtheonhiều cáchsauđây: •limit(x n , n, a)dùngđểtínhgiớihạncủadãyx n khindầnvềgiá trịa. 3.3Cácbàitoándãysốvàchuỗisố 73 •limit(x n , n, a,right) ; limit(x n , n, a,left) dùngtínhgiới hạnmột bênkhixtiếnvềatừ2phía. >> syms n >> xn=1/n >> limit(xn,n,inf) ans= 0 >>limit(xn,n,5) ans= 0.2 2. Hàmtínhtổngtheobiến(symsum) Nhưtrongphầnví dụtrongchuỗi, hàmsymsumđượcdùngđểtính tổngtheomộtbiến.CúphápcủahàmsymsumtrongMatlabnhưsau : symsum(S,v,a,b),trongđóSlàbiểuthứcphụthuộcvàov(S= 1 v ), hoặcSlàmộthàmsốphụthuộcvàov(S= x v ,xlàbiến).vlàchỉsố tamuốntínhtổngtheocủaStheovtừađếnb. 3. Biểudiễndãy(plot) Dãy số hay chuỗi số có thể gồm vô hạn phần tử, tuy nhiên để minh hoạ trong máy, ta sẽ chọn đến phần tử thứ Nnào đó của dãy hay chuỗi để minhhoạ. >> N=1000 >> for i=1:N X(i)=1/i end >> plot(X) 74 Giảitíchhàmmộtbiến BÀITẬP 1. Dùng đồ thị mô tả các dãy/chuỗi số sau để xem chúng hội tụ hay phân kỳ(chotrướcnđủlớn).Nếuchúnghộitụ,ướclượnggiátrịhộitụ. a. a n = (−1) n n+1 n . b. a n = 2 +{ −2 π } n . c. a n = sin(n) √ n . d. a n = n 3 n! . e. a n = (3 n + 5 n ) 1/n . f. 1.2.3...(2n−1) (2n) n . g. 1.2.3...(2n−1) n! . 2. Tính20tổngriêngđầutiêncủacácchuỗi sau. Vẽtrêncùnghệtrục dãysốhạngtửcủachuỗivàdãygiátrịcáctổngriêngcủachuỗi.Xét xemchúnghộitụhayphânkỳ.Nếuhộitụthìtínhgiátrịhộitụ.Nếu phânkỳthìgiảithíchtạisao. a. ∑ ∞ n=1 12 (−5) n . b. ∑ ∞ n=1 2n 2 −1 n 2 +1 . c. ∑ ∞ n=1 tan(n). d. ∑ ∞ n=1 (0.6) n−1 . e. ∑ ∞ n=1 1 15 1.5 − 1 (n+1) 1.5 . f. ∑ ∞ n=2 1 n(n−1) . g. ∑ ∞ n=1 2n 3n+1 . 3. Xét xem các chuỗi sau hội tụ hay phân kỳ bằng định nghĩa dùng vòng lặpwhilekhi tăngnvới epsilonđủnhỏchotrước. Nếuchúnghội tụ, tínhgiátrịhộitụ. a. 3 + 2 + 4 3 + 8 9 + . . .. b. 1 8 − 1 4 + 1 2 −1 + . . .. c. ∑ ∞ n=1 (−6) n−1 5 n−1 . 3.3Cácbàitoándãysốvàchuỗisố 75 d. ∑ ∞ n=0 π n 3 n+1 . e. ∑ ∞ n=1 (3 n +2 n ) 6 n . f. ∑ ∞ n=1 _ 0.8 n−1 −0.3 n _ . 4. Tìmgiátrịnvừađủđểchuỗihộitụ(dùngvònglặpwhileđểtăngn). a. ∑ ∞ n=1 (−1) n+1 n 4 (saisốnhỏhơn0.001). b. ∑ ∞ n=1 (−2) n n! (saisốnhỏhơn0.01). c. ∑ ∞ n=1 (−1) n n 4 n (saisốnhỏhơn0.002). 5. Ước lượng giá trị của tổng chuỗi đến 4 chữ số thập phân (theo tư tưởng củabàitrên) a. ∑ ∞ n=1 (−1) n+1 n 5 . b. ∑ ∞ n=1 (−1) n n 8 n . c. ∑ ∞ n=1 (−1) n 3 n n! . 6. Tìmgiớihạncủadãysốsau: a. a n = { √ n −3} ∞ n=3 . b. a n = { n n+1 } ∞ n=1 . c. a n = {cos nπ 6 } ∞ n=0 . 7. Liệtkê5phầntửđầutiêncủadãysốsau: a. a n = 1 −(0.2) n . b. a n = n+1 3n−1 . c. a 1 = 3, a n+1 = 2a n −1. 8. Nếu 1000 đôla được đầu tư với lợi nhuận 0.6%. Sau n năm thì vốn đầu tưsẽlênđến1000(1.6) n a. Liệtkê5phầntửđầutiêncủadãysốtrên. b. Dãysốtrêncóhộitụhaykhông?Giảithích. 9. Chỉramộtgiátrịrđểdãynr n hộitụ. 76 Giảitíchhàmmộtbiến 3.4 Cácbàitoángiớihạnhàmsốvàtínhliên tụccủahàmsố 3.4.1 Giớihạncủahàmsố Trongmatlabtadùnglệnhlimit đểtínhgiớihạncủahàmsố.Cụthể: •limit(f,x,a):Tínhgiớihạncủahàmsố fkhixtiếnvềa. •limit(f,x,a,’right’)hoặclimit(f,x,a,’left’):Tínhgiớihạntráihoặcgiới hạnphảicủahàmsốkhixtiếnvềa. >> syms x >> limit(sin(x)/x,x,0) ans = 1 >> limit(1/x,x,0) ans = NaN >> limit((1 + x/n)^n,n,inf) ans = exp(x) Ngoàiramatlabcòncóthểtínhgiớihạntráivàgiớihạnphảicủamộthàm số. >> syms x >> limit(1/x,x,0,’right’) ans = inf >> limit(1/x,x,0,’left’) ans = -inf 3.4Cácbàitoángiớihạnhàmsốvàtínhliêntụccủahàmsố 77 Ngoàirachúngtacóthểápdụnghàmlimit đểtínhđạohàmcủamộthàm sốbằngđịnhnghĩacủađạohàm. Địnhnghĩa3.4.1. Đạohàmcủamộthàmsốftạia,kýhiệulàf (a)là f (a) =lim h→0 f(x + h) −f(x) h nếugiớihạnnàytồntại. Chohàmsốg(x)=cos(x)vàf(x)=arctan(x), tìmg (a)vàf (a)với a ∈ R? >> syms a h >> dg = limit( (cos(a+h) – cos(a))/h, h, 0 ) dg = –sin(x) >> df =limit((atan(a+h)-atan(a))/h,h,0) df = 1/(1+a^2) 3.4.2 Sựliêntụccủahàmsố Địnhnghĩa3.4.2. Hàmsốfliêntụctạianếu lim x→a f(x) = f(a). Nhưvậyđểmộthàmsốliêntụctại mộtđiểmthì hàmsốđóphải thỏa bađiềukiệnsau: 1. f(a)xácđịnhvớialàmộtphầntửtrongtậpxácđịnh, 2. lim x→a f(x)tồntại, 3. lim x→a f(x) = f(a). Dựavàođịnhnghĩahàmsốliêntụctạimộtđiểm,chúngtacóthểsửdụng cáccâulệnhtrongmatlabnhưsau: 78 Giảitíchhàmmộtbiến 1. Tínhgiớihạncủahàmsốfkhix → abằnglệnhlimit. 2. Tínhgiátrịhàmsốtạiabằnglệnhsubs. Vídụ3.4.3. Cho f(x) = _ _ _ x 3 −2x 2 −x + 2 x −2 x = 2 2 x = 2 >> syms x >> limit((x^3-2*x^2-x+2)/(x-2),x,2) ans = 3 Vìlim x→2 f(x) = 3 = 2 = f(2)nênfkhôngliêntụctạix = 2.Ngượclại,f liêntụctạitấtcácđiểmx = 2.Cụthể,xétsựliêntụccủaftạix = 0: >> syms x >> limit((x^3-2*x^2-x+2)/(x-2),x,0) ans = -1 Bàitoán3.4.4. 1. Tìmhiểulệnhsubstrongtrườnghợpcónhiềubiến. 2. Ápdụnglệnhlimit đểtínhgiới hạnhàmsốtrongtrườnghợphàm nhiềubiến. 3.4Cácbàitoángiớihạnhàmsốvàtínhliêntụccủahàmsố 79 BÀITẬP 1. Khảosáttínhliêntụccủahàmsốtạia.Vẽđồthịhàmsố. a. f(x) = ln |x −2| a = 2 b. f(x) = _ 1 x −1 x = 1 a = 1 2 x = 1 c. f(x) = _ e x x < 0 a = 0 x 2 x ≥ 1 d. f(x) = _ _ _ x 2 −x x 2 −1 x = 1 a = 1 1 x = 1 e. f(x) = _ _ _ cos(x) x < 1 a = 0 0 x = 1 1 −x 2 x > 0 f. f(x) = _ _ _ 2x 2 −3x −3 x −3 x = 3 a = 3 0 x = 3 2. Vẽđồthịhàmsốvàxácđịnhcácđiểmbấtliêntụccủacáchàmsố. a. y= 1 1 + e 1/x b. y= ln (tan 2 x) 3. Sửdụngmatlabchứngminhcáchàmsốsaoliêntụctrên R? a. f(x) = _ x 2 x < 1 √ x x ≥ 1 b. f(x) = _ sin(x) x < π/4 cos(x) x ≥ π/4 4. Xácđịnhf (0)cótồntạihaykhông? a. f(x) = _ xsin 1 x x = 0 0 x = 0 80 Giảitíchhàmmộtbiến b. f(x) = _ x 2 sin 1 x x = 0 0 x = 0 c. f(x) = arctan _ a 2 −x 2 a 2 + x 2 _ d. f(x) = 1 x arctan _ ln 1 x 2 _ 3.5 Cácbàitoántíchphânhàmmộtbiến Trongmatlab,đểtínhtíchphânhàmmộtbiếnchúngtadùnglệnhint. 3.5.1 Tíchphânbấtđịnh int(f,x):Tínhtíchphânbấtđịnhcủahàmftheobiếnx. Vídụ3.5.1. Tínhtíchphânbấtđịnhcủahàmsốf(x) = x 3 arctan(x)? >> syms x >> int(x^3*atan(x),x) ans = 1/4*x^4*atan(x)-1/12*x^3+1/4*x-1/4*atan(x) Chúngtacóthểrútgọnkếtquảtínhhìnhthứcbằnghàmsimplehoặc simplify. 3.5.2 Tíchphânxácđịnh int(f,x,a,b):Tínhtíchphânxácđịnhcủahàmftheobiếnxvớicậnlấytích phântừađếnb. Vídụ3.5.2. Tínhtíchphânxácđịnh I= f(x) = ∫ π/4 0 x 3 arctan(x)dx 3.5Cácbàitoántíchphânhàmmộtbiến 81 >> syms x >> I=int(x^3*atan(x),x,0,pi/4) I = 1/1024*pi^4*atan(1/4*pi)-1/768*pi^3+1/16*pi-1/4*atan(1/4*pi) Kếtquảởtrênchothấymatlabhiểupi nhưlàmộtbiếnhìnhthức. Dođó đểbiểudiễnkếtquảdướidạngsốthựctadùnglệnhEVALnhưsau: >> I=eval(I) I = 0.0529 3.5.3 Tíchphânsố Trongthực tế, nhiềutíchphânkhôngthể tínhnguyênhàmđược. Trong trườnghợpđó, chúngtasửdụngtíchphânsốđểtínhtíchphânxácđịnh. Matlab cung cấp cho chúng ta hàm tính tích phân số: quad. Hàm quaddùng đểtínhtíchphânsốbằngphươngphápcầuphương. Sinhviêncóthểtìm hiểuphươngpháptíchphâncầuphươngtrongcácgiáotrìnhGiảitíchsố. Vídụ3.5.3. Tính tích phân xác định sau bằng phương pháp tích phân cầu phươnggầnđúng I= f(x) = ∫ 1 0 e x arctan(x 2 ) cos(x) dx. >> F = inline(’exp(x).*atan(x.^2)./cos(x)’); >> Q=quad(F,0,1) Q = 0.9230 82 Giảitíchhàmmộtbiến BÀITẬP 1. Viếtmộthàmhoặcđoạnchươngtrìnhtínhxấpxỉtíchphânxácđịnh bằngphươngphápđiểmgiữasau: ∫ b a f(x)dx ≈ n ∑ i=1 f(¯ x i )∆x, trong đó ∆x = b −a n , v௠x i = 1 2 (x i−1 +x i ). Áp dụng tính các tích phân xácđịnhtrongkhoảng(a, b)chínhxácđếntámchữsốthậpphân.So sánhkếtquảcủaphươngphápnàyvớikếtquảbằnglệnhquad. a. ∫ 1 0 e x 2 dx 1 + e 2x b. ∫ 10 2 √ x 5 + 1dx c. ∫ π/2 0 tan 4 xdx d. ∫ 1 0 cos x 2 dx e. ∫ 5 1 x 2 e −x 2 dx 2. Hàmtíchphânsine Si(x) = ∫ x 0 sint t dx cóvaitròquantrọngtrongkỹthuậtđiện. a. VẽđồthịcủaSi. b. Tìmnhữngđiểmmàtạiđóhàmnàyđạtcựcđạiđịaphương. c. Tìmtọađộcủađiểmuốnđầutiênphíabênphảigốctọađộ. d. Hàmsốcótiệmcậnnganghaykhông? 3. SửdụngđồthịướclượnggiaođiểmcủahàmsốvớitrụchoànhOxvà tínhxấpxỉ diệntíchnằmbêndưới đườngcongvàbêntrêntrụcOx củacáchàmsốbêndưới. a. y= x + x 2 −x 4 . b. y= 2x + 3x 4 −2x 6 . 3.5Cácbàitoántíchphânhàmmộtbiến 83 4. ChomộtvậtthểcóbiêngiớihạnbởitrụcOy,đườngthẳngy= 1,và đườngcongy= 4 √ x.Tínhdiệntíchcủavậtthể? 5. Chođườngcongcóphươngtrìnhy 2 =x 2 (x + 3). Đồthị củađường congnàycómộtphầntạohìnhmộthìnhvòngcung.Hãyvẽđồthịvà tínhdiệntíchcủahìnhtạobởihìnhvòngcungđó. 3.5.4 Các hàm trong Matlab dùng cho bài toán vi phân hàmmộtbiến 1. Đạohàmcấpktheomộtbiến(diff ) Hàmdiff dùngđểtìmđạohàmcấpkcủahàmsốf(x, y)theobiếnx theocúphápdiff(f, x, k) haytheobiếnytheocúphápdiff(f, y, k). Nhưngkhi hàmsốchỉ phụthuộcvàoduynhấtmộtbiếnxthì tacó diff(f,k). >> syms a b c x >> f = a*x^3 + x^2 - b*x - c f = a*x^3 + x^2 - b*x - c >> diff(f) ans = 3*a*x^2 + 2*x - b >> diff(f,a) ans = x^3 >> diff(f,2) ans= 6*a*x + 2 >> diff(f,a,2) ans= 0 Hàmdiff cóthểdùngđối sốlàmatrận. Trongtrườnghợpnàyđạo hàmđượcthựchiệntrêntừngphầntử. >> syms a x 84 Giảitíchhàmmộtbiến >> A = [cos(a*x),sin(a*x);sin(a*x),cos(a*x)] A = cos(a*x) sin(a*x) sin(a*x) cos(a*x) >> dy = diff(A) dy = sin(a*x)*a cos(a*x)*a cos(a*x)*a sin(a*x)*a Ta khảo sát biến đổi từ toạ độ Euclide (x, y, z) sang toạ độ cầu (r, λ, φ) thựchiệnbằngcáccôngthức: x = rcos λcos φ y= rcos λsin φ z= rsin λ Để tính ma trận Jacobi Jcủa phép biến đổi này ta dùng hàm jacobian. ĐịnhnghĩatoánhọccủaJlà: J(x, y, z) = ∂(x, y, z) ∂(r, λ, φ) Đểdễviếttadùngkítựlthaychoλvàfthaychoφ.Cáclệnh >> syms r l f >> x = r*cos(l)*cos(f); >> y = r*cos(l)*sin(f); >> z = r*sin(l); >> J = jacobian([x; y; z], [r l f]) J = cos(l)*cos(f) –r*sin(l)*cos(f) –r*cos(l)*sin(f) cos(l)*sin(f) –r*sin(l)*sin(f) r*cos(l)*cos(f) sin(l) r*cos(l) 0 >> detJ = simple(det(J)) detJ = –cos(l)*r^2 3.5Cácbàitoántíchphânhàmmộtbiến 85 Chú ý là đối số thứ nhất của hàm jacobianphải là vec tơ cột và đối số thứ hai là vectơhàng. Hơn nữa do định thức của ma trận Jacobian làbiểuthứclượnggiáckháphứctạpnêntadùnglệnhsimpleđểthay thếvàrútgọn. 2. Khai triểnTaylorKhaitriểnTaylordùngđểxấpxỉmộthàmsốcó đạohàmởmọicấpthànhmộtđathứcbậcntronglâncậnmộtđiểm chotrước, với sai sốchophép. HàmTaylor trongMatlabtaylor có nhữngcúphápsauđây: •taylor(f(x))khai triển Taylor hàm f(x) đến bậc 5, trong vùng lân cận0. •taylor(f(x),n) khai triểnTaylor hàmf(x) đếnbậcn − 1, trong vùnglâncận0. •taylor(f(x),a)khai triểnTaylorhàmf(x)đếnbậc5, trongvùng lâncậna. •taylor(f(x),a,n)khaitriểnTaylorhàmf(x)đếnbậcn − 1,trong vùnglâncậna. Đôi khi MATLABtrảlại mộtbiểuthứcđặctrưngquákhóđểcóthể đọc. Mộtsốcôngcụcósẵntrợgiúplàmchobiểuthứcdễđọchơn. Trướctiênđólàhàmpretty. Lệnhnàyhiểnthị biểuthứcđặctrưng theomộtkhuônmẫutươngtựnhưkiểutoánhọc. >> x = sym(’x’); >> f = taylor(log(x+1)/(x-5)) f = -1/5*x+3/50*x^2-41/750*x^3+293/7500*x^4-1207/37500*x^5 >> pretty(f) ans= 2 41 3 293 4 1207 5 -1/5 x + 3/50 x - --- x + ---- x - ----- x 750 7500 37500 86 Giảitíchhàmmộtbiến BÀITẬP 1. Tìmđạohàmcấp1củacáchàmsốsauđây: a. f(x) = x 6 b. f(x) = √ x c. f(x) = x √ x 2. Tìmđạohàmcấp1vàcấp2củacáchàmsốsauđây: a. f(x) = x 4 −3x 3 −16x b. f(x) = √ x + x 1 3 c. f(x) = sin(x)x + x 4 3. Phươngtrìnhchuyểnđộngcủamột chất điểmcódạngs=t 3 − 3t. Trongđóscóđơnvịlàmétvàtcóđơnvịlàgiây.Tìm a. Vậntốcvàgiatốccủachuyểnđộng. b. Giatốcchuyểnđộngsau2giây. c. Giatốcchuyểnđộngkhivậntốcbằng0. 4. Một chất điểm chuyển động có dạng phương trình s = 2t 3 −7t 2 +4t+1. Trongđóscóđơnvịlàmétvàtcóđơnvịlàgiây.Tìm a. Vậntốcvàgiatốccủachuyểnđộng. b. Giatốcchuyểnđộngsau1giây. c. Vẽđồthịcủachuyểnđộng,cùngvớivậntốcvàgiatốc. 5. Tìmtrênđườngcongy= 2x 3 + 3x 2 −12x + 1điểmmàtiếptuyếnvới đườngcongtạiđiểmđósongsongvớitrụchoành. 6. Phươngtrìnhy + y − 2y=x 2 đượcgọi làphươngtrìnhvi phânvì nóchứahàmsốchưabiếty(x),đạohàmcấp1vàcấp2củanó.Tìm3 hệsốA,BvàCđểhàmsốy= Ax 2 + Bx + Clànghiệmcủaphương trìnhviphântrên. 7. Vớinhữnggiátrịnàocủaxthìđồthịhàmsốf(x) = x 3 + 3x 2 + x + 3 cótiếptuyếnsongsongvớitrụchoành. 3.5Cácbàitoántíchphânhàmmộtbiến 87 8. So sánh đạo hàm của 2 hàm số f(x) = e x và g(x) = x e . Hàm số nào sẽ tăngnhanhhơnkhixcànglớn? 9. Tìmđạohàmcấp1vàcấp2củahàmsốf(x)=2x − 5x 3/4 vànhận xét. 10. Tìmvị trí trênđườngcongf(x) =1 + 2e x − 3xsaochotiếptuyến tạiđósongsongvớiđườngthẳng3x − y= 5.Vẽtrêncùngđồthịhai đườnghàmsốtrênbằnghàmezplotcủaMatlab. 11. Chohàmsốf(x) = x 2 x+1 .Tìmf (1). 12. Mộtnhàmáysảnxuấtnhữngbósợivớichiềurộngcốđịnh.Cốlượng sợi q(đơnvị yards)đượcbánlàhàmcủagiábánp(đơnvị đôla), có thểbiểudiễndướidạngq=f(p).Tổngthunhậpvớigiábáncốđịnh plàR(p)=pf(p). a. Cóýnghĩagìkhinóilàf(20) = 20000vàf (20) = −350 b. Dùngcâua,tínhR (20) 13. KhaitriểnTaylorhàmsốf(x)tronglâncận0(bậc5). a. f(x) = e x b. f(x) = sin(x) c. f(x) = cos(x) d. f(x) = ln(x) Sauđósosánhgiátrịxấpxỉvàgiátrịđúngtạicácđiểm0.4và0.1. 14. KhaitriểnTaylorhàmsốf(x)tronglâncận1đếncấp9 a. xe x b. cosh(x) c. ln(1 + x) d. x 4+x 2 CHƯƠNG 4 CơhọcvàXácsuất-Thốngkê 4.1 Cơhọc 4.1.1 Độnghọcchấtđiểm Độnghọcchấtđiểm: là môn học nghiên cứu chuyển động của vật thể mà kích thước của nó quá nhỏ so với quỹ đạo. Các tác nhân như khối lượng, lực, mômentkhôngđượcđềcậpđếntrongmônhọcnày. Độnghọcchấtđiểmquantâmđếncácđại lượng: (1)tọađộ(vị trí)x= (x 1 , . . . , x n ),(2)vậntốcv=(v 1 , . . . , v n )và(3)giatốca=(a 1 , . . . , a n )với nlàchiềukhônggianđangxét.Quanhệgiữacácđạilượngnàynhưsau v = dx dt =˙ x, a = dv dt =¨ x (4.1) Phươngtrìnhchuyểnđộng: Trong không gian 1 chiều, gọi t 0 là thời điểm bắtđầukhảosátchuyểnđộng,x 0 , v 0 , a 0 lầnlượtlàvịtrí,vậntốcvàgiatốc tạithờiđiểmđó.Từphươngtrình(4.1)tatìmđược x(t) = t ∫ t 0 v (τ) dτ+ x 0 , v(t) = t ∫ t 0 a(τ)dτ+ v 0 (4.2) Tronghọctrìnhnày,cácthànhphầncủavectơchỉphụthuộcvàothờigian màkhôngphụthuộcvàocácthànhphầnkháccủavectơđó. Vì vậytrong 4.1Cơhọc 89 khônggiancósốchiềulớnhơn1,chúngtacũngthuđượccácphươngtrình chuyểnđộngtươngđươngvớitrongkhônggian1chiều. x i (t) = t ∫ t 0 v i (τ) dτ+ x i (t 0 ), v i (t) = t ∫ t 0 a i (τ)dτ+ v i (t 0 ) (4.3) Ví dụ4.1.1. Trongkhônggian1chiều,giảsửgiatốccủavậtthểlàhằng sốtheothờigiana = k.Dựatheophươngtrình(4.2),tìmbiểudiễncủavận tốcvàtọađộcủavậtthểtheothờigianvàcácgiátrịđầu »symsx0v0kt0ttt Tìmvậntốctứcthời »v=int(k,tt,t0,t)+v0 Đổibiếntừtsangtt »v=subs(v,t,tt); Tìmtọađộtạithờiđiểmt »x=int(v,tt,t0,t)+x0 Ví dụ4.1.2. Trongkhônggian2chiều,bàitoánnémxiênđượcphátbiểu nhưsau:mộtvậtđượcnémlêntrờivớivậntốcv 0 theophươnghợpvớimặt đấtgócα.vậtchịugiatốctrọngtrườngtheophươngthẳngđứnga y = g= −10m/s 2 . Dựa theo phương trình (4.3), tìm biểu diễn của vận tốc và tọa độ củavậtthểtheothờigianvàcácgiátrịđầu. »symsx0y0v0galt0ttt Cácvậntốcđầu »v0x=v0*cos(al);v0y=v0*sin(al) Vậntốctứcthờiv x »vx=v0x Tọađộxtheothờigian »x=int(vx,tt,t0,t)+x0 Vậntốctứcthờiv y »vy=int(g,tt,t0,t)+v0y Đổibiếntừtsangtt »vy=subs(vy,t,tt); Tọađộytheothờigian »y=int(vy,tt,t0,t)+y0 Phươngtrìnhgiaođiểm: Trongquátrìnhchuyểnđộng,khi2vậtAvàB gặpnhau,tathuđượchệphươngtrìnhsau x A i (t) = x B i (t)∀i (4.4) Giảihệphươngtrìnhtrên,taxácđịnhđượcthờiđiểm2vậtgặpnhau,sau đótìmlạicácgiátrịtoạđộ,vậntốc. 90 CơhọcvàXácsuất-Thốngkê Ví dụ4.1.3. Xe1chạytừthànhphốAđếnthànhphốBvớivậntốcđều 30km/h. Cùng lúc với xe 1, xe 2 chạy từ B đến A với vận tốc đầu là 20km/h, giatốc10km/h 2 . QuãngđườngABdài 280câysố, hỏi khi nào2xegặp nhau?VịtrígặpnhaucáchAbaoxa? »symst Cácgiátrịchotrước »v1=30;v20=20;a2=10;sAB=280; PTCĐcủaxe1 »x1=v1*t PTCĐcủaxe2 »x2=-a2*t ∧ 2/2-v20*t+sAB Thờiđiểm2xegặpnhau »ts=solve(’30*t=-5*t ∧ 2-20*t+280’,t)) Chọngiátrịhợplý »ts=4 KhoảngcáchtừđóđếnA »x1=v1*ts Vậntốctrungbình: Đôi khi, đểgiảmbớtsựphứctạp, người takhông quantâmđếnvậntốctứcthời màchỉ chúýđếnvậntốctrungbình. Khi chất điểm M di chuyển trong khoảng thời gian từ t 1 đến t 2 , thì vận tốc trung bìnhcủanólà v tb = 1 t 2 −t 1 t 2 ∫ t 1 v (τ) dτ (4.5) vớiv(τ)làvậntốctứcthờiđượctínhbởicôngthức _ n ∑ i v 2 i _ 1 2 . Ví dụ 4.1.4.Trong bài toán ném nghiêng, vật được ném với vận tốc 30 √ 3m/s theophươnghợpvới mặtđất60 o . Tínhvậntốctrungbìnhcủavậttrong mỗi nửa giây từ lúc được ném cho đến khi chạm đất. Vẽ đồ thị vận tốc trung bìnhtheothờigian. 4.1Cơhọc 91 »symsttt Cácgiátrịchotrước »v0=30*sqrt(3);al=pi/3;g=-10; Cácvậntốcđầu »v0x=v0*cos(al),v0y=v0*sin(al) Vậntốctứcthờiv x »vx=v0x Vậntốctứcthờiv y »vy=int(g,tt,0,t)+v0y; Vậntốctứcthờiv »v=sqrt(vx ∧ 2+vy ∧ 2) Đổibiếntừtsangtt »vy=subs(vy,t,tt) Tọađộytheothờigian »y=int(vy,tt,0,t) Tìmthờiđiểmybằng0 »[ts]=solve(’(-5)*t*(t-9)=0’) Chọngiátrịhợplý »ts=9; Tínhnguyênhàmcủav »S=int(v,t) Chiakhoảngthờigian »T1=[0:0.5:ts-0.5],T2=[0.5:0.5:ts] Tinhvậntốctrungbình »Vtb=(subs(S,t,T2)-subs(S,t,T1))/0.5 Vẽđồthịvậntốctb »stairs([T1ts],[VtbVtb(end)]) 0 50 100 150 200 0 50 100 t=0s 0 100 200 0 50 100 x y t=3s 0 100 200 0 50 100 x y t=6s 0 100 200 0 50 100 x y t=9s Hình4.1.1:Môphỏngvậtnémxiên 92 CơhọcvàXácsuất-Thốngkê BÀITẬP 1. MộtchấtđiểmPdi chuyểndọctheođườngthẳngtheophươngtrình x = 4t 3 + 2t + 5. a.Xácđịnhtọađộ,vậntốcvàgiatốckhit = 3. b. TìmvậntốctrungbìnhvàgiatốctrungbìnhcủaPtrongkhỏang thờigiantừgiâythứ3đếngiâythứ4. 2. Một chất điểmdi chuyểndọc theođườngthẳngtheophươngtrình x = 8t 2 + 2t.Vẽcácđồthịtọađộ,vậntốcvàgiatốctheothờigian. 3. Thành phần x và ycủa tọa độ chất điểm M được cho bời phương trình x = 10t 2 + 2t,y= t 3 + 5. a.VẽđồthịthểhiệnquỹđạocủaM. b.XácđịnhvậntốcvàgiatốccủaMtạithờiđiểmt = 2. 4. Tại thời điểm đầu, chất điểm N có tọa độ x = 5, y= −15. Thành phần vậntốccủanóđượcchobởiphươngtrìnhv x =20t + 5,v y =t 2 − 20. Xácđịnhtọađộ,vậntốcvàgiatốcvậtthểtạit = 2. 5. Mộtchấtđiểmdi chuyểndọctheođườngthẳngvới giatốca=2 √ v. tạit = 2tọađộnólàx = 64/3vàvậntốclàv= 16.Xácđịnhtọađộ, vậntốcvàgiatốcvậtthểtạit = 3. 6. XeAxuấtpháttạithànhphốCvớivậntốcđềuv A = 60km/h.XeB cũngxuấtpháttừthànhphốCvớivậntốcđầuv B 0 =20km/hvàgia tốcđềua B = 10km/h 2 . a. Biểu diễn quan hệ vị trí - thời gian của 2 xe trên cùng 1 đồ thị trong từngtrườnghợp2xechạycùngchiều,ngượcchiều. b. Tìm phương trình biểu diễn khỏang cách của 2 xe trong trường hợp 2xechạycùngchiều,ngượcchiều. c. 2xechạycùngchiều. Xácđịnhthời điểm2xegặpnhau. Khỏang cáchtừđiểmgặpnhauđếnthànhphốClàbaoxa? d. 2 xe chạy ngược chiều. Khi hai xe có cùng độ lớn vận tốc thì khoảng cách2xelàbaonhiêu. 4.1Cơhọc 93 7. Giảilạibàitập6trongtrườnghợpxeBxuấtpháttrễhơnxeA1giờ đồnghồ. 8. Giảilạibàitập6trongtrườnghợpxeBxuấtpháttrễhơnxeA1giờ đồnghồvàxuấtpháttại vị trí cáchthànhphốC20kmngượchướng chuyểnđộngcủaxeA. 9. Tạitoạđộx = 0m,độcao10m,lúct = 0scó1conchimbayvớivận tốc đều v c = 2m/s. Một người thợ săn đứng tại tọa độ x = −2m nhắm bắnconchim. Tênbayralúct=1sởđộcaoh=1.5mvới vậntốc v 0 = 25m/shợpvớiphươngnằmngang45 o . a.Ngườithợsăncóbắntrúngconchimhaykhông? b. Nếukhôngbắntrúng, anhtaphải chỉnhgócbắnlàbaonhiêuđể bắntrúng? 10. Một con thỏ chạy dọc theo phương Ox với vận tốc không đổi v t = 4m/s. Mộtconcáođứngcáchthỏ10mtheophươngOycũngbắtđầuchạy hướngtheoconthỏvớivậntốcv c = 6m/s.Tìmquỹđạocủaconcáo. Lúcnàothìconcáobắtđượcconthỏ? 4.1.2 Sóngcơhọc Sóngcơhọc: là những dao động cơ học lan truyền theo thời gian trong một môitrừơngvậtchất.Ởđâychỉcótrạngtháidaođộngđượctruyềnđi,còn bảnthâncácphầntửvậtchấtchỉdaođộngtạichỗ.Cáchiệntượngsóngcơ họcthườnggặptrongđờisốnglà:sựdaođộngcủamặtnướckhicóvậtthể rơixuống,sựlantruyềnâmthanhtrongkhôngkhí,sựdaođộngcủacácbộ phậnxemáykhiđangchạy. Nhưđãnóiởtrên,tacầnphânbiệtrõ2chuyểnđộngcủasóngcơhọc:(1) sựdaođộngvà(2)sựtruyềnsóng. Tronggiáotrìnhnày, chúngtachỉ đề cậpđếnsóngnganglàlọaisóngcóphươngdaođộngvuônggócvớiphương truyềnsóng.NếuxéttrêntrụcOx,thìvậtchấtdaođộngtạichỗtheotrục OyvàlantruyềnsựdaođộngtheotrụcOx.Vídụđơngiảnvàdễhiểunhất làhìnhảnh”sóngngười” trênsânvậnđộngtrongcáctrậnbóngđá. 94 CơhọcvàXácsuất-Thốngkê Sựdao động: Một chất điểmMđược gọi làdaođộngnếutọađộcủa nótuântheoquytắc: y M =A M sin(ωt + ϕ). TrongđóAđượcgọi làbiên độ,làđộdịchchuyểnlớnnhấtmàchấtđiểmcóthểđạtđược;ωđượcgọilà vậntốcgóc,chobiếtsựdaođộngnhanhhaychậmcủasóngvàϕđượcgọi làphabanđầu,chỉtrạngtháibanđầucủasựdaođộng. Sự truyền sóng: được đặt trưng bởi vận tốc truyền sóng v. Theo đó phương trìnhdaođộngtại điểmCdonguồndaođộngtừMtruyềnđếncódạng y C = y CM = A M sin(ωt + ϕ −ωd/v)vớidlàkhỏangcáchMN. Ví dụ4.1.5. Tạithờiđiểmt=0,mộtnguồndaođộngtácđộngvàođiểm M(x M =0)trênmặthồđangnằmyênkhiếnchođiểmMdaođộngtheo biểuthứcy= 3sin(10t).BiếtsóngtruyềntheohướngOxvớivậntốcv= 2. (a)Tạigiâythứ3,điểmMđãtruyềnsóngđếnvịtrínàocủahồ?Xácđịnh daođộngMlúcđó. (b)Tạigiâythứ5,xácđịnhnhữngđiểmnàocócùngdaođộngnhưM. (c)Tạigiâythứ7,xácđịnhnhữngđiểmnàocócùngđangởđỉnhsóng(dao độngbằngbiênđộ). (d)Vẽđồthịthểhiệnmặthồtạithờiđiểmt = 10. 4.1Cơhọc 95 Cácgiátrịđầukhácbằng0 »symstdk2p Cácgiátrịchotrứơc »y=3*sin(10*t);v=2; a)Vịtrísónglanđến »ta=3;xa=v*ta DaođộngcùaMlúcđó »yM=subs(y,t,ta) b)ωd/v= k2π »dD=solve(’10*d/2=k2p’,d) Chọntùyýhệsốk »k=-50:50 Cácđiễmtươngứng »dD=k*2*3.14/5 Cácđiểmthoảyêucầu »dD=dD(dD0) c)ωt −ωd/v= π/2 + k2π »dD=solve(’10*7-10*d/2=k2p+3.14/2’,d) Chọntùyýhệsốk »k=-50:50 Cácđiểmtươngứng »dD=1.3686-0.2*k*2*3.14; Cácđiểmthoảyêucầu »dD=dD(dD0) d)Toạđộsónglantới »td=10;xd=v*td Tạocácnúttrênmặthồ »X=linspace(0,xd,1000) Daođộngcủacácnút »Y=3*sin(10*td-10*X/v) Vẽđồthịmặthồ »plot(X,Y) Sựchồngchấtdaođộng: Chúng ta sẽ nghiên cứu sự dao động của các vật chất chịu tác động của nhiều nguồn truyền cùng một lúc. Giả sử có 2 nguồn MvàN,phươngtrìnhdaođộngcủavậtchấtClà: y C = y CM + y CN (4.6) Ví dụ4.1.6. Tại thời điểmt=0, 2nguồnMvàNởcáchnhaukhoảng MN=1mbắtđầutạodaođộngvới biênđộA M =5cm, A N =8cm, vận tốc góc ω M = 10rad/s, ω N = 20rad/s, pha ban đầu ϕ M = ϕ N = 0. Cả 2 đều truyềndaođộngvới vậntốcv=0.2m/s. Tìmdaođộngcủacácvậtchất nằm giữa đoạn MNtại giây thứ 10. (Lúc này dao động từ Mđã truyền sang NvàdaođộngtừNđãtruyềnsangM.) Cácgiátrịchotrước »t=10;v=0.2;MN=1; Cácgiátrịchotrước »AM=5;wM=10;AN=8;wN=20 TạocácnúttrênMN »X=linspace(0,MN,1000) DaođộngdoMtruyền »YCM=AM*sin(wM*t-wM*X/v) DaođộngdoNtruyền »YCN=AN*sin(wN*t-wN*X/v) Xắpxếpđúngchiều »YCN=YCN(end:-1:1) Daođộngtổnghợp »YC=YCM+YCN; Vẽđồthịmặthồ »plot(X,YC); 96 CơhọcvàXácsuất-Thốngkê 0 0.2 0.4 0.6 0.8 1 −20 −10 0 10 20 t=1s 0 0.2 0.4 0.6 0.8 1 −20 −10 0 10 20 t=2.5s 0 0.2 0.4 0.6 0.8 1 −15 −10 −5 0 5 10 15 t=4s 0 0.2 0.4 0.6 0.8 1 −20 −10 0 10 20 t = 6 s t=6s Hình4.1.2:Môphỏngdaođộngmặthồ BÀITẬP 1. Trênmặthồnướcrấtrộng,mộtnguồndaođộngđượcđặttạiO(0, 0) cóbiênđộA=3cm, vậntốcgócω=5rad/s, phabanđầuϕ=0. Vậntốctruyềnsónglàv=0.3m/s. Môphỏngsóngtrênmặthồtại t = 10S. 2. Tại thời điểmt =0, nguồnMbắt đầutạodaođộngvới biênđộ A M =5cm, vậntốcgócω M =10rad/s, phabanđầuϕ M =0. Tại t = 2,nguồnNbắtđầutạodaođộngvớibiênđộA N = 8cm,vậntốc gócω N = 20rad/s.Cả2đềutruyềndaođộngvớivậntốcv= 0.2m/s. ChobiếtMN= 1m. a.TìmdaođộngcủacácvậtchấtnằmgiữađoạnMNtạit = 2. b.TìmdaođộngcủacácvậtchấtnằmgiữađoạnMNkhi2sónggặp nhau. 4.2Xácsuất-Thốngkê 97 c.TìmdaođộngcủacácvậtchấtnằmgiữađoạnMNkhisóngtừM truyềnđếnN. d.TìmdaođộngcủacácvậtchấtnằmgiữađoạnMNkhisóngtừN truyềnđếnM. 3. Giảilạibàitoán2,nhưngkhôngtìmdaođộngtrênđoạnMNmàtìm daođộngtrêncảmặthồ. 4. Giảilạibàitoán1biếtrằngkhôngphảicó1nguồndaođộngmàcó3 nguồndaođộngđặttrênđỉnhtamgiácđềucạnhl = 1.5m. 4.2 Xácsuất-Thốngkê 4.2.1 Tínhtoánxácsuấtcơbản Bảngtómtắtcáchàmmatlabliênquanđếncácphânphốithườnggặp Phânphối Hàmmậtđộ(PDF) Hàmphânphối(CDF) Tạosốngẫunhiên Chuẩn normpdf(X,µ,σ) normcdf(X,µ,σ) normrnd(µ,σ,m,n) Đều unifpdf(X,a,b) unifcdf(X,a,b) unifrnd(a,b,m,n) Mũ exppdf(X,µ) expcdf(X,µ) exprnd(µ,m,n) Nhịthức binopdf(X,N,P) binocdf(X,N,P) binornd(N,P,m,n) Poisson poisspdf(X,λ) poisscdf(X,λ) poissrnd(λ,m,n) Vídụ4.2.1. -Tạo100sốngẫunhiêncóphânphốichuẩnvớiµ = 100vàσ= 15 x = normrnd(100,15,100,1) -Tạo50sốngẫunhiêncóphânphốinhịthứcB(20, 0.7) y = binornd(20,15,50,1) Vídụ4.2.2. Môtảphânphốichuẩn mu = 100; sigma = 15; xmin = 70; xmax = 130; n = 100; k = 10000; x = linspace(xmin, xmax, n); p = normpdf(x, mu, sigma); c = normcdf(x, mu, sigma); 98 CơhọcvàXácsuất-Thốngkê % Ve do thi ham mat do subplot(1,3,1); plot(x, p, ’k-’); xlabel(’x’); ylabel(’pdf’); title(’Probability Density Function’); %Ve do thi ham phan phoi subplot(1,3,2); plot(x, c, ’k-’); xlabel(’x’); ylabel(’cdf’); title(’Cumulative Density Function’); % Tao k = 10000 so ngau nhien co phan phoi chuan N(mu, sigma 2 ) y = normrnd(mu, sigma, k, 1); subplot(1,3,3); hist(y, 20); % Ve do thi Histogram xlabel( ’x’ ); ylabel( ’frequency’ ); title( ’Histogram of random values’ ); 90 100 110 120 130 x Probability Density Function 70 80 90 100 110 120 130 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 x c d f Cumulative Density Function 40 60 80 100 120 140 160 0 500 1000 1500 x f r e q u e n c y Histogram of random values 4.2Xácsuất-Thốngkê 99 4.2.2 Thốngkêmôtả Bảngtómtắtcáchàmthốngkê Tênhàm Môtả max Giátrịlớnnhất mean Trungbình median Trungvị min Giátrịnhỏnhất mode Giátrịcótầnsốxuấthiệnlớnnhất std Độlệchtiêuchuẩn var Phươngsai boxplot Vẽđồthịboxplot hist Vẽđồthịhistogram qqplot VẽđồthịQ-QPlot Vídụ4.2.3. load count.dat % Lay data mau X = count(:,1); % Tinh cac gia tri thong ke mo ta mean(X); var(X); median(X); % Ve do thi boxplot(X); hist(X) qqplot(X) % Kiem xem X co tuan theo phan phoi chuan 4.2.3 Kiểmđịnhgiảthiết:z-testvàt-test Giảđịnh:sốliệulàmẫuđộclậpchọntừphânphốichuẩn. z-test:Giảsửđãbiếtphươngsai;t-test:phươngsaichưabiết. GiảthiếtH 0 :µ = µ 0 (ĐốithiếtH A : µ = m 0 ) Giátrịthốngkêzvàt: z= ¯ x −µ 0 σ/ √ n t = ¯ x −µ 0 s/ √ n 100 CơhọcvàXácsuất-Thốngkê Z-test:[h, p, ci, zval] = ztest(x, m, sigma, alpha),trongđó •x: vectơsốliệu; m: giátrị trungbìnhcầnkiểmđịnh; sigma: độlệch tiêuchuẩnσ;alpha:mứcýnghĩaα. •h=0hoặc1;h=1:bácbỏH 0 . •p:P-value;ci:khoảngtincậy(1 −α)%. •zval:giátrịthốngkêZ. T-test:[h, p, ci, stats] = ttest(x, m, sigma, alpha),trongđó •h,p,ci:tươngtựnhưhàmztest. •stats:xuấtcácgiátrịsau:tstat-giátrịthốngkêt;df:bậctựdo;sd: độlệchtiêuchuẩnướclượng. Vídụ4.2.4. loadgas%Filedatachuasolieuvegiagasgomprice1vaprice2 qqplot(price1)%Kiemtragiadinhvephanphoichuandoivoiprice1 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 106 108 110 112 114 116 118 120 122 124 Standard Normal Quantiles Q u a n t i l e s o f I n p u t S a m p l e QQ Plot of Sample Data versus Standard Normal 4.2Xácsuất-Thốngkê 101 %Sosanhgiagastrungbinhvoi115,giasudabietphuongsaiσ 2 = 4 2 [h, pvalue, ci] = ztest(price1, 115, 4) h = 0 pvalue = 0.8668 ci = 113.40 116.90 BÀITẬP 1. Thực hiện tương tự như ví dụ 4.2.1, hãy mô phỏng phân phối mũ với tham sốλ = 2. 2.Nhưbàitập1,viếtscriptmôphỏngphânphốinhịthứcB(10, 0.7). 3.GiảsửchỉsốIQtuântheophânphốichuẩnvớitrungbìnhlà100vàđộ lệchtiêuchuẩn15.Chọnngẫunhiênmộtngười,tínhxácsuấtđểchọnđược a. NgườicóchỉsốIQtừ110đến130. b. NgườicóchỉsốIQtrên120. 4.Đochiềudàiđuôicủa15conthằnlằn,(Đv:cm) 18.4, 22.2, 24.5, 26.4, 27.5, 28.7, 30.6, 32.9 32.9, 34.0, 34.8, 37.5, 42.1, 45.5, 45.5 a. Tínhcácgiátrịthốngkêmôtả. b. Vẽđồthịboxplot,histogram. 5. Một nhà máy sản xuất thức ăn đóng hộp tuyên bố rằng trọng lượng trung bìnhcáchộpthứcănxuấtxưởnglà140(g).Lấymẫu12hộpthứcăn 138, 125, 155, 130, 140, 150 130, 120, 125, 134, 160, 135 Dùng kiểm định z - test hoặc t- test để kiểm chứng khẳng định của nhà máy vớimứcýnghĩaα = 5%. CHƯƠNG 5 Giaodiệnđồhọangườidùng–GUI 5.1 TổngquanvềcáctệptinGUI 5.1.1 TệptinMvàtệptinFIG TạotệptinGUIbằngcâulệnhGUIDE.MộttệptinGUIsẽđượctạoravà lưutrữtronghaitệptin: •TệptinFIG, đuôi mởrộng.fig, chứacáchbốtrí (layout)GUIvàcác thànhphầncủaGUInhưlà:pushbuttons,axes,panels,menusv.v... •TệptinM, đuôi mởrộng.m, chứacácđoạnmãkhởi tạobanđầuvà cácthủtục(template)chocáchàmgọi lại (callback). Ngoài ra, phải thêmcáccallbackkhiviếtcácthànhphầncủaGUI. Tệp tin FIG và tệp tin M phải cùng tên và thường có chung đường dẫn. Thực thi: Tạo GUI → tổ chức GUI trong Layout Editor (công việc được lưu trong tệptinFIG) →thựcthiGUI(côngviệcđượclưutrongtệptinM). 5.1.2 CấutrúctệptinMcủaGUI TệptinMcủaGUIđượcGUIDEtạoralàmộttệptinhàm,tênhàmchính trùngvới têntệptin. Cáccallbacktrongtệptinlàcáchàmconcủahàm chính. 5.2VídụtạomộtGUIđơngiản 103 Hình5.2.1:TạovàđặttênchomộtGUImới KhilệnhGUIDEtạoratệptinM,nótựđộngđưavàocácthủtụccủacác callbackthườngđượcsửdụngnhất. TệptinMchứađoạnmãkhởi tạo, và ta phải thêm các đoạn mã vào các callback thành phần trong GUI theo mục đíchcủacôngviệc. 5.2 VídụtạomộtGUIđơngiản Ví dụ5.2.1. TạomộtGUIcómộtnútbấm,khibấmvàosẽhiệngiờhiện hành •Bước1:TạoGUIbằnglệnhGUIDE,hìnhvẽ5.2.1 •Bước2:Chọnvàđặtpushbutton,hìnhvẽ5.2.3 •Bước3:Chỉnhthuộctínhcomponent,hìnhvẽ5.2.4–5.2.8 •Đặttênchochươngtrình: ChọnPropertyInspector →ChỉnhName: Time,hìnhvẽ5.2.9 Vídụ5.2.2. TạomộtGUIvẽđồthị. 5.3 MộtsốcomponenttrongGUI PushButton(Nútnhấn) Khinhấpchuộtvàomộtnút,thìhàmsausẽđượcgọi 104 Giaodiệnđồhọangườidùng–GUI Hình5.2.2:Layouteditor Hình5.2.3:Chọnvàđặtpushbutton Hình5.2.4:Chỉnhthuộctínhcomponent 5.3MộtsốcomponenttrongGUI 105 Hình5.2.5:Thayđổigiátrịthuộctính Hình5.2.6:CàiđặtCallbackchocomponent Hình5.2.7:TệptinMcủaGUI 106 Giaodiệnđồhọangườidùng–GUI Hình5.2.8:Thêmđoạnmãxửlý Hình5.2.9:ĐặttênchochươngtrìnhlàTime Hình5.2.10:GUIvẽđồthị 5.3MộtsốcomponenttrongGUI 107 Hình5.2.11:HandleVisibility →callback Hình5.2.12:ChọnvàđặtAxes Hình5.2.13:HandleVisibilitycủaAxes →On 108 Giaodiệnđồhọangườidùng–GUI Hình5.2.14:ThêmButtonPlot Hình5.2.15:CàiđặtCallbackchoButtonPlot Hình5.2.16:Thêmcácbuttongridon/offvàclear 5.3MộtsốcomponenttrongGUI 109 Hình5.2.17:CàiđặtcallbackchoGridon/off Hình5.2.18:CàiđặtcallbackchoClear 110 Giaodiệnđồhọangườidùng–GUI function pushbutton1_Callback(hObject, eventdata, handles) ... ... ... Vídụ5.3.1. Nhấnnútthìthaytêncủanút(thuộctính‘String’củanút) function pushbutton1_Callback(hObject, eventdata, handles) set(gcbo,’String’,‘ten gi do’); MộtsốthuộctínhquantrọngcủaButton: •Enable:chophépnhấn(on/off) •String:chuỗihiểnthịtrênnút •Tag:tênđốitượngnútphânbiệtvớicácđốitượngkháctrongchương trình •Value:giátrịcủanút. ToggleButton, RadioButtonvàCheckBox(Nútbậttắt, Nútchọn vàÔcheck) •ThuộctínhcủaToogleButton: ThuộctínhValuesẽbằngthuộctính Maxnếunútđượcnhấnhoặcđượcchọn,ngượclạisẽbằngthuộctính Min. function togglebutton1_Callback(hObject, eventdata, handles) button_state = get(hObject,’Value’); if button_state == get(hObject,’Max’) % Toggle button được nhấn ... elseif button_state == get(hObject,’Min’) % Toggle button không được nhấn ... end •MặcđịnhMax=1, Min=0. Cũngcóthểthayđổi trạngthái chocác Toggle Button, Radio Button và Check Box bằng cách đặt lại các thuộc tínhValue,Max,Min. set(handles.togglebutton1,’Value’,get(handles.togglebutton1,’Max’)) 5.3MộtsốcomponenttrongGUI 111 đặtnúttogglebutton1sangtrạngtháiđượcnhấn set(handles.radiobutton1,’Value’,get(handles.radiobutton1,’Min’)) đặtnútradiobutton1sangtrạngtháibỏchọnÔnhậpvănbản:EditText •ThuộctínhStringchứachuỗimàngườidùngnhậpvào function edittext1_Callback(hObject, eventdata, handles) user_string = get(hObject,’String’); ... •Nếu thuộc tính Max, Min được đặt sao cho Max–Min>1 thì người dùng cóthểnhậpnhiềuhàng. •CallbackđượcgọikhiđangthayđổinộidungcủaEditTextmànhấp chuộtrabênngoài (nhưngvẫnbêntrongGUI), hoặckhi người dùng nhấn Enter (với Edit Text một hàng), Ctrl+Enter (với Edit Text nhiều hàng). •Thuộc tính String trả về một chuỗi. Muốn nhận dữ liệu số thì sử dụng hàmstr2double.Nếungườidùngkhôngnhậpsốthìstr2doubletrảvề NaN. function edittext1_Callback(hObject, eventdata, handles) user_entry = str2double(get(hObject,’string’)); if isnan(user_entry) errordlg(’You must enter a numeric value’,’Bad Input’,’modal’) return end % Proceed with callback... Thanhtrượt (Slider) •ThuộctínhValuexácđịnhtrạngtháicủaSlider. •ThuộctínhMaxvàMinxácđịnhcựcđại vàcựctiểuchothuộctính ValuecủaSlider. 112 Giaodiệnđồhọangườidùng–GUI function slider1_Callback(hObject, eventdata, handles) slider_value = get(hObject,’Value’); % Proceed with callback... ListboxvàPop-upmenu •Thuộc tính Value chứa chỉ số của mục được chọn. Chỉ số của mục đầu tiênlà1. •ThuộctínhStringlàmảngcellchứadanhsáchcácmụcchọncủaList BoxvàPop-upMenu. •Ví dụ dưới đây cho phép lấy giá trị của chuỗi được chọn trong List Box. function listbox1_Callback(hObject, eventdata, handles) index_selected = get(hObject,’Value’); list = get(hObject,’String’); item_selected = list{index_selected}; % Convert from cell array to string •CallbackcủaListBoxđượcgọisausựkiệnnhảchuộthoặcnhấnmột sốphímđặcbiệt. •Khi các phím mũi tên thay đổi thuộc tính Value của List Box, callback Callbackđượcgọi đồngthời đặtthuộctínhSelectionTypecủafigure thànhnormal. •Phím Enter và Space không làm thay đổi thuộc tính Value của List Box, nhưngCallbackvẫnđượcgọi,đồngthờiđặtthuộctínhSelectionType củafigurethànhopen. •Nếungười dùngnhấpđúpchuột thì Callbackđượcgọi saumỗi lấn nhấp. MatLabđặtthuộctínhSelectionTypecủafigurethànhnormal ởlầnthứnhấtvàthànhopenởlầnthứhai. •Dođótacóthểbiếtđượcngườidùngnhấpđúpchuộthaykhôngdựa vàoviệctruyvấnthuộctínhSelectionTypecủafigure. 5.3MộtsốcomponenttrongGUI 113 ButtonGroup •ButtonGroupchứacácthànhphầnGUI, đồngthời giúptaquảnlý việclựachọncủaRadioButtonvàToggleButton. •NếuButtonGroupchứaRadioButton,ToggleButtonhoặccảhaithì ButtonGroupchỉ chophépmộttrongsốchúngđượcchọn. Nếumột cáiđượcchọnthìnhữngcáikhácsẽđượcbỏchọn. •CallbackSelectionChangeFcncủaButtonGroupđượcgọi khi cósự thayđổichọn. •ThamsốđầuvàohObjecttrỏtới RadioButtonhoặcToggleButton đượcchọn. •CáccallbackcủacácthànhphầnkháctrongGUIcóthểtruyxuấttới đốitượngđượcchọnthôngquathuộctínhSelectedObjectcủaButton Group. Axes(Hệtrụctọađộ) •Hệtrụctọađộdùngđểvẽđồthịhoặchiểnthịhìnhảnh. •Muốn vẽ đồ thị lên một hệ trục tọa độ, ta thêm handles tới hệ trục tọa độđóvàohàmmuốnsửdụng. Vídụ5.3.2. vẽđồthịlênhệtrụcaxes1 [X,Y] = meshgrid(-3:.125:3); Z = peaks(X,Y); meshc(handles.axes1,X,Y,Z); axis([-3 3 -3 3 -10 5]); BÀITẬP 1. Tạomột giaodiệnngười dùngnhưhìnhvẽ5.3.1. Chươngtrìnhmô phỏng máy tính bỏ túi dùng để tính các phép toán thông thường. Trong đó,nútdấubằnglàtogglebutton,cácnútcònlạiđềulàpushbutton. Cáctagcụthể: 114 Giaodiệnđồhọangườidùng–GUI Hình5.3.1:Máytínhvớicácchứcnăngthôngthường •Dấubằng:togglebutton_bang.Nóởtrạngtháiđượcnhấnkhi người dùng nhập xong một chuỗi và nhấn vào nó. Nút này ở trạng thái khôngnhấnkhi người dùngnhấnvàocácnútkhácđểbắt đầunhậpchuỗimới. •Màn hình hiển thị gồm: text_bieuthuc, hiển thị biểu thức người dùngnhậpvàkết quảbiểuthức. Vàtext_canhbao, hiểnthị thôngbáokhinhậpsai. •Nút Del và AC dùng để xóa: pushbutton_del, pushbutton_AC, nútDelxóamộtkýtựcuối,nútACxóatoànbộchuỗi. •Các nút nhập biểu thức: pushbutton_1, pushbutton_2, push- button_cong,. . . đểnhậpbiểuthứccầntính. 2. Thiết kế GUI như hình vẽ 5.3.2. Chương trình sẽ vẽ đồ thì hàm số được chọntrongpopupmenu1lênhệtrụctọađộkhinhấnvàonútpush- button_Update với các tham số đường nét, màu sắc được chọn trong hai buttongroup, đó là uipanel_Color và uipanel_LineStyle. Ngoài rađồthị sẽcóthêmcácôlưới nếucheckboxGridđượcchọn, ngượclạiđồthìsẽkhôngcócácôlưới. 3. ThiếtkếGUInhưhìnhvẽ5.3.3.Baogồm: •Haihệtrụctọađộaxes1vàaxes2dùngđểhiểnthịđồthị. •Các nút vẽ vàôcheckđể hiểnthị lưới trênđồthị: pushbut- ton_Plot1, pushbutton_Plot2, checkbox_Grid1, và check- box_Grid2. 5.3MộtsốcomponenttrongGUI 115 Hình5.3.2:GUIvẽđồthị2D Hình5.3.3:GUIvẽđồthị2Dvớicáctínhnăngcậpnhậtcáchàmcầnvẽ 116 Giaodiệnđồhọangườidùng–GUI •Hai danh sách các hàm số cần vẽ và các nút thêm, xóa hàm số: list- box1, listbox2, pushbutton_Add1, pushbutton_Remove1. •Ô edit text dùng để nhập thêm hàm số và hai static text dùng để hiểnthịthôngbáolỗi:edit1,text1,text2. •KhingườidùngnhấncácnútPlot,đồthịcủahàmsốđượcchọn tronglistboxsẽđượchiểnthịtrêncáchệtrụctọađộtươngứng. •Khi người dùngnhậphàmsốvàotextboxvànhấnnútAddthì hàmsốsẽđượcthêmvàolistboxtươngứng. •Khi người dùng nhấn nút Remove thì hàm số được chọn sẽ bị xóa khỏilistboxtươngứng.