Giáo trình Matlab toàn tập

pdf 215 trang hoanguyen 2810
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Matlab toàn tập", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_matlab_toan_tap.pdf

Nội dung text: Giáo trình Matlab toàn tập

  1. Updatesofts.com Ebook Team 1 MatlabtontậpMatlabtontập ciđặtciđặt 1.MATLABforWIN YêucầuhệthốngYêucầuhệthống • HệthốngIBMhoặct−ơngthích100%vớibộvixửlí486Intelcộngvớibộđồngxửlítoán học 487 ( ngoại trừ 486 DX có bộ xử lí bên trong ), Pentium hoặc Pentium Pro Processor. • MicrosoftWindow95hoặcWindowNT. a)ổCDROMa)ổCDROM Bộđiềuphốiđồhoạ8bitvcardmnhình(256muđồngthời) Khoảngtrốngđĩađủđểciđặtvchạycáctuỳchọn.Sựyêucầuđĩacứngthayđổituỳ theokíchcỡcácpartitionvcáctệptrợgiúphelpđ−ợcciđặttrựctiếptheotuỳchọn.Quá trìnhciđặtsẽthôngbáochobạnbiếttỉmỉvềdungl−ợngđĩayêucầu.Vídụ: Partitionvớimộtliêncungmặt0cần25MBchoriêngMATLABv50MBchocả MATLABvHELP. Partition với liên cung 64 KB cần 115 MB cho riêng MATLAB v 250 MB cho cả MATLABvHELP. b)Bộnhớ.b)Bộnhớ. MicrosoftWIndow95:8MBtốithiểuv16MBkhuyếnnghị. MicrosoftWINNT3.51hoặc4.0:12MBtốithiểuv16MBkhuyếnnghị. Cáckhuyếnnghị • Bộnhớphụvo(Bộnhớbổsung:additionalMemory). • VỉmạchtăngtốcđồhoạbổtrợchoMicrosoftWindow. • MáyintrợgiúpchoMicrosoftWindow. • VỉmạchâmthanhtrợgiúpchoMicrosoftWindow. • MicrosoftWord7.0hoặchơn(nếubạncóýđịnhsửdụngMATLABNoteBook). • TrìnhbiêndịchWatcomC,Borland,Microsoft(xâydựngfileMEX). • Netscape Navigator 2.0 hoặc version cao hơn hoặc Microsoft Internet Explorer 3.0 để chạyMATLABHelpDesk. Quátrìnhciđặt 1.ĐặtđĩavoổCD.TrênWIN95ch−ơngtrìnhSETUPbắtđầuchạytựđộngnếunh− MATLABchađ−ợccitừtr−ớc.Cònkhông,nhấnđúpvobiểut−ợngsetup.exesetup.exesetup.exeđểbắtđầu quátrìnhciđặt. 2.Chấpnhậnhaybỏđinhữngkhuyếncáovềcấpđăngkíphầnmềmtrênmnhình. Nếuchấpnhậnbạnmớicóthểbắtđầuquátrìnhciđặt. 3.TrênCustumerInformation,nhậpvotênbạn,địachỉcủabạn.Tênkhôngđ−ợcquá 30kítự.NhấnnútNEXT. 4.Nhấnvocáchộptrốngthnhphầndấu‘v‘nếunh−bạnmuốntuỳchọnđóv nhấntiếpnếubạncóýđịnhkhôngmuốntuỳchọnđó(cóthểthêmvosaunynếumuốn
  2. Updatesofts.com Ebook Team 2 ).TrênmnhìnhhiểnthịC:\MATLABlth−mụcđíchmặcđịnhcủaquátrìnhciđặt.Nếu bạnmuốnciđặtvoth−mụckháchoặcđổitênth−mụcthìbạnlựachọnBrowse. MATLABchoMacintosh. MATLABchomáyMacintoshchạyđ−ợctrên: • MọimáyMacintoshcócấuhìnhđủmạnh(powerMacintosh). • MọiMacintoshđ−ợctrangbịbộvixửlí68040(bộđồngxửlítoánhọcbêntrong). • MọimáyMacintoshđ−ợctrangbịbộvixửlí68020hoặc68030vbộđồngxửlítoán học68881hoặc68882. YêucầutốithiểuđểchạyMATLAB. • Đĩa cứng trống tối thiểu 26 MB, cần thêm 60 MB cho hệ thống tuỳ chon HELP trực tuyến. • 16MBchophânvùngbộnhớ. • ổCDROM. • ColorQuickDraw. oOo Ch−ơng1 GIớITHIệUchung Bâygiờ bạn đ ci đặt xong, chúng ta hy xem MATLAB có thể lm đ−ợc những gì. Trongphầnnychúngtasẽtrìnhbymộtsốnhữngứngdụngcủanó;vìđểtrìnhbytấtcả nhữngứngdụngcủaMATLABsẽrấtdivtốnthờigian.Nếubạnđọcquyểnh−ớngdẫn ny,bạnsẽthấyMATLABlngônngữrấtmạnhđểgiảiquyếtnhữngvấnđềquantrọngv khókhăncủabạn.Nósẽrấthữuíchkhibạnđọcphầnh−ớngdẫncơbảnvìnósẽcungcấp cho bạn những kiến thức cơ bản để bạn hiểu rõ MATLAB v phát triển đ−ợc những khả năngcủamìnhsauny. CólẽcáchdễnhấtđểhìngdungvềMATLABlnócóđầyđủcácđặcđiểmcủamáy tínhcánhân:giốngnh−cácmáytínhcơbản,nólmtấtcảcácphéptínhtoánhọccơbản nh−cộng,trừ,nhân,chia;giốngnh−máytínhkỹthuật,nóbaogồm:sốphức,cănthức,số mũ,logarithm,cácphéptoánl−ợnggiácnh−sine,cosine,tang;nócũnggiốngnh−máytính cókhảnănglậptrình,cóthểl−utrữ,tìmkiếmlạidữliệu,cũngcóthểtạo,bảovệvghitrình tựcáclệnhđểtựđộngphéptoánkhigiảiquyếtcácvấnđề,bạncóthểsosánhlogic,điều khiểnthựchiênlệnhđểđảmbảotínhđúngđắncủaphéptoán.Giốngnh−cácmáytínhhiện đạinhất,nóchophépbạnbiểudiễndữliệudớinhiềudạngnh−:biểudiễnthôngth−ờng,ma trânđạisố,cáchmtổhợpvcóthểthaotácvớidữliệuth−ờngcũngnh−đốivớimatrận. TrongthựctếMATLABcònứngdụngrấtrộngritrong nhiềulĩnhvựcv nócũngsử dụngrấtnhiềucácphéptínhtoánhọc.Vớinhữngđặcđiểmđóvkhảnăngthânthiệnvới ng−ờisửdụngnênnódễdngsửdụnghơncácngônngữkhácnh−Basic,Pascal,C. Nócungcấpmộtmôitr−ờngphongphúchobiểudiễndữliệu,vcókhảnăngmạnhmẽ vềđồhoạ,bạncóthểtạocácgiaodiệnriêngchong−ờisửdụng(GUIs)đểgảiquyếtnhững vấnđềriêngchomình.ThêmvođóMATLABđ−aranhữngcôngcụđểgiảiquyếtnhững vấnđềđặcbiệt,gọilToolbox(hộpcôngcụ).VídụStudentEditioncủaMATLABbaogồm cảToolboxđiềukhiểnhệthống,Toolboxxửlítínhiệu,Toolboxbiểut−ợngtoánhọc.Ngoi rabạncóthểtạoToolboxchoriêngmình. Vớinhữngkhảnăngmạnhmẽ,rộnglớncủaMATLABnênnórấtcầnthiếtchobạnbắt đầutừphầncơbản.Sauđâychúngtasẽnghiêncứutừngphần,vcuốnsáchnysẽgiúp
  3. Updatesofts.com Ebook Team 3 bạnhiểuđ−ợcchúng.Tr−ớctiên,mộtcáchđơngiảnnhấtlchúngtaquanniệmnh−lmột máytínhcơbản,tiếptheolnh−máytínhkỹthuậtvnh−máytínhcóthểlậptrìnhđ−ợc, cuốicùnglnh−máytínhhiệnđạinhất.Bằngcáchquanniệmnybạnsẽdễdnghiểu đựơcnhữngcáchmMATLABgiảiquyếtnhữngvấnđềthôngth−ờngvxemMATLABgiải quyếtnhữngvấnđềvềsốphứcmềmdẻonh−thếno. Tuỳthuộcvokiếnthứccủabạn,bạncóthểtìmthấynhữngphầntrongcuốnsáchh− ớngdẫnnyhứngthúhaybuồntẻ Khibạnchạych−ơngtrìnhMATLAB,nósẽtạomộthoặcnhiềucửasổtrênmnhìnhcủa bạn,vcửasổlệnh(command)lcửasổchínhđểbạngiaotiếpvớiMATLAB,cửasổny xuấthiệnnhhìnhdớiđây. Các kí tự ‘EDU>>‘ l dấu nhắc của MATLAB trong student MATLAB. Trong các versionkháccủaMATLAB,dấunhắcđơngiảnchỉl‘>>‘.Khicửasổlệnhxuấthiện,l cửa sổ hoạtđộng, con trỏ xuất hiện bên phải dấu nhắc nh− ở hình d−ới. Con trỏ v dấu nhắcnycủaMATLABbáorằngMATLABđangđợiđểthựchiệnlệnh. Hình1.1CửasổlệnhcHình1.1CửasổlệnhcủaStudentMATLABHình1.1CửasổlệnhcủaStudentMATLABủaStudentMATLAB 1.1Cácphéptoánđơngiản Giốngnh−máytínhđơn giảnthôngth−ờng,MATLABcóthểthựchiệncácphéptoán đơngiản,nh−vídụd−ớiđây: Maryđếnmộtcửahngvănphòngphẩmvmua4cụctẩy,25xumộtcục,6tậpvở,52 xumộttập,haicuộnbăngđi,99xumộtcuộn.HytínhxemMarymuabaonhiêuvật,v tổngsốtiềnlbaonhiêu? Nếudùngmáytínhthôngth−ờng,tavocácsố: 4+6+2=12(vật) 4x25+6x52+2x99=610(xu) Hình1.2CửasổlệnhHình1.2CửasổlệnhcủaMATLABcủaMATLABversion5.2version5.2version5.2 TrongMATLABchúngtacóthểgiảiquyếtvấnđềnytheonhiềucách.Tr−ớctiêngiốngnh− máytínhởtrên,chúngtacóthểtính: >>4+6+2 ans= 12 >>4*25+6*52+2*99 ans= 610 Chú ý rằng MATLAB không chú ý đến những khoảng trống, cho tất cả các phần, v phépnhâncómứcđộ−utiêncaohơnphépcộng.VmộtchúýkháclMATLABgọikết quảans(viếttắtcủaanswer)chocảhaiphéptính. Nh−đnóiởtrên,vấnđềtrêncóthểgiảiquyếtbằngcáchchứacácthôngtinvo biếncủaMATLAB: >>erasers=4 erasers= 4
  4. Updatesofts.com Ebook Team 4 >>pads=6 pads= 6 >>tape=2; >>iterms=erases+pads+tape iterms= 12 >>cost=erases*25+pads*52+tape*99 cost= 610 ởđâychúngtatạo3biếnMATLAB:erases,pads,tapeđểchứasốl−ợngmỗiloạivật. Saukhivocácgiátrịchocácbiếnny,MATLABhiểnthịkếtquảramnhình,trừtr−ờng hợpbiếntape.Dấuhaichấmđằngsaucâulệnh‘>>tape=2;‘thôngbáochoMATLAB nhận giá trị gán nh−ng không hiểnthị ra mn hình. Cuối cùngkhác với gọikết quả ans, chúngtayêucầuMATLABgọikếtquảtổngsốcácvậtliterms,vtổngsốtiềnlcost.Tại mỗib−ớcMATLABđềuđaracácthôngtin.Vìcól−ugiữcácbiếnnênchúngtacóthểyêu cầuMATLABtínhgiátrịtrungbìnhchomỗivật: >>everage_cost=cost/iterms everage_cost= 50.8333 Bởivìeveragecostcóhaitừ,mMATLAByêucầubiếnchỉcómộttừ,nênchúngtadùng dấugạchd−ớiđểnốihaitừnythnhmộttừ. Ngoicácphéptínhtrên,MATLABcòncómộtsốphéptínhcơbảnkhácnh−bảngd−ới đây: Phéptính Biểut−ợng Vídụ Phépcộng,a+b + 5+3 Phéptrừ,ab 74 Phépnhân,a.b * 18*24 Phépchia,ab /hoặc\ 56/8=8\56 Phépluỹthừa,a b ^ 5^2 Trongcácphéptoántrêncómứcđộ−utiênkhácnhau,khitínhtừtráisangphảicủa mộtdònggồmnhiềulệnhthìphéptoánluỹthừacómứcđộ−utiêncaonhất,tiếptheol phépnhânvphépchiacómứcđộ−utiênbằngnhaucuốicùnglphépcộngvphéptrừ cũngcómứcđộ−utiênbằngnhau. 1.2KhônggianlmviệccủaMATLAB Cũngnh−bạnlmviệcvớicửasổLệnh,MATLABnhớcáclệnhbạngõvocũngnh− cácgiátrịbạngánchonóhoặcnóđ−ợctạolên.Nhữnglệnhvbiếnnyđ−ợcgọill−ugiữ trongkhônggianlmviệccủaMATLAB,vcóthểđ−ợcgọilạikhibạnmuốn.Vídụ,đểkiểm tragiátrịcủabiếntape,tấtcảnhữnggìbạnphảilmlyêucầuMATLABchobiếtbằng cáchđánhvotênbiếntạidấunhắc: >>tape
  5. Updatesofts.com Ebook Team 5 tape= 2 Nếubạnkhôngnhớtênbiến,bạncóthểyêucầuMATLABchodanhsáchcácbiếnbằng cáchdánhlệnh who từdấunhắclệnh: >>who Yourvariablesare: anscostitermstape average_costeraserspads ChúýrằngMATLABkhôngđ−aragiátrịcủatấtcảcácbiến,nếubạnmuốnbiếtgiá trị,bạnđánhvotênbiếntạidấunhắclệnhcủaMATLAB. Đểgọilạicáclệnhbạnđdùng,MATLABdùngcácphímmũitên( ↑↓)trênbnphímcủa bạn.Vídụđểgọilạilệnhbạngõvolúcgầnhiệntạinhất,bạnnhấnphímmũitên ↓,tiếptục nhấnphímny,nósẽlạigọitiếplệnhtr−ớcđó,Nếubạndùngphímmũitên ↑nósẽgọilại lệnhtừlệnhđầutiênchođếnlệnhgầnhiệntạinhất.Cácphímmũitên ←v →cóthể dùngđểthayđổivịtrícontrỏtrongdònglệnhtạidấunhắccủaMATLAB,nh−vậychúngta cóthểsửadònglệnh,thêmnữa,chúngtacóthểdùngchuộtcùngvớibộnhớđệmđểcắt, copy,dán,vsửavănbảntạidấunhắccủadònglệnh. 1.3Biến Giốngnh−nhữngngônngữlậptrìnhkhác,MATLABcónhữngquyđịnhriêngvềtên biến.Tr−ớctiêntênbiếnphảilmộttừ,khôngchứadấucách,vtênbiếnphảicónhững quytuânthủnhữngquytắcsau: Quyđịnhvềtênbiến Tênbiếncóphânbiệtchữhoachữth−ờng. Vídụ:Iterms,iterms,itErms,vITERMSlcácbiếnkhácnhau Tênbiếncóthểchứanhiềunhất31kítự,còncáckítựsaukítựthứ31bịlờđi. Vídụ:howaboutthisveriablename Tênbiếnbắtđầuphảilchữcái,tiếptheocóthểlchữsố,sốgạchd−ới Vídụ:how_about_this_veriable_name,X51483.a_b_c_d_e Kítựchấmcâukhôngđ−ợcphépdùngvìnócónhữngýnghĩađặcbiệt Cùngvớinhữngquyđịnhtrên,MATLABcónhữngbiếnđặcbiệttrongbảngsau: Cácbiếnđặcbiệt Giátrị ans Tênbiếnmặcđịnhdùngđểtrảvềkếtquả pi=3.1415 Eps Sốnhỏnhất,nh−vậydùngcộngvới1đểđ−ợcsốnhỏnhấtlớnhơn1 flops Sốcủaphéptoánsốthực inf Đểchỉsốvôcùngnhkếtquảcủa1/0 NaNhoặcnan Dùngđểchỉsốkhôngxácđịnhnh−kếtquảcủa0/0 i(v)j i=j= nargin Sốcácđốisốđavohmđ−ợcsửdụng narout Sốcácđốisốhmđara realmin Sốnhỏnhấtcóthểđ−ợccủasốthực realmax Sốlớnnhấtcóthểđ−ợccủasốthực
  6. Updatesofts.com Ebook Team 6 Nh−bạncóthểtạomộtbiếncủaMATLAB,vbạncũngcóthểgánlạigiátrịchomột hoặcnhiềubiến. Vídụ: >>erases=4; >>pads=6; >>tape=2; >>iterms=eases+pads+tape iterms= 12 >>erases=6 erases= 6 >>iterms iterms= 12 ởđâychúngtasửdụnglạivídụtrên,chúngtatìmđ−ợcsốvậtmMaryđmuasauđó chúngtathayđổisốcụctẩylên6,giátrịnysẽđèlêngiátrịtr−ớccủanól4.Khibạnlm nh−vậy,giátrịcủaitermsvẫnkhôngthayđổi,vìMATLABkhôngtínhlạiitermsvớigiátrị mớicủaerases.KhiMATLABthựchiệnmộtphéptính,nólấygiátrịcủacácbiếnhiệnthời, nênnếubạnmuốntínhgiátrịmớicủaiterms,cost,average_cost,bạngọilạicáclệnhtính cácgiátrịđó. Đối với các biến đặc biệt ở trên, nó có sẵn giá trị, nh− vậy khi bạn khởi động MATLAB;nếubạnthayđổigiátrịcủanóthìnhữnggiátrịđặcbiệtbanđầusẽbịmấtcho đếnkhibạnxoábiếnđóđihoặckhởiđộnglạiMATLAB.Dođóbạnkhôngnênthayđổigiá trịcủabiếnđặcbiệt,trừkhinóthựcsựcầnthiết. CácbiếntrongkhônggianlmviệccủaMATLABcóthểbịxoákhôngđiềukiệnbằng cáchdùnglệnh clear .Vídụ: >>clearerases chỉxoámộtbiếnerases >>clearcostiterms xoácảhaibiếncostviterms >>clearcl* dấu*đểchỉrằngxoátấtcảcácbiếnbắtđầubằnghaikítựcl. >>clear xoátấtcảcác biếntrongkhông gianlmviệc!.Bạnsẽkhôngđ−ợchỏiđểxácnhậncâu lệnhnyvtấtcảcácbiếnđbịxoákhôngthểkhôiphụclại. Cóthểnóirằngdùnglệnh clear rấtnguyhiểm,vìvậykhidùnglệnhnybạnnêndùngđúng vịtrí. 1.4Câugiảithích(comment)vsựchấmcâu Tấtcảcácvănbảnđằngsaukíhiệuphầntrăm(%)đềulcâugiảithích.Vídụ: >>erases=4%Sốcụctẩy. erases=
  7. Updatesofts.com Ebook Team 7 4 Biếnerasesđ−ợcgángiátrịl4,còntấtcảkíhiệuphầntrămvvănbảnđằngsaunóđều bịlờđi.Đặcđiểmnygiúpchochúngtadễtheodõicôngviệcchúngtađanglm. Nhiềulệnhcóthểđặttrêncùngmộthng,chúngcáchnhaubởidấuphẩyhoặcdấuchấm phẩy,nh−: >>erases=4,pads=6;tape=2 erases= 4 tape= 2 dấuphẩyđểyêucầuMATLABhiểnthịkếtquảtrênmnhình;còndấuchấmphẩylkhông hiểnthịkếtquảtrênmnhình. >>average_cost=cost/ iterms average_cost= 50.83333 Nh−vídụtrên,tacóthểdùngdấubachấm( )đểchỉcâulệnhđ−ợctiếptụcởhngd−ới, phéptínhthựchiệnđ−ợckhidấubachấmngăncáchgiữatoántửvbiến,nghĩaltênbiến khôngbịngăncáchgiữahaihng: >>average_cost=cost/it erms ???age_cost=cost/iterms Missingoperator,coma,orsemicolon. giốngnh−vậy,trạngtháicủalờigiảithíchkhôngthểtiếptục: >>%Commentscannotbecontinued >>either ???Undefinedfunctionorvariableeither. Bạncóthểdừngch−ơngtrìnhbằngcáchnhấnđồngthờiCtrlvC. 1.5Sốphức MộttrongnhữngđặcđiểmmạnhmẽnhấtcủaMATLABllmviệcvớisốphức.Sốphức trongMATLABđ−ợcđịnhnghĩatheonhiềucách,vídụnh−sau: >>c1=12i%Chènthêmkítựivophầnảo. c1= 1.00002.0000i >>c1=12j%jởđâyt−ơngtựnh−iởtrên. c1= 1.00002.0000i >>c2=3*(2sqrt(1)*3) c2=
  8. Updatesofts.com Ebook Team 8 6.00009.0000i >>c3=sqrt(2) c3= 0+1.4142i >>c4=6+sin(.5)*i c4= 6.0000+0.4794i >>c5=6+sin(.5)*j c5= 6.0000+0.4794i Tronghaivídụcuối,MATLABmặcđịnhgiátrịcủai=j=dùngchophầnảo.Nhânvớii hoặc j đ−ợc yêu cầu trong tr−ờng hợp ny, sin(.5)i v sin(.5)j không có ý nghĩa đối với MATLAB.Cuốicùngvớicáckítựivj,nh−ởtronghaivídụđầuởtrênchỉlmviệcvớisố cốđịnh,khônglmviệcđ−ợcvớibiểuthức. Mộtsốngônngữyêucầusựđiềukhiểnđặcbiệtchosốphứckhinóxuấthiện,trong MATLABthìkhôngcầunh−vậy.Tấtcảcácphéptínhtoánhọcđềuthaotácđ−ợcnh−đối vớisốthựcthôngth−ờng: >>c6=(c1+c2)/c3%Từcácdữliệuởtrên c6= 7.77824.9497i >>check_it_out=i^2%Bìnhph−ơngcủaiphảil1 check_it_out= 1.0000+0.0000i trongvídụnychỉcònlạiphầnthực,phầnảobằngkhông.Chúngtacóthểdùnghm real v imag đểkiểmtratừngphầnthựcvảo. Chúngtacóthểbiểudiễnsốphứcdạngđộlớnvgóc(dạngcực): MM.e j =a+bi ởtrênsốphứcđ−ợcbiểudiễnbằngđộlớnMvgóc,quanhệgiữacácđạil−ợngnyv phầnthực,phầnảocủasốphứcbiểudiễnd−ớidạngđạisốl: M= =tan 1(b/a) a=Mcos b=Msin TrongMATLAB,đểchuyểntừdạngcựcsangdạngđạisố,dùngcáchm real ,imag , v angle : >>c1%Gọilạic1 c1= 1.00002.0000i >>M_c1=abs(c1)%Tínhargumentcủasốphức M_c1= 2.2361 >>angle_c1=angle(c1)%Tínhgóccủasốphứctheoradian angle_c1=
  9. Updatesofts.com Ebook Team 9 1.1071 >>deg_c1=angle_c1*180/pi%Chuyểntừradiansangđộ 63.4349 >>real_c1=real(c1)%Tínhphầnthực real_c1= 1 >>imag_c1=imag(c1)%Tínhphầnảo imag_c1= 2 oOo Ch−ơng2 CáCĐặCtínhKĩTHUậT Giốngnh−hầu hếtcácmáytínhkỹthuật, MATLABđararấtnhiềucáchmtoánhọc,kĩ thuật thông dụng, ngoi ra MATLAB còn cung cấp hng trămcác hm đặcbiệt v thuật toán,nórấthữuíchđểgiảiquyếtcácvấnđềkhoahọc.Tấtcảcáchmnyđ−ợcliệtkê trongonlinehelp,cònởđâychỉđềcậpđếnnhữnghmthôngdụngnhất. 2.1Cáchmtoánhọcthôngth2.1Cáchmtoánhọcthôngth−ờng−ờng Các hm toán học của MATLAB đ−ợc liệt kê trong bảng d−ới đây, chúng đều có chungmộtcáchgọihmnh−vídụd−ớiđây: >>x=sqrt(2)/2 x= 0.7071 >>y=sin(x) y= 0.7854 >>y_deg=y*180/pi y_deg= 45.0000 Nhữnglệnhnyđểtìmmộtgóc(tínhbằngđộ)khibiếtgiátrịhmsincủanól/2. TấtcảcáchmliênquanđếngóccủaMATLABđềulmviệcvớiradian. Bảngcáchm: Cáchmthôngth−ờng
  10. Updatesofts.com Ebook Team 10 abs(x) Tínhargumentcủasốphứcx acos(x) Hmng−ợccủacosine acosh(x) Hmng−ợccủahyperboliccosine angle(x) Tínhgóccủasốphứcx asin(x) Hmng−ợccủasine asinh(x) Hmng−ợccủahyperbolicsine atan(x) Hmng−ợccủatangent atan2(x,y) Lhmarctangentcủaphầnthựccủaxvy atanh(x) Hmng−ợccủahyperbolictangent ceil(x) Xấpxỉd−ơngvôcùng conj(x) Sốphứcliênhợp cos(x) Hmcosinecủax cosh(x) Hmhyperboliccosinecủax exp(x) Hme x fix(x) Xấpxỉkhông floor(x) Xấpxỉâmvôcùng gdc(x,y) Ướcsốchunglớnnhấtcủahaisốnguyênxvy imag(x) Hmtrảvềphầnảocủasốphức lcm(x,y) Bộisốchungnhỏnhấtcủahaisốnguyênxvy log(x) Logarithmtựnhiên log10(x) Logarithmcơsố10 real(x) Hmtrảvềphầnthựccủax rem(x,y) Phầnd−củaphépchiax/y round(x) Hmlmtrònvềsốnguyêntố sign(x) Hm dấu: trả về dấu của argument nh− : sign(1.2)=1;sign(23.4)=1;sign(0)=0 sin(x) Hmtínhsinecủax sinh(x) Hmtínhhyperbolicsinecủax sqrt(x) Hmkhaicănbậchai tan(x) Tangent tanh(x) Hyperbolictangent >>4*atan(1)%Mộtcáchtínhxấpxỉgiátrịcủapi ans= 3.1416 >>helpatant2%Yêucầugiúpđỡđốivớihmatan2 ATAN2fourquadrantinversetangent ATAN2(Y,X)isthefourquadrantarctangentoftherealpartsoftheelementsofXand Y.pi >180/pi*atan(2/3) ans= 33.69 >>180/pi*atan2(2,3) ans= 146.31
  11. Updatesofts.com Ebook Team 11 >>180/pi*atan2(2,3) ans= 33.69 >>180/pi*atan2(2,3) ans= 33.69 >>180/pi*atan2(2,3) ans= 146.31 Mộtsốvídụkhác: >>y=sqrt(3^2+4^2)%Tínhcạnhhuyềncủatamgiácpitago345 y= 5 >>y=rem(23,4)%23/4cóphầnd−l3 y= 3 >>x=2.6,y1=fix(x),y2=floor(x),y3=ceil(x),y4=round(x) x= 2.6000 y1= 2 y2= 2 y3= 3 y4= 3 >>gcd(18,81)%9l−ớcsốchunglớnnhấtcủa18v81 ans= 9 >>lcm(18,81)%162lbộisốchunglớnnhấtcủa18v81 ans= 162 Vídụ:ƯớclVídụ:Ướcl−ợngchiềucaocủangôinh−ợngchiềucaocủangôinh−ợngchiềucaocủangôinh Vấnđề: GiảthiếtbiếtkhoảngcáchtừngờiquansátđếnngôinhlD,góctừngờiquan sátđếnngôinhl ;chiềucaocủangờiquansátlh.Hỏingôinhcaobaonhiêu? Giảipháp: Tabiểudiễnkíchthứcnh−hình2.1: (khôngthấy) Hình2.1Hình2.1 NgôinhcóchiềucaolH+h,Hlchiềudicủamộtcạnhcủatamgiác,chiềudiny cóthểtínhđ−ợcbằngcôngthứcquanhệgiữagócvcạnhcủatamgiác: tan()=
  12. Updatesofts.com Ebook Team 12 Từđótacóchiềucaocủangôinhl h+H=h+D.tan() Nếuh=2meters,D=50meters,vl60 o,MATLABsẽđarakếtquảl: >>h=2 h= 2 >>theta=60 theta= 60 >>D=50 D= 50 >>buiding_height=h+D*atan(theta*pi/180) buiding_height= 54.3599 Vídụsựsuygiảmdophânr Vấnđề :Sựphân rphântử poloniumcóchukỳphânrl 140 ngy,tứclsau 140 ngy thì l−ợng poloniun còn lại l 1/2 l−ợng ban đầu. Hỏi nếu ban đầu có 10 grams polonium,nósẽcònlạibaonhiêusau250ngy? Giảiquyết :Sau1chukỳphânrhoặc140ngy,cònlại10x0.5=5grams;sau2chukỳ phânrhoặc280ngy,cònlại5x0.5=10x(0.5) 2=2.5grams,từđótacókếtquảnằmtrong khoảng5v2.5grams,vtacócôngthứctínhphầncònlạisaukhoảngthờigianbấtkỳ: khốil−ợngcònlại=khốil−ợngbanđầux(0.5) thờigian/chukỳ vídụthờigianl250ngy,vkếtquảMATLABđaral: >>initial_amount=10;%Khốil−ợngbanđầu >>half_life=140;%Chukỳphânr >>time=250;%Thờigiantínhkhốil−ợng >>amount_left=initial_*0.5^(time/half_life) amount_left= 2.9003 VídụtínhtoánvềlixuấtVídụtínhtoánvềlixuất Vấnđề :Bạnđồngýmuaôtômớivớigiá18,500dollars.Ng−ờibánôtôđarahaigiảipháp vềtichínhl:thứnhất,trả2.9%lixuấtcủasốtiềntrêntrongvòng4năm.Thứhailtrả 8.9%lixuấtcủasốtiềntrêntrongvòng4nămvgiábánđ−ợcgiảmđimộtkhoảnl1500 dollars.Hỏivớigiảiphápnothìbạnmuađ−ợcôtôvớigiárẻhơn? Giảipháp: SốtiềntrảhngthánglP,trêntổngsốtiềnlAdollars,tỉsốlixuấthng thánglR,trảtrongMtháng: P=A
  13. Updatesofts.com Ebook Team 13 Tổngsốtiềnphảitrảsẽl:T=PxM GiảiphápMATLABđaral: >>formatbank%Dùngdạnghiểnthịngânhng >>A=18500;%Tổngsốtiền >>M=12*4;%Sốthángphảitrảli >>FR=1500;%Tiềngiảmgiácủanhmáy >>%Giảiphápthứnhất >>R=(2.9/100)/12;%Tỉlệlixuấthngtháng >>P=A*(R*(1+R)^M/((1+R)^M1))%Khoảntiềnphảitrảhngtháng P= 408.67 >>T1=P*M%Tổnggiátrịcủaôtô T1= 19616.06 >>%Giảiphápthứhai >>R=(8.9/100)/12;%Tỉlệlixuấthngtháng >>P=(AFR)*(R*(1+R)^M/((1+R)^M1))%Tiềnphảitrảhngtháng P= 422.24 >>T2=P*M%Tổnggiátrịcủaôtô T2= 20267.47 >>Diff=T2T1 Diff= 651.41 Nh−vậytacógiảiphápthứnhấtgiárẻhơngiảiphápthứhai. Vídụ:VấnđềnồngđộacidVídụ:Vấnđềnồngđộacid Vấnđề: Nh−mộtphầncủaquátrìnhsảnxuấtbộphậncủavậtđúctạimộtnhmáytự động,bộphậnđóđ−ợcnhúngtrongn−ớcđểlmnguội,sauđónhúngtrongbồnđựngdung dịchacidđểlmsạch.Trongtonbộcủaquátrìnhnồngđộacidgiảmđikhicácbộphậnđ −ợclấyrakhỏibồnacidvìkhinhúngbộphậncủavậtđúcvobồnthìmộtl−ợngn−ớccòn bámtrênvậtđúckhinhúngởbểtr−ớccũngvotheovkhinhấcrakhỏibồnmộtl−ợngacid bámtheovật.Đểđảmbảochấtl−ợngthìnồngđộacidphảikhôngđ−ợcnhỏhơnmộtl−ợng tốithiểu.Bạnhybắtđầuvớinồngđộdungdịchl90%thìnồngđộtốithiêuphảil50%. L−ợngchấtlỏngthêmvovlấyđisaumỗilầnnhúngdaođộngtrongkhoảngtừ1%đến 10%.Hỏibaonhiêubộphậncóthểnhúngvobểdungdịchacidtr−ớckhinồngđộcủanó giảmxuốngd−ớimứcchophép? Giảipháp: Banđầunồngđộacidlinitial_con=90%=acid/(acid+water) saulầnnhúngthứnhấtnồngđộacidcòn: con= = =
  14. Updatesofts.com Ebook Team 14 = ‘acid‘ll−ợngacidbanđầutrongdungdịch,‘water‘ll−ợngn−ớcbanđầutrongdung dịch, ‘lost‘ l l−ợng phần trăm n−ớc thêm vo. Sốacid còn lại trong dung dịch sau lần nhúngthứnhấtl: acid_left= Nghĩal,khinhúnglầnthứhainồngđộdungdịchsẽl: con= = = Tiếptụcquátrìnhny,saunlầnnhúng,nồngđộacidl: con= Nếunồngđộacidcònlạilmứctốithiểuchấpnhậnđ−ợc,sốlầnnhúngcựcđạisẽlmột sốnguyênbằnghoặcnhỏhơnn: n= TrongMATLABgiảiphápsẽl: >>initial_con=90 initial_con= 90 >>min_con=50 min_con= 50 >>lost=0.01; >>n=floor(log(initial_con/min_con)/log(1+lost)) n= 59 Nh−vậycóthểnhúng59lầntr−ớckhinồngđộacidgiảmxuốngd−ới50%.Chúýhm floor dùngđểlmtrònsốnxuốngsốnguyêngầnnhất,vởdâytacũngcóthểdùnghm logarithm cơsố10v logarithm cơsố2thaychohm logarithm tựnhiênởtrên. oOo
  15. Updatesofts.com Ebook Team 15 ch−ơng3 NHữNGĐặCĐIểMCủACửASổLệNH Cửasổlệnh(comand)củaMATLABcórấtnhiềunhữngđặcđiểmcầnchúý,mộtsốchúng đđ−ợcgiớithiệuởch−ơngtr−ớc,vsauđâychúngtatìmhiểurõhơnvềchúng. 3.1QuảnlíkhônggianlmviệccủaMATLAB Cácdữliệuvbiếnđ−ợctạolêntrongcửasổlệnh,đ−ợcl−utrongmộtphầngọilkhông gianlmviệccủaMATLAB.MuốnxemtênbiếntrongkhônggianlmviệccủaMATLABta dùnglệnhwho: >>who Yourvariablesare: Dh buiding_heighttheta Cácbiếnnyđ−ợcdùngtrongvídụ−ớcl−ợngchiềucaongôinh.Đểxemchitiếthơnvề cácbiếntadùnglệnhwhos: >>whos NameSizeBytesClass D1x18doublearray buiding_height1x18doublearray h1x18doublearray theta1x18doublearray Grandtotalis4elementsusing32bytes Mỗibiếnđ−ợcliệtkêvớikíchcỡcủanó,sốbytessửdụng,vcáclớpcủachúng(class), trongvídụđặcbiệtny,cácbiếnđềulsốđơn,cóđộchínhxáchaisốsaudấuphẩy.Lệnh whos đặcbiệtcóíchkhinghiêncứuđếnphầnmảngvcáckiểudữliệukhác. Ngoicáchmny,trongmụcShowWorkspaceShowWorkspaceShowWorkspacetrongbảngchọnfileffiilleefiletạoracửasổ GUIgọilWorkspaceBrowserWorkspaceBrowserWorkspaceBrowser,nóchứacácthôngtint−ơngtựnh−lệnh whos .Thêmnữa nótạochobạnkhảnăngxoá,lmsạchcácbiếnmbạnchọn.Cửasổnycũngcóthểtạo bằngcáchnhấnnútWorkspaceBrowserWorkspaceBrowserWorkspaceBrowser,trênthanhcôngcụcủacửasổlệnh. Nh− đ trình by ở trên, lệnh clear có thể xoá biến từ không gian lm việc của MATLAB. Vídụ: >>clearhD%XoácácbiếnhvD >>who Yourvariablesare: buiding_heighttheta
  16. Updatesofts.com Ebook Team 16 Cáctuỳchọnkháccủahmclearchúngtacóthểtìmhiểuthêmbằnglệnhhelp: >>helpclear CLEARClearvariablesandfunctionsfrommemory. CLEARremovesallvariablesfromtheworkspace. CLEARVARIABLESdoesthesamething. CLEARGLOBALremovesallglobalvariables. CLEARFUNCTIONSremovesallcompiledMfunctions. CLEARMEXremovesalllinkstoMEXfiles. CLEARALLremovesallvariables,globals,functionsandMEXlinks. CLEARVAR1VAR2 clearsthevariablesspecified.Thewildcard character'*'canbeusedtoclearvariablesthatmatchapattern. Forinstance,CLEARX*clearsallthevariablesinthecurrent workspacethatstartwithX. IfXisglobal,CLEARXremovesXfromthecurrentworkspace, butleavesitaccessibletoanyfunctionsdeclaringitglobal. CLEARGLOBALXcompletelyremovestheglobalvariableX. CLEARFUNclearsthefunctionspecified.IfFUNhasbeenlocked byMLOCKitwillremaininmemory. CLEARALLalsohasthesideeffectofremovingalldebugging breakpointssincethebreakpointsforafileareclearedwhenever themfilechangesoriscleared. UsethefunctionalformofCLEAR,suchasCLEAR('name'), whenthevariablenameorfunctionnameisstoredinaxâu. SeealsoWHO,WHOS,MLOCK,MUNLOCK. Cuốicùng,khilmviệctrongkhônggianlmviệccủaMATLAB,nóth−ờngthuận tiệnđểghihoặcinmộtbảnsaocôngviệccủabạn,lệnh diary ghidữliệung−ờidùngđ−a vovcửasổlệnhvđ−arafilevănbảndạngmASCIIcótênldiarytrongth−mụchiện tại. >>diaryframe%ghidữliệuvaofileframe >>diaryoff%kếtthúclệnhdiaryvđóngfile Khicửasổlệnhđ−ợcchọn,chọnprintprintprint từbảngchọnfileffiilleefileđểinmộtbảncủacửasổ lệnh,bạncóthểdùngchuộtđểlựachọnphầnmìnhmuốnghi,chọnPintSelectionPintSelectionPintSelection từbảng chọnfileffiilleefile,đểinmộtphầnvănbảnđlựachọn. 3.2Ghivphục3.2Ghivphụchồidữliệuhồidữliệu ĐểnhớcácbiếnMATLABcóthểghivgọilạidữliệutừfiletrongmáytínhcủabạn. MụcWorkspaceasWorkspaceas trongbảngchọn ffiilleefilemởhộpchuẩnhộithoạiđểghitấtcảcácbiến file
  17. Updatesofts.com Ebook Team 17 hiệntại.Giốngnh−vậy,trongmụcLoadWorkspaceLoadWorkspaceLoadWorkspacetrongbảngchọnfilefilefilemởhộphộithoại đểgọilạitấtcảcácbiếnmtađghilạitừkhônggianlmviệctr−ớc,nókhônglmmất cácbiếnnytrongkhônggianlmviệchiệntại.Khitagọilạicácbiến,mcácbiếnny trùngtênvớicácbiếntrongkhônggianlmviệccủaMATLAB,nósẽthayđổigiátrịcủacác biếntheogiátrịcủacácbiếngọiratừfile. Nếubảngchọnfilekhôngthuậntiệnhoặckhôngđápứngđ−ợcnhữngyêucầucủa bạn,MATLABcungcấphailệnh save v load ,nóthựchiệnmộtcáchmềmdẻohơn,trong tr−ờnghợpđặcbiệt,lệnh save chophépbạnghimộthoặcnhiềuhơnmộtbiếntuytheosự lựachoncủabạn. Vídụ: >>save ChứatấtcảcácbiếntrongMATLABtheokiểunhịphântrongfileMATLAB.mat >>savedata chứatấtcảcácbiếntrongMATLABtheokiểunhịphântrongfledata.mat. >>savedataeraserspadstapeascii Ghicácbiếnerasers,pads,tapetrongdạngmASCII8sốtrongfiledata.Filedạngm ASCIIcóthểsửađổibằngbấtcứch−ơngtrìnhsoạnthảovănbảnno,chúýrằngfileASCII khôngcóphầnmởrộng.mat. >>savedataeraserspadstapeasciidouble Ghicácbiếnerasers,pads,tapedạngASCII16sốtrongfiledata. Lệnh load cũngdùngvớicúphápt−ợngtự. 3.3Khuôndạnghiểnthịsố KhiMATLABhiểnthịkếtquảdạngsố,nótuântheomộtsốquyđịnhsau: Mặcđịnh,nếukếtquảlsốnguyênthìMATLABhiểnthịnólmộtsốnguyên,khikếtquảl mộtsốthựcthìMATLABhiểnthịsốxấpxỉvớibốnchữsốsaudấuphẩy,còncácsốdạng khoahọcthìMATLABhiểnthịcũnggiốngnh−trongcácmáytínhkhoahọc. Bạn có thể không dùng dạng mặc định, m tạo một khuôn dạng riêng từ mục PreferencesPreferences,trongbảngchọnfileffiilleefile,cóthểmặcđịnhhoặcđánhdạngxấpxỉtạidấunhắc. Chúngtadùngbiếnaverage_cost(trongvídụtr−ớc)lmvídụ,dạngsốnyl: LệnhcủaMATLAB Average_cost Chúthích formatshort 50.833 5số formatlong 50.83333333333334 16số formatshorte 5.0833e+01 5sốvớisốmũ formatlonge 5.083333333333334e+01 16sốvớisốmũ formatshortg 50.833 chính xác hơn format short hoặcformatshorte formatlongg 50.83333333333333 chính xác hơn format long hoặcformatlonge formathex 40496aaaaaaaaaab hệcơsố16
  18. Updatesofts.com Ebook Team 18 formatbank 50.83 haisốhệ10 format+ + d−ơng,âmhoặcbằngkhông formatrat 305/6 dạngphânsố MộtchúýquantrọnglMATLABkhôngthayđổisốkhiđịnhlạikhuôndạnghiểnthịđ−ợc chọn,mchỉthayđổimnhìnhthayđổi. oOo Ch−ơng4 ScriptM_files Mộtvấnđềđơngiảnl,yêucầucủabạntạidấunhắccủaMATLABtrongcửasổlệnhl nhanhvhiệuquả.Tuynhiênvìsốlệnhtănglên,hoặckhibạnmuốnthayđổigiátrịcủa mộthoặcnhiềubiếnvthựchiệnlạimộtsốlệnhvớigiátrịmới,nếucứđánhlặplạitạidấu nhắccủaMATLABthìsẽtrởlênbuồntẻ,dovậyMATLABcungcấpmộtgiảiphápchovấn đềnyl:nóchophépbạnthaythếcáclệnhcủaMATLABbằngmộtfilevănbảnđơngiản, v yêu cầu MATLAB mở file v thực hiện lệnh chính xác nh− l đánh tại dấu nhắc của MATLABtạicửasổlệnh,nhữngfilenygọilscripscriptfilescriptfile,hoặcđơngiảnlM_filetfile M_fileM_file.Danhtừ "script"đểchỉrằngthựctếMATLABđọctừfilekịchbảntìmthấytrongfile.Danhtừ"M_file" đểchỉrằngtênscriptfileđóphảikếtthúcbằngphầnmởrộngl'.m'nhvídụexample1.m. ĐểtạomộtscriptM_file,chọnNewNewNewtrongbảngchọnfileffiilleefilevchọnM_fileM_fileM_file.Thủtụcny sẽtạoramnhìnhsoạnthảo,vbạncóthểđánhđ−ợccáclệnhcủaMATLABtrongđó.Ví dụd−ớiđâylcáchlệnhtrongvídụ−ớcl−ợngchiềucaongôinhởtr−ớc: functionexample1 %example1.mVídụ−ớcl−ợngchiềucaongôinh h=2 theta=60 D=50; building_height=h+D*tan(theta*pi/180) Bạncóthểghivl−ugiữfilenybằngcáchchọnSaSaveSavetừbảngchọnfileve ffiilleefile.Khibạnghilên filechúýphảiđánhtênfiletrùngvớitênhm(example)khôngcầnđánhvophầnmởrộng, MATLABtựgánvochonó.Khiđótừdấunhắctacóthểđánh: >>example1 h= 2 theta= 60 building_height= 54.3599 KhiMATLABdiễngiảicáctrạngtháicủaexample1ởtrên,nósẽđ−ợcnóikỹhơnở ch−ơng sau, nh−ng một cách ngắn gọn, MATLAB dùng các trạng thái của biến MATLAB hiệntạivtạolêncáclệnhcủanó,bắtđầubằngtênM_file.Nghĩal,nếuexample1không phảilbiếnhiệntại,hoặcmộtlệnhMATLABxâydựnglên,MATLABmởfileexample1.m
  19. Updatesofts.com Ebook Team 19 (nếunótìmthấy)vtínhgiátrịcáclệnhtìmthấychỉkhichúngtavocácthôngsốchínhxác tạidấunhắccủacửasổlệnh.Nh−đthấylệnhtrongM_filetruycậpđếntấtcảcácbiến trongkhônggianlmviệccủaMATLAB,vtấtcảcácbiếntrongM_filetrởthnhmộtphần củakhônggianlmviệc.Bìnhth−ờngcáclệnhđọctrongM_filekhôngđ−ợchiểnthịnh−l nóđ−ợctínhtrongcửasổlệnh,nh−nglệnh echoon yêucầuMATLABhiểnthịhoặclặplại lệnhđốivớicửasổlệnhnh−chúngtađđọcvtính.Tiếptheobạncóthểđoánđ−ợclệnh echooff lmgì.Giốngnh−vậy,lệnh echo lặplạibởichínhnólmthayđổichínhtrạngthái củanó. VớiđặcđiểmnycủaM_filebạncóthểthayđổilạinộidungcủafile,vídụbạncóthể mởM_fileexample1.mthayđổilạicácgiátrịcủah,D,hoặctheta,ghilạifileđóvyêucầu MATLABtínhlạilệnhtrongfile.Thêmnữa,bằngcáchtạoM_file,cáclệnhcủabạnđ−ợcl−u trênđĩavcóthểứngdụngvềsaukhibạncần. NhữngứngdụngcủachỉdẫncủaMATLABgiúpchúngtahiểuđ−ợckhidùngscript filenh−trongexample1.m,chỉdẫnchophépbạnl−ugiữcùngcáclệnhtrongscriptfile,vì vậybạnnhớđ−ợcnhữnglệnhđólmgìkhibạnnhìnlạifilesauđấy.Thêmnữa,dấuchấm phẩyđằngsaucâulệnhkhôngchohiểnthịkếtquả,từđóbạncóthểđiềuchỉnhscriptfileđa ranhữngkếtquảcầnthiết. Vìnhữngứngdụngcủascriptfile,MATLABcungcấpmộtsốhmđặcbiệtcóíchkhi bạnsửdụngtrongM_file: CáchmM_file disp(ans) Hiểnthịcáckếtquảmkhônghiệntênbiến echo Điềukhiểncửasổlệnhlặplạicáclệnhcủascriptfile input Sửdụngdấunhắcđểđadữliệuvo keyboard Traođiềukhiểntạmthờichobnphím pause Dừnglạichođếnkhing−ờidùngnhấnmộtphímbất kỳ pause(n) Dừnglạingiây waitforbuttonpress Dừng lại cho đến khi ng−ời dùng nhấn chuột hoặc phím. KhilệnhcủaMATLABkhôngkếtthúcbằngdấuchấmphẩy,kếtquảcủalệnhđ−ợc hiểnthịtrêncửasổlệnhcùngvớitên biến. Đôilúcnóthuậntiện khikhôngchohiệntên biến,trongMATLABtadùnglệnhdispđểthựchiệnviệcny: >>h%Cáchtruyềnthốngđểhiệnkếtquả h= 2 >>disp(h)%Hiệnkếtquảkhôngcótênbiến 2 Đểgiúpbạnsoạnthảoscriptfilekhitínhtoánchonhiềutr−ờnghợp,lệnh input cho phépbạntạocâunhắcđểvodữliệuđ−ợcanton.Vídụexample1.mvớinhữngphầnđ− ợcsửa: functionexample1 %example1.mVídụ−ớcl−ợngchiềucaongôinh h=2 theta=60
  20. Updatesofts.com Ebook Team 20 D=input(‘Vokhoảngcáchgiữang−ờivngôinh:‘) building_height=h+D*tan(theta*pi/180) chạyfileny: >>example1 h= 2 theta= 60 Vokhoảngcáchgiữang−ờivngôinh:60 D= 60 building_height= 64.8319 ởvídụtrêntagõvosố60vấnEnter.NhữnglệnhsauđósẽtínhvớigiátrịcủaDl60. Chúýrằnghm input cóthểdùngvớicácphéptoánkhácgiốngnh−đốivớicáchmthông th−ờngkhác,hm inininputin put cũngchấpnhậnđốivớibấtcứkiểubiểudiễnsốno,vídụtavo mộtsốl:+5. >>example1 h= 2 theta= 60 Vokhoảngcáchgiữang−ờivngôinh:sqrt(1908)+5 D= 48.6807 building_height= 52.9783 Đểxemnhữngtácđộngcủalệnh echo ,tadùngchúngtrongscriptfile: echoon functionexample1 %example1.mVídụ−ớcl−ợngchiềucaongôinh h=2 theta=60 D=input(‘Vokhoảngcáchgiữang−ờivngôinh:‘) building_height=h+D*tan(theta*pi/180) echooff chạych−ơngtrìnhtađ−ợc: >>example1 %example1.mVídụ−ớcl−ợngchiềucaongôinh h=2 h=
  21. Updatesofts.com Ebook Team 21 2 theta=60 theta= 60 D=input(‘Vokhoảngcáchgiữang−ờivngôinh:‘) Vokhoảngcáchgiữang−ờivngôinh:60 building_height=h+D*tan(theta*pi/180) building_height= 64.8319 echooff Nh−bạnđthấytrongtr−ờnghợpny,lệnh echo lmchokếtquảkhóđọchơn,nh −ngng−ợclạilệnhnócóthểrấtcóíchkhigỡrốinhiềuscriptfileứngdụng. oOo Ch−ơng5 QUảNLýTệp MATLABcungcấpmộtsốcáchmfilehệthốngvcáclệnhchophépbạnliệtkêtênfile, xem,vxoáM_file,hiểnthịvthayđổith−mụcchứanó.Mộtsốtổngkếtcáclệnhđ−ợcđ waratrongbảngd−ớiđây.Thêmvođóbạncóthểxemvsửađ−ờngdẫncủaMATLAB (matlabpath). Những đ−ờng dẫn ny chỉ cho MATLAB nơi chứa script file v hm M_file trongmáytínhcủabạn.Córấtnhiềutr−ờnghợpcáchmtrongMATLABlcácM_fileđơn giảnđ−ợcchứatrongổđĩa,nh−ngMATLABthôngbáokhôngbiếthmny,nh−vậydonó khôngtìmđ−ợcđ−ờngdẫncủaMATLAB,bạncầnphảithayđổilạiđ−ờngdẫn: Cáchmhệthốngfile addpathdir1 Thêmth−mụcdir1vobắtđầucủađ−ờngdẫn cd Hiểnthịth−mụchiệnthời p=cd Gánth−mụclmviệchiệnthờichobiếnp cdpath Thayđổith−mụcđarabằngđ−ờngdẫn deletetest.m XoáM_filetest.m dir Danhsáchtấtcảcácfiletrongth−mụchiệnthời d=dir Trảlạifiletrongth−mụchiệnthờitrongcấutrúc biếnd edittest Mởtest.mđểsoạnthảo,giốngnh−Opentrong bảngchonfile exist(‘cow‘,‘file‘) Kiểmtrasựtồntạicủafilecow.mtrongđ−ờng dẫn exist(‘d‘,‘dir‘) Kiểmtrasựtồntạicủath−mụcdtrongđ−ờngdẫn filesep Táchfilenh−‘\‘trongWindows95vNT,‘:‘trên Macintosh fullfile Tạotênfilevớiđ−ờngdẫnđầyđủ inmem DanhsáchhmM_file,gọiratừbộnhớ ls Giốngnh−dir MATLABrc.m MATLABchủkhởiđộngscriptM_file,thực hiệntr−ớckhistartup.m
  22. Updatesofts.com Ebook Team 22 MATLABroot Trảđ−ờngdẫnth−mụcchoch−ơngtrìnhthực hiệnMATLAB path Hiểnthịhoặcsửađ−ờngdẫncủaMATLAB (MATLABpath) pathdef.m HmM_file,nơimmmatlabpathlđúng pathsep Chiađ−ờngdẫnchomatlabpath pwd Giốngnh−cd rmpathdir1 Bỏđith−mụcdir1từđ−ờngdẫnmatlabpath startup.m scriptM_filethựchiệnkhiMATLABkhởiđộng tempdir Têncủath−mụctạmthời tempname Têncủafiletạmthời typetest HiệnraM_filetest.mtrongcửasổlệnh what TrảlạidanhsáchtấtcảM_filevMAT_file trongth−mụchiệnthời whichtest Hiểnthịđ−ờngdẫnth−mụcđếntest.m Đ−ờng đẫn của MATLABl danh sách của tất cả các th− mục l−utrữ các filecủa MATLAB.Hơnnữa,nếubạntạomộtth−mụccủaM_filethìđ−ờngdẫncủanóphảiđ−ợc thêmvomatlabpath,nếukhôngthìMATLABkhôngthểtruycậpđếncácfilecủabạnđ−ợc, trừkhifileđóđặttrongth−mụchiệnthời. ĐểxemMATLABsửdụngmatlabpathnh−thếno,hyxemtr−ờnghợpđ−ợcmôtả trongbảngsau:(Khôngthấy) Đ−ờngdẫncủaMATLAB Khibạngõ>>cow,MATLABsẽlmnh−sau: (1) KiểmtranếucowlmộtbiếntrongkhônggianlmviệccủaMATLAB,nếukhông thì (2) Nókiểmtranếucowlmộthmđ−ợcxâydựng,nếukhôngthì (3) NókiểmtranếumộttênM_filecow.mtồntạitrongth−mụchiệnthời,nếukhông thì (4) Nó kiểm tra nếu cow.m tồn tại bất cứ nơi no trên đ−ờng dẫn của MATLAB bằng cáchtìmkiếmđ−ờngdẫn. Khinosựphùhợpđ−ợctìmthấythìMATLABchấpnhậnnó.Vídụnh−cowtồntạinh− mộtbiếntrongkhônggiạnlmviệccủaMATLAB,thìMATLABkhôngdùnghmhoặcbiến cótênlcow.Vìvậybạntránhkhôngnêntạobiếncótêntrùngvớitênhmnh−: >>sqrt=1.2; >>sqrt(2); Nhữnglệnhtrênsẽtạoralỗi,bởivìsqrtởđâykhôngphảilhmtínhcănbậchai,nó lbiếncógiátrịl1.2.Thủtụcđ−ờngdẫncònđ−ợcdùngkhilệnh load đ−ợcdùng.Đầutiên MATLABtìmkiếmtrongth−mụchiệntại,sauđónótìmtheođ−ờngdẫncủaMATLABđến filedữliệu. Thực tế thủ tục tìm kiếm của MATLAB phức tạp hơn l trình by ở trên rất nhiều vì MATLABdùngrấtnhiềufilecóphầnmởrộngl‘.m‘.HmM_filecóthểchứanhiềuhơn mộtbiến,th−mụctrongmatlabpathcóthểcóth−mụccongọil private ,vMATLABcung cấpch−ơngtrìnhh−ớngđốit−ợngvớicáctoántửđịnhnghĩalạiM_fileởtrongth−mụccon, bắtđầubằngkítự@.Nếutấtcảnhữngđặcđiểmnyđ−ợccộngthêmvobảngtrênthìnó sẽđầyđủhơn,nh−ngsẽrấtkhóhiểu.Nếubạnmuốnnghiêncứuthêmvềphầnnythìxem cáctiliệucungcấptrongđĩaCD.
  23. Updatesofts.com Ebook Team 23 NếubạncóM_filehoặcMAT_filechứatrongth−mụckhôngphảiởtrongđ−ờngđẫncủa MATLABvkhôngởtrongth−mụchiệntại,MATLABkhôngthểtìmthấychúng.Cóhaigiải phápchovấnđềnyl: (1)_Tạoth−mụcthiếtkếthnhth−mụchiệntại,dùnglệnhcd hoặc pwd từtrongbảng tr−ớc. (2)_Cộngthêmth−mụcthiếtkếtrongđ−ờngdẫncủaMATLAB. Cuối cùng nó rất dễ dng khi ta sử dụng ph−ơng pháp duyệt qua các đ−ờng dẫn (pathbrowser )hoặccáclệnhtrongcửasổlệnh path v addpath .Đểdùngpathbrowser,ta chọn setpath từbảngchọnfilehoặcnhấnchuộttrênnút pathbrowser trênthanhcôngcụ củacửasổlệnh.Lmnh−vậytasẽđ−ợcmnhìnhgiốngnh−hình5.1:hình5.1: Giốngnh−thiếtkếcácGUI,nóliênquantrựctiếpkhitasửdụng.Đ−ờngdẫnmatlabpath đ−ợchiểnthịởbêntrái,th−mụcconnằmtrongđ−ờngdẫnđ−ợcchọnnằmởbêntrái,còn các nút thay đổi đ−ờng dẫn nh− thêm đ−ờng dẫn mới (add to path), loại bỏ đờng dẫn (removefrompath)ởphíatrên.Đểghilạisựthayđổitachọnsavsavsavepathepathepathtừbảngchọnfileffiilleefile củacửasổ pathbrowserpathbrowsertr−ớckhiđóngGUI. Hình5.1pathbrowsertrongMATLAB5.2Hình5.1pathbrowsertrongMATLAB5.2 CửasổpathbrowserpathbrowserpathbrowsertrongMATLAB5.0khôngkháclắmsovớiMATLAB5.2,chủyếul cácnútthayđổiđ−ờngdẫntrongMATLAB5.2thìnóđặtởtrênđỉnhcònởMATLAB5.0nó đ−ợcđặtởbênphải.Đểghilạisựthayđổiđ−ờngdẫntrongMATLAB5.0trớckhiđóngGUI tanhấnnútsavesettingssavesettingssavesettings.
  24. Updatesofts.com Ebook Team 24 Hình5.2pathbrowsertrongMATLABtoStudentHình5.2pathbrowsertrongMATLABtoStudent 5.1MATLABkhikhở5.1MATLABkhikhởiđộngiđộng KhikhởiđộngMATLAB,nótạorahaiscriptM_filelmatlabrc.mvstartup.m,trongđó atlabrc.mđicùngMATLAB,vnhìnchunglkhôngđ−ợcsửanó. CáclệnhtrongM_filetạomộtcấuhìnhmặcđịnhvềkíchcỡcủacửasổvvịtrícủanó, cũngnh−cácđặcđiểmmặcđịnhkháctrongWindows95,WindowNT.Đ−ờngdẫnmặcđịnh đ−ợctạobằngcáchgọiscriptfilepathdef.mtừmatlabrc.m.Trongcácphần,cáclệnhtrong matlabrc.mkiểmtrasựtồntạicủascriptM_filestartup.mtrongđ−ờngdẫncủaMATLAB nếunótồntại,cáclệnhtrongnóđ−ợcthựchiện. Sự lựa chọn M_file startup.m chứa các lệnh có những đặc điểm riêng đối với MATLAB.Vídụnórấtthôngth−ờngnếutathêmmộthoặchơncáclệnh path hoặc addpath trongstartup.mđểchènthêmcácth−mụcvotrongđ−ờngdẫncủaMATLAB.Giốngnh− vậy,mặcđịnhhiểnthịkhuôndạngsốcóthểthayđổiđ−ợcnh−formatcompact.Nếubạn cómnhìnhcânbằngxám,lệnhgraymonsẽcóíchkhitạomặcđịnhđồhoạchochếđộ ny.Hơnnữa,nếubạnvẽđồthịcócáckiểumặcđịnhriêngthìmộtsựgọitớicolordefcó thểxuấthiệntrongstartup.m.Khistartup.mlmộtfilechuẩntrongscriptM_file,thìkhông mộtlệnhnocóthểthaythếđ−ợctrongnó.Tuynhiêntacóthểthaythếlệnhquittrong startup.m. oOo
  25. Updatesofts.com Ebook Team 25 ch−ơng6 cácphéptoánvớiMảNg Tất cả mọi sự tính toán đều duy trì một điểm l có sử dụng đến các số đơn, gọi l scalarsscalars.Phéptoáncóliênquanđếnscalarsscalarsscalarslcácphéptoáncơbản,nh−ngmộtlúcno đó, phép toán phải lặp lại nhiều lần khi tính trên nhiều số. Để giải quyết vấn đề ny, MATLABđịnhnghĩathaotáctrênmảngdữliệu. 6.1Mảngđơn Giảsửtaxéthmy=sin(x)trongmộtnửachukỳ(‘‘x‘0)trongkhoảngnysố điểmgiátrịcủaxlvôtận,nh−ngtachỉxétnhữngđiểmcáchnhaumộtkhoảnggiátrịl 0.1‘nh−vậysốcácgiátrịcủaxlđếmđ−ợc.Từđótacómảngcácgiátrịcủaxl x=0,0.1‘,0.2‘, ,‘ Nếutadùngmáytínhkỹthuậtđểtínhthìtađ−ợct−ơngứngcácgiátrịcủay,từđótacó mảngcủay x 0 0.1‘ 0.2‘ 0.3‘ 0.4‘ 0.5‘ 0.6‘ 0.7‘ 0.8‘ 0.9‘ ‘ y 0 0.31 0.59 0.81 0.95 1.0 0.95 0.81 0.59 0.31 0 trongmảngxchứacácphầntửx1,x2, ,x11 trongmảngychứacácphầntửy1,y2, ,y11 TrongMATLABđểtoạnhữngmảngnyrấtđơngiản;vídụđểtạohaimảngtrêntađánh cáclệnhsauvodấunhắccủaMATLAB: >>x=[0.1*pi.2*pi.3*pi.4*pi.5*pi.6*pi.7*pi.8*pi.9*pipi] x= Columns1through7 00.31420.62830.94251.25661.57081.8850 Columns8through11 2.19912.51332.82743.1416 >>y=sin(x) y= Columns1through7 0 0.30900.58780.80900.95111.00000.9511 Columns8through11 0.80900.58780.30900.0000 Kếtquảtrêntađ−ợcmảngcủaygồmcácphầntửt−ơngứnglsinecủacácphầntửcủax, ởđâyMATLABngầmhiểultatínhsinecủatừngphầntửcủax. Đểtạomảng,tađặtcácphầntửcủamảngvogiữahaidấungoặcvuông"[ ]";giữa haiphầntửcủamảngcóthểldấucáchhoặcdấuphẩy"," 6.2Địachỉcủamảng ởtrênmảngxcó1hng,11cộthaycóthểgọilvectorhng,mảngcóđộdi11 +)Đểtruynhậpđếncácphầntửcủamảngtadùngcácchỉsốthứtựcủaphầntửđótrong mảng vídụx(1)lphầntửthứnhấtcủamảng,x(2)lphầntửthứhaicủamảng
  26. Updatesofts.com Ebook Team 26 >>x(2)%phầntửthứnhấtcủamảng ans= 0.3142 >>y(5)%phầntửthứ5củamảng ans= 0.9511 +)Đểtruynhậpđếnnhiềuphầntửcủamảng,vídụtatruynhậptừphầntửthứnhấtđến phầntửthứnămcủamảngx: >>x(1:5) ans= 00.31420.62830.94251.2566 Truynhậptừphầntửthứ7đếnphầntửcuốicủamảngy: >>y(7:end) ans= 0.95110.80900.58780.30900.0000 Truynhậptừphầntửthứbađếnphầntửthứnhấtcủamảngy: >>y(3:1:1) ans= 0.58780.30900 ởvídụtrên3lphầntửthứ3,1lchỉphầntửđầutiên,còn1lgiátrịcộng(vịtríphầntử saubằngvịtríphầntửtr−ớccộngvới1) Truynhậpđếncácphầntửtrongkhoảngtừphầntửthứ2,đếnphầntửthứ7,vịtrícủa phầntửsaubằngvịtrícủaphầntửtr−ớccộngvới2,củamảngx: >>x(2:2:7) ans= 0.31420.94251.5708 Tạomảnggồmcácphầntửthứ1,2,8,9củamảngy: >>y([8291]) ans= 0.80900.30900.58780 Nếutatruynhậpvocácphầntửcủamảngmthứtựcácphầntửtăngđềuvới1,tacóthể đánhlệnh: >>x(1:3) ans= 00.31420.6283 6.3Cấutrúccủamảng
  27. Updatesofts.com Ebook Team 27 Vớimảngcósốl−ợngphầntửítthìtacóthểnhậpvotrựctiếp,nh−ngvớimảngcósốl −ợnglớncácphầntửthìtadùngmộttronghaicáchsau: +)Tạomộtmảngbắtđầulphầntử0,saubằngphầntửtr−ớccộngvới0.1,phầntửcuốil 1,tấtcảcácphầntửcủamảngđ−ợcnhânvới‘: >>x=(0:0.1:1)*pi x= Columns1through7 00.31420.62830.94251.25661.57081.8850 Columns8through11 2.19912.51332.82743.1416 +)Tạomảnggồmcácphầntửcủaxbằnghm linspace .Cúphápcủahmnynh−sau: linspacelinspacelinspace(giátrịphầntửđầu,giátrịphầntửcuối,sốcácphầntử) vídụ >>x=linspace(0,pi,11) x= Columns1through7 00.31420.62830.94251.25661.57081.8850 Columns8through11 2.19912.51332.82743.1416 Cáchthứnhấtgiúptatạomảngmchỉcầnvokhoảngcáchgiátrịgiữacácphầntử (khôngcầnbiếtsốphầntử),còncáchthứhaitachỉcầnvosốphầntửcủamảng(không cầnbiếtkhoảngcáchgiátrịgiữacácphầntử). Ngoicácmảngtrên,MATLABcòncungcấpmảngkhônggiantheologarithmbằng hm logspace .Cúphápcủahm logspace nh−sau: logspace(sốmũđầu,sốmũcuối,sốphầntử) vídụ: >>logspace(0,2,11) ans= Columns1through7 1.00001.58492.51193.98116.309610.000015.8489 Columns8though11 25.118939.810763.0957100.0000 Tạomảng,giátrịbắtđầutại10 0,giátrịcuốil10 0,chứa11giátrị Cácmảngtrênlcácmảngmcácphầntửcủanóđ−ợctạolêntheomộtquyluật nhấtđịnh.Nh−ngđôikhimảngđ−ợcyêucầu,nókhôngthuậntiệntạocácphầntửbằngcác ph−ơngpháptrên,khôngcómộtmẫuchuẩnnođểtạocácmảngny.Tuynhiêntacóthể tạomảngbằngcáchvonhiềuphầntửcùngmộtlúc Vídụ >>a=1:5,b=1:2:9 a=
  28. Updatesofts.com Ebook Team 28 12345 b= 13579 >>c=[ab] 1234513579 ởvídụtrêntađtạohaimảngthnhphầnlavbsauđótạomảngcbằngcáchghéphai mảngavb. Tacũngcóthểtạomảngnh−sau: >>d=[a(1:2:5)101] d= 135101 almảnggồmcácphầntử[135],mảngdlmảnggồmcácphầntửcủaavghépthêm cácphầntử[101] Tómlạitacóbảngcấutrúccácmảngcơbản: x=[22*pisqrt(2)23j] Tạovectorhngxchứacácphầntửđặcbiệt. x=first:last Tạo vector hng x bắt đầu tại first, phần tử sau bằngphầntửtr−ớccộngvới1,kếtthúclphầntử cógiátrịbằnghoặcnhỏhơnlast. x=first:increment:last Tạo vector hng x bắt đầu tại fist, giá trị cộng l increment,kếtthúclphầntửcógiátrịbằnghoặc nhỏhơnlast. x=linspace(fist,last,n) Tạovectorhngxbắtđầutạifirst,kếtthúcllast, cónphầntử. x=logspace(first,last,n) Tạovectorhngkhônggianlogarithmxbắtđầutại 10 first ,kếtthúctại10 last ,cónphầntử. 6.4Vectorhngvvectorcột Trongcácvídụtr−ớc,mảngchứamộthngvnhiềucột,ng−ờitath−ờnggọilvector hng.Ngoiratacòncómảnglvectorcột,tứclmảngcómộtcộtvnhiềuhng,trong tr−ờnghợpnytấtcảmọithaotácvtínhtoánđốivớimảngnh− ởtrênlkhôngthayđổi. Từ các hm tạo mảng minh hoạ ở phần tr−ớc (tất cả đều tạo vector hng), có nhiều cáchđểtạovectorcột.Mộtcáchtrựctiếpđểtạovectorcộtlvotừngphầntửcủamảng nh−vídụsau: >>c=[1;2;3;4;5] c= 1 2 3 4 5 Khác với tr−ớc l ta dùng dấu cách hay dấu phẩy để phân cách giữa hai cột của vector hng. Còn ở ví dụ ny ta dùng dấu chấm phẩy để phân cách giữa hai hng của vectorcột.
  29. Updatesofts.com Ebook Team 29 Mộtcáchkhácđểtạocácvectorcộtldùngcáchm linspace , logspace ,haytừcác vectorhng,sauđódùngph−ơngphápchuyểnvị.MATLABdùngtoántửchuyểnvịl(') đểchuyểntừvectorhngthnhvectorcộtvng−ợclại. Ví dụ tạo một vectoraaavvectorb a bbb l chuyển vị của vectoraaa, a vectorcccl c chuyển vị của vectorbbbb: >>a=1:5 a= 12345 >>b=a' b= 1 2 3 4 5 >>c=b' c= 12345 NgoiraMATLABcònsửdụngtoántửchuyểnvớidấuchấmđằngtr−ớc(.')(toántử chuyểnvịchấm).Toántửnychỉkhácvớitoántửchuyểnvị(')khicácphầntửcủamảng lsốphức,tứcltừmộtvectornguồnvớicácphầntửlsốphức,toántử(')tạoravector phứcliênhợpchuyểnvị,còntoántử(.')chỉtạoravectorchuyểnvị. Vídụsauđâysẽlmrõđiềutrên: >>c=a.'%Tạovectorcccctừvectoraaaaởtrênbằngtoántửchuyểnvịchấm c= 1 2 3 4 5 >>d=a+i*a%Tạovectorsốphứcddddtừvectoraaaa d= Columns1though4 1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i4.0000+4.0000i Columns5 5.0000+5.0000i >>e=d.'%Tạovectoreeeetừvectorddddbằngtoántửchuyểnvịchấm(.') e= 1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i 4.0000+4.0000i 5.0000+5.0000i >>f=d'%Tạoravectorfffftừvectorddddbằngtoántửchuyểnvị(') f= 1.00001.0000i 2.00002.0000i
  30. Updatesofts.com Ebook Team 30 3.00003.0000i 4.00004.0000i 5.00005.0000i ởtrêntachỉxétđếnmảngcómộthnghaymộtcộtbâygiờtaxéttr−ờnghợpcó nhiềuhngvnhiềucột,nócònđ−ợcgọilmatrận.Vídụsauđâylmatrậnggggcó haihngvbốncột: >>g=[1234;5678] g= 1234 5678 Trongvídụnytadùngdấucáchđểvocácphầntửtronghngvdấuchấmphẩy( ;)đểtạohaihng;ngoiratacũngcóthểtạomatrậnnh−sau: >>g=[1234 5678 9101112] g= 1234 5678 9101112 ChúýChúý:Khinhậpvomatrậnthìgiữacáchngsốphầntửphảibằngnhaunếukhông ch−ơngtrìnhsẽbịbáolỗinh−vídụsau: >>h=[123;4567] Numbersofelementsineachrowmustbethesame +)Phéptoángiữamảngvớisốđơn.+)Phéptoángiữamảngvớisốđơn. Trongvídụtr−ớcchúngtađtạomảngxbằngcáchnhâncácphầntửcủamộtmảng với.Cácphéptoánđơngiảnkhácgiữamảngvớisốđơnlphépcộng,phéptrừ,phépnhân, vphépchiacủamảngchosốđóbằngcáchthựchiệnphéptoánđốivớitừngphầntửcủa mảng. Vídụ: >>g=[1234;5678;9101112]; >>2%Trừcácphầntửcủamảnggđi2 ans= 1012 3456 78910 >>2*g1%Nhântấtcảcácphầntửcủamảnggvới2sauđótrừđi1 ans= 1357 9111315 17192123
  31. Updatesofts.com Ebook Team 31 +)Phéptoángiữamảngvớimảng Thuậttoánthựchiệnphéptoángiữacácmảngkhôngphảiđơngiảnnh−trênmnócòn bịrngbuộcbởicácđiềukiệnkhácnh−đốivớihaimảngkíchcỡnh−nhauthìtacócác phéptoánsau:phépcộng,phéptrừ,phépnhân,chiatơngứnggiữacácphầntửcủacủahai mảng. Vídụ: >>g%Gọilạimảngg g= 1234 5678 9101112 >>h=[1111;2222;3333]%Tạomộtmảngmớih. h= 1111 2222 3333 >>h+g%Cộnghaimatrậngvh(cộngtơngứngtừngphầntửcủahvớig) ans= 2345 78910 12131415 >>ansh%Lấykếtquảtrớctrừđimảngh,tađợclạimảngg. ans= 1234 5678 9101112 >>2*gh%Nhânmatrậngvới2sauđólấykếtquảtrừđimatrậnhhhh. ans= 1357 8101214 15171921 >>g.*h%Nhânt−ơngứngcácphầntửcủamảnggvớicácphầntửcủamảnghhhh ans= 1234 10121416 27303336 ở ví dụ trên ta đ dùng toán tử chấm_nhân ( .* ), ngoi ra MATLAB còn dùng toán tử chấm_chia(./hoặc.\)đểchiat−ơngứngcácphầntửcủahaimảngnh−vídụd−ớiđây: >>g./h%Chiaphảit−ơngứngcácphầntửcủamảnggvớicácphầntửcủamảnghhhh ans= 1.00002.00003.00004.0000 2.50003.00003.50004.0000 3.00003.33333.66674.0000 >>h.\g%Chiatráit−ơngứngcácphầntửcủamảngggggvớicácphầntửcủamảnghhhh ans= 1.00002.00003.00004.0000 2.50003.00003.50004.0000
  32. Updatesofts.com Ebook Team 32 3.00003.33333.66674.0000 Chúýtachỉcóthểdùngphépnhân_chấmhayphépchia_chấmđốivớicácmảngggggvhhhhm khôngthểdùngphépnhân(*)hayphépchia(/hoặc\)vìđốivớicácphéptoánnyyêu cầusốcộtvsốhngcủahaimatrậnphảit−ơngthích. vídụ: >>g*h ???Errorusing==>* Innermatrixdimensionsmustagree. >>g/h Warning:Rankdeficient,rank=1tol=503291e15. ans= 000.8333 002.1667 003.5000 >>h/g Warning:Rankdificient,rank=2tol=1.8757e14. ans= 0.125000.1250 0.250000.2500 0.375000.3750 Phépchiamatrậnđarakếtquảmkhôngcầnthiếtphảicùngkíchcỡnh−matrậngggg vmatrậnhhhh.Vềcácphéptoánđốivớimatrânchúngtasẽnóiđếnsau +)Mảngvớiluỹthừa. MATLABdùngtoántử(.^)đểđịnhnghĩaluỹthừacủamảng. Vídụtacóhaimảngggggvhhhhnh−ởtrên,tacóthểtạocácmảngmớibằngtoántử(.^)nh− sau: >>g.^2%Cácphầntửcủaggggđ−ợcluỹthừavớsốmũl2. ans= 14916 25364964 81100121144 >>g.^1%Cácphầntửcủaggggđ−ợcluỳthừavớisốmũl1. ans= 10.50.333330.25 0.20.166670.142860.125 0.111110.10.0909090.083333 >>2.^g%Cácphầntửcủagggglsốmũcủa2. ans= 24816 25364964 729100013311728
  33. Updatesofts.com Ebook Team 33 >>g.^(h1)%Cácphầntửcủaggggđ−ợcluỹthừavớisốmũlt−ơngứnglcácphầntử củahhhhtrừđi1. ans= 1111 5678 81100121144 Sauđâylbảngmộtsốphéptoáncơbảncủamảng: CácphéptoánđốivớicácphầntửcủamảngCácphéptoánđốivớicácphầntửcủamảng Dữliệuminhhoạ: a=[a 1a 2 a n],b=[b 1b 2 b n],clsốvôh−ớng Cộngvớisốđơn a+c=[a 1+ca 2+c a n+c] Nhânvớisốđơn a*c=[a 1*ca 2*c a n*c] Cộngmảng a+b=[a 1+b 1a 2+b 2 a n+b n] Nhânmảng a.*b=[a 1*b 1a 2*b 2 a n*b n] Chiaphảimảng a./b=[a 1/b 1a 2/b 2 a n/b n] Chiatráimảng a.\b=[a 1\b 1a 2\b 2 a n\b n] Luỹthừamảng a.^c=[a 1^ca 2^c a n^c] c.^a=[c^a 1c^a 2 c^a n]a.^b=[a 1^b 1a 2^b 2 a n^b n] 6.5Mảngcócácphầntửl0hoặc1. BởivìcónhữngứngdụngchungcủachúngmMATLABcungcấpnhữnghmđểtạo nhữngmảngmcácphầntửcủachúngl0hoặc1. Vídụ: >>ones(3)%Tạomảng3hng,3cộtvớicácphầntửl1. ans= 111 111 111 >>zeros(2,5)%Tạomảng2hng,5cộtvớicácphầntửl0. ans= 0 0 0 0 0 0 0 00 0 Tạomảngcócácphầntửl1,kíchcỡbằngmảnggđbiết. >>size(g)%Hmtrảvềkíchcỡcủamảngg. ans= 34 >>ones(size(g)) ans= 1111 1111 1111
  34. Updatesofts.com Ebook Team 34 Khigọihm ones(n) , zeros(n) vớimộtthôngsốnthìMATLABsẽtạomảngvuôngvớisố hngvsốcộtln.Khigọihmvớihaithôngsố ones(r,c) , zeos(r,c) thìrlchỉsốhng,cl chỉsốcột. 6.6Thao6.6Thaotácđốivớimảngtácđốivớimảng TừcácmảngvcácmatrậncơbảncủaMATLAB,cónhiềucáchđểthaotácđốivới chúng.MATLABcungcấpnhữngcáchtiệníchđểchènvo,lấyra,sắpsếplạinhữngbộ phầntửconcủachúngbằngcácchỉsốcủacácphầntử.Vídụdớiđâysẽminhhoạnhững đặcđiểmthaotácđốivớimảngvmatrậnởtrên: >>A=[123;456;789] A= 123 456 789 >>A(3,3)=0%Gánphầntửhngthứ3,cộtthứ3bằng0. 123 456 780 >>A(2,6)=1%Gánphầntửhngthứ2,cộtthứ6bằng1. A= 123000 456001 780000 ởđâymatrậnAkhôngcó6cột,kíchcỡcủamatrậnAphảitănglênchophùhợp,cácphần tửtăngthêmđ−ợcđiềnbằngcácconsốkhông. >>A(:,4)=4%Gántấtcảcácphầntửthuộccộtthứ4bằng4. A= 123400 456401 780400 ởtrêntadùngdấuhaichấm(:)đểchỉtấtcảcáchng. >>A=[123;456;789];%GánlạicácgiátrịcủamatrậnA. >>B=A(3:1:1,1:3)%TạomatrậnBbằngcáchđảong−ợccáchngcủamatrận A. B= 789 456 123 >>B=A(3:1:1,:)%CũngtạomatrậnBnh−trên %nh−ngởđâytadùng(:)đểchỉtấtcảcáccột. B= 789 456
  35. Updatesofts.com Ebook Team 35 123 >>C=[AB(:,[13])]%TạomatrậnCbằngcáchghépmatrậnAv %cộtthứnhất,thứbacủamatrậnBvobênphảima trậnA. C= 12379 45646 78913 >>C=[13] C= 13 >>B=A(C,C)%DùngmatrậnClmchỉsốđểtạomatrậnBTừmatrậnA. B= 13 79 >>B=A(:)%TạomatrậncộtBtừmatrậnA. B= 1 4 7 2 5 8 3 6 9 >>B=B.'%ChuyểnmatrậnBthnhmatrậnhngbằngtoántửchuyểnvị chấm. B= 147258369 >>B=A; >>B(:,2)=[]%LoạibỏcộtthứhaicủamatrậnB. B= 13 46 79 KhitagáncộtthứhaicủamatrậnBchomatrậnrỗng([])thìnósẽbịxoá,matrậncònlạisẽ rútbỏđihngthứhai. >>B=B.' B= 147 369 >>B(2,:)=[] B= 147 >>A(2,:)=B%ThayhngthứhaicủamatrậnAbằngmatrậnB. A=
  36. Updatesofts.com Ebook Team 36 123 147 789 >>B=A(:,[2222]) B= 2222 4444 8888 Tạo ma trận B bằng cách tạo bốn cột giống cột thứ hai của ma trận A, số hng vẫn giữ nguyênbằngsốhngcủamatrậnA. >>A(2,2)=[] ???Indexedemptymatrixassignmentisnotallowed. ởđâyMATLABkhôngchophépxoá đimộtphầntửcủa matrận mphảixoáđimộtcột hoặcmộthng. >>B=A(4,:) ???Indexexeedsmatrixdimension. VídụtrênmatrậnAkhôngcóbốnhng,nênMATLABthôngbáonh−trên. >>B(1:2,:)=A ??? In an assignment A(matrix, :) = B, the number of columns in A and B must be the same. MATLABchỉrarằngbạnkhôngthểgánmộtmatrậnvotrongmộtmatrậnkhácmkhác nhauvềkíchcỡ. >>B=[147]; >>B(3:4,:)=A(2:3,:) B= 147 000 147 789 Nh−ngtacóthểgánhaihngcủamatrậnAchohaihngcủamatrậnB,khimatrậnAv matrậnBcócùngsốcột.MatrậnBchỉcómộthngnênkhithêmhngthứbavhngthứ t−thìhngthứhaicủamatrậnBđ−ợcmặcđịnhchothêmcácphầntử0vo. >>G(1:6)=A(:,2:3) G= 248379 TừphầntửthứnhấtđếnphầntửthứsáucủamatrậnGđ−ợcgánbằngcộtthứhaivcột thứbacủamatrậnA.
  37. Updatesofts.com Ebook Team 37 Đôikhiđểtiệnlợihơntachỉdùngchỉsốđơnđểtruynhậpđếncácphầntửcủamảng. Khichỉsốđơnđ−ợcdùngtrongMATLABthìthứtựcácphầntửcủamảngđ−ợctínhbắtđầu từphầntửđầutiêncủacột,tínhhếtcộtthìtínhđếncộttiếptheo Vídụ: >>D=[1234;5678;9101112] D= 1234 5678 9101112 >>D(2)%Phầntửthứhaicủamảng. ans= 5 >>D(5)%Phầntửthứnămcủamảng(cột2,hng2). ans= 6 >>D(end)%Phầntửcuốicùngcủamảng. ans= 12 >>D(4:7)%Từphầntửthứt−đếnphầntửthứbẩycủamatrận. ans= 26103 Ngoitr−ờnghợpdùngđịachỉdựatrênbảngchỉsố,chúngtacòncóthểdùngđịachỉ dựa trên mảng logic_l kết quả từ các phép toán logic. Nếu kích cỡ của mảng logic cân bằngvớimảngtạoranóthìđóchínhlđịachỉcủamảng.Trongtr−ờnghợpnythìphầntử True(1)đ−ợcgiữalạivphầntửFalse(0)bịbỏđi Vídụ: >>x=3:3%Tạomảngdữliệu. x= 3210123 >>abs(x)>1 ans= 1100011 Trảvềmộtmảnglogicvớigiátrịmộttạinhữngphầntửcótrịtuyệtđốilớnhơnmột. >>y=x(abs(x)>1) y= 3223 Tạomảngybằngcáchlấynhữngphầntửcủaxmcótrịtuyệtđốilớnhơnmột. >>y=x([1100011]) ???Indexintomatrixisnegativeorzero.Seereleasenoteson changestologicalindices Câulệnhbịlỗimặcdùabs(x)>1v[1100011]cùnglvectornh−nhau.Trongtr−ờng hợpny,[1100011]lmộtmảngsố,khôngphảilmảnglogic.VìvậyMATLABcố đánhđịachỉcácphầntửcósốchỉsốtrongmảng[1100011]vcâulệnhbịlỗivì
  38. Updatesofts.com Ebook Team 38 khôngcóphầntử0.TuynhiênMATLABcungcấphm logical đểchuyểnđổitừmảngsố sangmảnglogic >>y=x(logical([1100011])) y= 3223 mảnglogiclmviệcvớimatrậncũngnh−lđốivớivector: >>B=[53;24] B= 53 24 >>x=abs(B)>2 x= 11 00 >>y=B(x) 5 3 4 Tuynhiênkếtquảđ−ợcchuyểnthnhvectorcộtvìkhôngcáchnođểđịnhnghĩama trậnchỉcóbaphầntử.ĐịachỉcủamảngA(r,c).ĐịachỉmộtmảngcontrongmảngA,định nghĩabằngcácchỉsốvectorcủahngthiếtkếtrongr,chỉsốvectorcủacộtthiếtkếtrongc. A(r,:).ĐịachỉmộtmảngcontrongmảngA,địnhnghĩabằnhcácchỉsốvectorcủahng thiếtkếtrongr,vtấtcảcáccộtcủaA.A(:,c).ĐịachỉmộtmảngcontrongmảngA,định nghĩabằngtấtcảcáchngcủaA,chỉsốvectorcủacộtđ−ợcthiếtkếtrongc.A(:).Địachỉ tấtcảcácphầntửcủaAnh−mộtvectorcột,bằngcáchghépthứtựcáccộtcủavectorA.A( i)ĐịachỉmộtmảngcontrongmảngA,địnhnghĩabằngcácchỉsốvectorđơnđ−ợcthiếtkế trongi,vớigiảsửAlvectorcột.A(x).ĐịachỉmộtmảngcontrongmảngA,địnhnghĩabởi mảnglogicx.xphảicùngkíchcỡvớiA. 6.7Tìmkiếmmảngcon Nhiềukhichúngtamuốnbiếtcácchỉsốhaydanhsáchcácchỉsốcủanhữngphầntử củamộtmảngmnóthoảmnmộtbiểuthứcquanhệ,trongMATLABđểthựchiệnviệcđó tasửdụnghm find ,hmnytrảvềdanhsáchconchỉsốtạinhữngphầntửmbiểuthức quanhệcủachúnglđúng: >>x=3:3 x= 3210123 >>k=find(abs(x)>1) k= 1267 tìmnhữngchỉsốtạinhữngvịtrímtạiđóabs(x)>1 y=x(k) y= 3223 Tạomảngy,dùngcácchỉsốtrongmảngk.
  39. Updatesofts.com Ebook Team 39 Hm find cũngcóthểsửdụngtrongmatrận: >>A=[123;456;789] A= 123 456 789 >>[i,j]=find(A>5) i= 3 3 2 3 j= 1 2 3 3 ởđâyilchỉsốhng,cònjlchỉsốcột;giữaivjcómốiquanhệt−ơngứngđểchỉ nhữngvịtrímtạiđóbiểuthứcquanhệlđúng. Chúý Chúý :khiMATLABtrảlạihaihoặcnhiềubiến,chúngđ−ợcđặttrongdấungoặcvuông, vđ−ợcđặtbêntráidấubằng.Cúphápnykhácvớicúphápthaotácđốivớimảngởtrên, khim[i,j]đ−ợcđặtbênphảidấubằng,vnóxâydựnglênmộtmảngmjđ−ợckếtnốivo bênphảidấubằng. Bảngd−ớiđâytómtắtdạnglệnhcủaphầntìmkiếmmảng: TìTìTìmkiếmmảngTì mkiếmmảngmkiếmmảng i=find(x) Trảlạicácchỉsốcủamảngxnơimcácphầntửcủanókhác không [r,c]=find(x) Trảlạichỉsốhngvchỉsốcộtcủamảngxnơimcácphầntử củanókháckhông. 6.8Sosánhmảng Chúngtacóthểdùnghm isequal sosánhhaimảng.Thídụ: >>A=[123;456;789]‘ A= 147 258 369 >>B=A.*(1).^A B= 147 258 369 >>C=1:9%TạomảngcócùnggiátrịvớiAnhngcókhuôndạngkhác. 123456789 >>isequal(A,C)
  40. Updatesofts.com Ebook Team 40 ans= 0 >>isequal(A,B) ans= 0 >>isequal(A,A) ans= 1 >>isequal(C,C‘) ans= 0 Hm iseqisequalual trảlạigiátrịlogiclđúng(1)khihaimảngcócùngkíchcỡ,cácphầntửgiống nhau.Ngoiranótrảlạigiátrịlsai(0). Thêmvođó,hm ismember chỉracácphầntửgiốngnhaugiữahaimảng: >>ismember(A,B)%Kếtquảtrảvềlvectorcột. ans= 0 1 0 1 0 1 0 1 0 >>ismember(A,B) ans= 1 1 1 1 1 1 1 1 1 ismember trảlạigiátrịđúngchonhữngchỉsốởtrongAmphầntửnycũngcóởtrongđối sốthứhai.Haiđốisốkhôngcầncócùngkíchcỡ. >>x=0:2:20%mảngvới11phầntử. x= 02468101214161820 >>ismember(x,A) ans= 01111000000 đâylmảngcócùngkíchcỡvớix,với1tạicácphầntửchung.
  41. Updatesofts.com Ebook Team 41 >>ismember(x,A) ans= 0 1 0 1 0 1 0 1 0 ĐâylmảngcósốphầntửbằngsốphầntửcủaA,với1tạicácphầntửchung.Vìvậy ismember sosánhđốisốthứnhấtcủanóvớiđốisốthứhaivtrảlạimộtvectorcócùngsố phầntửvớiđốisốthứnhất. Nhữnghmtạokháctrongth−việnMATLAB: >>union(A,B)%Tấtcảcácphầntửcótronghaimảng. ans= 9 7 5 3 1 1 2 3 4 5 6 7 8 9 >>intersect(A,B)%Phầntửchungcủahaimảng. ans= 2 4 6 8 >>setdiff(A,B)%CácphầntửcótrongAnh−ngkhôngcótrongB. ans= 1 3 5 7 9 >>setxor(A,B)%CácphầntửkhôngthuộcphầnchunggiữaAvB. ans= 9 7
  42. Updatesofts.com Ebook Team 42 5 3 1 1 3 5 7 9 Nhữnghmnyđ−ợctổngkếtlạitrongbảngd−ớiđây: Sosánhmảng isequal(A,B) ĐúngnếuAvBgiốngnhau. ismember(A,B) ĐúngkhiphầntửcủaAcũnglphầntửcủaB. intersect(A,B) CácphầntửchunggiữaAvB. setdiff(A,B) CácphầntửcótrongAmkhôngcótrongB. setxor(A,B) Các phần tửkhông thuộc phầnchung giữa A v B. union(A,B) TấtcảcácphầntửcótrongAvB. 6.9Kíchcỡcủamảng ở phần tr−ớc chúng ta đ biết lệnh who cung cấp tênbiến do ng−ời dùng địnhnghĩa. Trong tr−ờng hợp của mảng, nó còn rất quan trọng khi biết kích cỡ của mảng. Trong MATLAB,lệnh whos cungcấpnhữngthôngtinny: >>whos NamesizeBytesClass A3x372doublearray B1x324doublearray ans1x432doublearray(logical) Grandtotalis16elementsusing128bytes Thêmvođóđểđánhsốvkíchcỡcủabiến, whos hiểnthịtổngsốbytesđchiếm,v classcủacácbiến.Vídụ,ởthôngtinđềcậptrên,anslmảnglogic Trongnhữngtr−ờnghợpmkíchcỡcủamatrậnhoặccủavectorkhôngđ−ợcbiếtnh−ng nócầnthiếtchomộtsốcácthaotác,MATLABcungcấphaihmứngdụngl size v length : >>A=[1234;5678]; >>s=size(A) s= 24 Vớimộtthôngsốra,hm size trảlạimộtvectorhngtrongđócóhaiphầntử,phầntử thứnhấtlchỉsốhng,cònphầntửthứhaichỉsốcột. >>[r,c]=size(A) r= 2 c=
  43. Updatesofts.com Ebook Team 43 4 Vớihaithôngsốđara,hm size trảlạisốhngởtrongbiếnthứnhất,vsốcộtởtrongbiến thứhai. >>r=size(A,1) r= 2 >>c=size(A,2) Gọihaithôngsố,hm size chỉtrảvềsốcộthoặcsốhng. >>length(A) ans= 4 Trảvềgiátrịsốhnghoặcsốcột,giátrịnolớnhơnđ−ợctrảvề. >>B=pi:0.01:2*pi; >>size(B) ans= 1315 ChobiếtrằngBlvectorhng,v >>length(B) ans= 315 trảlạiđộdicủavector. >>size([]) chỉrarằngmatrậnrỗngkhôngcókíchcỡ. Nhữngkháiniệmnyđ−ợctổngkếttrongbảngd−ớiđây: KíchcỡcủamảngKíchcỡcủamảng whos Hiểnthịcácbiến,mtồntạitrongkhônggianlmviệcvkíchcỡ củachúng. s=size(A) Trảlạivectorhngs,mphầntửthứnhấtlsốhngcủaA,phần tửthứhailsốcộtcủaA. [r,c]=size(A) Trảlạihaisốvôhớngr,cchứasốhngvsốcộtcủaA. r=size(A,1) TrảlạisốhngcủaAtrongbiếnr. c=size(A,2) TrảlạisốcộtcủaAtrongbiếnc. n=length(A) Trảlạimax(size(A))trongbiếnnkhiAkhôngrỗng. 6.10Mảngnhiềuchiều Đối với các MATLAB versions tr−ớc 5.0, mảng chỉ có thể có một hoặc hai chiều. Từ MATLAB5.0trởlênthìsốchiềucủamảngđtănglên.Vídụ: >>a=[10;01] a= 10 01
  44. Updatesofts.com Ebook Team 44 >>b=[22;22] b= 22 22 >>c=[03;30] c= 03 30 >>d=cat(3,a,b,c) d(:,:,1)= 10 01 d(:,:,2)= 22 22 d(:,:,3)= 03 30 >>size(d) ans= 223 Tạocácmảnghaichiềua,b,c,sauđóghépchúnglaivớinhauthnhmảngbachiều bằngcáchsửdụnghm cat. Nh−vậymảngdlmảngcóhaihng,haicột,vbatrang. Mảngatạotrangthứnhất,bltrangthứhai,vcltrangthứba.Thôngsốtrangdiễntả chiều thứ ba của mảng, cung cấp một cách hình dung về mảng ba chiều nh− mảng hai chiều, các trang xếp thứ tự từ một cho đến cuối nh− trong một quyển sách. Đối với các mảngcósốchiềucaohơn,khôngcótênchung,vnócũngrấtkhót−ởngt−ợng! Thaotácvớimảngnhiềuchiềucũnggiốngnh−cácthủtụcđ−araởtrênđốivớimảng mộtchiềuvhaichiều.NgoiraMATLABcòncungcấpmộtsốhmthaotáctrựctiếpđối vớimảngnhiềuchiều: CáchmvớimảngnhiềuchiềuCáchmvớimảngnhiềuchiều s=size(A) Chon_sốchiềucủaA,trảvềvectorhngsvớinphần tử,phầntửthứilkíchcỡchiềuthứicủamảngA ndims(A) SốchiềucủaA,t−ơngtựnh−hmlength(size(A)) permute(A,order) n_sốchiều,t−ơngđ−ơngvớitoántửchuyểnvịchấm. ipermute(A,order) Ng−ợcvớihmpermute(A,order) shiftdim(A,n) ThayđổisốchiềucủamảngAbằngsốnguyênn. squeeze(A) Trảlạisốchiềuduynhấtcủamảng,t−ơngđ−ơngvớitrả lạisốchiềulớnhơnba. Vídụ:SựsuygiảmdophânrdùngmảngVídụ:Sựsuygiảmdophânrdùngmảng Vấnđề: Phântửpoloniumcóchukỳphânrl140ngy,cónghĩaldosựphânrm khốil−ợngcủapoloniunchỉcònlại1/2sovớikhôil−ợngbanđầusau140ngy.Giảsửban đầutacó10gramspolonium,nósẽcònlạibaonhiêusaumỗituầntrongvòngmờituần? Giảipháp: Tasửdụngph−ơngphápgiảitrongch−ơng2,khốil−ợngcònlạisausaumột khoảngthờigianl: khốil−ợngcònlại=khốil−ợngbanđầu.(0.5) thờigian/chukỳ Đểgiảibitoánny,gảiphápcủaMATLABl:
  45. Updatesofts.com Ebook Team 45 >>initial_amount=10;%Khốil−ợngchấtpoloniumbanđầu >>half_life=140;%Chukỳphânr >>time=7:7:70%Kếtthúccủacáctuần time= 7142128354249566370 >>amount_left=initial_amount*0.5.^(time/half_life) amount_left= Columns1through7 9.65949.33039.01258.70558.40908.12257.8458 Columns8through10 7.57867.32047.0711 Dùngtoántửmảnglmchonótínhcácgiátrịmộtcáchđơngiảnhơnkhinhânnhiều giátrịcủamộtbiến.Chúýrằngnhânchấm(.^)đ−ợcsửdụngvìchúngtamuốnluỹthừa0.5 lên đối với mỗi phần tử của mảng. Những dữ liệu ny có thể dễ dng vẽ chúng trong MATLABnh−hìnhd−ới: >>plot(time/7,amount_left) >>xlabel(‘Weeknumber‘),ylabel(‘AmountofPoloniumleft‘) Hình6.1 Vídụ:TìmkiếmgiảiphápsửdụngvectorsVídụ:Tìmkiếmgiảiphápsửdụngvectors Vấnđề: ‘Vấnđềcủatuần‘trongtr−ờngcấphailtìmmộtsốnhỏhơn100mchiahết cho7,nh−ngcònd−lại1khichiacho2,3,4,5,v6.
  46. Updatesofts.com Ebook Team 46 Giảipháp: Khôngcómộtgiảiphápphântíchnochovấnđềnycả,vìvậychúngtaphải giảibằngph−ơngpháptìmkiếm.Nếubạnbắtđầuvớitấtcảcácsốlbộisốcủa7vnhỏ hơn1000,còncácsốkhácthìkhôngxétđến,bạnsẽxâydựngđ−ợcmộtgiảipháp.Trong MATLABgiảiphápđ−ợcđaratrongscriptfilel: functionpow %pow.mscriptfiletosolveproblemoftheweek n=7:7:1000%allmultiplesof7lessthan1000 number=length(n)%numberofpotentialsolutions n(rem(n,2)~=1)=[];%throwoutnonsolutionsby number=length(n) n(rem(n,3)~=1)=[];%settingthemequaltoanemptyarray, number=length(n) n(rem(n,4)~=1)=[];%thefunctionremcomputesremainders number=length(n) n(rem(n,5)~=1)=[]; number=length(n) n(rem(n,6)~=1)=[]; Chạyscriptfilenytađ−ợcgiảiphápnh−ởd−ớiđây: >>pow number= 142 number= 71 number= 24 number= 12 number= 2 n= 301721 Vídụ:Tínhtoánnồngđộaciddùngcácphéptoánvớimảngimảng Vấnđề: Nh−mộtphầncủaquátrìnhsảnxuấtbộphậncủavậtđúctạimộtnhmáytự động,bộphậnđóđ−ợcnhúngtrongn−ớcđểlmnguội,sauđónhúngtrongbồnđựngdung dịchacidđểlmsạch.Trongtonbộcủaquátrìnhnồngđộacidgiảmđikhicácbộphậnđ −ợclấyrakhổibồnacidvìkhinhúngbộphậncủavậtđúcvobồnthìmộtl−ợngn−ớccòn bámtrênvậtđúckhinhúngởbểtr−ớccũngvotheovkhinhấcrakhỏibồnmộtl−ợngacid bámtheovật.Đểđảmbảochấtl−ợngthìnồngđộacidphảikhôngđ−ợcnhỏhơnmộtl−ợng tốithiểu.Bạnhybắtđầuvớinồngđộdungdịchl90%thìnồngđộtốithiêuphảil50%. L−ợngchấtlỏngthêmvovlấyđisaumỗilầnnhúngdaođộngtrongkhoảngtừ1%đến 10%.Hỏibaonhiêubộphậncóthểnhúngvobển−ớcacidtr−ớckhinồngđộcủanógiảm xuốngd−ớimúcchophép? Giảipháp: Tasửdụngph−ơngphápgiảiđaraởch−ơng2:
  47. Updatesofts.com Ebook Team 47 n= TrongMATLAB,giảiphápviếttrongscriptM_filel: functionexample6_2 %scriptM_fileexample6_2 initial_con=90; min_con=50; lost=1:10%consider1%to10%inincrementsof1% n=floor(log(initial_con/min_con)./log(1+lost/100)) stem(lost,n) xlabel('PercentLostwithEachDip') ylabel('NumberofDips') title('AcidWaterBathDippingExample') Chạych−ơngtrìnhtrêntađ−ợckếtquảnh−sau: lost= 12345678910 n= 5929191412108766 Hình6.2Hình6.2 Chúýởđâyyêucầuph−ơngphápchiachấmvìlog(1+lost/100)lmộtvector
  48. Updatesofts.com Ebook Team 48 oOo ch−ơng7 cácphéptínhvớimảng 7.1Tạoph−7.1Tạoph−ơngtrìnhtuyếntính.ơngtrìnhtuyếntính. Về cơ bản, MATLAB đ−ợc viết đối với những ma trận v thực hiện phép toán số học tuyếntínhđơngiảnmxuấthiệntrongnhiềuứngdụng.Mộtvấnđềchungnhấtcủasốhọc tuyếntínhlviệcgiảiph−ơngtrình.Vídụtạoph−ơngtrình: .= A.x=b Biểut−ợngphépnhântoánhọc(.)đ−ợcđịnhnghĩatrongphéptoántrên,khácvớikí hiệu ta dùng đối với mảng tr−ớc kia. Trong MATLAB phép nhân ma trận ny đ−ợc định nghĩa bằng dấu sao (*). Tiếp theo định nghĩa dấu bằng, ma trận tạo ra từ ma trận A v vectorxbằngvớivectorb.Giảipháptồntạichosựcânbằngđềcậpởtrênlnhữngvấnđề cơbảncủasốhọctuyếntính.Thêmnữa,khilờigiảikhôngtồntại,córấtnhiềucáchgần đúngđểtìmkiếmgiảipháp,nh−phéploạitrừGaussian,sựtìmthừasốLU,hoặctínhtrực tiếpA 1.b.D−ớiđâychúngtasẽđềcậpđếnmộtsốcáchgiảiquyếtnh−trên: Tr−ớctiênnhậpvomatrậnAvb: >>A=[123;456;780] A= 123 456 780 >>b=[366;804;315] b= 366 804 351 Nếubạncókiếnthứcvềsốhọctuyếntính,nórấtdễđểbạnkiểmtraxemđịnhthứccủama trậntrêncókháckhônghaykhông: >>det(A) ans= 27
  49. Updatesofts.com Ebook Team 49 Nếunóđúng,MATLABcóthểgiảiph−ơngtrìnhtheohaicách,mộtcáchhayđ−ợcdùng hơn,mộtcáchítsửdụng,nh−ngtrựctiếphơn,ph−ơngphápnylchuyểnthnhdạngx=A 1.b. >>x=inv(A)*b x= 25.0000 22.0000 99.0000 ởđây inv(A) lhmcủaMAYLABdùngđể tínhA 1;vtoántửnhân(*),khôngcódấu chấmphía tr−ớc, đây l phép nhân ma trận. Ph−ơng pháp đ−ợc dùng nhiều hơn l dùng toántửchiamatrậntrái: >>x=A\b x= 25.0000 22.0000 99.0000 Ph−ơngtrìnhnysửdụngph−ơngpháptìmthừasốLUgầnđúngvđaracâutrảlời nh−lphépchiatráiAchob.Toántửchiatrái(\)khôngcódấuchấmphíatr−ớclmột phéptoáncủamatrận,nókhôngphảilcácphéptoángiữacácphầntửcủamảng.Ph−ơng phápthứhainyđ−ợcsửdụngnhiềuhơndonhiềunguyênnhân,mộttrongnhữngnguyên đơngiảnnhấtlph−ơngphápnydùngítphéptoánhơnvtốcđộnhanhhơn.Thêmvo đó,nhìnchungph−ơngphápnychínhxáchơnchonhữngbitoánlớn.Trongtr−ờnghợp khác, nếu MATLAB không tìm thấy ph−ơng pháp giải hoặc không tìm thấy ph−ơng pháp chinhxác,nósẽhiệnthôngbáolỗi. Nếu bạn nghiêncứusố họctuyếntính, bạn biếtrằngkhisốph−ơngtrìnhvsốbiến khác nhau, thì không thể có một ph−ơng pháp duy nhất để giải. Trong MATLAB khi gặp nhữnghệph−ơngtrìnhcósốph−ơngtrìnhlớnhơnsốbiếnnódùngtoántửchiatráihoặc chiaphải,tựđộnggiảmthấpnhấtnhữngphầntửthừaA.xb.Cáchnygọilph−ơngpháp vuôngnhỏnhất.Vídụ: >>A=[123;456;780;258]%Bốnph−ơngtrình,babiến. A= 123 456 780 258 >>b=[366804351514]‘ b= 366 804 351 514 >>x=A\b%Ph−ơngphápvuôngnhỏnhất. x= 247.9818 173.1091 114.9273
  50. Updatesofts.com Ebook Team 50 >>res=A*xb res= 119.4545 11.9455 0.0000 35.8364 Mặtkháckhisốph−ơngtrìnhíthơnsốbiếnt−ơngtựnh−tr−ờnghợpkhôngxácđịnh,thì sốnghiệmph−ơngtrìnhlvôtận.ĐốivớinhữngnghiệmnyMATLABtínhtheohaicách. Dùngtoántửchiađaraph−ơngphápmcósốphầntử0củaxlcựcđại.Nh−mộtsựlựa chọn,tínhx=pinv(A)*bđaraph−ơngphápchiềudihoặctiêuchuẩncủaxnhỏhơncácph −ơngphápkhác.Ph−ơngphápnygọilph−ơngpháptiêuchuẩncựctiểu. Vídụ: >>A=A‘%Tạobaph−ơngtrình,bốnbiến. A= 1472 2585 3608 >>b=b(1:3) b= 366 804 351 >>x=A\b%ph−ơngphápvớisốphầntử0cựcđại. x= 0 165.9000 99.0000 168.3000 >>xn=pinv(A)*b%Tìmkiếmgiảipháptiêuchuẩnnhỏnhất. xn= 30.8182 168.9818 99.0000 159.0545 >>norm(x)%TiêuchuẩnO_clitvớicácphầntử0. ans= 256.2200 >>norm(xn)%Giảipháptiêuchuẩnnhỏnhất ans= 254.1731 7.2Cáchmmatrận. Đểgiảiph−ơngtrìnhtuyếntính,MATLABcungcấpcáchmtrợgiúpsau: CáchmmatrậnCáchmmatrận balance(A) Cânbằngđểtăngđộchínhxác
  51. Updatesofts.com Ebook Team 51 cdf2rdf(A) Chuyểntừdạngsốphứcchéosangdạngsốthực chéo chol(A) TìmthừasốCholesky cholinc(A,droptol) ThừasốCholeskykhôngđầyđủ cond(A) Sốđiềukiệnmatrận condest(A) Ướcl−ợngsốđiềukiệnmatrậntheotiêu det(A) Địnhthứcmatrận expm(A) Matrậntheoluậtmũ expm1(A) BổsungM_filecủaexpm expm2(A) Matrậntheoluậthmmũ,dùngthứtựTaylor funm(A,‘fun‘) Tínhtoánhmmatrậnchung hess(A) MẫuHessenberg inv(A) Matrậnchuyểnvị logm(A) Matrậnlogarithm lu(A) TìmthừasốvớiphépkhửGaussian luinc(A,droptol) ThừasốLUkhôngđầyđủ norm(A) Matrậnvvectortiêuchuẩn norm(A,1) Tiêuchuẩn1 norm(A,2) Tiêuchuẩn2 norm(A,inf) Vôcùng norm(A,p) TiêuchuẩnP(chỉđốivớivector) norm(A,‘fro‘) TiêuchuẩnF normest(A) Tiêuchuẩn2−ớcl−ợngchomatrậnlớn null(A) Khoảngrỗng orth(A) Tínhtrựcgiao poly(A) Đathứcđặctr−ng polyvalm(A) Tínhgiátrịcủamatrận qr(A) Xácđịnhtrựcgiaotamgiác qrdelet(Q,R,j) XoácộttừthừasốQR qrinsert(Q,R,j,x) ChèncộttrongthừasốQR rank(A) Sốcủahnghoặccộtđộclập rcond(A) Ướcl−ợngđiềukiệnthuậnnghịch sqrtm(A) Matrậngốcbìnhph−ơng subspace(A,B) Gócgiữahaiđiểm svd(A) Phântíchgiátrịđơn svds(A,K) Mộtsốcácgiátrịđơn trace(A) Tổngcácphầntửchéo 7.3Matrậnđặcbiệt MATLABđaramộtsốcácmatrậnđặcbiệt,trongđómộtsốchúngcónhữngứng dụngrộngritrongcácphéptoán.Nhìnchungnhữngmatrậnđól: >>a=[123;456]; >>b=find(a>10) b= []
  52. Updatesofts.com Ebook Team 52 ởđâyblmatrậnrỗng.MATLABtrảlạimatrậnrỗngkhiphéptoánkhôngcókếtquả. Trongvídụtrênkhôngcóphầntửnocủaalớnhơn10.Matrậnrỗngkhôngcókíchcỡ, nh−ngtênbiếncủachúngvẫntồntạitrongkhônggianlmviệc. >>zeros(3)%Matrậnkhông3hng,3cột(3x3). ans= 000 000 000 >>ones(2,4)%Matrậnmột2hng,4cột(2x4). ans= 1111 1111 >>zeros(3)+pi ans= 3.14163.14163.1416 3.14163.14163.1416 3.14163.14163.1416 Vídụtrênvềtạomatrận3x3vớicácphầntửđềul. >>rand(3,1) ans= 0.2190 0.0470 0.6789 matrận3x1gồmcácphầntửlsốcungcấpbởihmrandomgiữa0v1. >>randn(2) ans= 1.16500.0751 0.62680.3516 matrận2x2củacácsốcungcấpbởihmrandomvớigiátrịtrungbìnhl0.Thuậttoáncho hm rand v randn có thể tìm thấy trong S.K>Park and K.W.Miller,‘Random Number Generator:GoodOnesAreHardtoFind,‘Comm.ACM,32,10,Oct.19881201. >>eye(3) ans= 100 010 001 Matrậnđồngnhất3x3 >>eye(3,2) ans= 10 01 00 Matrậnđồngnhất3x2
  53. Updatesofts.com Ebook Team 53 Ngoirađểchỉkíchcỡcủamộtmatrận,bạncóthểdùnghm size đểtạomộtmatrậncó kíchcỡgiốngnh−matrậnkhác: >>A=[123;456]; >>ones(size(A)) ans= 111 111 matrậnmộtcócùngkíchcỡvớimatrậnA. Cácmatrậntrênvcácmatrậnđặcbiệtkhácđ−ợcgiớithiệutrongbảngsau: CácmatrậnđặcbiệtCácmatrậnđặcbiệt [] Matrậnrỗng compan Tạomatrậnrỗng eye Matrậnđồngnhất gallery Matrậnkiểmtranhỏviphầntử hadamard MatrậnHadamard hankel MatrậnHankel hilb MatrậnHilbert invhilb ChuyểnthnhmatrậnHilbert magic Matrậnvuông,giátrịcácphầntửbằngtừ1đếngiátrịsố phầntử ones Matrận1 pascal MatrậntamgiácPascal rand Matrậnvớicácphầntửngẫunhiêntừ0đến1. randn Matrậnngẫunhiênthôngth−ờngvớigiátrịtrungbìnhbằng 0 rosser Matrậnkiểmtrađốixứngtrụcchính toeplitz MatrậnToeplitz vander MatrậnVandermond wilkinson MatrậnkiểmtraWilkinson zeros Matrậnkhông VídụVídụ Vấnđề :Tacómạchđiệnnh−tronghình7.1đ−ợcmôtảbằngph−ơngtrìnhđiệnápnút khinguồnđavolsónghìnhsin. Hình7.1Hình7.1
  54. Updatesofts.com Ebook Team 54 E=10 o;R1=2;L=10j;C=;R2=10. ởđâyv ilđiệnápgiữanútthứivđất.Hỏiđiệnáptạimỗinútlbaonhiêu? Giảipháp: Đâylvấnđềvềphântíchpha.Ph−ơngphápgiảibinylgiảiphơ−ngtrình trên,vchuyểncáckếtquảvềdạngthờigian.TrongMATLABgiảiphápsẽl: functioncircuit %circuit.mscriptfiletosolvecircuitproplem A(1,1)=1/2;%pokeinnonzerovaluesasneeded A(1,2)=1/2; A(2,1)=1/2; A(2,2)=1/2+0.2j+1/10j; A(2,3)=1/10j; A(3,2)=1/10j; A(3,3)=1/10+1/10j; y=[100]';%righthandsidevector v=A\y%complexsolution vmag=abs(v)%solutionmagnitudes vphase=angle(v)*180/pi%solutionphaseindegrees theta=linspace(0,2*pi);%plotresultsintime v1=vmag(1)*cos(thetavphase(1)); v2=vmag(2)*cos(thetavphase(2)); v3=vmag(3)*cos(thetavphase(3)); thd=theta*180/pi; plot(thd,v1,thd,v2,thd,v3) Saukhichạych−ơngtrìnhtrên,kếtquảsẽl: v= 4.0000+6.0000i 2.0000+6.0000i 2.0000+4.0000i vmag= 7.2111 6.3246 4.4721 vphase= 123.6901 108.4349 63.4349
  55. Updatesofts.com Ebook Team 55 Hình7.2Hình7.2 oOo ch−ơng8 cácphéptínhLOGICVQUANHệ Thêmvonhữngtoántử‘truyềnthống‘,MATLABcungcấptoántửlogicvquanhệ. Bạncóthểquenthuộcvớinhữngphéptoánny,nếubạnđlmquenvớicácngônngữlập trình khác. Mục đích của những toán tử v hm ny l để trả lời câu hỏi True_False (đúng_sai). ĐốivớicácsốthìtrongtoántửlogicvquanhệquyđịnhcácsốkháckhônglTruecòn sốkhônglFalse.Kếtquảcủaphéptoánlogicvquanhệđaral1choTrue,0choFalse. 8.1Toántửquanhệ ToántửquanhệMATLABbaogồmtấtcảcácphépsosánh:
  56. Updatesofts.com Ebook Team 56 ToántửquanhệToántửquanhệýnghĩaýnghĩa lớnhơn >=lớnhơnhoặcbằng ==bằng ~=khôngbằng ToántửquanhệMATLABcóthểdùngđểsosánhhaimảngcócùngkíchcỡhoặcso sánhmộtmảngvớimộtsốđơn.Trongtr−ờnghợpthứhai,sốđơnsosánhvớitấtcảcác phầntửcủamảng,kếtquảtrảvềgiốngnh−kíchcỡcủamảng.Vídụ: >>A=1:9,B=9A A= 123456789 B= 876543210 >>tf=A>4 tf= 000011111 tìmkiếmcácphầntửcủaAmlớnhơn4.Kếtquảbằng0khiA4,bằng1khiA>4. >>tf=(A==B) tf= 000000000 TìmkiếmcácphầntửcủaAmbằngvớiB.Chúýsựkhácnhaugiữa=v==dùngđểso sánhhaibiếnvtrảvề1khichúngbằngnhau,0khichúngkhácnhau;=dùngđểgánkết quảđaracủatoántửchomộtbiến. >>tf=B(A>2) tf= 875432101 TìmcácphầntửA>2vbịtrừbởivectorB.Vídụnychỉrarằngkếtquảđaracủatoántử logicl một mảng số bao gồm các số không v một, chúng cũng có thể dùng trongcác phéptoánsốhọc. >>B=B+(B==0)*eps B= Columns1through7 8.00007.00006.00005.00004.00003.00002.0000 Columns8through9 1.00000.0000 VídụtrênđaracáchthaythếcácphầntửcủaBmtrùngvớikhôngbằngsốđặcbiệtcủa MATLABleps,cógiátrịxấpxỉ2.2e16.Cáchthaythếnyđôikhicóíchltránhtr−ờng hợpchiachosốkhôngnh−vídụsau: >>x=(3:3)/3 1.00000.66670.333300.33330.66671.0000 >>sin(x)./x