Giáo trình MatLab v5.3

pdf 195 trang hapham 2470
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình MatLab v5.3", để 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_v5_3.pdf

Nội dung text: Giáo trình MatLab v5.3

  1. www.vietsupport.com -visit- www.dientuvietnam.net
  2. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 PhÇn 1 c¬ së Mat lab Ch−¬ng 1: Cμi ®Æt matlab 1.1.Cμi ®Æt ch−¬ng tr×nh: Qui tr×nh cμi ®Æt Matlab còng t−¬ng tù nh− viÖc cμi ®Æt c¸c ch−¬ng tr×nh phÇn mÒm kh¸c, chØ cÇn theo c¸c h−íng dÉn vμ bæ xung thªm c¸c th«ng sè cho phï hîp. 1.1.1 Khëi ®éng windows. 1.1.2 Do ch−¬ng tr×nh ®−îc cÊu h×nh theo Autorun nªn khi g¾n dÜa CD vμo æ ®Üa th× ch−¬ng tr×nh tù ho¹t ®éng, cöa sæ ®ãn mõng hiÖn lªn trong gi©y l¸t. KÝch vμo Next chuyÓn sang cöa sæ cμi ®Æt kÕ tiÕp. Trang 1
  3. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1.1.3 Cöa sæ thø hai chØ c¸c th«ng tin vÒ b¶n quyÒn cña ch−¬ng tr×nh. KÝch Yes ®Ó sang cöa sæ cμi ®Æt kÕ tiÕp. 1.1.4 Trong cöa sæ Costumer Information, nÕu cÇn thiÕt ®¸nh tªn hä, c«ng ty. NhËp m· kho¸ cña ch−¬ng tr×nh vμo khung Persnal license password. KÝch tiÕp Next. 1.1.5 Trong cöa sæ select Matlab Components, kÝch xo¸ nh÷ng thμnh phÇn kh«ng cÇn thiÕt sö dông trong ch−¬ng tr×nh ®Ó dμnh thªm dung l−îng trèng. Muèn kiÓm tra dung l−îng cña ch−¬ng tr×nh , kÝch vμo Disk space ®Ó quan s¸t. 1.1.6 Sau khi kÝch Next, mμn h×nh hiÖn khung th«ng tin Setup vμ ch−¬ng tr×nh b¾t ®Çu cμi ®Æt. 1.1.7 Sau khi hoμn thμnh Setup, mμn h×nh hiÖn khung tho¹i Setup complete. KÝch Finish ®Ó kÕt thóc qui tr×nh cμi ®Æt. Trang 2
  4. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1.1.8 Sau khi kÕt thóc cμi ®Æt cöa sæ kÕ tiÕp lμ Internet explorer. KÝch Close ®Ó vÒ cöa sæ nÒn windows, biÓu t−îng tù ®éng g¸n trong nÒn windows. 1.2. Khëi ®éng vμ tho¸t khái ch−¬ng tr×nh 1.2.1 Khëi ®éng MATLAB: KÝch vμo biÓu t−îng Matlab trªn mμn h×nh Windows hoÆc kÝch: Start/ Programs/ Matlab/ Matlab 5.3, sau ®ã hiÖn cöa sæ Matlab vμ cöa sæ lÖnh ( MATLAB Command Widowd ) Còng nh− c¸c ch−¬ng tr×nh ch¹y trong m«i tr−êng windows kh¸c Matlab còng cã nh÷ng thμnh phÇn giao diÖn cña ch−¬ng tr×nh. • Dßng trªn cïng lμ thanh tiªu ®Ò gåm: + TËn tr¸i lμ biÓu t−îng ch−¬ng tr×nh. Khi kÝch vμo biÓu t−îng nμy Matlab hiÖn menu xæ chøa c¸c lÖnh liªn quan tíi viÖc xö lý khung cöa sæ ch−¬ng tr×nh còng nh− tho¸t ch−¬ng tr×nh. + KÕ biÓu t−îng lμ tªn ch−¬ng tr×nh cïng víi cöa sæ ch−¬ng tr×nh. TËn cïng lμ ba biÓu t−îng cã chøc n¨ng phong to, thu nhá vμ tho¸t ch−¬ng tr×nh. • Dßng thø hai lμ thanh tr×nh ®¬n gåm c¸c menu chÝnh ch−a c¸c lÖnh liªn quan ®Õn viÖc t¹o, xö lý, g¸n thuéc tÝnh  vμo ®å thÞ. • Dßng thø ba lμ thanh c«ng cô chøa c¸c hép c«ng cô chøa c¸c lÖnh nhanh. • PhÇn chiÕm gÇn chän mμn h×nh lμ n¬i nhËp c¸c lÖnh . • Cuèi cïng lμ thanh t¸c vô hiÖn th«ng tin vÒ t×nh tr¹ng ®ang xö lý, thùc hiÖn ®èi t−îng. 1.2.2 Tho¸t khái MATLAB: Tõ cöa sæ Matlab command winwods ®¸nh lÖnh quit hoÆc kÝch biÓu t−îng (X) n»m ngay gãc ph¶i thanh tiªu ®Ò Matlab. Trang 3
  5. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ch−¬ng 2 C¸c lÖnh menu cña MATLAB 2.1 File KÝch vμo File hiÖn menu chøa c¸c lÖnh liªn quan ®Õn viÖc t¹o míi, qu¶n lý, g¸n thuéc tÝnh cho ®èi t−îng, ®å thÞ cò 2.1.1 New: HiÖn menu chøa ba lÖn ®Ó t¹o ®èi t−îng míi • M-file: HiÖn cöa sæ Editor/ Debugger. §©y lμ m«i tr−êng b¹n t¹o vòng nh− söa ®æi, gì rèi c¸c tËp tin ch−¬ng tr×nh nh− M- file hoÆc MEX-file hoÆc c¸c ®èi t−îng nμo ®ã ®Ó thùc hiÖn cho mét nhiÖn Trang 4
  6. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 vô nμo ®ã. §Ó cã thÓ t¹o ®−îc c¸c tËp tin nμy, b¹n ph¶i dïng ng«n ng÷ lËp tr×nh C hoÆc FORTRAN • Figure: §©y lμ m«i tr−êng ®å ho¹ ®Ó b¹n tù vÏ c¸c ®èi t−îng hoÆc ®Ó Matlab vÏ c¸c ®å thÞ theo hμm lÖnh b¹n nhËp tõ khung cöa sæ lÖnh cña MATLAB hoÆc hiÖn ®å thÞ cò víi lÖnh Open tõ lÖnh cña Matlab. • Model : HiÖn cöa sæ Simulink n»m bªn ph¶i vμ cöa sæ th− viÖn n»m bªn tr¸i ®Ó ban tù chän mμ thiÕt kÕ ®èi t−îng. 2.1.2 Open : Më tËp tin ®å thÞ hoÆc h×nh ¶nh trong cöa sæ Figure ®Ó sö lý. • Trong cöa sæ Matlab Command windows kÝch: File/ Open • Tõ khung tho¹i, kÝch chän tªn tËp tin cïng thÓ lo¹i tËp tin ( nÕu cÇn thiÕt ) muèn më vμ kÝch OK. 2.1.3 Open Selection: Cã chøc n¨ng më nh÷ng ®èi t−îng ®· chän riªng vμ l−u thμnh mét tËp tin riªng Trang 5
  7. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 2.1.4 Run Script : Ch¹y mét ch−¬ng tr×nh ®· l−u thμnh mét tËp tin. • Trong cöa sæ Matlab Command windows kÝch: File/ Run Script. Mμn h×nh xuÊt hiÖn khung tho¹i Run Script. • §¸nh tªn tËp tin vμo trong khung nhËp lÖnh Run vμ kÝch OK. §Ó t×m kiÕm c¸c tËp tin ®· l−u kÝch vμo Browse. • Tõ khung tho¹i chän nguån chøa vμ tªn tËp tin cÇn më råi kÝch vμo Open ®Ó vÒ khung tho¹i Run Script víi toμn bé ®−êng dÉn cïng tªn tËp tin muèn më. KÝch OK. 2.1.4 Load Workspace: T¶i tªn tËp tin . mat lªn mμn h×nh. • Trong cöa sæ Matlab Command windows kÝch: File/ Load Workspace. Mμn h×nh xuÊt hiÖn khung tho¹i Load. Mat file. • Tõ khung tho¹i, kÝch chän tªn tËp tin vμ kÝch Open. B¹n cã thÓ dïng lÖnh Load Workspace ®Ó du nhËp c¸c tËp tin tõ nh÷ng nguån chøa kh¸c nhau b»ng c¸ch còng trong khung tho¹i Load.mat file, kÝch vμo mòi tªn cña Look in ®Ó t×m nguån chøa, chän tËp tin muèn du nhËp. Ghi chó : §Ó cã thÓ du nhËp c¸c tËp tin kh¸c vμo MTALAB, ®iÒu b¾t buéc lμ c¸c tËp tin ®ã ph¶i ®−îc so¹n theo hÖ m· ASCII. Trang 6
  8. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 2.1.5 Save Workspace as : L−u c¸c néi dung trong cöa sæ lÖnh cña MATLAB theo workspace. • NhËp c¸c lÖnh trong cöa sæ lÖnh cña MATLAB nh− b×nh th−êng. • Tõ menu File, chän Save Workspace as. Mμn h×nh hiÖn khung tho¹i Save Workspace as. • Tõ khung tho¹i, ®¸nh tªn tËp tin muèn l−u ( nÕu cÇn thiÕt chän nguån chøa víi Save in). KÝch Save. Nªn nhí lμ tËp tin nμy ®−îc l−u theo d¹ng *.mat vμ còng lμ tËp tin ch−¬ng tr×nh gèc. 2.1.5 Show Workspace : HiÖn néi dung cña tËp tin workspace lªn mμn h×nh b»ng c¸ch tõ menu File, chän Save Workspace. Trong cöa sæ Save Workspace sÏ hiÖn néi dung cña tËp tin Workspace ®· ghi. 2.1.6 Show graphics proprty editor : HiÖn cöa sæ thay ®æi thuéc tÝnh mÆc ®Þnh cña h×nh ¶nh ®Ó ¸p dông cho tÊt c¶ c¸c h×nh ¶nh sÏ ®−îc thiÕt kÕ sau nμy hoÆc chØ riªng theo tõng nhiÖm vô. • Tõ cöa sæ lÖnh MATLAB kÝch : File/Show graphics proprty editor. Mμn h×nh xuÊt hiÖn cöa sæ th«ng tin Show graphics proprty editor. • Chän thuéc tÝnh cÇn thay ®æi vμ kÝch Close. ThÝ dô, thay ®æi thuéc tÝnh Echo tõ mÆc ®Þnh lμ on thμnh off Trang 7
  9. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 2.1.7 Show gui layout tool : HiÓn thÞ danh môc c¸c biÓu t−îng c«ng cô trong cöa sæ Guide Control Panel. Tõ cöa sæ nμy, b¹n cã thÓ thªm c¸c biÓu t−îng c«ng cô tù t¹o míi, g¸n biÓu t−îng biÓu t−îng c«ng cô vμo ®èi t−îng ®Ó thùc hiÖn nhanh b»ng c¸ch kÝch chän biÓu t−îng trong khung biÓu t−îng Guide tool ®Ó hiÖn th«ng tin vμ tõ ®©y g¸n nh·n còng nh− c¸c thuéc tÝnh kh¸c cho c«ng cô võa chän vμ kÝch Apply. 2.1.8 Set path: G¸n tËp tin vμo th− môc bÊt kú trong MATLAB. • Tõ menu File chän Set Path. Mμn h×nh hiÖn cöa sæ Path Browser. Cöa sæ nμy liÖt kª c¸c danh s¸ch c¸c ®−êng dÉn th− môc n»m trong khung cöa bªn tr¸i vμ danh s¸ch tªn tËp tin n»m bªn ph¶i. • Chän tªn ®−êng dÉn th− môc trong khung cöa sæ Path vμ chän tªn tËp tin muèn thay ®æi vÞ trÝ chøa trong khung cöa sæ hoÆc ®¸nh trùc tiÕp vμo khung nhËp lÖnh Current Directory. • Tõ menu File cña cöa sæ Path Browser, chän Save ®Ó l−u nh÷nh thay ®æi. 2.1.9 Preferenes: HiÖn khung tho¹i víi ba tuú chän ®Ó ng−êi sö dông cã thÓ thay ®æi tham sè cho phï hîp nhiÖm vô. Trang 8
  10. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • General: HiÖn khung tho¹i ngay khi kÝch chän lÖnh Preferences tõ menu File cña khung cöa sæ lÖnh MATLAB. KÝch chän c¸c lo¹i tham sè muèn thay ®æi hoÆc g¸n thªm vμ kÝch OK. • Command Windows Font: HiÖn khung danh môc font cïng thuéc tÝnh ®Ó ng−êi sö dông thay ®æi ph«ng mÆc ®Þnh thμnh font quªn thuéc. • Copy Options : HiÖn khung th«ng tin ®Ó ng−êi sö dông tuú chän nh÷ng thμnh phÇn ®èi t−îng muèn sao chÐp. 2.1.9 Print Setup : Trang 9
  11. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 HiÖn khung tho¹i Print cïng c¸c chøc n¨ng phô liªn quan ®Õn viÖc in. 2.1.10 Exit MATLAB ( Ctrl + Q ) : Tho¸t khái ch−¬ng tr×nh MATLAB ®Ó vÒ l¹i mμn h×nh nÒn hÖ ®iÒu hμnh windows. 2.2 Edits : HiÖn menu con chøa c¸c lÖnh kiªn quan ®Õn viÖc xö lý c¸c ®èi t−îng. 2.2.1 Undo : Huû lÖnh ®· thùc hiÖn tr−íc ®ã. Sau khi chän lÖnh Undo ®Ó huû lÖnh, lÖnh sÏ ®æi thμnh Redo ®Ó ng−êi sö dông kh«i phôc nh÷ng g× ®· huû tr−¬c ®ã víi lÖnh Undo. 2.2.2 Cut ( Ctrl +X) : C¾t ®èi t−îng trong khung cöa sæ lÖnh hiÖn hμnhvμ sai ®ã d¸n vμo vÞ trÝ ®· chän. §èi t−îng ®−îc c¾t cã thÓ lμ mét c«ng thøc, mét chuçi ký tù, hμm lÖnh. . • Chän ®èi t−îng muèn c¾t trong khung cöa sæ lÖnh MATLAB vμ Ên Ctrl + C hoÆc chon Copy tõ menu Edit. ThÝ dô c«ng thøc. • Chän vÞ trÝ bÊt kú ®Ó d¸n t¹mvμ Ên Ctrl + V hoÆc Paste. §èi t−îng sÏ ®−îc d¸n vμo vÞ trÝ ®· chän . Nªn nhí ®©y chØ lμ phiªn b¶n ®· ®−îc sao chÐp vμ d¸n. • Chän vÞ trÝ thùc sù muèn d¸n. KÝch lªnh Cut hoÆc Ên Ctrl +X, ®èi t−îng võa d¸n lóc tr−íc sÏ t¹m biÕn mÊt t¹i vÞ trÝ hiÖn hμnh. Ên Ctrl + V ®Ó d¸n. 2.2.3 Copy ( Ctrl + C) : Sao chÐp ®èi t−îng trong khung cöa sæ lÖnh MATLAB vμ sau ®ã d¸n vμo vÞ trÝ ®· chän. §èi t−îng ®−îc copy cã thÓ lμ mét c«ng thøc, mét chuçi ký tù, hμm lÖnh . • Chän ®èi t−îng cÇn copy t¹i cöa sæ lÖnh MATLAB vμ sau ®ã Ên Ctrl + V hoÆc Copy. ThÝ dô , chän c«nh thøc. • Chän vÞ trÝ cÇn copy ®Õn vμ ©ns Ctrl + V. 2.2.4 Paste ( Ctrl + V) : D¸n ®èi t−îng ®· ®−îc Cut hoÆc Copy vμo vÞ trÝ ®· chän. Ngoμi ra , b¹n cßn cã thÓ dïng lÖnh Paste cña MATLAB ®Ó d¸n c¸c ®èi t−îng kh¸c vμo MATLAB. 2.2.5 Clear : Xo¸ ®èi t−îng ®· ®−îc chän trong khung cöa sæ MATLAB. Trang 10
  12. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 2 2.6 Select Att : Chän toand bé néi dung trong khung cöa sæ lÖnh cña MATLAB. 2.2.7 Clear Session : Xo¸ toμn bé néi dung cña cöa sæ lÖnh MATLAB sau khi chän víi lÖnh Select Att. 2.3 View : §¸nh dÊu chän hoÆc xo¸ ®Ó hiÖn hay giÊu thanh c«ng cô trong khung cöa sæ lÖnh MATLAB. 2.4 Window : HiÖn th«ng tin vÒ sè tËp tin ®· thùc hiÖn trong khung cöa sæ lÖnh MATLAB. Ch−¬ng 3 C¸c kh¸i niÖm c¬ b¶n MATLAB ( Matrix laboratory) lμ1 phÇn mÒm øng dông ch¹y trong trong m«i tr−êng Windows. Dïng ®Ó m« pháng c¸c hÖ thèng ®iÒu khiÓn d−íi d¹ng hÖ ph−¬ng tr×nh tr¹ng th¸i hoÆc s¬ ®å cÊu tróc. Thùc hiÖn c¸c phÐp to¸n vÒ xö lý ma trËn, xö lý tÝn hiÖu còng nh− xö lý ®å ho¹ 3.1 Mét sè phÝm chuyªn dông vμ lÖnh th«ng dông : - ↑ hoÆc Ctrl + p : Gäi l¹i c¸c lÖnh ®· thùc hiÖn tr−íc ®ã. - ↓ hoÆc Ctrl +n : Gäi l¹i lÖnh võa thùc hiÖn tr−íc ®ã. - → hoÆc Ctrl + f : chuyÓn con trá sang bªn ph¶i 1 ký tù. - ← hoÆc Ctrl + b: chuyÓn con trá sang tr¸i mét ký tù. - DÊu (;) ®Ó kÕt thóc mét dßng lÖnh - ↵ nh¶y xuèng dßng d−íi - Ctrl + A hoÆc Home : chuyÓn con trá vÒ ®Çu dßng. - Ctrl + E hoÆc End: ChuyÓn con trá ®Õn cuèi dßng. - BackSpace: Xo¸ ký tù bªn tr¸i con trá. - Esc: xo¸ dßng lÖnh. Trang 11
  13. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 - Ctrl + K : Xo¸ tõ vÞ trÝ con trá ®Õn cuèi dßng. - Ctrl + C : Dõng ch−¬ng tr×nh ®ang thùc hiÖn. - Clc : lÖnh xo¸ mμn h×nh. - Clf: LÖnh xo¸ mμn h×nh ®å ho¹. - Input: lÖnh nhËp d÷ liÖu vμo tõ bμn phÝm. - Demo: lÖnh cho phÐp xem c¸c ch−¬ng tr×nh mÉu. - Help: lÖnh cho phÐp xem phÇn trî gióp. - Ctrl – c: Dõng ch−¬ng tr×nh khi nã bÞ r¬i vμo tr¹ng th¸i lÆp kh«ng kÕt thóc. - Dßng lÖnh dμi: NÕu dßng lÖnh dμi qu¸ th× dïng  ↵ ®Ó chuyÓn xuèng dßng d−íi. 3.2 BiÕn trong MATLAB 3.2.1Tªn: Lμ mét d·y ký tù bao gåm c¸c ch÷ c¸i hay c¸c ch÷ sè hoÆc mét sè ký tù ®Æc biÖt dïng ®Ó chØ tªn cña biÕn hoÆc tªn cña hμm. Chóng ph¶i ®−îc b¾t ®Çu b»ng ch÷ c¸i sau ®ã cã thÓ lμ c¸c ch÷ sè hoÆc mét vμi ký tù ®Æc biÖt. ChiÒu dμi tèi ®a cña tªn lμ 31 ký tù. B×nh th−êng Matlab cã sù ph©n biÖt c¸c biÕn t¹o bëi ch÷ c¸i th−êng vμ ch÷ c¸i hoa. C¸c lÖnh cña Matlab nãi chung th−êng sö dông ch÷ c¸i th−êng. ViÖc ph©n biÖt ®ã cã thÓ ®−îc bá qua nÕu chóng ta thùc hiÖn lÖnh : >> casensen off 3.2.2 Mét sè lÖnh víi biÕn: - clear: lÖnh xo¸ tÊt c¶ c¸c biÕn ®· ®−îc ®Þnh nghÜa tr−íc trong ch−¬ng tr×nh . - clear biÕn1, biÕn 2 : xo¸ c¸c biÕn ®−îc liÖt kª trong c©u lÖnh. - Who: hiÓn thÞ c¸c biÕn ®· ®−îc ®Þnh nghÜa trong ch−¬ng tr×nh. Trang 12
  14. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 - Whos: hiÓn thÞ c¸c biÕn ®· ®−îc ®Þnh nghÜa trong ch−¬ng tr×nh cïng víi c¸c th«ng sè vÒ biÕn. - Size ( tªn biÕn ®· ®−îc ®Þnh nghÜa ): cho biÐt kÝch cì cña biÕn d−íi d¹ng ma trËn víi phÇn tö thø nhÊt lμ sè hμng cña ma trËn, phÇn tö thø 2 lμ sè cét cña ma trËn. - Save: L−u gi÷ c¸c biÕn vμo mét File cã tªn lμ Matlab. mat. - Load: T¶i c¸c biÕn ®· ®−îc l−u d÷ trong mét File ®−a vμo vïng lμm viÖc. 3.2.3 Mét sè biÕn ®· ®−îc ®Þnh nghÜa tr−íc: - ans: tù ®éng g¸n tªn nμy cho kÕt qu¶ cña mét phÐp tÝnh mμ ta kh«ng ®Æt tªn. VD >> [ 1 2] ↵ ans = 2 - pi - realmax: ®−a ra gi¸ trÞ cña sè lín nhÊt mμ m¸y tÝnh cã thÓ tÝnh to¸n ®−îc. - realmin: ®−a ra gi¸ trÞ cña sè nhá nhÊt mμ m¸y tÝnh cã thÓ tÝnh to¸n ®−îc. 3.3 C¸c phÐp to¸n v« h−íng: 3.3.1 BiÓu thøc sè häc: Matlab cã thÓ thùc hiÖn tÊt c¶ c¸c biÓu thøc to¸n häc th«ng qua c¸c to¸n tö sau: + phÐp céng. - PhÐp trõ. * phÐp nh©n. Trang 13
  15. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 / PhÐp chia ph¶i \ phÐp chia tr¸i ^ phÐp luü thõa. = ®Ó g¸n mét gi¸ trÞ nμo ®ã cho mét biÕn. 3.3.2 Thø tù −u tiªn trong phÐp to¸n sè häc: ngoÆc ®¬n. luü thõa nh©n, chia. Céng ,trõ. 3.3.3 C¸c vÝ dô: • VÝ dô 1: Gi¶i ph−¬ng tr×nh bËc hai ax2 +bx +c = 0 Ta biÕt c¸c nghiÖm cña ph−¬ng tr×nh nμy cã d¹ng: − b ± b 2 − 4ac x = 2a V× Matlab lμ mét ch−¬ng tr×nh tÝnh to¸n sè nªn chóng ta ph¶i x¸c ®Þnh c¸c gi¸ trÞ a, b, c. DÊu = ®−îc sö dông ®Ó g¸n gi¸ trÞ cña a, b, c nh− sau ( gâ phÝm Enter ë cuèi mçi hμng) >>a = 2 a = 2 >>b = 5; >>c = -3; ⇒ DÊu (;) ë cuèi dßng th× Matlab sÏ kh«ng hiÓn thÞ l¹i gi¸ trÞ võa nhËp. >> x1= (-b + sqrt(b^2- 4*a*c))/(2*a) x1 = 0.5000 Trang 14
  16. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >> x2= (-b - sqrt(b^2- 4*a*c))/(2*a) x2 = -3 • VÝ dô 2: TÝnh gi¸ trÞ cña ®a thø. >> a = x^3 -2*x^2 - 6; >>b = x^2 + 5*x -7; >>x=3; >> w = a/b w = 0.1765 3.4 Sö dông lÖnh tõ c¸c file lÖnh: Nh÷ng lÖnh cña Matlab cã thÓ ®−îc ®−a vμo mét file. Sau ®ã b¹n sÏ h−íng dÉn Matlab lμm viÖc víi c¸c lÖnh ®ã. B©y giê, víi vÝ dô 1, chóng ta sÏ ®−a toμn bé c¸c lÖnh trªn vμo mét file lÊy tªn lμ vidu.m. Tªn cña file ph¶i ®−îc b¾t ®Çu b»ng mét ký tù vμ phÇn më réng lμ .m. C¸c b−íc nh− sau: B−íc 1: File / New/ M-file, M«i tr−êng so¹n th¶o Editor / Debugger sÏ xuÊt hiÖn B−íc 2: Trªn mμn h×nh so¹n th¶o, ta gâ c¸c lÖnh cña Matlab. a = 2; b = 5; c=-3; x1= (-b + sqrt(b^2- 4*a*c))/(2*a) x2= (-b - sqrt(b^2- 4*a*c))/(2*a) B−íc 3: Ghi l¹i néi dung tËp tin víi tªn vidu.m råi tho¸t khái m«i tr−êng so¹n th¶o ®Ó trë vÒ cöa sæ lÖnh ( Matlab Command window. B−íc 4: T¹i cöa sæ lÖnh ta gâ tªn tËp tin. >>vidu.m ↵ Trang 15
  17. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • C¸c file *.m cã 2 lo¹i: - Script file: lμ mét ch−¬ng tr×nh con kh«ng cã gi¸ trÞ tr¶ vÒ. - Function file: lμ mét ch−¬ng tr×nh con cã gi¸ trÞ tr¶ vÒ. 3.5 Dßng nh¾c g¸n gi¸ trÞ c¸c biÕn: §Ó thay ®æi c¸c gi¸ trÞ a,b,c ta ph¶i so¹n th¶o l¹i file vidu.m råi ch¹y l¹i. Ta söa l¹i ch−¬ng tr×nh ®Ó cã dßng nh¾c nhËp a,.b,c víi c¸c lÇn ch¹y ch−¬ng tr×nh kh¸c nhau. B−íc 1: File / New/ M-file, M«i tr−êng so¹n th¶o Editor / Debugger sÏ xuÊt hiÖn B−íc 2: a=input('nhap a= '); b=input('nhap b= '); c=input('nhap c= '); x1= (-b + sqrt(b^2- 4*a*c))/(2*a) x2= (-b - sqrt(b^2- 4*a*c))/(2*a) B−íc 3: Ghi l¹i néi dung tËp tin víi tªn vidu.m. Khi ch¹y ch−¬ng tr×nh ta thu ®−îc kÕt qu¶ nh− sau: B−íc 4: T¹i cöa sæ lÖnh ta gâ tªn tËp tin. >>vidu ↵ nhap vao a= 1 nhap vao b= -2 nhap vao c= 5 x1 = 1.0000 + 2.0000i x2 = 1.0000 – 2.0000i Hai nghiÖm øng víi c¸c gia trÞ a,b,c võa nhËp vμo vμ lμ nghiÖm ¶o. VD vÒ Script file: Gi¶i bμi tËp m¹ch: cho m¹ch ®iÖn nh− h×nh vÏ Trang 16
  18. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 R L C u H·y tÝnh dßng trong m¹ch vμ ®iÖn ¸p trªn tõng phÇn tö . H·y vμo cöa sæ so¹n th¶o vμ trong cöa sæ nμy ta viÕt ch−¬ng tr×nh nh− sau: R=input( 'nhap gia tri cho R = ') C=input( 'nhap gia tri cho C = ') L=input( 'nhap gia tri cho L = ') U=input( 'nhap gia tri cho U = ') ZL=2*50*pi*L*i ZC=1/(2*50*pi*C*i) Z=R+ZL+ZC i= U/Z UR=i*R UL=i*ZL UC=i*ZC Sau khi viÕt xong ch−¬ng tr×nh ta kÝch vμo biÓu t−îng save trong cöa sæ so¹n th¶o vμ tªn lμ vd1. Muèn ch¹y ta trë l¹i cöa sæ MATLAB command Window vμ tõ dÊu nh¾c lÖnh: >> vd1 nhap gia tri cho R = 1000 R = 1000 nhap gia tri cho C = 0.1 C = 0.1000 nhap gia tri cho L = 0.2 L = 0.2000 nhap gia tri cho U = 220 U = 220 ZL = 0 +62.8319i ZC = 0 - 0.0318i Trang 17
  19. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Z = 1.0000e+003 +6.2800e+001i i = 0.2191 - 0.0138i UR = 2.1914e+002 -1.3762e+001i UL = 0.8647 +13.7687i UC = -0.0004 - 0.0070i 3.6 C¸ch t¹o mét hμm: Mçi mét file hμm cña Matlab ( M - file) ®Òu ®−îc khai b¸o nh− sau: Function [ Tªn kÕt qu¶] = tªn hμm (danh s¸ch c¸c biÕn). PhÇn th©n cña ch−¬ng tr×nh trong hμm lμ c¸c lÖnh cña Matlab thùc hiÖn viÖc tÝnh to¸n gi¸ trÞ cña ®¹i l−îng ®−îc nªu trong phÇn tªn kÕt qu¶ theo c¸c biÕn ®−îc nªu tronhg phÇn danh s¸ch biÕn. C¸c biÕn chØ cã t¸c dông néi trong hμm võa ®−îc khai b¸o Tªn cña c¸c biÕn d−îc c¸ch nhau b»nh dÊu phÈy (,). VÝ dô ta thμnh lËp hμm ®æi tõ ®é sang radian: function rad = change(do) rad = do*pi/180; % doi do sang radian Trong Matlab c¸c dßng ghi chó sau dÊu % kh«ng cã t¸c dông thùc thi, chóng ®¬n gi¶n lμ nh÷ng dßng nh¾c ®Ó ng−êi ®äc ch−¬ng tr×nh dÔ hiÓu mμ th«i. File.m th−êng lÊy tªn lμ tªn cña hμm, ta ®Æt tªn file hμm võa lËp lμ change.m. NÕu muèn ®æi 450 sang radian, chØ cÇn gâ: >>rad = change(45) rad = 0.7854 VÝ du: t¹o hμm gi¶i ph−¬ng tr×nh bËc hai, tªn tËp tin ®−îc ®Æt lμ bachai.m. function [x1,x2] = bachai(a,b,c) delta = b^2-4*a*c; x1 = (-b + sqrt(delta))/(2*a); Trang 18
  20. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 x2 = (-b - sqrt(delta))/(2*a); >>[x1,x2]=bachai1(4,6,-7) x1 = 0.77707 x2 = -2.2707 3.7 VÏ c¸c hμm . §å ThÞ BËc Hai Khi muèn vÏ mét hμm nμo 200 ®ã, ph¶i x¸c ®Þnh hμm ®ã 150 trong mét file.m sau ®ã sö dông lÖnh : 100 Fplot(‘tªn hμm’,[khoange vÏ]) 50 VÝ dô vÏ hμm y = 4x2+6x-7 0 trong ®o¹n [-6, 6], ta lËp file bachai1.m. -50 -6 -4 -2 0 2 4 6 function y = bachai1(x) a = 4;b = 6; c = -7; y =a*x^2 + 6*x + c; >>fplot(‘bachai1’, [-6,6]) 3.8 L−u vμ lÊy d÷ liÖu: Ta cã thÓ cã thÓ t¹o lËp mét file d÷ liÖu, sau ®ã khi cÇn dïng th× lÊy ra. VÝ dô t¹o lËp mét ma trËn A: 1 1.1 1.2 2 2.1 2.2 3 3.2 3.2 Sau ®ã ta l−u ma trËn vμo mét file cã tªn lμ dulieu1. >>A = [1 1.1 1.2;2 2.1 2.2;3 3.2 3.2] A = Trang 19
  21. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1.0000 1.1000 1.2000 2.0000 2.1000 2.2000 3.0000 3.2000 3.2000 >>save dulieu1 Nh− vËy, ta ®· cã mét file d÷ liÖu (file nμy n»m trong th− môc work cña Matlab). Khi cÇn sö dông file d÷ liÖu nμy, ta lÊy nh− sau: >>load d−lieu Sau lÖnh load, ta cã thÓ lÊy d÷ liÖu ®Ó sö dông: >>A A = 1.0000 1.1000 1.2000 2.0000 2.1000 2.2000 3.0000 3.2000 3.2000 3.9 sè phøc vμ c¸c phÐp to¸n vÒ sè phøc. Matlab chÊp nhËn sè phøc biÓu thÞ bëi hμm ®Æc biÖt i vμ j, c¶ hai lμ to¸n tö vμ c¸c hμm. 3.9.1 BiÓu diÔn sè phøc: Tªn = PhÇn thùc + phÇn ¶o i hoÆc Tªn = PhÇn thùc + phÇn ¶o j Vidô: >> a = 3 +4i ↵ 3.9.2 C¸c phÐp to¸n ®èi víi sè phøc: • céng, trõ, nh©n sè phøc: C1= a1+b1i ; C2=a2+b2i Céng : c1+c2 Trõ : c1 - c2 Nh©n: c1*c2 Chia: c1/c2 Trang 20
  22. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • C¸c hμm ®Æc biÖt: real(x) : t×m phÇn thùc cña sè phøc x. imag(x): t×m phÇn ¶o cña sè phøc x. conj(x): t×m sè phøc liªn hîp cña sè phøc x. abs(x): T×m gi¸ trÞ tuyÖt ®èi cña sè phøc x ( ®é lín ) angle(x): gãc t¹o bëi gi÷a trôc thùc vμ ¶o. VÝ dô: >> a =3.0000 + 4.0000i a = 3.0000 + 4.0000i >> thuc=real(a); >> ao=imag(a); >> lienhop=conj(a); >> dolon=abs(a); >> goc =angle(a); 3.10 C¸c phÐp to¸n quan hÖ vμ phÐp to¸n logic 3.10.1 C¸c phÐp to¸n quan hÖ: C¸c phÐp to¸n quan hÖ bao gåm: - Nhá h¬n: - Lín h¬n hoÆc b»ng: >= - B»ng: == - Kh«ng b»ng ( kh¸c): ~= BiÓu thøc cã c¸c to¸n tö quan hÖ nhËn gia trÞ ®óng lμ (true) hoÆc sai (false). Trong Matlab, biÓu thøc ®óng sÏ cã gi¸ trÞ lμ 1, biÓu thøc sai cã gia trÞ lμ 0. VÝ dô1: >>12.2>12 ans = 1 >>1~=1 Trang 21
  23. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 ans = 0 >> A=[ 1:3;4:6;7:9] A = 1 2 3 4 5 6 7 8 9 >> B=[1:3;2:4;10:12] B = 1 2 3 2 3 4 10 11 12 >> A==B ans = 1 1 1 0 0 0 0 0 0 VÝ dô 2: Cho mét qu¶ cÇu mÆng cã khèi l−îng lμ m = 2kg ®−îc buéc vμo mét sîi d©y cã chiÒu dμi l = 1.5m. Mét ng−êi n¾m vμo ®Çu d©yvμ quay trßn qu¶ cÇu theo ph−¬ng th¼ng ®øng.VËn tèc dμi cña qu¶ cÇu ë vÞ trÝ cao nhÊt lμ v =6m/s. lùc kÐo T trªn sîi d©y thay ®æi theo gãc nghiªng cña d©y víi ph−¬ng n»m ngang x¸c ®Þnh theo c«ng thøc sau: mv 2 T = + mg()2 − 3sinθ l Cho biÕt khi lùc kÐo T> 145N th× s¬i d©y bÞ ®øt . H·y x¸c ®Þnh nh÷ng vÞ trÝ d©y bÞ ®øt. Ch−¬ng tr×nh nh− sau: function y = tinhluc(theta,T) v m=2;l=1.5;Tmax=145;v=6;g=9.8; theta=0:10:360; Trang 22 θ
  24. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 rad=pi*theta/180; T=m*(v^2/l+g*(2-3*sin(rad))); bang=[theta;T>Tmax] plot(theta,T); grid on >>Tinhluc bang = Columns 1 through 12 0 10 20 30 40 50 60 70 80 90 100 110 0 0 0 0 0 0 0 0 0 0 0 0 Columns 13 through 24 120 130 140 150 160 170 180 190 200 210 220 230 0 0 0 0 0 0 0 0 0 0 0 0 Columns 25 through 36 240 250 260 270 280 290 300 310 320 330 340 350 0 0 1 1 1 0 0 0 0 0 0 0 Column 37 360 0 Tõ kÕt qu¶ trªn ta thÊy t¹i c¸c vÞ trÝ øng víi c¸c gãc 2600, , 2700, , 2800, th× biÓu thøc logic T>Tmax cã gi¸ trÞ lμ 1, tøc t¹i ®ã d©y cã thÓ sÏ bÞ ®øt. 3.10.2 C¸c phÐp to¸n logic C¸c phÐp to¸n logic vμ, hoÆc, ®¶o ®−îc thùc hiÖn bëi c¸c to¸n tö sau: - PhÐp vμ( and): Ký hiÖu lμ & VD: phÐp & 2 ma trËn cïng cì A, B lμ mét ma trËn cã c¸c phÇn tö b»ng 1 nÕu c¸c phÇn tö t−¬ng øng cña c¶ 2 ma trËn ®Çu ®Òu kh¸c 0 vμ b»ng 0 nÕu 1 trong 2 phÇn tö t−¬ng øng cña 2 ma trËn b»ng 0. >>A=[1 2 7; 0 4 9;1 3 5]; >> B=[0 2 4; 2 4 6; 3 0 7] >> C=A&B C = 0 1 1 Trang 23
  25. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 0 1 1 1 0 1 - PhÐp hoÆc (or) : Ký hiÖulμ | VD : phÐp or 2 ma trËn cïng cì A,B lμ mét ma trËn cã c¸c phÇn tö b»ng 0 nÕu c¸c phÇn tö t−¬ng øng cña c¶ 2 ma trËn ®Çu ®Òu b»ng 0 vμ b»ng 1 nÕu 1 trong 2 phÇn tö t−¬ng øng cña 2 ma trËn kh¸c 0. >>A=[0 2 7; 0 4 9;1 3 0]; >> B=[0 2 4; 2 4 6; 3 0 0]; >> C=A | B C = 0 1 1 1 1 1 1 1 0 - PhÐp ®¶o( not): Ký hiÖu lμ ~ VÝ Dô : phÐp ®¶o cña mét ma trËn lμ mét ma trËn cã cïng cì víi c¸c phÇn tö cã gi¸ trÞ b»ng 1 nÕu c¸c phÇn tö cña ma trËn ®Çu cã gi¸ trÞ b»ng 0 vμ b»ng 0 nÕu c¸c phÇn tö cña ma trËn ®Çu cã gi¸ trÞ kh¸c 0. >>A=[0 2 7; 0 4 9;1 3 0] >> B=~A B = 1 0 0 1 0 0 0 0 1 3.10.3 CÊu tróc c©u lÖnh ®iÒu kiÖn: • LÖnh if ®¬n: Có ph¸p: if Nhãm lÖnh; End NÕu biÓu thøc logic ®óng nhãm lÖnh sÏ ®−îc thùc hiÖn . NÕu biÓu thøc logic sai th× ch−¬ng tr×nh chuyÓn ®Õn lÖnh sau end. VD: Trang 24
  26. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 function y=f(a,b,c) if a > ht(2,4,2) hinh thang nguoc ans = 6 • CÊu tróc lÖnh if lång nhau: Có ph¸p: if Nhãm lÖnh 1; if Nhãm lÖnh 2; End Nhãm lÖnh 3; End Nhãm lÖnh 4; NÕu biÓu thøc logic 1 ®óng th× - Thùc hiÖn nhãm lÖnh 1. - KiÓm tra biÓu thøc logic 2. - NÕu ®óng thùc hiÖn nhãm lÖnh 2 - NÕu sai bá qua nhãm lÖnh 2 - Thùc hiÖn nhãm lÖnh 3. NÕu biÓu thøc logic 1 sai th× - Thùc hiÖn nhãm lÖnh 4. • LÖnh else: Có ph¸p: if Nhãm lÖnh A; Trang 25
  27. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 else Nhãm lÖnh B; End Nhãm lÖnh A sÏ ®−îc thùc hiÖn nÕu biÓu thøc logic ®óng. NÕu kh«ng nhãm lÖnh B sÏ ®−îc thùc hiÖn. • LÖnh elseif Có ph¸p: if Nhãm lÖnh A; Elseif Nhãm lÖnh B; Elseif Nhãm lÖnh C; End NÕu BT logic 1 ®óng nhãm lÖnh A sÏ ®−îc thùc hiÖn. NÕu sai kiÓm tra Btlogic 2, nÕu ®óng thùc hiÖn nhãm lÖnh B. NÕu sai kiÓm tra BT logic3,nÕu ®óng thùc hiÖn nhãm lÖnh CNÕu kh«ng cã biÓu thøc logic nμo ®óng th× kh«ng cã lÖnh nμo trong cÊu tróc trªn ®−îc thùc hiÖn. • KÕt hîp cÊu tróc elseif vμ else Có ph¸p: if Nhãm lÖnh A; Elseif Nhãm lÖnh B; Elseif Nhãm lÖnh C; Else Nhãm lÖnh n; End Trang 26
  28. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 NÕu BT logic 1 ®óng nhãm lÖnh A sÏ ®−îc thùc hiÖn. NÕu sai kiÓm tra Btlogic 2, nÕu ®óng thùc hiÖn nhãm lÖnh B. NÕu sai kiÓm tra BT logic3, nÕu ®óng thùc hiÖn nhãm lÖnh CNÕu kh«ng cã biÓu thøc logic nμo ®óng th× nhãm lÖnh n ®−îc thùc hiÖn. a=input(' vao a=') b=input(' vao b=') c=input(' vao c=') d=b^2-4*a*c if d ,break, end tho¸t khái vßng lÆp nÕu ®iÒu kiÖn logic ®óng. Ng−îc l¹i sÏ thùc hiÖn lÖnh tiÕp theo trong vßng lÆp. 3.10.4 CÊu tróc vßng lÆp. • vßng lÆp for: có ph¸p: for chØ sè = biÓu thøc nhãm lÖnh A; end qui t¾c thùc hiÖn: - ChØ sè cña vßng lÆp ph¶i lμ biÕn. - NÕu ma trËn biÓu thøc lμ rçng th× kh«ng thùc hiÖn vßng lÆp. - NÕu biÓu thøc lμ mét ®¹i l−îng v« h−íng vßng lÆp thùc hiÖn 1 lÇn vμ chØ sè nhËn gi¸ trÞ cña ®¹i l−îng v« h−íng. Trang 27
  29. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 - NÕu biÓu thøc lμ mét vector hμng, sè lÇn lÆp b»ng sè phÇn tö trong vÐctor sau mçi lÇn lÆp chØ sè nhËn gi¸ trÞ tiÕp theo cña vector. - NÕu biÓu thøc lμ mét ma trËn th× sè vßng lÆp b»ng sè cét cña ma trËn sau mçi vßng lÆp chØ sè sÏ nhËn gi¸ trÞ cét tiÕp theo cña ma trËn - Khi kÕt thóc vßng lÆp chØ sè nhËn gi¸ trÞ cuèi cïng. - Cã thÓ dïng to¸n tö : trong vßng lÆp for i = chØ sè ®Çu: gia sè: chØ sè cuèi. Vμ sè vßng lÆp ®−îc tÝnh ceil((chØ sè cuèi-chØ sè ®Çu)/gia sè+1) n=input ('vao n=') for k=n s=1; s=s+k end ®Æt tªn lμ vd >>vd vao n=3 n = 3 s = 4 >>vd vao n=[1 4 7] n = 1 4 7 s = 2 s = 5 s = 8 Trang 28
  30. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >>vd vao n=[1 2 5;5 7 8;9 5 6]; s = 2 6 10 s = 3 8 6 s = 6 9 7 • Vßng lÆp While Có ph¸p: While Nhãm lÖnh A; End NÕu biÓu thøc ®óng th× thùc hiÖn nhãm lÖnh A. Khi thùc hiÖn xong th× kiÓm tra laÞ ®iÒu kiÖn. NÕu ®iÒu kiÖn vÉn ®óng l¹i thùc hiÖn nhãm lÖnh A. NÕu sai vßng lÆp kÕt thóc. 3.10.5 C¸c lÖnh break, return, error: LÖnh break: kÕt thóc sù thù thi vßng lÆp for hoÆc while LÖnh return: th−êng ®−îc sö dông trong c¸c hμm cña Matlab. LÖnh return sÏ cho phÐp quay trë vÒ thùc thi nh÷ng lÖnh n»m trong t¸c dông cña lÖnh return. LÖnh error (‘dßng nh¾n): kÕt thóc thùc thi lÖnh vμ hiÓn thÞ dßng nh¾n trªn mμn h×nh. VÝ dô: Chän mét sè d−¬ng bÊt kú. NÕu sè ®ã lμ sè ch½n th× chia hÕt cho hai. NÕu sè ®ã lμ sè lÓ th× nh©n víi 3 råi céng 1. LÆp l¹i qu¸ tr×nh ®ã cho ®Õn khi kÕt qu¶ lμ 1. Ch−¬ng tr×nh: while 1 Trang 29
  31. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 n=input ('Nhap vao mot so : '); if n 1 if rem(n,2)== 0% phan du cua n chia cho 2 n=n/2 else n= 3*n+1 end end end Khi ch¹y ch−¬ng tr×nh ta sÏ thÊy t¸c dông cña lÖnh break ( dõng ch−¬ng tr×nh khi nhËp sè ©m hoÆc sè 0) 3.10.6 BiÕn toμn côc (global variables) Matlab cho phÐp sö dông cïng mét biÕn cho c¸c hμm hoÆc gi÷a c¸c hμm vμ ch−¬ng tr×nh chÝnh cña Matlab, ®iÒu nμy ®−îc thùc hiÖn th«ng qua viÖc khai b¸o biÕn toμn côc: Global tªn1 tªn2 tªn3 . (Tªn c¸c hμm c¸ch nhau b¾ng dÊu kho¶ng trèng, kh«ng sö dông dÊu phÈy). ViÖc khai b¸o biÕn toμn côc ph¶i ®−îc thùc hiÖn ë ch−¬ng tr×nh chÝnh hoÆc ë file lÖnh (script) hoÆc ë file hμm ( function) cã sö dông c¸c biÕn. BiÕn toμn côc cã t¸c dông cho ®Õn khi kÕt thóc qu¸ tr×nh tÝnh to¸n hoÆc khi toμn bé workspace ®−îc xo¸. Kh«ng ®−îc ®−a tªn biÕn toμn côc vμo danh s¸ch c¸c ®èi sè cña hμm. Khi sö dông biÕn toμn côc c¸c lÖnh sau tá ra rÊt cÇn thiÕt: • Clear glolal : LÖnh nμy cho phÐp lo¹i bá c¸c biÕn toμn côc. • Isglobal(Tªn biÕn) : LÖnh nμy cho phÐp kiÓm tra xem mét biÕn nμo ®ã cã ph¶i lμ biÕn toμn côc hay kh«ng. NÕu lμ biÕn toμn côc th× gi¸ trÞ tr¶ vÒ sÏ lμ 1. 3.10.7 Mét sè hμm to¸n häc: Môc nμy chØ giíi thiÖu mét sè hμm ®¬n gi¶n vμ th−íng gÆp trong khi lËp tr×nh: • sin: hμm sin • cos: hμm cos • tan: hμm tang • asin: hμm arcsin • acos: hμm arccos • atan: hμm arctang Trang 30
  32. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • sinh: hμm sin hyperbolic • cosh: hμm cos hyperbolic • tanh: hμm tang hyperbolic • asinh: hμm arcsin hyperbolic • acosh: hμm arccos hyperbolic • atanh: hμm arctang hyperbolic • abs: LÊy gi¸ trÞ tuyÖt ®èi hoÆc ®é lín cña sè phøc • round: lμm trßn ®Õn sè nguyªn gÇn nhÊt • fix: lμm trßn h−íng vÒ kh«ng • floor: lμm trßn h−íng vÒ - ∞ • ceil : lμm trßn h−íng vÒ + ∞ • rem: phÇn d− sau khi chia • gcd: −íc sè trung lín nhÊt • lcm: béi sè trung nhá nhÊt • exp: luü thõa e • log: logarit c¬ sè e • log10: logarit c¬ sè 10 3.10.8 §Þnh d¹ng sè: C¸c phÐp tÝnh trong Matlab ®−îc thùc hiÖn víi ®é chÝnh x¸c cao ta cã thÓ ®Þnh d¹ng cho c¸c sè xuÊt ra mμn h×nh tuú theo yªu cÇu cô thÓ: Ta lÊy vÝ dô víi sè 4/3 • format short ( ®©y lμ chÕ ®é mÆc ®Þnh ): a = 1.3333 • format short e a = 1.3333e + 000 • format long a = 1.33333333333333 • format long e a = 1.33333333333333e + 000 • format bank a = 1.33 Trang 31
  33. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • format hex a = 3ff5555555555555 Trang 32
  34. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ch−¬ng 1 C¬ së Matlab 1.1 Tæng quan vÒ Matlab 1.1.1 Kh¸i niÖm vÒ Matlab Matlab lμ mét ng«n ng÷ lËp tr×nh thùc hμnh bËc cao ®−îc sö dông ®Ó gi¶i c¸c bμi to¸n vÒ kü thuËt.Matlab tÝch hîp ®−îc viÖc tÝnh to¸n, thÓ hiÖn kÕt qu¶, cho phÐp lËp tr×nh, giao diÖn lμm viÖc rÊt dÔ dμng cho ng−êi sö dông. D÷ liÖu cïng víi th− viÖn ®−îc lËp tr×nh s½n cho phÐp ng−êi sö dông cã thÓ cã ®−îc nh÷ng øng dông sau ®©y. • Sö dông c¸c hμm cã s½n trong th− viÖn, c¸c phÐp tÝnh to¸n häc th«ng th−êng • Cho phÐp lËp tr×nh t¹o ra nh÷ng øng dông míi. • Cho phÐp m« pháng c¸c m« h×nh thùc tÕ. • Ph©n tÝch, kh¶o s¸t vμ hiÓn thÞ d÷ liÖu. • Víi phÇn mÒm ®å ho¹ cùc m¹nh • Cho phÐp ph¸t triÓn,giao tiÕp víi mét sè phÇn mÒm kh¸c nh− C++, Fortran. 1.1.2 Tæng quan vÒ cÊu tróc d÷ liÖu cña MATLAB, c¸c øng dông Matlab lμ mét hÖ thèng t−¬ng giao,c¸c phÇn tö d÷ liÖu lμ mét m¶ng( m¶ng nμy kh«ng ®ßi hái vÒ kÝch th−íc ). Chóng cho phÐp gi¶i quyÕt c¸c vÊn ®Ò liªn quan ®Õn lËp tr×nh b»ng m¸y tÝnh,®Æc biÖt sö dông c¸c phÐp tÝnh vÒ ma trËn hay vÐc tor vμ cã thÓ sö dông ng«n ng÷ C häc Fortran lËp tr×nh råi thùc hiÖn øng dông lËp tr×nh ®ã b»ng c¸c c©u lÖnh goÞ tõ MATLAB .MATLAB ®−îc viÕt t¾t tõ ch÷ matrix laboratory tøc lμ th− viÖn vÒ ma trËn, tõ ®ã phÇn mÒm MATLAB ®−îc viÕt nh»m cung cÊp cho viÖc truy cËp vμo phÇn mÒm ma trËn mét c¸h dÔ dμng, phÇn mÒm ma trËn nμy ®−îc ph¸t triÓn bëi c¸c c«ng tr×nh Linpack vμ Eispack . Ngμy nay MATLAB ®−îc ph¸t triÓn bëi Lapack vμ Artpack t¹o nªn mét nghÖ thuËt phÇn mÒm cho ma trËn. a.D÷ liÖu D÷ liÖu cña MATLAB thÓ hiÖn d−íi d¹ng ma trËn( hoÆc m¶ng –tæng qu¸t), vμ cã c¸c kiÓu d÷ liÖu ®−îc liÖt kª sau ®©y • KiÓu ®¬n single , kiÓu nμy cã lîi vÒ bé nhí d÷ liÖu v× nã ®ßi hái Ýt byte nhí h¬n, kiÓu d÷ liÖu nμy kh«ng ®−îc sö dông trong c¸c phÐp tÝnh to¸n häc, ®é chÝnh x¸c kÐm h¬n • KiÓu double kiÓu nμy lμ kiÓu th«ng dông nhÊt cña c¸c biÕn trong MATLAB • KiÓu Sparse. • KiÓu int8, uint8, int16 . . . • KiÓu char vÝ dô ‘Hello’ • KiÓu cell. • KiÓu Structure. Trang 1
  35. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trong MATLAB kiÓu d÷ liÖu double lμ kiÓu mÆc ®Þnh sö dông trong c¸c phÐp tÝnh sè häc. C¸c b¹n cã thÓ tham kh¶o c¸c kiÓu d÷ liÖu kh¸c trong ®Üa CD Help MATLAB 6.0 b. øng dông MATLAB t¹o ®iÒu kiÖn thuËn lîi cho: • C¸c kho¸ häc vÒ to¸n häc • C¸c kü s−, c¸c nhμ nghiªn cøu khoa häc • Dïng MATLAB ®Ó tÝnh to¸n ,nghiªn cøu t¹o ra c¸c s¶n phÈm tèt nhÊt trong s¶n xuÊt. c.Toolbox lμ mét c«ng cô quan träng trong Matlab C«ng cô nμy ®−îc MATLAB cung cÊp cho phÐp b¹n øng dông c¸c kü thuËt ®Ó ph©n tÝch, thiÕt kÕ , m« pháng c¸c m« h×nh . Ta cã thÓ t×m thÊy toolbox ë trong m« tr−êng lμm viÖc cña . • M¹ng n¬ron • Logic mê • Simulink 1.1.3 HÖ thèng MATLAB HÖ thèng giao diÖn cña MATLAB ®−îc chia thμnh 5 phÇn • M«i tr−êng ph¸t triÓn. §©y lμ n¬i ®Æt c¸c thanh c«ng cô, c¸c ph−¬ng tiÖn gióp chóng ta sö dông c¸c lÖnh vμ c¸c file, ta cã thÓ liÖt kª mét sè nh− sau. + Desktop + Command Window + Command History + Browsers for viewinghelp • Th− viÖn, c¸c hμm to¸n häc Bao gåm c¸c cÊu tróc nh− tÝnh tæng, sin cosin atan, atan2 etc , c¸c phÐp tÝnh ®¬n gi¶n ®Õn c¸c phÐp tÝnh phøc t¹p nh− tÝnh ma trËn nghich ®¶o, trÞ riªng, chuyÓn ®æi furier ,laplace , symbolic library • Ng«n ng÷ MATLAB §ã lμ c¸c ng«n ng÷ cao vÒ ma trËn vμ m¶ng, víi c¸c dßng lÖnh, c¸c hμm, cÊu tróc d÷ liÖu vμo , cã thÓ lËp tr×nh h−íng ®èi t−îng. • §å ho¹ trong MATLAB Bao gåm c¸c c©u lÖnh thÓ hiÖn ®å h¹o trong m«i tr−êng 2D vμ 3D, t¹o c¸c h×nh ¶nh chuyÓn ®éng, cung cÊp c¸c giao diÖn t−¬ng t¸c gi÷a ng−êi sö dông vμ m¸y tÝnh . • Giao tiÕp víi c¸c ng«n ng÷ kh¸c. MATLAB cho phÐp t−¬ng t¸c víi c¸c ng«n ng÷ kh¸c nh− C , Fortran Trang 2
  36. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1.1.4 Lμm quen víi matlab Tr−íc tiªn ®Ó khëi ®éng MATLAB b¹n kÝch ®óp (hoÆc ®¬n) vμ biÓu t−îng file MATLAB.exe ,trªn mμn h×nh xuÊt hiÖn cöa sæ sau.( Xem h×nh vÏ 1.1 ) Cöa sæ ®ã chøa c¸c thanh c«ng cô( giao diÖn ng−êi vμ m¸y) cÇn thiÕt cho viÖc qu¶n lý c¸c files, c¸c biÕn ,cöa sæ lÖnh, cã thÓ coi desktop lμ c¸c panel gåm c¸c «, vïng, qu¶n lý vμ t¸c dông cña tõng cöa sæ nhá ®−îc qu¶n lý bëi desktop H×nh vÏ 1.1 Trªn h×nh vÏ ta thÊy cöa sæ desktop(cöa sæ lín nhÊt), vμ c¸c cöa sæ phô cña nã 1.1.5 Lμm viÖc víi c¸c cöa sæ cña MATLAB ®−îc qu¶n lý bëi desktop a. Cöa sæ Command window : Trang 3
  37. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Lμ cöa sæ giao tiÕp chÝnh cña Matlab bëi ®©y lμ n¬i nhËp gi¸ trÞ c¸c biÕn, hiÓn thÞ gi¸ trÞ,tÝnh to¸n gi¸ trÞ cña biÓu thøc, thùc thi c¸c hμm cã s½n trong th− viÖn (d¹ng lÖnh), hoÆc c¸c hμm(d¹ng function) do ng−êi dïng lËp tr×nh ra trong M-files. C¸c lÖnh ®−îc ®−îc nhËp sau dÊu nh¾c ‘ >> ‘, vμ nÕu cã sai sãt trong qu¸ tr×nh gâ(nhËp) lÖnh th× h·y nhÊn phÝm Enter cho ®Õn khi nhËn ®−îc dÊu nh¾c >>. Thùc thi lÖnh b»ng nhÊn phÝm Enter. Gâ c¸c lÖnh sau: >> A= pi/2 ; >> B= sin(A) B= 1 HoÆc ch−¬ng tr×nh so¹n th¶o trong M-file d−íi ®©y: % Chuong trinh trong M-file x= 0:pi/6:2*pi; y=sin(x); I. plot(x,y); II. III. i ifiμ IV. thùc thi ch−¬ng tr×nh trªn trong cöa sæ Command window b»ng dßng lÖnh sau >> ve_sin Chóng ta thÊy râ h¬n trong môc “ Sö dông lÖnh trùc tiÕp “ ë phÇn sau. b. Cöa sæ command History C¸c dßng mμ b¹n nhËp vμo trong cöa sæ Command window ( c¸c dßng nμy cã thÓ lμ dßng nhËp biÕn ,hoÆc cã thÓ lμ dßng lÖnh thùc hiÖn hμm nμo ®ã ) ®−îc gi÷ l¹i trong cöa sæ Command History ,vμ cöa sæ nμy cho phÐp ta sö dông l¹i nh÷ng lÖnh ®ã b»ng c¸ch kÝch ®«i chuét lªn c¸c lÖnh ®ã hoÆc c¸c biÕn, nÕu nh− b¹n muèn sö dông l¹i biÕn ®ã. Xem h×nh 1.2 KÝch ®«i chuét lªn lªnh hoÆc biÕn ®Ó sö dông l¹i Trang 4
  38. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 H×nh 1.2 c. Cöa sæ Workspace: Lμ cöa sæ thÓ hiÖn tªn c¸c biÕn b¹n sö dông cïng víi kÝch th−¬c vïng nhí(sè bytes), kiÓu d÷ liÖu(líp) ,c¸c biÕn ®−îc gi¶i phãng sau mçi lÇn t¾t ch−¬ng tr×nh.(xem h×nh 1.3) KÝch ®«i chuét lªn biÕn ®Ó xem d÷ liÖu(hoÆc thYªu ®æi H×nh 1.3 Ngoμi ra nã cho phÐp thay ®æi gi¸ tri , còng nh− kÝch th−íc cña biÕn b»ng c¸ch kÝch ®«i chuét lªn c¸c biÕn. HoÆc kÝch vμo nót bªn tr¸i ngay c¹nh nót save VÝ dô khi chän biÕn(gi¶ thö lμ biÕn b) råi kÝch ®óp(hoÆc kÝch chuét vμo nót c¹nh nót save) ta ®−¬c cöa sæ sau gäi lμ Array Editor: xem h×nh 1.4 Tiªu ®Ò lμ tªn biÕn b , ®Þnh d¹ng d÷ liÖu ë « cã tªn lμ: Numeric format, mÆc ®Þnh lμ d¹ng short, KÝch th−íc size lμ 1 by 3 (tøc lμ mét hμng vμ 3 cét) ta cã thÓ thay ®æi kÝch th−íc nμy b»ng c¸ch thay ®æi sè cã trong « kÝch th−íc size. + Dïng cöa sæ nμy ®Ó l−u c¸c biÕn Trang 5
  39. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 ë d−íi lμ d÷ liÖu cña biÕn b, ta cã thÓ thay ®æi chóng b»ng c¸ch thay ®æi gi¸ trÞ trong c¸c « ®ã H×nh 1.4 VÝ dô NhËp biÕn >>b=[1 2 3 ]; >>x=pi; TÊt c¶ c¸c biÕn ®Òu ®−îc l−u trong Workspace trong ®ã thÓ hiÖn c¶ kÝch th−íc (Size), sè Bytes vμ kiÓu d÷ liÖu(class) (8 bytes cho mçi phÇn tö d÷ liÖu kiÓu double cô thÓ lμ 24 bytes dμnh cho b vμ 8 bytes dμnh cho a) d. Cöa sæ M-file Lμ mét cöa sæ dïng ®Ó so¹n th¶o ch−¬ng tr×nh øng dông, ®Ó thùc thi ch−¬ng tr×nh viÕt trong M-file b»ng c¸ch gâ tªn cña file chøa ch−¬ng tr×nh ®ã trong cöa sæ Commandwindow. Khi mét ch−¬ng tr×nh viÕt trong M-file, th× tuú theo øng dông cô thÓ, tuú theo ng−êi lËp tr×nh mμ ch−¬ng tr×nh cã thÓ viÕt d−íi d¹ng sau +D¹ng Script file :Tøc lμ ch−¬ng tr×nh gåm tËp hîp c¸c c©u lÖnh viÕt d−íi d¹ng liÖt kª ,kh«ng cã biÕn d÷ liÖu vμo vμ biÕn lÊy gi¸ trÞ ra +D¹ng hμm function cã biÕn d÷ liÖu vμo vμ biÕn ra. e. §−êng dÉn th− môc: N¬i l−u gi÷ c¸c file ch−¬ng tr×nh 1.2 NhËp biÕn,lÖnh trùc tiÕp tõ cöa sæ Command Window: Sau khi xuÊt hiÖn dÊu nh¾c >> trong cöa sæ command window ®iÒu ®ã ®ång nghÜa cho phÐp b¹n nhËp biÕn hoÆc thùc hiÖn c¸c c©u lÖnh mong muèn. Do d÷ liÖu cña MATLAB ®−îc thÓ hiÖn d−íi d¹ng matrËn cho nªn c¸c biÕn dïng trong MATLAB d÷ liÖu cña nã còng thÓ hiÖn d−íi d¹ng ma trËn, viÖc ®Æt tªn biÕn kh«ng ®−îc ®Æt mét c¸h tuú tiÖn mμ ph¶i ®Æt theo mét quy ®Þnh • Tªn ma trËn(biÕn) ph¶i b¾t ®Çu b»ng mét ch÷ c¸i, vμ cã thÓ chøa ®Õn 19 ký tù lμ sè hoÆc ch÷. Trang 6
  40. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • Bªn ph¶i dÊu b»ng lμ c¸c gi¸ trÞ cña ma trËn • DÊu chÊm phÈy(; )lμ ®Ó ph©n c¸ch c¸c hμng, cßn c¸c gi¸ trÞ trong hμng ®−îc ph©n c¸ch nhau bëi dÊu phÈy(,) hoÆc dÊu c¸ch( phÝm space). • KÕt thóc nhËp ma trËn th−êng cã dÊu chÊm phÈy hoÆc kh«ng tuú theo b¹n muèn thÓ hiÖn kÕt qu¶ cña nã hay kh«ng. a. NhËp c¸c biÕn, matrËn, c¸c lÖnh liÖt kª trùc tiÕp Th«ng th−êng Matlab sö dông 4 vÞ trÝ sau dÊu phÈy cho c¸c sè thËp ph©n cã dÊu phÈy chÊm ®éng, vμ sö dông biÕn “ ans “ cho kÕt qu¶ cña phÐp tÝnh. Ta cã thÓ ®¨ng ký biÕn thÓ hiÖn kÕt qu¶ nμy cña riªng m×nh . XÐt tËp c¸c lÖnh sau: VÝ dô tr−êng hîp kh«ng sö dông biÕn l−u kÕt qu¶, biÕn ans tù ®éng ®−îc g¸n >> 8+9 ans = 17 NhËp biÕn r = 8/10 trong cöa sæ CommandWindow nh− sau: >> r = 8/10 r=0.8000 B¹n cã thÓ sö dông c¸c biÕn nμy cho c¸c phÐp tÝnh tiÕp theo vÝ dô nh−: >> s=10*r s= 8 VÝ dô nhËp trùc tiÕp c¸c sè liÖu nh− sau >> a=[1 2;3 4] a = 1 2 3 4 Matlab cã hμng tr¨m hμm ®−îc ®Þnh nghÜa s½n vÝ dô nh− hμm tÝnh sin . >> x=pi; %nhËp biÕn x >> sin(x) % nhËp lÖnh sin(x), Ên enter ®Ó thùc hiÖn lÖnh tÝnh sin(x) ans = 1.2246e-016 + C¸c phÐp tÝnh sö dông trong Matlab : Trong MATLAB còng sö dông c¸c phÐp to¸n th«ng th−êng ®−îc liÖt kª trong b¶ngsau Ký tù ý nghÜa LÖnh Matlab + Céng a + b a+b - Trõ a - b a-b * Nh©n ab a*b Trang 7
  41. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 / Chia ph¶i a/b a a/b= b \ Chia tr¸i b/a a b\a = b ^ Mò a^b a^2 Thø tù −u tiªn c¸c phÐp to¸n: TÊt c¶ c¸c biÓu thøc to¸n häc ®Òu ®−îc thùc hiÖn tõ tr¸i qua ph¶i, ta cã b¶ng thø tù −u tiªn nh− sau: Thø tù −u tiªn C¸c phÐp 1 DÊu ngoÆc trong biÓu thøc 2 To¸n tö mò ^ , thùc thi tõ tr¸i qua ph¶i 3 To¸n tö nh©n, chia cã cïng møc −u tiªn,thùc hiÖn tõ tr¸i sang ph¶i . 4 Céng , trõ VÝ dô1 : >> a=[1 2;3 4]; >> b=[5 6;7 8]; >> a+b^2 ans = 68 80 94 110 VÝ dô2 Gi¶i ph−¬ng tr×nh bËc hai, c¸c lÖnh nhËp trong cña sæ CommandWindow >>a= 1; >>b=-2; >>c=1; >>delta= b^2- 4*a*c; >>x1=(-b+ sqrt(delta) )/(4*a); >>x2=(-b- sqrt(delta) )/(4*a); Chó ý : + C¸c lÖnh ®−îc kÕt thóc b»ng dÊu chÊm phÈy, Matlab sÏ kh«ng thÓ hiÖn kÕt qu¶ trªn mμn h×nh, ng−îc l¹i kh«ng cã dÊu chÊm phÈy Matlab sÏ thÓ hiÖn kÕt qu¶. + Trong qu¸ tr×nh nhËp ma trËn nÕu c¸c phÇn tö trªn mét hμng dμi qu¸ ta cã thÓ xuèng dßng b»ng to¸n tö ba chÊm( . . . ) VÝ dô >>Number_apples=10;Number_Oranges=25,Number_bananas=34; Trang 8
  42. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >>Fruit_Purchased= Number_apples+ Number_Oranges+ Number_bananas 1.3 Sö dông c¸c lÖnh gi¸n tiÕp tõ c¸c file d÷ liÖu Nh− ®· tr×nh bμy trong phÇn cöa sæ M-file, tËp hîp c¸c lÖnh cña MATLAB ®−îc so¹n th¶o trong cöa sæ M-file d−íi d¹ng Script file hoÆc d¹ng hμm function(cã biÕn ®Çu vμo vμ ra), vμ ®−îc ghi (l−u)vμo file d÷ liÖu cã phÇn më réng lμ .m (Th«ng th−êng c¸c ch−¬ng tr×nh so¹n th¶o trong M-file th−êng ®−îc l−u theo ®−êng dÉn C:\matlabR12\ work\Tªn_file ), muèn thùc thi ch−¬ng tr×nh so¹n th¶o ®ã ta gäi lÖnh trong cöa sæ Commandwindow, tuú theo ch−¬ng tr×nh viÕt d¹ng Script file hay function mμ trong cöa sæ ta cã 2 c¸ch gäi nh− sau: • §èi víi ch−¬ng tr×nh viÕt d¹ng Script file >> tªn_file ; VÝ dô gi¶i ph−¬ng tr×nh bËc hai t×m nghiÖm x1 vμ x2 viÕt trong M-file d¹ng Scriptfile: a=1; b=-2; c=1; delta=b^2-4*a*c; x1=(-b+sqrt(delta))/(4*a) x2=(-b-sqrt(delta))/(4*a) % l−u vμo file GPTB2.m Thùc thi ch−¬ng tr×nh trªn trong cöa sæ CommandWindow b»ng lÖnh >>GPTB2 • §èi víi ch−¬ng tr×nh viÕt d¹ng function ,cã tham sè ®Çu vμo vμ ra,ta ph¶i truyÒn ®ñ c¸c tham sè cÇn thiÕt. VÝ dô : Gi¶i ph−¬ng tr×nh bËc hai víi ba tham sè ®Çu vμo lμ c¸c hÖ sè a , b, c vμ hai biÕn ®Çu ra lμ nghiÖm cña ph−¬ng tr×nh x1 vμ x2 (Xem c¸ch viÕt hμm function ë môc sau) function [x1, x2] =GPTB2(a,b,c) x1=(-b+sqrt(delta))/(4*a); %Tinh nghiem x1 Thùc hiÖn bμi 2(to¸n trªnb trong Command window nh− sau: >>a= 1; >>b=-2; >>c=1; >>[x1,x2]=GPTB2 (a,b,c) % cÊu tróc chung lμ [x1,x2]=Tªn_file (a,b,c) ( hoÆc [x1,x2]=GPTB2(1,-2,1) ) Trang 9
  43. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 L−u ý r»ng khi viÕt ch−¬ng tr×nh trong M-file, b¹n muèn ghi chó thÝch ta dïng ký tù % ®Æt tr−íc dßng chó thÝch nh− sau % dßng chó thÝch VÝ dô 2 %ViÕt trong M-file(d¹ng Script file) x=0:0.1:10 ; %T¹o vector x y=cos(x); plot(x,y); % VÏ ®å thÞ hμm cosin %l−u vμo file cã tªn lμ dai1.m Thùc thi hμm trªn cöa sæ commandwindow b»ng lÖnh >> dai1 ViÕt ch−¬ng tr×nh trong M-file ®−îc dïng lμ chñ yÕu ,®Æc biÖt ®èi víi nh÷ng ch−¬ng tr×nh dμi , phøc t¹p th× b¹n nªn viÕt trong M-file. 1.4 Dßng nh¾c g¸n gi¸ trÞ biªn §èi víi b¹n ®· häc lËp tr×nh Pascal, b¹n muèn nhËp gi¸ trÞ khi thùc thi ch−¬ng tr×nh b¹n dïng cÆp lÖnh: writeln( 'NhËp gi¸ trÞ cña a='); readln(a); Nh−ng ®èi víi MATLAB th× b¹n sÏ thÊy rÊt ®¬n gi¶n chØ dïng mét lÖnh duy nhÊt ®ã lμ : a=input(‘Nhap gia tri cua a=’); VÝ dô: Trong cöa sæ Commandwindow ta gâ lÖnh >> a =input(‘nhap a=’); NhÊn Enter cho kÕt qu¶ d−íi d¹ng nhap a= 3; ®ång nghÜa víi viÖc g¸n a=3. Sö dông dßng nh¾c g¸n gi¸ trÞ biªn trong tr−êng hîp ta muèn thay ®æi gi¸ trÞ c¸c biÕn lóc thùc thi ch−¬ng tr×nh. VÝ dô : sö dông dßng nh¾c g¸n gi¸ trÞ biªn ®Ó gi¶i ph−¬ng tr×nh bËc hai % Ch−¬ng tr×nh viÕt trong M-file, b¹n cã thÓ viÕt trong CommandWindow a=input(‘nhap he so a=’); b=input(‘nhap he so b=’); c=input(‘nhap he so c-=’); Delta=b^2-4*a*c; x1=(-b+ sqrt(Delta))/(4*a) Trang 10
  44. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1.5 C¸ch t¹o mét hμm function Tr−íc hÕt ta thèng nhÊt r»ng, ®Ó t¹o mét hμm function ta ph¶i so¹n th¶o nã trong M- file. CÊu tróc hμm nh− sau: %Khai b¸o hμm cã tõ kho¸ function function[danh s¸ch tªn kÕt qu¶]= Tªn_hμm(danh s¸ch c¸c biÕn ®Çu vμo) % Th©n ch−¬ng tr×nh c©u lÖnh 1; c©u lÖnh 2; c©u lÖnh 3; c©u lÖnh n; %kÕt thóc ch−¬ng tr×nh khi kÕt thóc c©u lÖnh Chó ý: • Danh s¸ch tªn kÕt qu¶, vμ tham sè ®Çu vμo ®−îc c¸ch nhau b»ng dÊu phÈy. VÝ dô : function[x1,x2,x3]=dai2(a,b,c,d) • Th©n ch−¬ng tr×nh kh«ng b¾t ®Çu b»ng tõ kho¸ Begin vμ kh«ng kÕt thóc b»ng tõ kho¸ End nh− Ng«n ng÷ lËp tr×nh Pascal. • Ta nªn l−u vμo file cã tªn trïng víi tªn hμm VÝ dô: Cho s¬ ®å khèi cña hÖ thèng ®iÒu khiÓn tù ®éng nh− h×nh d−íi ®©y num num u 2 1 y den2 den1 (- NhiÖm vô: TÝnh hμm truyÒn kÝn cña hÖ thèng Ch−¬ng tr×nh cã thÓ ®−îc viÕt nh− sau: function[numk, denk]=ham_truyen(num1, den1, num2, den2) numh=conv(num1, num2);% conv lμ hμm nh©n, hμm nμy ®−îc ®Þnh nghÜa s½n denh=conv(den1,den2); numk=numh; m=length(denh)- length(numh); numh1=[zeros(:,m), numh]; denk= numh1+denh; %kÕt thóc ch−¬ng tr×nh t¹i ®©y b¹n nªn l−u vμo file cã tªn lμ ham_truyen. Thùc thi hμm: Trang 11
  45. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >> num1=[1 1]; >>den1=[1 2 1]; >>num2=[1 2]; >>den2=[1 2 1 4]; >>[numk,denk]=ham_truyen(num1,den1,num2,den2); 1.6 Sö dông hμm cã s½n Cã rÊt nhiÒu hμm cã s½n, ®ã lμ c¸c hμm ®· ®−îc lËp tr×nh s½n,vμ ®−îc ®−a vμo th− viÖn, ®Ó xem mét hμm còng nh− cÊu tróc, c¸ch sö dông ta dïng lÖnh >>help tªn_hμm VÝ dô Ta muèn xem cÊu tróc hμm ode23 >>help ode23 1.7 VÏ c¸c hμm Dïng lÖnh fplot ®Ó vÏ c¸c hμm, hμm nμy cã thÓ cã s½n(vÝ dô nh− sin, cos . . .), hoÆc c¸c hμm t¹o bëi ng−êi dïng viÕt trong M-file d¹ng function CÊu tróc: fplot(Tªn_hμm,[Xmin ,Xmax] ,tol,N,LineSpec);hoÆc L−u ý:§èi víi c¸c hμm to¸n häc cã s½n(kh«ng ph¶i ®Þnh nghÜa) vÝ dô nh− sin, cos , th× cã thÓ thùc hiÖn nh− sau: + fplot(‘sin(x)’,2*pi*[-1 1] ) %vÏ y=sin(x) víi x=[-2*pi 2*pi]; + fplot([sin(x),tan(x),cos(x)]’, 2*pi*[-1 1] ); %vÏ ba ®å thÞ trªn cïng mét cöa sæ víi x=[-2*pi 2*pi] ; • Dïng hμm inline vÝ dô : f=inline(‘x+2’); fplot(f,[0 2] ); • §èi víi c¸c hμm trong M-file cã thÓ sö dông c¸c c¸ch sau VÝ dô: TÝnh f1, f2, f3 function [f1,f2,f3]= FUNC(x) f1= x+3; f2=x; f3=x.^2; %l−u vμo file FUNC.m Hμm FUNC sÏ tr¶ vÒ mét vector hμng øng víi mçi gi¸ trÞ cña x, vÝ dô x=[x1;x2] th× hμm FUNC sÏ tr¶ vÒ ma trËn sau ®©y. f1(x1) ,f2(x1), f3(x1) f1(x2) ,f2(x2), f3(x2) Lîi dông ®Æc ®iÓm nμy ta cã thÓ vÏ nhiÒu ®å thÞ trªn cïng mét cöa sæ th«ng qua vÝ dô sau: Trang 12
  46. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 %T¹o hμm Y function Y=myfun(x) Y(:,1)=200*sin(x(:))./(x(:); Y(:,2)=x(:).^2; %l−u vμo file cã tªn lμ Thùc thi ch−¬ng tr×nh trªn trong Commandwindow >>fplot( ‘myfun’,[-20 20] ); (hoÆc dïng >>fplot(@myfun ,[-20 20] ) C¸c th«ng sè tol, N , LineSpec lÇn lùot lμ sai sè liªn quan(t−¬ng ®èi), sè ®iÓm Ýt nhÊt, biÓu diÔn thuéc tÝnh cña ®−êng. Chó ý:Khi b¹n muèn h¹n chÕ kho¶ng biÓu diÔn c¶ trôc x vμ y th× dïng [Xmin Xmax Ymin Ymax] . 1.8 L−u vμ lÊy d÷ liÖu Víi Matlab khi tho¸t khái ch−¬ng tr×nh(t¾t),c¸c biÕn d÷ liÖu(trongWorkspace) sÏ bÞ mÊt,do vËy khi thùc hiÖn l¹i ch−¬ng tr×nh b¹n ph¶i khai b¸o l¹i c¸c biÕn cÇn thiÕt trªn, ®iÒu nμy g©y mÊt thêi gian, vμ biÖn ph¸p tèt lμ b¹n l−u tÊt c¶ c¸c biÕn cÇn thiÕt cho ch−¬ng tr×nh cña b¹n vμo file riªng, vμ khi cÇn chóng ta gäi chóng ra b»ng mét lÖnh L−u d÷ liÖu cã thÓ lμ : • L−u tÊt c¶ c¸c biÕn trong vïng lμm viÖc( Workspace) hoÆc • Mét sè biÕn nhÊt ®Þnh tuú theo nhu cÇu . Sau ®©y lμ c¸c c¸ch l−u c¸c biÕn d÷ liÖu: 1.8.1 L−u vμ lÊy d÷ liÖu d−íi file nhi ph©n(binary) L−u d÷ liÖu: >>save('C:\matlabR12\work\ten_file') %l−u toμn bé biÕn trong Workspace >>save('C:\matlabR12\work\ten_file', 'x','y')% chØ l−u biÕn x vμ y Chó ý: C:\matlabR12\work\ten_file lμ ®−êng dÉn tíi file, th«ng th−êng khi cμi ®Æt ch−¬ng tr×nh th× mÆc ®Þnh lμ cμi vμo æ C (nÕu b¹n cμi vμo æ D, khi sö dông lÖnh save, b¹n chØ cÇn thay ®æi thμnh :D:\matlabR12\work\ten_file) VÝ dô: %ViÕt trong Command Window >>a=1; >>b=1; >>c=-2; >> ('C \ tl bR12\ k\Bi ' ' ' ' ') Kh«i phôc l¹i d÷ liÖu dïng lÖnh sau: load ('C:\matlabR12\work\ten_file') % lÊy d÷ liÖu Trang 13
  47. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 VÝ dô: B©y giê ta xo¸ hai biÕn a vμ b ra khái ch−¬ng tr×nh vμ thùc hiÖn lÖnh load ®Ó lÊy l¹i d÷ liÖu: >>clear a ; %xo¸ biÕn a >>clear b ; %xo¸ biÕn b >> load ('C:\matlabR12\work\ten_file') >>a %kiÓm tra xem a ®· kh«i phôc l¹i ch−a 1.8.2 L−u vμ lÊy d÷ liÖu d−íi file ASCII >>save('C:\matlabR12\work\ten_file','-ASCII'). L−u toμn bé biÕn trong workspace vμo file >>save('C:\matlabR12\work\ten_file','x','y','-ASCII'). L−u hai biÕn x vμ y vμo file >>load ('C:\matlabR12\work\ten_file', '-ASCII '). khi thùc hiÖn lÖnh nμy th× trong Workspace sÏ xuÊt hiÖn biÕn cã tªn lμ tªn cña file , kÝch ®óp chuét lªn biÕn nμy sÏ xuÊt hiÖn d÷ liÖu cña toμn bé biÕn ®−îc l−u gi÷, viÖc truy nhËp ®Õn biÕn l−u gi÷ th«ng qua viÖc truy nhËp kiÓu MatrËn VÝ dô Command window >>a=2; >>b=3; >>c=4; >>save('C:\matlabR12\work\ save')%l−u 3 biÕn trong file tªn save >> load('C:\matlabR12\work\ save')%kh«i phôc d÷ liÖu hoÆc >> save('C:\matlabR12\work\ save', 'a','b')%l−u hai biÕn a vμ b trong file %tªn save T−¬ng tù: >>a=3; >>b=4; >>save('C:\matlabR12\work\save','a','b','-ASCII') >>load('C:\matlabR12\work\save','-ASCII') %kh«i phôc d÷ liÖu Trang 14
  48. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trong workspace sÏ cã biÕn save nh− sau: KÝch ®óp vμo save sÏ xuÊt hiÖn d÷ liÖu cña hai biÕn a vμ b HoÆc ®¬n gi¶n ®Ó l−u biÕn b¹n cã thÓ chän biÕn råi kÝch vμo nót save trong cöa sæ Workspace 1.9 C¸c to¸n tö logic vμ c¸c lÖnh ®iÒu kiÖn 1.9.1 C¸c to¸n tö quan hÖ Mét biÓu thøc logic trong MATLAB cã ®−îc tõ sù so s¸nh c¸c ®¹i l−îng kh¸c nhau(vÝ dô hai ®¹i l−îng A vμ B). Nh÷ng ký hiÖu thÓ hiÖn sù so s¸nh ®−îc gäi lμ c¸c to¸n tö quan hÖ , sau ®©y lμ liÖt kª c¸c to¸n tö B¶ng liÖt kª c¸c to¸n tö quan hÖ To¸n tö quan hÖ ý nghÜa Lín h¬n vd A>B = Lín h¬n hoÆc b»ng A>=B == B»ng vd A==B ~= Kh«ng b»ng vd A~=B C¸c to¸n tö quan hÖ thùc hiÖn viÖc sã s¸nh tõng phÇn tö cña m¶ng, chóng tr¶ l¹i mét m¶ng cã cïng kÝch th−íc víi hai m¶ng trªn( hai m¶ng ban ®Çu ph¶i cã cïng kÝch th−íc nÕu kh«ng sÏ g©y ra lçi),víi c¸c phÇn tö trong m¶ng lμ 0 hoÆc 1 t−¬ng øng víi c¸c quan hÖ so s¸nh lμ sai hay ®óng Tr−êng hîp ®Æc biÖt so s¸nh hai sè phøc: + Khi dïng c¸c to¸n tö quan hÖ lμ th× chØ so s¸nh phÇn thùc cña nã mμ th«i . + Khi dïng c¸c to¸n tö quan hÖ = th× so s¸nh c¶ phÇn thùc lÉn phÇn ¶o Khi so s¸nh hai chuçi . Trang 15
  49. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Dïng to¸n tö strcmp CÊu tróc: strcmp( chuçi1, chuçi2) VÝ dô : >>Chuoi1= ‘Pham Duc Dai’; >>Chuoi2=’Vu van van’; >>ss=strcmp(Chuoi1, Chuoi2); ss=0 Chó ý : Khi so s¸nh mét sè v« h−ãng víi mét ma trËn th× sè ®ã ®−îc nh©n víi mét m tr¹n ones(size(ma trËn so s¸nh)) sao cho nã cã kÝch th−íc gièng víi ma trËn cÇn so s¸nh råi míi so s¸nh . VÝ dô: X=5; X>=[1 2 3 ; 4 5 6; 7 8 9] Ù X=5*ones(3,3); X>[1 2 3 ; 4 5 6; 7 8 9] KÕt qu¶ tr¶ vÒ : ans= 1 1 1 1 1 0 0 0 0 >>X=5; >>X >=[1 2 3 ; 4 5 6; 7 8 9] ans 1 1 1 1 1 0 1.9.2 C¸c to¸n tö logic (Logical Operator & | ~) CÊu tróc: To¸n tö logic ý nghÜa & Vμ vd A&B | HoÆc vd A|B ~ §¶o vd ~A C¸c ký hiÖu & , | ,~ lμ c¸c to¸n tö logic vμ hoÆc ®¶o. Chóng thùc hiÖn trªn tõng phÇn tö cña cña c¸c m¶ng so s¸nh( to¸n tö logic cho phÐp thùc hiÖn trªn nhiÒu m¶ng víi yªu cÇu lμ c¸c m¶ng ph¶i cã cïng kÝch th−íc), kÕt qu¶ tr¶ vÒ lμ mét ma trËn cã cïng kÝch th−íc Trang 16
  50. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 víi c¸c ma tr¹n so s¸nh trªn. C¸c to¸n tö logic th−êng dïng ®Ó liªn kÕt c¸c biÓu thøc quan hÖ. B¶ng ch©n lý: §Çu vμo And Or Xor Not A B A&B A|B xor(A,B) ~A 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 Møc −u tiªn cao nhÊt ®èi víi to¸n tö logic ®¶o( not ,~) , hai to¸n tö and vμ | cã cïng møc −u tiªn , trong mét biÓu thøc to¸n häc th× chóng ®−îc thùc hiÖn theo thø tù tõ tr¸i sang ph¶i. Ta cã thÓ sö dông c¸c to¸n tö ‘and’ , ‘or’ ,’not’ ⇔ & , | , ~ nh− b¶ng sau: A&B and(A,B) A|B or(A,B) ~A not(A) Chó ý trong c¸c biÓu thøc sö dông c¸c to¸n tö locgic th× ta nªn dïng dÊu ngoÆc ®Ó x¸c ®Þnh râ rμng ,vμ ®¶m b¶o tÝnh t−¬ng thÝch trong c¸c phiªn b¶n míi cña Matlab Tæng kÕt: • C¸c phÐp tÝnh sè häc sÏ ®−îc thùc hiÖn tr−íc khi thùc hiÖn c¸c biÓu thøc logic. • Khi tÝnh to¸n ta nªn thªm dÊu ngoÆc ®¬n ®Ó lμm biÓu thøc trë nªn s¸ng sña h¬n. • GÆp nh÷ng biÓu thøc phøc t¹p sÏ sö lý c¸c tÝnh to¸n sè häc tr−íc, sau ®ã c¸c to¸n tö logic ®−îc xem xÐt tõ tr¸i qua ph¶i . 1.10 C¸c c©u lÖnh ®iÒu kiÖn, rÏ nh¸nh 1.10.1 C©u lÖnh ®iÒu kiÖn if. CÊu tróc % §©y lμ cÊu tróc ®¬n gi¶n nhÊt. if expression Statements; end; % CÊu tróc sö dông lÖnh elseif ,else vμ if ®−îc viÕt liÒn if expression1 Statements; elseif expression2 Statement; else Trang 17
  51. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Statements; end BiÓu thøc expression bao gåm c¸c to¸n tö quan hÖ vÝ dô nh− (count 0 ), Ngoμi ra nã cßn kÕt hîp víi c¸c to¸n tö logic ®Ó liªn kÕt c¸c biÓu thøc quan hÖ. VÝ dô 1: if (count 0) VÝ dô 2: Cho kho¶ng [a b], viÕt ch−¬ng tr×nh chia kho¶ng nμy thμnh n kho¶ng b»ng nhau víi n cho tr−íc. function v= lnearspace(a,b,n) if n > v=Soan1(5 1 5) VÝ dô 3: Ch−¬ng tr×nh x¸c ®Þnh dÊu cña sè nhËp vμo : function s= sign(x) if x>0 s=1; % so duong elseif x<0 s=-1; % so am else s=0; % so =0 Nguyªn t¾c lμm viÖc cña lÖnh if nh− sau :Khi biÓu thøc expression ®óng th× c©u lÖnh ngay sau lÖnh if ®−îc thùc hiÖn nÕu sai c©u lÖnh ®ã sÏ ®−îc bá qua ®Õn lÖnh elseif Mét biÓu thøc sã s¸nh lμ ®óng nÕu tÊt c¶ c¸c phÇn tö so s¸nh cña hai m¶ng (hoÆc hai ma trËn) tr¶ vÒ gÝa trÞ 1 VÝ dô: A=[ 1 0; 2 3]; B=[1 1; 3 4]; Th× : + A<B lμ sai v× A(1,1) kh«ng nhá h¬n B(1,1); + A<(B+1) lμ ®óng bëi v× kh«ng phÇn tö nμo trong A lín h¬n phÇn tö trong B t−¬ng øng Trang 18
  52. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 % CÊu tróc khi sö dông lÖnh else if if expression1 statements1; else if expression2 statements2; end end Ta thÊy trong cÊu tróc trªn th× cã hai lÖnh if riªng biÖt cho nªn ph¶i cã hai tõ kÕt thóc lμ end. Bμi tËp vÝ dô: NhËp vμo bμn phÝm ®iÓm cña mét häc sinh råi in ra ®¸nh gi¸ : Diem= input(‘nhap diem vao=’); if ( Diem =5)&(Diem =7)&(Diem<8) fprintf(‘Hoc luc kh¸’); else fprintf(‘Hoc luc gioi’); end; 1.10.2 Vßng lÆp for CÊu tróc: for i= imin :Δi: imax statements; end Δi : Lμ b−íc nh¶y cña vßng lÆp for, gi¸ trÞ mÆc ®Þnh lμ =1; VÝ dô: TÝnh tæng s= 1+2^p +3^p+ n^p ; ( p lμ sè mò ) function s= Sump(n , p) s=0; for i=1:n ; s=s+i^p ;end; Trang 19
  53. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Hai ch−¬ng tr×nh sau ®©y lμ gièng nhau for i=1:100; x=1:100; y(i)=sin(i); ⇔ y=sin(x); end; 1.10.3 Vßng lÆp while CÊu tróc: while( bieu_thuc_logic) statements; end; Tr−íc hÕt vßng lÆp kiÓm tra xem nÕu biÓu thøc logic ®óng th× thùc hiÖn c¸c c©u lÖnh statements. n=input(‘Nhap n=’); VÝ dô: s=0; i=0; while( i 0 break; %Thoat khoi vongwhile chinh end end 1.10.5 LÖnh error vμ lÖnh return - LÖnh error: Dïng ®Ó th«ng b¸o lçi , hiÓn thÞ cho ng−êi lËp tr×nh biÕt ®ã lμ lçi g× ? VÝ dô: error(‘error message’); hiÓn thÞ th«ng ®iÖp lçi khi thùc hiÖn c©u lÖnh nμy. a=input(‘Nhap a=’); b=input(‘Nhap b=’); % Thuc hien a: b if b==0 error(‘divide by zeros’); Trang 20
  54. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Khi thùc thi ch−¬ng tr×nh trªn ( nhËp b=0) th× xuÊt hiÖn dßng ch÷ ®á Nh− sau: ??? Error using ==> soan1 divide by zeros Chó ý r»ng soan1 lμ tªn file l−u ch−¬ng tr×nh trªn - LÖnh return: Th−êng ®−îc sö dông trong c¸c hμm cña MATLAB. LÖnh return sÏ cho phÐp quay trë vÒ thùc thi nh÷ng lÖnh n»m trong t¸c dông cña lÖnh return. 1.10.6 BiÕn toμn côc BiÕn toμn côc ®−îc dïng trong ph¹m vi toμn bé c¸c ch−¬ng tr×nh, nÕu c¸c ch−¬ng tr×nh ®ã khai b¸o biÕn toμn côc ®ã. CÊu tróc: global x y z % khai b¸o ba biÕn toμn côc x y z VÝ dô ®¬n gi¶n sau: function[ u,v]=Main(x,y) global a b; Tinhham(x,y,z); u=a;v=b; %Ch−¬ng tr×nh con tÝnh hμm function Tinhham(x,y,z) global a b; a=x^2 +y^2+ z^2; b=x^3 +y^3+ ^ Thùc thi ch−¬ng tr×nh: >> x=2,y=3,z=4; >> [u,v]=Main(x,y,z); 1.10.6 §Þnh d¹ng d÷ liÖu ra C¸c phÐp tÝnh trong MATLAB ®−îc thùc hiÖn víi ®é chÝnh x¸c cao, ta cã thÓ ®Þnh d¹ng cho c¸c sè xuÊt ra mμn h×nh tuú tõng yªu cÇu cô thÓ: VÝ dô sè a= 4/3 víi • format short (®©y lμ chÕ ®é mÆc ®Þnh gåm 4 sè sau dÊu phÈy) a=1.3333 • format short e a= 1.3333e+00 Trang 21
  55. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • format long a=1.3333333333333 • format lang e a=1.3333333333333e+000 Ngoμi c¸ch nμy ra ta ®Þnh d¹ng d÷ liÖu b»ng thanh tool c«ng cô trªn mμn h×nh VÝ dô: Gâ c¸c lÖnh sau trong cöa sæ CommandWindow >>format long >>a=4/3 a= 1.3333333333333 1.10.7 Mét sè hμm to¸n häc th«ng th−êng hay sö dông Tªn hμm ý nghÜa Sin Hμm sin Cos Hμm cos Tan Hμm tan Asin Hμm acsin Acos Hμm accos Atan Hμm tÝnh arctg Angle LÊy gãc pha Fix Lμm trßn h−íng 0 Floor Lμm trßn h−êng -∞ Exp Hμm e mò Ceil Lμm trßn h−íng -∞ Log Logarit c¬ sè e log10 Logarit c¬ sè 10 sqrt(x) C¨n bËc hai 1.11 C¸c h»ng sè ®−îc sö dông trong Matlab • Ký tù inf thay thÕ cho ∞ trong to¸n häc Inf : lμ sè v« cïng lín mμ Matlab kh«ng thÓ hiÖn ®−îc vÝ dô: >> 5/0 ans = inf • Ký tù NaN thay thÕ cho mét sè kh«ng x¸c ®Þnh Trang 22
  56. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 vÝ dô: >> 0/0 ans= NaN • Ký tù pi thÓ hiÖn lμ sè π =3.14159 • Ký tù eps 1.12 Sè phøc trong Matlab Sö dông i vμ j ®Ó thÓ hiÖn phÇn ¶o víi i= j= sqrt(-1) VÝ dô: >> 5+6i ans = 5.0000 + 6.0000i >> 5+6j ans = 5.0000 + 6.0000i Chó ý khi lμm víi sè phøc cÇn ph©n biÖt : y= 7/2*i vμ x= 7/2i cho hai kÕt qu¶ kh¸c nhau >> y= 7/2*i y = 3.5*i >> x=7/2i x= -3.5i VÝ dô c¸c phÐp tÝnh vÒ sè phøc: >> s=3+7i >>w=5-9i >>w+s >>w-s >>w*s >>w/s 1.13 C¸c lÖnh tho¸t khái ch−¬ng tr×nh,liÖt kª c¸c biÕn, xo¸ biÕn . • LÖnh exit : T¸c dông tho¸t khái ch−¬ng tr×nh . • LÖnh clc (clear command) xo¸ tÊt c¶ c¸c lÖnh trong cöa sæ CommandWindow • LÖnh clear xo¸ toμn bé c¸c biÕn trong bé nhí hiÖn thêi . • LÖnh clear Xo¸ danh s¸ch biÕn ®−îc liÖt kª ra. • LÖnh whos cho biÕt tÊt c¶ c¸c biÕn hiÖn thêi, kÝch th−íc « nhí biÕn ®ã. Trang 23
  57. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 • LÖnh quit còng gièng nh− lÖnh exit • C¸c phÝm mòi tªn lªn xuèng (trªn bμn phÝm) ®−îc dïng ®Ó gäi l¹i c¸c lÖnh ®· thùc hiÖn tr−íc ®ã. C©u hái& Bμi tËp cuèi ch−¬ng Nªu ®Æc ®iÓm cña c¸c cöa sæ ( CommandWindow, history .) 1. Sö dông LÖnh trùc tiÕp tõ cöa sæ command window vμ gi¸n tiÕp tõ c¸c file 2. C¸c c©u lÖnh ®iÒu kiÖn , vßng lÆp 3. L−u vμ lÊy d÷ liÖu cho mét hoÆc nhiÒu biÕn. Bμi tËp1 : Gi¶i hÖ ph−¬ng tr×nh bËc nhÊt dïng dßng nh¾c g¸n gi¸ trÞ biªn nhËp c¸c hÖ sè a,b,c,d,m,n hÖ cho nh− sau: ax +by=m cx+dy=n Bμi tËp 2: Sinh viªn vÏ c¸c hμm sau a. VÏ ®Æc tÝnh ®iode víi quan hÖ dßng ®iÖn vμ ®iÖn ¸p trªn ®iode nh− sau i=I0*(exp(40*v)-1)(A); I0=1.E-6; vector v=[-10:0.005:0.8] . Sinh viªn thùc hiÖn theo hai c¸ch viÕt trùc tiÕp trong CommadWindow vμ viÕt hμm trong M-file. b. VÏ c¸c hμm c¬ b¶n sin(x) ,cos(x) ,tan(x) dïng lÖnh fplot . c. VÏ hμm y= sin(x)/x , y=x, y=sin(x) trªn cïng mét ®å thÞ . Bμi tËp3 : L−u tÊt c¶ c¸c biÕn b¹n ®· dïng trong qu¸ tr×nh thùc hμnh vμo file riªng cña m×nh, ®Ó lÇn sau lÊy ra dïng l¹i. Bμi 4:LËp ch−¬ng tr×nh d¹ng hμm function ®Ó gi¶i ph−¬ng tr×nh bËc hai Bμi 5:LËp hμm tÝnh hμm truyÒn kÝn c¸c s¬ ®å hÖ thèng ®iÒu khiÓn trong s¸ch lý thuyÕt ®iÒu khiÓn tù ®éng Bμi 5:LËp hμm function [Q, R]=divide (a,b) t×m th−¬ng vμ sè chia hai sè a vμ b Trang 24
  58. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Chương 2 Thư viện toán học kiểu ký tự (symbolic matlab) 2.1 Giới thiệu về thư viện toán học kiểu ký tự Symbolic matlab là thư viện các phép toán kiểu ký tự được đưa vào môi trường tính số học của matlab , thư viện này làm phong phú và tiện ích thêm với nhiều kiểu tính toán về toán học khác cho phần tính số học và đồ hoạ đã có trước đây trong thư viện Matlab. 2.2 Các lệnh cơ bản khai báo biến symbolic 2.2.1 Lệnh syms và lệnh sym + Nhiệm vụ tạo đối tượng (bao gồm cả biến) symbolic Cấu trúc: syms arg1 arg2 syms arg1 arg2 real syms arg1 arg2 unreal Mô tả Khai báo các biến arg1 , arg2 là các biến symbolic có hai cách khai báo dùng lệnh syms hoặc lệnh sym như sau: syms arg1 arg2 Khai báo các thông số arg1, arg2 là các biến symbolic , ta có thể khai báo như sau arg1 = sym('arg1'); arg2 = sym('arg2'); Tương tự : syms arg1 arg2 real là ký hiệu ngắn gọn cho arg1 = sym('arg1','real'); arg2 = sym('arg2','real'); Các biến khai báo như trên là các biến thực kiểu symbolic .Vậy thì các biến này khác gì các biến khai báo không có đặc tính real? Ta phân biệt như sau: Đối với một biến thực symbolic thì nó có các tính chất của số thực ví dụ như (arg)2>0 (khi khai báo là syms arg real) còn khi bạn khai báo là syms arg thì các biến này chỉ đơn thuần là biến symbolic không có các tính chất của số thực tức là (arg)2 sẽ không có dấu ,mà chỉ coi là các ký tự symbolic mà thôi Trang 1
  59. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Tiếp tục syms arg1 arg2 unreal là ký hiệu ngắn gọn cho arg1 = sym('arg1','unreal'); arg2 = sym('arg2','unreal'); Ví dụ: syms x beta real giống như việc khai báo x = sym('x','real'); beta = sym('beta','real'); Để xoá đối tượng symbolic x và beta khỏi (trạng thái) 'real' ta làm như sau syms x beta unreal Chú ý : clear x sẽ không xoá đối tượng symbolic x khỏi trạng thái 'real'. Bạn có thể thực hiện được điều trên(tức là xoá x khỏi trạng thái số thực) bằng cách sử dụng các lệnh syms x unreal or clear mex or clear all. 2.2.2.Lệnh sym Tạo một số, một biến và một đối tượng symbolic Cấu trúc như sau S = sym(A) x = sym('x') x = sym('x','real') x = sym('x','unreal') S = sym(A,flag) where flag is one of 'r', 'd', 'e', or 'f'. Mô tả: S = sym(A) Tạo một đối tượng S của lớp 'sym' từ A.Nếu thông số đầu vào là một chuỗi , kết quả là một số ,một biến symbolic.Nếu thông số đầu vào là một số vô hướng hay một matrận, kết quả là một thể hiện của các số đã cho dưới dạng symbolic x = sym('x') Tạo biến symbolic với tên là x chứa kết quả trong x x = sym('x','real') cho rằng x là thực cho nên conj(x) bằng với x(có thể coi đây là phương pháp kiểm tra số thực ) Ví dụ: x = sym('x','unreal') làm cho biến x(trong sạch) và không có đặc tính nào thêm(đảm bảo rằng x không phải là biến thực) Ví dụ + pi= sym('pi') kết quả cho lại giá trị số pi (đầu vào là một chuỗi) + Lệnh pi = sym('pi') và delta = sym('1/10') Kết quả delta= 1/10 ; Trang 2
  60. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Cấu trúc sau cho phép chuyển đổi số symbolic sang các dạng số thực và các dạng số khác tuỳ thuộc vào flag là ' r ' , ' d ' ,' e ' hoặc ' f ' S = sym(A,flag) ở đó flag là một trong 'r', 'd', 'e', or 'f'. Ví dụ : Tạo ma trận symbolic A A=[ 1 2 3 ; 4 5 6]; >>A=[ 1 2 3; 4 5 6]; >>A=sym(A) Kết quả trả về ma trận A= [ 1 2 3] [ 4 4 6] Ví dụ: Tạo biến symbolic x ,y, z >> syms x y z ;% hoặc sym('x' ) hoặc sym('y') . . . >> f= x^2 + y^2 +z^2; Ví dụ Tạo số symbolic a= 5 >> a= sym('5') a = 5 Thông thường hiệu quả của việc sử dụng lệnh sym là để chuyển đổi một ma trận từ số sang dạng phom symbolic .Lệnh A = hilb(3) Tạo ma trận Hilbert A = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 áp dụng sym cho A A = sym(A) Bạn có thể đạt được matrận symbolic Hilbert có kích thước 3-by-3 A = [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5] Ta thấy rằng khi áp dụng lệnh symbolic cho số hoặc ma trận thì kết quả thu lại sẽ chính xác hơn 2.2.3 Phép Tính với các biến và số symbolic Các phép tính cơ bản về ma trận đều được dùng đối với các số và biến symbolic. Trang 3
  61. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ví dụ về phép cộng hai Ma trận symbolic(hoặc với một ma trận không phải là symbolic) >> syms a b c; >> a=[a b c ; b c a]; >> d=[1 2 3 ;4 5 6]; >> a+d ans = [ a+1, b+2, c+3] [ b+4, c+5, a+6] >> A=sym([1 2 3 ; 4 5 6]); >> B=sym([2 3 4 ;5 6 7]); >> A+B ans = [ 3, 5, 7] [ 9, 11, 13] Tương tự cho phép nhân và phép chia ( * / \ ./ .\) 2.3 Tạo hàm symbolic Thông thường có hai cách tạo hàm Symbolic • Tạo hàm bằng biểu thức symbolic f= f(x,y,z ) trong đó x, y z được khai báo là các biến symbolic • Tạo trong M-file • Tạo trực tiếp các hàm . 2.3.1 Tạo hàm từ các biểu thức symbolic Hàm tạo ra chứa các biến phải là biến symbolic Ví dụ tạo hàm f= 3*x^2 + 2*x + 1 ta làm như sau >> syms x % khai báo x là biến symbolic >> f= 3* x^2 + 2*x +1 % f là hàm symbolic ví dụ: syms x y z r = sqrt(x^2 + y^2 + z^2) t = atan(y/x) f = sin(x*y)/(x*y) Tạo biểu thức symbolic r và t và f . Trang 4
  62. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Chú ý Chỉ khi tạo một hàm symbolic thì Bạn mới được phép sử dụng lệnh limit ,diff, int, subs, và các hàm toán học symbolic khác 2.3.2 Tạo Hàm Symbolic từ M-file Tạo một hàm bằng cấu trúc function , trong đó đầu vào là các biến cần để thiết lập hàm , đầu ra là biến chứa hàm như vậy cách tạo hàm giống với tạo hàm thông thường ,Vì thế để Matlab hiểu rằng đây là hàm symbolic thì ta pahỉ lưu vào file có đường dẫn như sau C:\matlabR12\toolbox\symbolic\@sym\ten_ham Ví dụ tạo hàm symbolic z= sin(x)/x function z = sinc(x) %SINC The symbolic sinc function % sin(x)/x. This function % accepts a sym as the input argument. if isequal(x,sym(0)) z = 1; else z = sin(x)/x; end Ví dụ : Muốn tạo hàm symbolic f= 3*x^2 + 2*x + 1 function f= tao_ham( x) f= 3*x^2 + 2*x + 1 %Lưu vào đường dẫn C:\matlabR12\toolbox\symbolic\@sym\tao_ham % gọi hàm trong command window >> syms x >>f= tao_ham(x) f= 3*x^2 + 2*x + 1 2.3.3 Tạo hàm trực tiếp Ta có thể tạo hàm trực tiếp như sau f= 3*x^2+ 2*x+1 >> f=sym('3*x^2 + 2*x +1') Tuy nhiên tạo hàm như trên thì f là hàm symbolic, nhưng bản thân biến x lại không phải là biến symbolic Khi khai báo hàm kiểu này ,muốn sử dụng biến x ta thêm hai dấu ' x ' >> f= sym('3*x^2+ 2*x +1'); >> g=subs(f,'x','x+h') g = Trang 5
  63. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 3*(x+h)^2+ 2*(x+h) +1 >> df=(subs(f,'x','x+h')-f)/'h' df = (3*(x+h)^2+2*h-3*x^2)/h >> diff(f,'x') ans = 6*x+2 Ví dụ : Tính 6! Ta tạo hàm tính trực tiếp như sau >> f=sym('x!'); >> subs(f,'x',6) ans = 720 Ví dụ tạo hàm 1/ x! >> f=1/sym('x!'); >> subs(f,'x',n) >> subs(f,'x','n') ans = 1/(n)! 2.4 Tạo biến thực và biến phức Tạo biến phức ví dụ z= x+ i* y thì ta phải khai báo x và y là các biến symbolic thực tức là: syms x y real z = x + i*y I. Giải thích Tạo biến symbolic x và y ,các biến này có được sự công thêm các tính chất toán học của một biến thực .Cụ thể nó có ý nghĩa rằng biểu thức f = x^2 + y^2 f >=0. Cho nên, z là một biến phức conj(x)= x;conj(z)=x-i*y;expand(z*conj(z))=x^2+y^2 Để xoá x khỏi là một biến thực ,bạn phải dùng lệnh như sau syms x unreal hoặc x = sym('x','unreal') Lệnh sau clear x không làm cho x khỏi là một số thực 2.5 Lệnh findsym Trang 6
  64. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Tìm các biến trong biểu thức symbolic hoặc matrận Syntax r = findsym(S) r = findsym(S,n) Mô tả findsym(S) Trả về tất cả các biến symbolic trong S được cách nhau bởi dấu phẩy(trong in alphabetical order).Nếu S không chứa bất kỳ một biến nào findsym trả về một chuỗi rỗng findsym(S,n) trả về n biến alphabetically gần x nhất Ví dụ syms a x y z t findsym(sin(pi*t)) returns pi, t. findsym(x+i*y-j*z) returns x, y, z. findsym(a+y,1) returns y. 2.6 Tính toán Công cụ toán dọc symbolic cung cấp các hàm để thực hiện các toán tử cơ bản của phép toán Đạo hàm , giới hạn , tích phân, tổng và mở rông chuỗi Taylor. 2.5.1 Lệnh symsum Symbolic summation. Syntax r = symsum(s) r = symsum(s,v) r = symsum(s,a,b) r = symsum(s,v,a,b) Mô tả *symsum(s) là tổng của biểu thức symbolic s theo biến symbolic của nó là k được xác định bởi lệnh findsym từ 0 đến k-1 *symsum(s,v) là tổng của biểu thức symbolic theo biến symbolic v được xác định từ 0 đến v-1 *symsum(s,a,b) and symsum(s,v,a,b) Định nghĩa tổng của biểu thức symbolic theo biến v từ v=a đến v=b Ví dụ Các lệnh sau: syms k n x symsum(k^2) trả về kết quả Trang 7
  65. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1/3*k^3-1/2*k^2+1/6*k symsum(k) trả về 1/2*k^2-1/2*k symsum(sin(k*pi)/k,0,n) trả về -1/2*sin(k*(n+1))/k+1/2*sin(k)/k/(cos(k)-1)*cos(k*(n+1))- 1/2*sin(k)/k/(cos(k)-1) symsum(k^2,0,10) trả về kết quả sau 385 Ví dụ: >> syms x k; >> symsum(x^k/sym('k!'), k, 0,inf)%inf la +vo cung ans = exp(x) >> symsum(x^k/sym('k!'), k, 0,5) ans = 1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5 Chú ý : Các ví dụ trước sử dụng sym để tạo biểu thức symbolic .k! 2.5.2 Tính đạo hàm Bây giờ chúng ta tạo các biến và hàm syms a x f = sin(a*x) sau đó diff(f) Lệnh này sẽ tính đạo hàm của f với biến symbolic của nó (trong trường hợp này là x), như được định nghĩa bởi lệnh findsym ans = cos(a*x)*a Để tính đạo hàm với biến a ta làm như sau diff(f,a) Nó trả về df/da. ans = cos(a*x)*x Để tính đạo hàm bậc hao với biến x và a ta làm như sau diff(f,2) hoặc diff(f,x,2) Trang 8
  66. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trả về ans = -sin(a*x)*a^2 và diff(f,a,2) Nó trả về ans = -sin(a*x)*x^2 Định nghĩa a,b,x,n,t và theta trong Matlab workspace, sử dụng lệnh sym. Bảng sau cho thấy tác dụng của lệnh diff f diff(f) X^n x^n*n/x Sin(a*t+b) cos(a*t+b)*a Exp(i*theta) i*exp(i*theta) Example: syms a x A = [cos(a*x),sin(a*x);-sin(a*x),cos(a*x)] Nó trả lại A = [ cos(a*x), sin(a*x)] [ -sin(a*x), cos(a*x)] Lệnh diff(A) Trả về ans = [ -sin(a*x)*a, cos(a*x)*a] [ -cos(a*x)*a, -sin(a*x)*a] 2.5.3 sym2poly Biến đổi đa thức symbolic sang vec tơ hệ số đa thức của đó Cấu trúc c = sym2poly(s) Trang 9
  67. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Mô tả sym2poly trả về một vector hàng, véc tơ này chứa hệ số của đa thức symbolic. Các hệ số này được xếp theo thứ tự tương ứng với số mũ của biến độc lập của đa thức Ví Dụ Các lệnh sau đây: syms x u v; sym2poly(x^3 - 2*x - 5) Trả về 1 0 -2 -5 trong khi sym2poly(u^4 - 3 + 5*u^2) Trả về 1 0 5 0 -3 và sym2poly(sin(pi/6)*v + exp(1)*v^2) trả về 2.7183 0.5000 0 2.5.4 Tính giới hạn Limit Công cụ toán học symbolic cho phép bạn tính giới hạn của hàm theo cách thông thường .Các lệnh sau syms h n x limit( (cos(x+h) - cos(x))/h,h,0 ) Trả về kết quả ans = -sin(x) và limit( (1 + x/n)^n,n,inf ) % n tiến tới vô cùng Nó trả về kết quả ans = exp(x) Thể hiện hai trong tất cả giới hạn quan trong nhất trong toán học,đạo hàm (trong trường hợp này là cos(x)) và hàm e mũ x giới hạntồn tại khi cho biến tiến tới hai phía (đó là, kết quả là giống nhau bất kể tiến bên phải hay bên trái ).Nếu kết quả khác nhau hai phía thì đạo hàm đó không tồn tại Cho nên đạo hàm sau kết quảlà không xác định và Công cụ toán học symbolic trả về giá trị là NaN Lệnh limit(1/x,x,0) Trang 10
  68. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 hoặc limit(1/x) returns ans =NaN Lệnh limit(1/x,x,0,'left') Trả về ans = -inf Trong khi lệnh. limit(1/x,x,0,'right') Trả về: ans = inf Quan sát thấy rằng trường hợp mặc định, limit(f) giống với limit(f,x,0). Lựa chọn cho lệnh limit trong bảng trên, chúng ta giả sử rằng f là một hàm symbolic với đối tượng x II. 2.5.5 Tính Tích phân Nếu f là một biểu thức symbolic thì tích phân của hàm f là int(f) Tìm một biểu thức symbolic F thoả mãn diff(F)=f, thì F là giá trị trả về của int(f) Tương tự hàm int(f,v) int(f,v) Sử dụng đối tượng symbolic v như là biến của tích phân, Ví dụ Tạo các biến symbolic sau syms a b theta x y n x1 u F Int(f) x^n x^(n+1)/(n+1) y^(-1) Log(y) n^x 1/log(n)*n^x Sin(a*theta+b) -cos(a*theta+b)/a Exp(-x1^2) 1/2*pi^(1/2)*erf(x1) Trang 11
  69. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1/(1+u^2) Atan(u) Bảng thể hiện kết quả tích phân của một số hàm Định nghĩa tích phân còn được thể hiện như sau int(f,a,b) hoặc int(f,v,a,b) % Tính tích phân f theo biến v từ a đến b 2.6 Giải phương trình - Hệ phương trình đại số Giải phương trình-hệ phương trình dùng lệnh solve Mục đích: Giải một hoặc nhiều phương trình đại số tuyến tính symbolic Cấu trúc g = solve(eq) g = solve(eq,var) g = solve(eq1,eq2, ,eqn) g = solve(eq1,eq2, ,eqn,var1,var2, ,varn) Mô tả Eq là biểu thức đơn hoặc một phương trình.Đầu vào để giải(tìm nghiệm) có thể là biểu thức hoặc chuỗi symbolic.Nếu eq làmột biểu thức symbolic (x^2-2*x+1) hoặc một chuỗi, chuỗi này không chứa một phương trình, như ('x^2-2*x+1'), thì solve(eq) là giải phương trình eq=0 Với biến mặc định của nó được xác định bởi hàm findsym.solve(eq,var) tương đương với việc giải phương trình eq (hoặc eq=0 trong hai trường hợp ở trên) đối với biến var(giải phuơng trình với biến là var) Ví dụ : >> solve(' x^2 + 2*x +1 ' , 'x' ) tức là giải phương trình x^2+2*x+1=0 với biến là x >> solve(' y*x^2 + x *y+1 ' ,'y') Hệ phương trình. Đầu vào là các biểu thức symbolic hoặc các chuỗi xác định phương trình. solve(eq1,eq2, ,eqn) giải hệ các phương trình tạo bởi eq1,eq2, ,eqn trong n biến được xác định bằng cách áp dụng lệnh findsym cho toàn hệ (in the n variables determined by applying findsym to the system) Ba loại khác nhau của đầu ra có thể. + Đối với một phương trình và một đầu ra, kết quả (sau khi giải ) được trả về với nhiều kết quả cho phương trình tuyến tính (with multiple solutions for a nonlinear equation) Trang 12
  70. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 + Đối với hệ thống phương trình có số đầu ra cân bằng, kết quả được chứa trong alphabetically và được ký hiệu như là đầu ra.(chứa trong alphabetically tức là chứa theo thứ tự chữ cái) + Đối với hệ thống phưong trình có số đầu ra là đơn,kết quả trả về là một cấu trúc Ví dụ solve('a*x^2 + b*x + c') trả về [ 1/2/a*(-b+(b^2-4*a*c)^(1/2)), 1/2/a*(-b-(b^2-4*a*c)^(1/2))] solve('a*x^2 + b*x + c','b') trả về -(a*x^2+c)/x >> n=solve('x + y = 1','x - 11*y = 5') n = x: [1x1 sym] y: [1x1 sym] >> n.y ans =. -1/3 >> n.x ans = 4/3 >> [x, y]=solve('x + y = 1','x - 11*y = 5') kết quả: x= 4/3 y=-1/3 >>A = solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a + 6') Trả về dạng cấu trúc A = a: [1x4 sym] u: [1x4 sym] v: [1x4 sym] ở đó A.a = [ 2, 2, 3, 3] A.u = [ 1/3+1/3*i*2^(1/2), 1/3-1/3*i*2^(1/2), 1/4+1/4*i*3^(1/2), 1/4-1/4*i*3^(1/2)] Trang 13
  71. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 A.v = [ -2/3+1/3*i*2^(1/2), -2/3-1/3*i*2^(1/2), -3/4+1/4*i*3^(1/2), -3/4-1/4*i*3^(1/2)] 2.7 Biến đổi laplace 2.7.1 Biến đổi thuận Laplace Cấu trúc laplace(F) laplace(F,t) Mô tả L = laplace(F) là biến đổi laplace của F với biến độc lập mặc định là t. kết quả mặc định trả lại là hàm của s. Biến đổi laplace được áp dụng cho một hàm của biến t và trả lại một hàm của biến s Nếu F = F(s), laplace trả lại một hàm của t Bằng cách định nghĩa t là biến kiểu symbolic trong F được xác định bởi hàm findsym. L = laplace(F,t) tạo ra L,một hàmcủa t thay mặc định là hàm của s. L = laplace(F,w,z) tạo ra L,một hàm của z trong đó F,một hàm của w thay thế biến mặc định là s và t tương ứng 2.7.2 Biến đổi ngược laplace Mục đích: Biến đổi ngược laplace Cấu trúc F = ilaplace(L) F = ilaplace(L,y) F = ilaplace(L,y,x) Mô tả Trang 14
  72. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 F=ilaplace(L) là phép biến đổi ngược Laplace của đối tượng vô hướng symbolic Lvới biến độc lập là s. trả lại mặc định là một hàm của t.Biến đổi ngược laplace được áp dụng cho một hàm của s và trả về một hàm của t .Nếu L = L(t), ilaplace trả về một hàm của x. Bằng cách định nghĩa ở đó c là một số thực được chọn cho nên tất cả all singularities of L(s) are to the left of the line s = c, i. F = ilaplace(L,y) tạo ra F là một hàm của y thay vì mặc định t. y là một đối tượng symbolic vô hướng. F = ilaplace(L,y,x) F là một hàm của x và L là một hàm of y thay vì mặc định là s và t. 2.8 Vấn đề tích phân với hằng số thực Một trong những tinh tế liên quan tới đạo hàm các hàm symbolic là dấu của các biến(coi là hằng số) khi bạn bình phương biến đó .ở đây ta hiểu rằng khi bạn coi một biến nào đó trong biểu thức là biến(ví dụ biến lấy tích phân) thì các biến còn lại được coi là hằng số và Matlab sẽ không hiểu được là nó dương hay âm(coi chỉ là ký tự ). Ví dụ, biểu thức Là dương,đồ thị có hình chuông cong tiến tới 0 khi x tiến tới ± inf với mọi số thực k. Một ví dụ về đường cong được cho thấy dưới đây với được tạo ra, sử dụng những lệnh sau syms x k = sym(1/sqrt(2)); f = exp(-(k*x)^2); ezplot(f) The Maple kernel, không coi k2 hoặc x2 là các số dương.Maple cho rằng biến symbolic x và k là không xác định. Có nghĩa rằng,chúng là biến và không có thêm đặc tính toán học nào. Thông thường tính tích phân hàm trên ta làm như sau Trang 15
  73. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trong công cụ toán học symbolic , sử dụng hàm syms x k; f = exp(-(k*x)^2); int(f,x,-inf,inf) và kết quả là Definite integration: Can't determine if the integral is convergent. Need to know the sign of > k^2 Will now try indefinite integration and then take limits. Warning: Explicit integral could not be found. ans = int(exp(-k^2*x^2),x= -inf inf) Trong lời cảnh báo trên bạn chú ý thấy dòng lệnh “ Need to know the sign of > k2 “ tạm dịch là không hiểu dấu của k2. Mà hợp lý toán học là k2 phải dương do vậy bạn phải khai báo sao cho k2 >0 bằng cách > Tạo biến Real sử dụng lệnh sym Chú ý rằng Maple không thể định nghĩa dấu của biểu thức k^2. Bằng cách nào có thể vượt qua trở ngại này? Câu trả lời là tạo biến k biến thực. Sử dụng lệnh sym. syms k real int(f,x,-inf,inf) trả về ans = signum(k)/k*pi^(1/2) 2.9 Vẽ Đồ thị Dùng hàm ezplot cho các biến, số symbolic Cờu trúc: ezplot( y ,[ xo xm]): Vẽ y theo biến x thuộc khoảng [ xo xm] Ví dụ: >> syms x y; >> y= x.^2; Trang 16
  74. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >> ezplot(y,[1 10]), grid on Các bạn chú ý rằng lệnh ezplot trên dùng để vẽ trong không gian 2D ( không gian 2 chiều ) , còn để vẽ trong không gian 3D không có gì khó khăn ta dùng lệnh ezplot3 ,các bạn tự tham khảo thêm sách . Câu hỏi ôn tập 1. Những tiện ích khi sử dụng thư viện toán học symbolic là gì ?. 2. lệnh findsym có tác dụng gì ?. 3. Thứ tự ưu tiên các biến khi sử dụng biến mặc định ? . 4. Có mấy cách tạo hàm symbolic? Em hãy so sánh các cách . 5. Dấu của các biến symbolic như thế nào ? 6. Vẽ đồ thị hàm symbolic, bằng hàm vẽ thông thường plot có được không ? Bài tập 1. Tạo hàm symbolic sau Y= x2 + x + y+ z + 1; Bạn hãy nêu thứ tự ưu tiên các biến . 2. Tạo hàm symbolic sau dùng các cách tạo hàm khác nhau rồi tích đạo hàm , tích phân của nó Y= 1/( 5+ 4* cos(x) ) 3. Vẽ đồ thị hàm trên, theo hai cách thông thường và sử dụng symbolic Trang 17
  75. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ch−¬ng 3 Ma trËn vμ m¶ng trong Matlab 3.1 NhËp ma trËn trong Matlab 3.1.1 C¸c C¸ch nhËp matrËn trong Matlab Matlab cung cÊp mét vμi ph−¬ng tiÖn cho ng−êi sö dông ®Ó t¹o ra mét matrËn, mçi ph−¬ng tiÖn cã nh÷ng −u ®iÓm cña nã vμ ®−îc sö dông tuú theo tõng yªu cÇu bμi to¸n.Nãi chung Matlab cung cÊp ba ph−¬ng tiÖn. • NhËp MatrËn trùc tiÕp tõ cöa sæ command Window. • NhËp MatrËn tõ mét file( sö dông M-file hoÆc load) • NhËp matrËn tõ nh÷ng hμm cã s½n trong Matlab. a. NhËp MatrËn trùc tiÕp tõ cöa sæ command Window Trong m«n häc to¸n cao cÊp chóng ta ®· biÕt nhËp mét matrËn nh− sau 1 2 3 A= 4 5 6 7 8 9 §©y lμ mét ma trËn cã sè hμng m = 3 vμ sè cét n= 3 §Ó nhËp matrËn trªn trong Matlab ta nhËp trùc tiÕp nh− sau Tõ dßng nh¾c lÖnh trong cöa sæ command Window >> ta nhËp >> A=[ 1,2,3 ; 4 5 ,6;7 8 9]; hoÆc >>A=[ 1 2 3 4 5 6 7 8 9]; C¸c hμng ®−îc c¸ch nhau b»ng mét dÊu chÊm phÈy (;) nh− trªn,c¸c phÇn tö trong mét hμng ®−îc c¸ch nhau b»ng dÊu c¸ch(thanh space) hoÆc dÊu phÈy(,) . KÕt thóc dßng lÖnh cã hoÆc kh«ng cã dÊu ; NÕu kh«ng cã dÊu chÊm phÈy ë cuèi dßng th× Matlab sÏ in ra kÕt qu¶ matrËn võa nhËp Nh− vÝ dô trªn: >> A=[ 1,2,3 ; 4 5 ,6;7 8 9] nhÊn Enter sÏ cho kÕt qu¶ lμ A= 1 2 3 4 5 6 Trong tr−êng hîp sè phÇn tö trªn mét hμng qu¸ dμi ta cã thÓ xuèng dßng b»ng dÊu ba chÊm VÝ dô >> b=[1,2,3,4, 5 6 7 8 9] % ®©y matrËn 9 hμng vμ mét cét Trang 1
  76. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 L−u ý r»ng trong mét sè tr−êng hîp matrËn hoÆc m¶ng d÷ liÖu dμi th× viÖc kh«ng thªm dÊu chÊm phÈy sau c©u lÖnh nhËp, Matlab sÏ in ra sè liÖu dμi trong cöa sæ command Window, g©y khã nh×n cho ng−êi dïng b. NhËp MatrËn tõ M-file Ta cã thÓ nhËp mét matrËn b»ng cöa sæ so¹n th¶o M-file, më cöa sæ nμy b»ng c¸ch vμo File- New- M-file. Mét cöa sæ so¹n th¶o sÏ ®−îc hiÖn ra cho phÐp b¹n so¹n th¶o d−íi d¹ng text, do lμ cöa sæ so¹n th¶o d¹ng text cho nªn b¹n cã thÓ so¹n th¶o tõ file word sau ®ã copy vμo cöa sæ M-file.§Ó nhËp matrËn ta so¹n th¶o t−¬ng tù nh− trong cöa sæ command window sau ®ã l−u vμo file nh− sau: VÝ dô: A=[1 2 3 ; 4 5 6 ; 7, 8,9];% kh«ng cã dÊu chÊm phÈy sÏ in ra kÕt qu¶ Còng t−¬ng tù nh− trªn nÕu sè phÇn tö trªn mét hμng qu¸ nhiÒu th× ta cã thÓ xuèng dßng A=[1 2 3 4 5 6 7 8 9 10]; Sau khi kÕt thóc so¹n th¶o ta l−u vμo tªn_file . §Ó thùc thi c¸c lÖnh nhËp trong M-file ta dïng lÖnh sau trong command window nh− sau: >> ten_file ; c. NhËp matrËn tõ c¸c hμm cã s½n Matlab cã mét th− viÖn c¸c hμm cho phÐp t¹o ma trËn.Sau ®©y lμ mét sè hμm • ones(m,n) t¹o ma trËn m hμng vμ n cét ,víi c¸c phÇn tö ®Òu b»ng 1, ones(m) t¹o ma trËn vu«ng cÊp m, víi c¸c phÇn tö ®Òu lμ 1. • zeros(m,n) t¹o ma trËn kÝch th−íc m x n, víi c¸c phÇn tö ®Òu b»ng 0, zeros(m) t¹o ma trËn vu«ng cÊp m. • eyes(m,n) t¹o ma trËn kÝch th−íc m xn víi c¸c phÇn tö ®Òu b»ng 1, eyes(m) t¹o ma trËn vu«ng cÊp m . vÝ dô: ones(2,3) ans= 1 1 1 1 1 1 eyes(2,3) ans= 1 0 0 0 1 0 zeros(2,3) ans= 0 0 0 Trang 2
  77. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 0 0 0 3.2 Ma trËn sè phøc Sè phøc trong matlab ®−îc viÕt nh− sau: VÝ dô sè phøc 3+4*i dïng i ®Ó chØ sè ¶o >> a=3+ 4*i a= 3+ 4*i NÕu muèn ii ®Ó chØ sè ¶o Ta ®Þnh nghÜa ii= sqrt(-1) Sau ®ã b¹n viÕt: >> a=3+ 4*ii a= 3+ 4*i >>A=[ 1+2*i , 3+4*i ; 5+6*i, 4+5*i ] A=[ 1+2*i 3+ 4*i 5+6*i 4+5*i ] 3.3 T¹o vec t¬ Khi ta cÇn kh¶o s¸t ®Æc tÝnh cña ®å thÞ nμo ®ã trong mét kho¶ng x¸c ®Þnh, kho¶ng x¸c ®Þnh nμy ®−îc biÓu diÔn d−íi d¹ng vect¬ VÝ dô kh¶o s¸t ®Æc tÝnh ®å thÞ trong kho¶ng x=1 ®ªn 100 >> x= 1:100; % x lÊy gi¸ trÞ tõ 1 ®ªn100, b−íc t¨ng cña x lμ 1 >>t=0: 0.1 : 10;% b−íc nh¶y lμ cña t lμ 0.1 C«ng thøc chung t¹o vec t¬ lμ X=Xmin : b−íc_t¨ng: Xmax 3.4 Truy nhËp c¸c phÇn tö cña ma trËn §ª truy nhËp c¸c phÇn tö cña ma trËn ta lμm nh− sau: Gi¶ sö ma trËn 1 2 3 A= 4 5 6 7 8 9 Th× >> A(i,j) ; sÏ truy nhËp ®Õn phÇn tö hμng thø i vμ cét thø j VÝ dô ®Ó truy nhËp ®Õn phÇn tö thø nhÊt ta : >> A(1,1) ans= 1 §Æc biÖt ®Ó gäi toμn bé sè hμng hoÆc toμn bé sè cét dïng to¸n tö (:) >> A(:,1) % gäi toμn bé sè hμng t−¬ng øng víi cét 1 ans= Trang 3
  78. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1 4 7 >>A(1,:) % gäi toμn bé sè cét t−¬ng øng hμng 1 ans= 2 3 >> A(1:2,1) % gäi hμng 1 ®Õn hμng 2 t−¬ng øng víi cét thø nhÊt ans= 1 4 >>A(1:2,:) % gäi hμng 1 ®Õn hμng 2 t−¬ng øng víi tÊt c¶ c¸c cét ans= 1 2 3 4 5 6 3.5 PhÐp tÝnh ma trËn vμ m¶ng a. PhÐp tÝnh ma trËn • PhÐp tÝnh céng , phÐp tÝnh trõ :§iÒu kiÖn hai ma trËn A vμ B ph¶i cã cïng kÝch th−íc hoÆc mét trong hai lμ sè v« h−íng vÝ dô: >>a=[1 2 3 ;4 5 6; 7 8 9]; >>b=[2 3 4; 5 6 7; 8 9 10]; >>a+b; ans= 5 7 9 11 13 15 17 19 • Nh©n hai ma trËn A*B l−u ý r»ng sè cét cña ma trËn A ph¶i b»ng sè cét cña ma trËn B, ngo¹i trõ mét trong hai lμ sè v« h−íng • Chia tr¸i ma trËn (\) X=A\B t−¬ng ®−¬ng víi viÖc gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh A*X=B, gÇn t−¬ng ®−¬ng víi X=inv(A)*B • Chia ph¶i ma trËn(/) X=B/A t−¬ng ®−¬ng víi viÖc gi¶i ph−¬ng tr×nh tuyÕn tÝnh X*A=B gÇn t−¬ng ®−¬ng víi X= B*inv(A) b. PhÐp tÝnh dÉy Trang 4
  79. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Cho hai m¶ng sau: >>x=[1 2 3]; >>y=[2 3 4]; • PhÐp tÝnh céng , trõ gièng nh− phÐp tÝnh ®èi víi ma trËn >>x+y ans= 5 7 • PhÐp tÝnh nh©n(.*) >>x.*y ans= 2 6 12 • PhÐp tÝnh chia(./ hoÆc .\) >> x./y ans= 0.5 0.66 0.75 >>x .\y ans= 2 1.5 0.75 3.6 Gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh 3.6.1 HÖ ph−¬ng tr×nh tuyÕn tÝnh : XÐt hÖ ph−¬ng tr×nh sau: a11*x1 + a12*x2+ . . . +a1n*xn=b1 a21*x2 + a22*x2+ . . . +a2n*xn=b2 . . am1*x1 + am2*x2+ . . . +amn*xn=bm Bμi to¸n ®Æt ra lμ t×m vÐc tor x=[x1;x2;x3 ;xn] sao cho tho¶ m·n bμi to¸n trªn 3.6.2 HÖ Ph−¬ng tr×nh tuyÕn tÝnh kh«ng ®ång nhÊt Ph−¬ng tr×nh nh− sau gäi lμ ph−¬ng tr×nh tuyÕn tÝnh K§N a1*x1 + a2*x2 + . . . + an*xn = b b ®øng ®éc lËp (nã kh«ng nh©n víi biÕn nμo c¶) XÐt hÖ thèng sau: a11*x1 + a12*x2+ . . . +a1n*xn=b1 a21*x2 + a22*x2+ . . . +a2n*xn=b2 . . am1*x1 + am2*x2+ . . . +amn*xn=bm Trang 5
  80. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 ViÕt theo ma trËn A= [a11 a12 a1n; a21 a22 a2n, am1 am2 amn] X=[x1 x2 xn]; B=[b1 b2 bn]; Trong ®ã A ®−îc gäi lμ ma trËn hÖ sè, X lμ vector kÕt qu¶ 3.6.2.1 Gi¶i hÖ ph−¬ng tr×nh b»ng hμm nghÞch ®¶o inv NÕu m=n th× A lμ ma trËn vu«ng, vμ nÕu det(A) lμ kh¸c 0 th× tån t¹i A-1 vμ vector kÕt qu¶ X ®−îc cho bëi : A-1*A*X=X=A-1*B VÝ dô Gi¶i hÖ sau: 2*x1 - x2 = 2 x1 + x2 = 5 Matlab command >> A=[ 2 -1 ; 1 1 ]; >> B=[ 2 ; 5]; >> X= inv(A)*B >> X= 2.3333 2.667 >> X= rats(X) X= 7/3 8/3 Tuy nhiªn chóng ta kh«ng thÓ ¸p dông ph−¬ng ph¸p trªn cho 2*x1 - x2 = 2 2*x1 - x2 = 0 Ma trËn hÖ sè A=[ 2 -1 ; 2 -1]; V× det(A)=0 => kh«ng ¸p dông ®−îc hμm nghÞch ®¶o cho ma trËn A 3.6.3 HÖ ph−¬ng tr×nh tuyÕn tÝnh ®ång nhÊt BiÓu diÔn d−íi d¹ng ma trËn nh− sau A*x=0 • NÕu det(A)#0 hÖ cã nghiÖm duy nhÊt lμ X=0 VÝ dô xÐt hÖ ph−¬ng tr×nh tuyÕn tÝnh sau 2*x1 - x2=0 x1+ x2=0 ë ®©y det(A)= 3 cho nghiÖm x1=0 , x2=0 • §èi víi hÖ ph−¬ng tr×nh thuÇn nhÊt cã det(A)=0 th× hÖ nμy cã v« sè nghiÖm Trang 6
  81. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 VÝ dô XÐt hÖ ph−¬ng tr×nh tuyÕn tÝnh sau -6* x1 + 3*x2 = 0 2* x1 - x2 = 0 Ma trËn hÖ sè A= [ -6 3 ; 2 -1] , det(A)= 0 biÓu diÔn trªn ®å thÞ thÊy r»ng hai ®−êng nμy trïng nhau do vËy hÖ trªn cã v« sè nghiÖm • Tr−êng hîp sè biÕn n det(A1)=0 ) Do ®ã ta x¸c ®Þnh tiÕp ma trËn 2 x 2 VÝ dô nh− sau A2=[ 3 4; -2 3] vμ det(A) # 0 ta nãi r»ng h¹ng cña ma trËn A(ma trËn hÖ sè) lμ b»ng 2 ®ång nghÜa víi viÖc ta chØ gi¶i hai ph−¬ng tr×nh bÊt kú trong sè tÊt c¶ c¸c ph−¬ng tr×nh trªn, vμ sè biÕn chóng ta g¸n gi¸ trÞ tuú ý lμ = n- r ( trong ®ã n lμ sè biÕn cßn r lμ h¹ng cña ma trËn A) Gi¶i hai ph−¬ng tr×nh : 3*x1 + 4*x2 - 2*x3= 0 -2*x1 + 3*x2 - 4*x3= 0 KÕt qu¶ : x1= (-10/17)*x3 vμ x2=(16/17)*x3 , víi x3 lÊy gi¸ trÞ tuú ý 3.6.4 Gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh b»ng Matlab(Dïng to¸n tö \) 2*x1 - x2 = 2 x1 + x2 = 5 >> A=[ 2 -1 ; 1 1]; >> B=[2 ; 5]; >>X=A\B Ph−¬ng ph¸p gi¶i nμy gäi lμ ph−¬ng ph¸p Gaussian elimination To¸n tö (\) th«ng th−êng cung cÊp mét kÕt qu¶ trong Matlab , trong mét sè tr−êng hîp nã lμ ph−¬ng ph¸p gi¶i riªng 3.7 §iÒu kiÖn cã nghiÖm Theo Kronecker-Capelli th× Trang 7
  82. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Mét hÖ ph−¬ng tr×nh cã mét lêi gi¶i khi vμ chØ khi ma trËn hÖ sè A vμ ma trËn [A B] cã cïng h¹ng. Gi¶ sö h¹ng cña hai ma trËn ®Òu lμ r th× x¶y ra c¸c tr−êng hîp sau ®©y • r=n HÖ ph−¬ng tr×nh cã nghiÖm duy nhÊt, • r > rank(A), rank([A B]) ans= 2 ans= 2 Chóng ta xem xÐt vÝ dô sau: 2* x1 + 3* x2 + 4*x3 = 4 x1 + x2 + x3 = 5 >> A=[ 2 3 4 ; 1 1 1]; >>B=[ 4 ; 5]; >>rank(A), rank([A B]) ans= 2 ans= 2 >> X= A\B X= 8 0 3 H¹ng cña hai ma trËn A vμ [A B] b»ng nhau vμ b»ng 2 cho nªn hÖ cã mét lêi gi¶i , nh−ng do rank(A) < n cho nªn ta chØ gi¶i cho hai biÕn nh− lμ hμm cña biÕn cßn l¹i. KÕt qu¶ Matlab cho trªn chØ lμ mét tr−êng hîp riªng (n-r biÕn ®−îc g¸n =0) XÐt hÖ sau x1 + 2 *x2 + 3 *x3 = 12 3* x1 + 2 *x2 + x3 = 15 3*x1 + 4 *x2 + 7 *x3 = 13 Trang 8
  83. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 10*x1 + 9 *x2 + 8 *x3 = 17 TÝnh to¸n b»ng Matlab nh− sau >> A=[1 2 3 ; 3 2 1 ; 3 4 7; 10 9 8]; >>B= [12 ; 15; 13 ; 17 ]; >>rank(A), rank([A B]) ans= 3 ans= 4 >> X= A\B ans= 1.0887 -0.2527 1.5349 Khi thö l¹i nh− sau >> A* ans ans= 5.1882 4.2957 13.0000 20.8925 KÕt qu¶ kh«ng b»ng B HÖ ph−¬ng tr×nh trªn v« nghiÖm ,tuy nhiªn Matlab vÉn cho nghiÖm ,nghiÖm nμy kh«ng ph¶i nghiÖm ®óng mμ lμ nghiÖm xÊp xØ gi¶i theo tiªu chuÈn b×nh ph−¬ng tèi thiÓu( ta kh«ng ®Ò cËp tíi) 3.8 HÖ ®iÒu kiÖn yÕu Chóng ta nãi r»ng mét vÊn ®Ò ®−îc coi lμ ®iÒu kiÖn yÕu nÕu mét sù thay ®æi nhá trong d÷ liÖu sÏ dÉn ®Õn thay ®æi lín trong kÕt qu¶. §iÒu nμy lμ rÊt nguy hiÓm ®èi víi c¸c kü s− lμm viÖc víi c¸c thiÕt bÞ , sai sè ë c¸c thiÕt bÞ , sai sè do lμm trßn (®iÒu nμy ch¾c ch¾n x¶y ra) NÕu d÷ liÖu nμy lμ ®Çu vμo ®èi víi vÊn ®Ò trªn th× kÕt qu¶ thu ®−îc sÏ khñng khiÕp VÊn ®Ò chóng ta bμn tíi lμ §iÒu kiÖn yÕu cña hÖ ph−¬ng tr×nh tuyÕn tÝnh Ma trËn yÕu ®iÓn h×nh lμ ma trËn Hibert cã d¹ng nh− sau: A=[ 1 1/2 1/3 1/n;1/2 1/3 1/(n+1) 1/3 1/4 1/5 1/(n+2) 1/n 1/(2n)] Trang 9
  84. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 VÝ dô sau ®©y: Gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh cã ma trËn hÖ sè sau A=[1 1; 1 1.01] B=[2 ; 2.01]; >> X= A\B X= 1.0000 1.0000 Mét sai sè nhá ®−îc thÓ hiÖn trong long format >> format long; X= A\B X= 1.000000000002 0.999999999998 NÕu ta thay ®æi mét phÇn tö cña A vÝ dô A(1, 2)=1.005 >> A(1,2)=1.005 ; X= A\B X= -0.0000000099991 1.9999999999991 Thay ®æi A(1,2) =1.005 so víi gi¸ trÞ cò lμ 1 tøc lμ t¨ng 0.5% t−¬ng øng víi gi¸ trÞ x(1) gi¶m 101%, vμ t¨ng x(2) t¨ng 100% C¸ch gi¶i hÖ ph−¬ng tr×nh ®iÒu kiÖn yÕu A*X=B NÕu A lμ ma trËn Hillbert sö dông hμm tÝnh nghÞch ®¶o invhilb(n) trong ®ã n lμ kÝch th−íc cña ma trËn ®ã VÝ dô >>A= [ 1/1 1/2 ; 1/2 1/3]; >> B=[1 ;1/2] >>X= invhilb(2)* b NÕu A kh«ng ph¶i lμ ma trËn hilbert th× sö dông hμm symbolic VÝ dô A= [ 1 1.01; 0.5 1.02]; A=sym( [1 1.01 ; 0.5 1.02] ); B=[ 1.1; 1.2]; X= A\b 3 .9 LÖnh cond TÝnh ®iÒu kiÖn cña ma trËn CÊu tróc: >> cond(A) % A lμ ma trËn kÕt qu¶ tr¶ l¹i d¹ng nh− sau: a* 10k ; 0 >A=[1/2 1/3 1/4 ; 1/3 1/4 1/5; 1/4 1/5 1/6]; Trang 10
  85. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >> cond(A) ans= 1.3533e+003 Ta thÊy r»ng k= 3 tøc lμ cã 3 sè kh«ng ®¸ng tin cËy Tæng kÕt §Þnh nghÜa :H¹ng ma trËn Ar lμ mét ma trËn r hμng r cét ®−îc x©y dùng tõ A , kh«ng nhÊt thiÕt theo thø tù trong ma trËn A vμ det(Ar)#0 .NÕu bÊt kú ma trËn Ar+1 nμo ®−îc x©y dùng tõ r+1 hμng vμ r+1 cét cña A, det(Ar+1)=0 th× chóng ta nãi r»ng MatrËn A cã h¹ng b»ng r Mét hÖ thèng m ph−¬ng tr×nh tuyÕn tÝnh trong n biÕn (ch−a biÕt) a11*x1 + a12*x2+ . . . +a1n*xn=b1 a21*x1 + a22*x2+ . . . +a2n*xn=b2 . . am1*x1 + am2*x2+ . . . +amn*xn=bm Cã thÓ viÕt d−íi d¹ng form ma trËn AX=B Trong ®ã A lμ ma trËn hÖ sè vμ X lμ vector kÕt qu¶ §iÒu kiÖn cã nghiÖm MatrËn [A B] ®−îc gäi lμ ma trËn më réng cña hÖ. Theo Kronecker- Capelli th× hÖ ph−¬ng tr×nh tuyÕn tÝnh cã nghiÖm khi vμ chØ khi h¹ng cña ma trËn A b»ng h¹ng cña ma trËn bæ xung • NÕu r= n th× nghiÖm trªn lμ duy nhÊt • NÕu r<n th× hÖ trªn kh«ng x¸c ®Þnh vμ r biÕn cã thÓ ®−îc biÓu diÔn d−íi d¹ng hμm cña n-r biÕn kh¸c ,c¸c biÕn kh¸c nμy cã thÓ cho gi¸ trÞ bÊt kú( nãi c¸ch kh¸c hÖ v« sè nghiÖm) NghiÖm cña hÖ ph−¬ng tr×nh tuyÕn tÝnh ®−îc tÝnh trong Matlab b»ng to¸n tö ( \ ) .NÕu hÖ cã nghiÖm duy nhÊt Matlab sÏ cung cÊp cho nã , nÕu hÖ lμ kh«ng x¸c ®Þnh(r<n) th× to¸n tö ( \ ) sÏ cung cÊp cho chóng ta mét nghiÖm riªng trong ®ã n-r biÕn sÏ ®−îc ®Æt =0. Mét nghiÖm , nghiÖm nμy lμm tho¶ m·n tæng b×nh ph−¬ng cña c¸c nghiÖm bÐ nhÊt Dïng lÖnh X= pinv(A)*B NÕu h¹ng cña A # h¹ng matrËn më réng th× to¸n tö ( \ ) cung cÊp mét kÕt qu¶ nh−ng kÕt qu¶ nμy kh«ng ph¶i lμ nghiÖm cña hÖ HÖ thuÇn nhÊt khi vector B=0. Mét hÖ thuÇn nhÊt cã mét nghiÖm tÇm th−êng khi det(A) # 0.NÕu det(A)=0 hÖ cã nhiÒu h¬n mét nghiÖm trong tr−êng hîp nμy Matlab sÏ c¶nh b¸o ng−êi dïng : Trang 11
  86. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 C©u hái «n tËp 1. C¸c c¸ch nhËp mét ma trËn ? 2. §iÒu kiÖn cã nghiÖm cña hÖ ph−¬ng tr×nh ®¹i sè tuyÕn tÝnh , c¸ch tÝnh 3. LËp ch−¬ng tr×nh mμ ®Çu vμo lμ hai ma trËn A vμ b, ®Çu ra lμ kÕt qu¶ th«ng bμo hÖ cã nghiÖm hay kh«ng. 4. HÖ ph−¬ng tr×nh ®iÒu kiÖn yÕu lμ gi?, nh÷ng ¶nh h−ëng cña nã. Bμi tËp Thùc hiÖn c¸c phÐp to¸n sau 1.NhËp hai ma trËn a=[ 1 2 3; 4 5 6], b=[5 6 7 ;8 9 10] . -TÝnh Addab= a+b . -TÝnh Subsab= a-b; -TÝnh Multab= a*b -TÝnh Mulba=b*a; -TÝnh Divab= a/b; vμ b/a 2. Cho m¹ch ®iÖn sau R1 R2 e1 e2 R3 Cho th«ng sè: R1= 10(omh) , R2= 20(omh) , R3= 10(omh) e1= 20(v) , e2= 30(v) TÝnh dßng ®iÖn I1 vμ I2 vμ I3 b»ng c¸ch lËp theo d¹ng hÖ ph−¬ng tr×nh ®¹i sè tuyÕn tÝnh ba Èn sè Bμi tËp gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh sau: A*X= B Trong ®ã: A=[1/2 1/3 1/4 ; 1/3 1/4 1/5; 1/4 1/5 1/6]; B=[0.95 0.67 0.52] 1. Gi¶i hÖ ®· cho 2. Thay ®æi B(3)=0.53 råi gi¶i hÖ ph−¬ng tr×nh, so s¸nh víi tr−êng hîp trªn 3. TÝnh ®iÒu kiÖn cña ma trËn nμy vμ ®−a ra nhËn xÐt Chó ý khi gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh víi ma trËn hÖ sè lμ ma trËn Hilbert (ma trËn ®iÒu kiÖn yÕu) th× ta dïng hμm tÝnh nghÞch ®¶o cña nã lμ hμm invhilb(n) Trang 12
  87. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 §Þnh nghÜa Ma trËn Hilbert lμ: A=[ 1 1/2 1/3 1/n;1/2 1/3 1/(n+1); Trang 13
  88. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Chương 4 Đồ hoạ Trong Matlab 4 .1 Điểm và đường trong đồ hoạ matlab Dùng hàm Plot để vẽ điểm -Đường thẳng trong mặt phẳng Để vẽ các đường trong mặt phẳng,các hàm số phụ thuộc vào biến ví dụ như y=f(x) thì trong matlab cung cấp cho ta hàm plot(x,y) để vẽ ,trong không gian ba chiều thì dùng hàm plot3(x,y,z) . trước hết ta nói qua về cách dùng hàm plot và các ví dụ minh hoạ cụ thề để hiểu rõ hơn về vấn đề này: 4.1.1 Lệnh plot Syntax plot(Y) plot(X1,Y1, ) plot(X1,Y1,LineSpec, ) plot( ,'PropertyName',PropertyValue, ) h = plot( ) Mô tả: Hàm plot có nhiều cách dùng như bạn đã thấy ở trên plot(y): Hàm này để biểu diễn các cột của y theo các chỉ số tương ứng của chúng nếu y là ma trận các số thực, nếu y là số phức thì plot(y) tương ứng với plot(real(y),image(y)). Ta có thể lấy ví dụ sau: A=[1 2 3 4 5 6 7 8 9 ] plot(A) sẽ được kết quả như sau(giao điểm ký hiệu là dấu o tròn ) Trang 1
  89. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Các dấu tròn trên hình vẽ thể hiện các giao điểm giữa các phần tử của các cột và các chỉ số tương ứng của chúng trong từng cột . Cụ thể các giao điểm (1,1) và (2,1);(3,1) tương ứng là phần tử thứ nhất của các cột,do là phần tử thứ nhất cho nên có chỉ số là 1 plot(x,y ): Vẽ các đường thẳng tương ứng với các cặp điểm (x,y )của véc tơ x và vec tơ y.Nếu chỉ một trong x hoặc y là ma trận thì nó sẽ vẽ theo vector cột hoặc hàng tương ứng với vector còn lại phù hợp với kích thước hàng hay cột của matrận đó. Cụ thể : Giả thử x: là vector cot x=[1 2 3]; và y là martrận y=[1 2 3;4 5 6]; rõ ràng là x có kích thước bằng với kích thước hàng của matrận do vậy mà nó sẽ biểu diễn các hàng của y theo x .Kết quả plot(x,y) như sau: plot(x,y,linespec ) cũng có thể viết như sau plot(x,y,linespec,x1,y1,linespec1, ); Hàm này giống như hàm trên ,nhưng các thuộc tính về đường được thể hiện ở trong linespec .Sau đây ta có thể liệt kê các thuộc tính về đường Matlab cho phép bạn sử dụng một số ký tự sau đây để xác định thuộc tính của đường  Line style  Line width  Color  Marker type Trang 2
  90. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10  Marker size  Marker face and edge coloring (for filled markers) Matlab định nghĩa các chuỗi xác định cho kiểu đường, Marker types và colors 1. Line Style Specifiers Specifier Line Style - đường liền(default) đường nét đứt : dotted line -. dash-dot line 2. Marker Specifiers Specifier Marker Type + plus sign O Circle * Asterisk . Point X Cross S Square D Diamond ^ upward pointing triangle Trang 3
  91. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 V downward pointing triangle > right pointing triangle < left pointing triangle P five-pointed star (pentagram) H six-pointed star (hexagram) 3. Color Specifiers Specifier Color R Red G Green B Blue C Cyan M Magenta Y Yellow K Black W White Các lệnh plot chấp nhận một thông số Linespec ,thông số này định nghĩa ba phần tử ,các phần tử này xác định đường  Line style (kiểu đường)  Marker symbol (Kiểu đánh dấu)  Color (kiểu mầu) Trang 4
  92. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Chú ý rằng khi kết hợp chúng ta có thể để theo một thứ tự bất kỳ For example plot(x,y,'-.or') Vẽ y theo x sử dụng kiểu đường là dash-dot đặt vòng tròn(o) tại các giao điểm (x,y) ,và mầu của đường và mầu của vòng tròn đánh dấu là mầu đỏ Nếu bạn xác định một điểm đánh dấu, không phải là kiểu đường, Matlab chỉ vẽ các điểm đánh dấu I. Ví dụ plot(x,y,'d') 4.1.2 Hàm plot(x,y, protypename,protypevalue ) Hàm này xác định rõ các thuộc tính của đường thẳng ví dụ như Chiều rộng của đường thẳng LineStyle {-} | | : | -. | none Độ rộng của đường(Linewith) mặc định là o.5 points( 1point=1/72 inch) Ví dụ về Linepropertype: plot(t,sin(2*t),'-mo', 'LineWidth',2, 'MarkerEdgeColor','b', 'MarkerFaceColor',’r’, 'MarkerSize',12) Giải thích như sau: Hàm trên vẽ đồ thị f=sin(2*t) theo biến t, đặc tính của đường là mầu (magne) ,giao hai điểm là hình tròn(s), đường là liên tục(solid line) Line width là 2(point) ( 1point=1/72 inches) default là 0.5 points MarkerEdgeColor là mầu đen( blue) Mỗu trong (mặt) của các điểm nút giao là mầu đỏ: Chúng ta thấy rằng đồ thị được xây dựng từ việc nối các điểm có toạ độ (x,y) bằng các đoạn thẳng *tỷ lệ các trục sẽ được matlab tự động tạo ra sao cho phù hợp 4.1.3 Để vẽ nhiều đồ thị trên cùng một hình vẽ thì chúng ta có hai cách +Vẽ đồ thị thứ nhất + Dùng lệnh Hold on +Vẽ tiếp đồ thị thứ hai + hold off hoặc Dùng hàm plot(x1,y1,x2,y2) Trang 5
  93. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ví dụ ta vẽ hai hàm y=sin(x) và y1=cos(x) Ta dùng lệnh plot như sau: plot(x,y,x,y1); 4.1.4 Title , xlabel, ylabel, gtext, legend, grid Title dùng để viết tiêu đề cho đồ thị Ví dụ Title( ) Xlabel( string) đặt tên nhãn cho trục x Ylabel(string) đặt tên nhãn cho trục y Gtext(string) để viết text vào đồ thị Legend(string,-1) để ghi chú thích cho đồ thị, số -1 để ghi chú thích bên ngoài các trục của hình vẽ Grid on hoặc Grid off để mở hoặc tắt Grid t=0:pi/6:pi; plot(t,sin(2*t),'-mo', 'LineWidth',2, 'MarkerEdgeColor','b', 'MarkerFaceColor','r', 'MarkerSize',14) legend('y=sin(2*t)','y=cos(2*t)',-1);( chú ý viết đúng thứ tự) grid on; xlabel('truc thoi gian'); ylabel('truc Sin va cos'); title('Do thi ham sin(2*t)'); hold on; j=cos(2*t); plot(t,j,'-b+'); hold off; 4.2 Hàm plot3(x,y,z) để vẽ các điểm và đường trong không gian Ngoài việc thêm trục z các hàm này sử dụng giống như hàm plot(x,y) Cấu trúc plot3(X1,Y1,Z1, ) plot3(X1,Y1,Z1,LineSpec, ) plot3( ,'PropertyName',PropertyValue, ) h = plot3( ) Trang 6
  94. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Việc sử dụng các hàm này giống với hàm Plot trong 2D do vậy ta không đề cập tới nữa Chú ý tới hàm View(a,b) để quan sát góc nhìn của đồ thị trong đó a là góc tính theo chiều ngược chiều kim đồng hồ từ phía âm của trục y còn b là góc nhìn tính bắng độ xuống mặt phẳng x,y Giá trị mặc định của a và b là -37.5 0 và 30 0 %Ví dụ %Plot a three-dimensional helix. % Vẽ mặt phẳng x= sin(t) ,y=cos(t) , z=t t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) grid on; axis square view(-80,30); xét hai trường hợp view(-80,30); view(-40,30); Khi cho a=0 và b=90 thì hình vẽ trở về hình vẽ trong mặt phẳng toạ độ hai chiều 4.3 Hàm semilogx, semilogy Semi-logarithmic plots Cấu trúc semilogx(Y) semilogx(X1,Y1, ) semilogx(X1,Y1,LineSpec, ) semilogx( ,'PropertyName',PropertyValue, ) h = semilogx( ) semilogy( ) h = semilogy( ) Mô tả Semilogx(y) vẽ giống như plot(y) nhưng chỉ khác rằng tỷ lệ trên trục x là logarit cơ số 10, tương tự như vậy đối với Semilogy(y) thì tỷ lệ trên trục y theo logarit cơ số 10 ứng với truc x. X=0:10:1000; subplot(2,2,2); subplot(2,2,3) subplot(2,2, semilogy(x,y,'.'); ; 4); xlabel('tuyenTrang 7 loglog(x,y,'.'); plot(x,y,'.'); tinh'); xlabel('log'); xlabel('tuye ylabel('log'); ylabel('log'); n tinh'); titl (' titl (' l b l('t
  95. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Y=100*x; Subplot(2,2,1); Semilogx(x,y,'.'); Xlabel('log'); Ylabel('tuyen tinh'); Title(' semilogx(x,y)'); Grid on; Trong không gian 3 chiều thì ta không dùng các hàm trên để vẽ ,mà ta sử dụng hàm plot3 và dùng hàm set để đặt trục toạ độ t=1:1:100; x=sin(20*pi*t); y=cos(20*pi*t); z=t; subplot(1,2,1); plot3(x,y,z); set(gca,'Zscale','log');grid on;view(125,7); 4.4 Vẽ trong hệ toạ độ cực Cấu trúc polar(theta,rho) polar(theta,rho,LineSpec) Mô tả The polar function accepts polar coordinates, plots them in a Cartesian plane, and draws the polar grid on the plane. polar(theta,rho) creates a polar coordinate plot of the angle theta versus the radius rho. theta is the angle from the x-axis to the radius vector specified in radians; rho is the length of the radius vector specified in dataspace units. polar(theta,rho,LineSpec) LineSpec specifies the line type, plot symbol, and color for the lines drawn in the polar plot. Examples Create a simple polar plot using a dashed, red line: t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t),' r') this is a figure for plotting Polar(phi, r); Khi chuyển từ hệ toạ độ cực sang hệ toạ độ Đêcart ta làm như sau [x,y]=pol2cart(phi, r) sau đó dùng lệnh Plot(x,y) Trang 8