第8章 數(shù)學(xué)軟件MATLAB應(yīng)用_第1頁
第8章 數(shù)學(xué)軟件MATLAB應(yīng)用_第2頁
第8章 數(shù)學(xué)軟件MATLAB應(yīng)用_第3頁
第8章 數(shù)學(xué)軟件MATLAB應(yīng)用_第4頁
第8章 數(shù)學(xué)軟件MATLAB應(yīng)用_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第8章 數(shù)學(xué)軟件MATLAB及應(yīng)用MATLAB系統(tǒng)是是目前世界上最流行的科學(xué)與工程計算的軟件系統(tǒng),它的計算功能非常強大,能夠完成許多復(fù)雜的計算,例如,求多項式、有理式和超越方程的精確根或近似根,求函數(shù)的極限、導(dǎo)數(shù)、積分,求解某些微分方程等以后我們可以知道,MATLAB系統(tǒng)還能完成工程數(shù)學(xué)的各種計算,它是一種數(shù)值計算和圖形圖像處理工具軟件,它的特點是語法結(jié)構(gòu)簡明、數(shù)值計算高效、圖形功能完備、易學(xué)易用.它在矩陣代數(shù)、數(shù)值計算、數(shù)字信號處理、振動理論、神經(jīng)網(wǎng)絡(luò)控制、動態(tài)仿真等領(lǐng)域都有廣泛的應(yīng)用所以,現(xiàn)在它已成為工程技術(shù)人員必備的軟件本書僅對MATLAB作一簡單的介紹8.1 基礎(chǔ)知識8.1.1 MAT

2、LAB的安裝與啟動(Windows操作平臺)1安裝(1)為電腦接電源,按主機開關(guān),按顯示器開關(guān),啟動Windows;(2)將MATLAB源光盤插入光驅(qū);(3)在光盤的根目錄下找到MATLAB的安裝文件Setup.exe;(4)雙擊該安裝文件后,按提示逐步安裝MATLAB安裝完成后,在程序欄里便有了MATLAB選項,桌面上出現(xiàn)MATLAB的快捷方式(一個MATLAB圖標(biāo))2啟動按上述(1)步打開電腦后,左雙擊桌面上的MATLAB圖標(biāo)或點程序里的MATLAB選項,即可啟動MATLAB系統(tǒng)8.1.2 MATLAB7.0的主菜單MATLAB7.0用戶界面的主菜單主要有文件(File)、編輯(Edit)

3、、調(diào)試(Debug)、桌面設(shè)計(Desktop)、窗口(Window)、幫助(Help)等File菜單的內(nèi)容如下表8-1所示表8-1 File菜單的使用菜單命令功能New建立M文件、建立圖形、建立Simulink模塊Open打開已知文件Close Command Window關(guān)閉命令窗口Save保存Save Workspace As另存為Set Path設(shè)置工作路徑Preferences定義工作環(huán)境Print Setup打印設(shè)置Print打印Print Selection打印指定的文件Exit MATLAB退出MATLABEdit菜單中的命令與Windows界面中的Edit菜單中的命令的使用方

4、法大部分相同.下面將Edit菜單的各項功能列入表8-2中進(jìn)行介紹表8-2 Edit菜單的各項功能菜單命令功能Undo向前撤消上一步的操作Redo向后撤消上一步的操作Cut將選中內(nèi)容刪除,放入剪貼板Copy將選中內(nèi)容放剪貼板,但不刪除所選內(nèi)容Paste將剪貼板的內(nèi)容放入MMATLAB工作窗口Paste to Workspace將剪貼板的內(nèi)容放入工作間Select All選中命令窗口中的所有內(nèi)容Delete刪除選中內(nèi)容Find查找Find Files查找文件Clear Session清除命令窗口里的所有顯示的內(nèi)容Clear Command Window清除命令窗口中的內(nèi)容Clear Command

5、 History清除歷史命令Clear Workspace清楚工作間中的內(nèi)容8.1.3 MATLAB7.0的工具欄MATLAB7.0用戶界面的工具欄包括主工具欄和快捷工具欄,主工具欄中各個圖標(biāo)的功能如同所示.新建文件打開文件剪切粘貼復(fù)制向前撤銷向后撤銷獲取幫助打開仿真軟件快速啟動向?qū)Т蜷_分析工具通過預(yù)覽改變當(dāng)前目錄查看或改變當(dāng)前目錄返回上一級目錄圖8-1 MATLAB7.0主工具欄8.1.4 MATLAB7.0的窗口啟動MATLAB7.0以后,就顯示MATLAB7.0的用戶界面,界面有4個主要窗口:命令窗口(Command Window)、當(dāng)前路徑(Current Directory)窗口、工

6、作間管理(Workspace)窗口、歷史命令(Command History)窗口.與以前的MATLAB版本不同的地方在于,MATLAB7.0除了有傳統(tǒng)的主工具欄之外,還新增了快捷工具欄(Shortcut Toolbar)1命令窗口(Command Window)圖8-2啟動MATLAB7.0后,其右半邊是Command Windows窗口,這就是命令窗口(右側(cè)藍(lán)色方框內(nèi),如圖8-2),是MATLAB的主窗口. 命令窗口的空白區(qū)域即命令編輯區(qū),用來輸入和顯示計算結(jié)果可鍵入各種MATLAB命令,進(jìn)入各種操作輸入表達(dá)式后按回車鍵Enter(以后簡記為),就能給出計算結(jié)果如果你的命令有錯誤,該窗口將

7、用紅字顯示出錯信息. 如果你在每行命令后面打上分號“;”,則不能顯示計算結(jié)果,所以需要顯示結(jié)果的計算命令后面不要打分號2工作間管理(Workspace)窗口圖8-3在默認(rèn)設(shè)置下,工作間管理窗口自動顯示于MATLAB界面中(左上方的藍(lán)色方框內(nèi),如圖8-3),它是MATLAB的重要組成部分,例如表達(dá)式產(chǎn)生了一個名為的變量,而且這個變量被賦予100的值,這個值就被存儲在計算機的內(nèi)存中工作間管理窗口就是用來顯示當(dāng)前計算機內(nèi)存中MATLAB變量的名稱、數(shù)學(xué)結(jié)構(gòu)、該變量的字節(jié)數(shù)及其類型,在MATLAB中不同的變量類型對應(yīng)不同的變量名圖標(biāo)注意:在MATLAB命令窗口中運行的所有命令都共享一個相同的工作間,所

8、以它們共享所有的變量,初學(xué)者應(yīng)當(dāng)重視3當(dāng)前路徑(Current Directory)窗口圖8-4在默認(rèn)設(shè)置下,工作間管理窗口自動顯示于MATLAB界面中(左上方的藍(lán)色方框內(nèi),如圖8-4),它當(dāng)前路徑窗口顯示著當(dāng)前用戶工作所在是路徑4歷史命令(Command History)窗口圖8-5在默認(rèn)設(shè)置下,工作間管理窗口自動顯示于MATLAB界面中(左下方的藍(lán)色方框內(nèi),如圖8-5),它顯示用戶在命令窗口中所輸入的每條命令的歷史記錄,并標(biāo)明使用時間,這樣可以方便用戶的查詢.如果用戶想在次執(zhí)行某條已經(jīng)執(zhí)行過的命令,只需在歷史命令窗口中雙擊該命令;如果用戶需要從歷史命令窗口中刪除一條或多條命令,只需選中這些

9、命令,并單擊左鍵,在彈出的快捷菜單中選擇Delete Selection命令即可8.1.5 MATLAB的程序編輯器MATLAB提供了一個內(nèi)置的具有編輯和調(diào)試功能的程序編輯器. 點擊MATLAB用戶界面第二行左邊第一個按鈕,或者依次點擊“File”、“New”、“M-file”命令,即可顯示Untitled窗口,意味著你已獲得程序編輯器,程序編輯器上面第一行是菜單欄,第二行是工具欄,編輯和調(diào)試程序非常方便如果程序命令比較多,在命令窗口上修改非常麻煩,此時可在程序編輯器上編輯該程序,并點擊工具欄的第三個按鈕,就會彈出Work目錄框,在Work目錄框下面的文件名(N)框內(nèi)鍵入你給程序取的文件名(字

10、母開頭,最后帶“.m”),并點擊“保存”,重新返回程序編輯器,依次點擊菜單的“Debag”、“Run”按鈕,就可以運行你的程序,完成你所要求的運算經(jīng)過這次保存后,以后每次單擊工具欄的第二個按鈕,就會顯示W(wǎng)ork目錄,在文件名(N)框內(nèi)鍵入你的文件名,并單擊“打開”,就會在程序編輯器顯示你的程序,可以進(jìn)行修改或運算計算結(jié)果或出錯信息顯示在MATLAB命令窗口,繪圖結(jié)果顯示在圖形窗口8.1.6 MATLAB基本命令與基本函數(shù)1基本的系統(tǒng)命令MATLAB的基本系統(tǒng)命令不多,常用的命令功能如表8-3所示表8-3 MATLAB系統(tǒng)基本命令表命令功能exit/quit退出MATLABcd改變當(dāng)前目錄pwd

11、顯示當(dāng)前目錄path顯示并設(shè)置當(dāng)前路徑what/dir/ls列出當(dāng)前目錄中文件清單type/dbtype顯示文件內(nèi)容load在文件中裝載工作區(qū)save將工作區(qū)保存到文件中diary文本記錄命令!后面跟操作系統(tǒng)命令2工作區(qū)和變量的基本命令MATLAB工作區(qū)和變量的基本命令及功能見表8-4所示表8-4工作區(qū)和變量命令命令或符號功能或意義clear清除所有變量并恢復(fù)除eps外的所有預(yù)定義變量who顯示當(dāng)前內(nèi)存變量列表,只顯示內(nèi)存變量名whos顯示當(dāng)前內(nèi)存變量詳細(xì)信息,包括變量名、大小、所占用二進(jìn)制位數(shù)size/length顯示矩陣或向量的大小命令pack重構(gòu)工作區(qū)命令format輸出格式命令case

12、sen切換字母大小寫命令which+<函數(shù)名>查詢給定函數(shù)的路徑exist(變量名/函數(shù)名)查詢變量或函數(shù)3MATLAB工作區(qū)的鍵盤操作指令及功能MATLAB工作區(qū)的鍵盤操作指令及功能見表8-5所示:表8-5 在MATLAB工作區(qū)用鍵盤操作的功能鍵盤操作功能Ctrl+p重調(diào)前一行 (用于調(diào)出前面的命令進(jìn)行修改,重新計算)Ctrl+n重調(diào)下一行Ctrl+b向前移一個字符Ctrl+f向后移一個字符Ctrl+Ctrl+r右移一個字Ctrl+Ctrl+l左移一個字HomeCtrl+a移動到行首EndCtrl+e移動到行尾EscCtrl+u清除一行DelCtrl+d刪除光標(biāo)處字符Backsp

13、aceCtrl+h刪除光標(biāo)前的一個字符Ctrl+k刪除到行尾4MATLAB常用數(shù)學(xué)函數(shù)MATLAB的數(shù)學(xué)函數(shù)很多,可以說涵蓋了幾乎所有的數(shù)學(xué)領(lǐng)域下表列出的僅是最簡單最常用的(見表8-6)8-6 MATLAB常用數(shù)學(xué)函數(shù)函數(shù)數(shù)學(xué)含義函數(shù)數(shù)學(xué)含義abs(x)求的絕對值,若是復(fù)數(shù),即求的模csc(x)求的余割函數(shù),為弧度sign(x)求的符號asin(x)求的反正弦函數(shù),即sqrt(x)求的平方根,即acos(x)求的反余弦函數(shù),即exp(x)求的指數(shù)函數(shù),即atan(x)求的反正切函數(shù),即log(x)求的自然對數(shù),即acot(x)求的反余切函數(shù),即log10(x)求的常用對數(shù),即asec(x)求的

14、反正割函數(shù),即log2(x)求的以2為底的對數(shù),即acsc(x)求的反余割函數(shù),即sin(x)求的正弦函數(shù),為弧度Round(x)求最接近的整數(shù)cos(x)求的余弦函數(shù),為弧度rem(x,y)求整除的余數(shù)tan(x)求的正切函數(shù),為弧度real(z)求復(fù)數(shù)的實部cot(x)求的余切函數(shù),為弧度Imag(z)求復(fù)數(shù)的虛部sec(x)求的正割函數(shù),為弧度conj(z)求的共軛,即求實驗8-1熟悉MATLAB軟件的安裝及基本知識8.2 矩陣、數(shù)組及程序設(shè)計8.2.1 矩陣的輸入與運算1矩陣的直接輸入MATLAB中不用描述矩陣的類型和維數(shù),它們由輸入的格式和內(nèi)容決定.小矩陣可以用排列各個元的方法輸入,

15、同一行元用逗號或空格分開,不同行的元用分號或回車分開如,在MATLAB工作窗口輸入:A=1,2,3;4,5,6或A=1 2 3;4 5 6或A=1 2 3 4 5 6都輸入了一個2×3矩陣A,屏幕上顯示輸出變量為A= 1 2 3 4 5 6矩陣中的元可以用它的行、列數(shù)表示,例如,在MATLAB工作窗口輸入程序:a=A(2,1)%MATLAB區(qū)分大小寫字母,a和A是不同的變量.運行后輸出結(jié)果如下:a= 4或者不指定輸出變量,MATLAB將回應(yīng)ans(answer的縮寫),如在MATLAB工作窗口輸入:A(2,1)運行后輸出結(jié)果如下:ans= 4A輸入后一直保存在工作空間中,可隨時調(diào)用,

16、除非被清除或替代MATLAB可以直接修改矩陣的元素,如在MATLAB工作窗口輸入:A(2,1)=7,A(3,4)=1運行后輸出結(jié)果如下:A= 1 2 3 7 5 6A= 1 2 3 0 7 5 6 0 0 0 0 1原來的A沒有3行4列,MATLAB自動增加行列數(shù),對未輸入的元賦值0.2函數(shù)生成的矩陣MATLAB提供了一些函數(shù)來構(gòu)造特殊矩陣,如,在MATLAB工作窗口輸入:w=zeros(2,3)%2×3零矩陣.運行后輸出結(jié)果如下:w= 0 0 00 0 0在MATLAB工作窗口輸入:u=ones(3)%3×3全1矩陣,方陣只需輸入行數(shù),這幾個矩陣均如此.運行后輸出結(jié)果如下

17、:u= 1 1 1 1 1 1 1 1 1在MATLAB工作窗口輸入:v=eye(3,4)%3×4對角線為1的矩陣.運行后輸出結(jié)果如下:v= 1 0 0 0 0 1 0 0 0 0 1 03矩陣的裁剪與拼接從一個矩陣中取出若干行(列)構(gòu)成新矩陣稱為裁剪,MATLAB中“:”是非常重要的裁剪工具,如在MATLAB工作窗口輸入:A(3,:)%A的第3行.運行后輸出結(jié)果如下:ans= 0 0 0 1在MATLAB工作窗口輸入:A(:,2)%A的第2列.運行后輸出結(jié)果如下:ans= 2 5 0在MATLAB工作窗口輸入:B=A(1:2,:)%A的第1,2行.運行后輸出結(jié)果如下:B= 1 2

18、3 0 7 5 6 0在MATLAB工作窗口輸入:C=B(:,2:4)%B的第24列.運行后輸出結(jié)果如下:C= 2 3 0 5 6 0在MATLAB工作窗口輸入:D=A(2:3,2:2:4)%A的第2,3行,第2,4列.運行后輸出結(jié)果如下:D= 5 0 0 1請?zhí)貏e注意“:”的用法,想在MATLAB工作窗口輸入程序:A(1:2:3,4:-1:2)應(yīng)該有什么結(jié)果在MATLAB工作窗口輸入:D(:,1)=%刪除D的第1列,為空集符號運行后輸出結(jié)果如下:D= 3 2 6 5將幾個矩陣接在一起稱為拼接,左右拼接時行數(shù)要相同,上下拼接時列數(shù)要相同,如在MATLAB工作窗口輸入:E=D,zeros(2,1

19、)運行后輸出結(jié)果如下:E= 0 3 2 0 0 6 5 0在MATLAB工作窗口輸入:F=A(1:2,:);eye(1,4)運行后輸出結(jié)果如下:F= 1 2 3 0 7 5 6 0 1 1 1 1在MATLAB工作窗口輸入:G=C,ones(2);9,F(1,:)運行后輸出結(jié)果如下:G= 2 3 0 1 0 5 6 0 0 1 9 1 2 3 04矩陣的運算MATLAB中提供了下列矩陣運算符:+ 加法;- 減法; 轉(zhuǎn)置;* 乘法; 乘冪; 左除;/ 右除.它們要符合矩陣運算的規(guī)律,如果矩陣的行列數(shù)不符合運算符的要求,將產(chǎn)生錯誤信息.這里只將左除和右除的用法敘述如下:設(shè)A是可逆矩陣,AX=B的解

20、是A左除B,即X=AB(當(dāng)B為列向量時,得到方程組的解);XA=B的解是A右除B,即X=B/A.還應(yīng)注意標(biāo)量與矩陣進(jìn)行上述運算的含義,請看在MATLAB工作窗口輸入程序:E+3運行后輸出結(jié)果如下:ans= 3 6 5 3 3 9 8 38.2.2 數(shù)組及其運算1數(shù)組的輸入除了像1×n矩陣(行向量)一樣地輸入外,數(shù)組常采用“:”和函數(shù)linspace兩種輸入方式,它們的用法可以從下面的例子知道在MATLAB工作窗口輸入:a=1:5%從1到5公差為1的等差數(shù)組運行后輸出結(jié)果如下:a= 1 2 3 4 5在MATLAB工作窗口輸入:b=1:2:7%從1到7公差為2的等差數(shù)組運行后輸出結(jié)果如

21、下:b= 1 3 5 7如果輸入b=1:2:8,得到同樣結(jié)果在MATLAB工作窗口輸入:c=6:-3:-6%從6到-6公差為-3的等差數(shù)組運行后輸出結(jié)果如下:c= 6 3 0 3 -6在MATLAB工作窗口輸入:b=0:2:8,ones(1,3)%等差數(shù)組和行向量拼接.運行后輸出結(jié)果如下:b= 0 2 4 6 8 1 1 1在MATLAB工作窗口輸入:linspace(0,1,9)%從0到1共9個數(shù)值的等差數(shù)組.運行后輸出結(jié)果如下:ans= 0 0.1250 0.2500 0.3750 0.5000 0.6250 0.7500 0.87500 1.00002數(shù)組的運算數(shù)組除了作為1×

22、n矩陣(行向量)遵循矩陣運算規(guī)則外,MATLAB還為數(shù)組提供了一些特殊的運算:.* 乘法;. 乘冪;. 左除;./ 右除.通過下面的例子說明這些運算.在MATLAB工作窗口輸入:a=1 2 3 4 5,b=1 3 5 7 9,c=a.*b運行后輸出結(jié)果如下:a= 1 2 3 4 5b= 1 3 5 7 9c= 1 6 15 28 45在MATLAB工作窗口輸入:d=a.2,e=b.a運行后輸出結(jié)果如下:d= 1 4 9 16 25e= 1 9 125 2401 59049在MATLAB工作窗口輸入:f=a./b,g=a.b運行后輸出結(jié)果如下:f= 1.0000 0.6667 0.6000 0.

23、5714 0.5556g= 1.0000 1.5000 1.6667 1.7500 1.8000可以看出,數(shù)組運算是對應(yīng)元素的運算.8.2.3 語句、變量和表達(dá)式1語句形式MATLAB語句的一般形式為:變量=表達(dá)式若變量和“=”省略,則名為ans的變量自動建立.如果你輸入一個語句并以回車結(jié)束,則在工作區(qū)中顯示計算的結(jié)果;如果語句以分號“;”結(jié)束,MATLAB只進(jìn)行計算,不顯示計算的結(jié)果如果一個表達(dá)式太長,可以用續(xù)行號將其延續(xù)到下一行此外,一行中可以寫幾個語句,它們之間要用逗號或分號分開如,在MATLAB工作窗口輸入:a=1 2 3 4 5;b=1 3 5 7 9; c=a.*b,d=a*b,e

24、=a'*b運行后輸出結(jié)果如下:c= 1 6 15 28 45d= 95e= 1 3 5 7 9 2 6 10 14 18 3 9 15 21 27 4 12 20 28 365 15 25 35 45 2變量MATLAB的變量由字母、數(shù)字和下劃線組成,最多31個字符,區(qū)分大小寫字母,第一個字符必須是字母對于變量,MATLAB不需要任何類型的說明或維數(shù)語句當(dāng)輸入一個新變量名時MATLAB自動建立變量并為其分配內(nèi)存空間MATLAB有幾個特殊的量:pi 圓周率;eps 最小浮點數(shù);Inf 正無窮大,特指1/0;NaN 不定值,特指0/0;i,j虛數(shù)單位在MATLAB工作窗口輸入:a=0 1

25、0,b=1 0 0,c=a./b運行后輸出結(jié)果如下:a= 0 1 0b= 1 0 0Warning: Divide by zero.c= 0 Inf NaN3字符串字符串是用單引號括起來的字符集合,可以像向量一樣進(jìn)行拼接和裁剪,如在MATLAB工作窗口輸入程序:s1=Hello;s2=every;s3=body;s=s1,s2, ,s3,ss=s(1:5)運行后輸出結(jié)果如下:s= Hello,every bodyss= Hello8.2.4 程序設(shè)計MATLAB提供了一個完善的程序設(shè)計語言環(huán)境,使我們能方便地編制復(fù)雜的程序,完成各種計算本節(jié)先簡要介紹關(guān)系、邏輯運算和條件、循環(huán)語句等許多高級語言

26、都具備的、編程的重要手段,再著重介紹MATLAB所特有的M文件1關(guān)系和邏輯運算MATLAB的關(guān)系運算符有:<小于;>大于;<=小于或等于;>=大于或等于;=等于;=不等于.關(guān)系運算比較兩個數(shù)值,當(dāng)指出的關(guān)系成立時結(jié)果為1(表示真),否則為0(表示假).關(guān)系運算可以作用于兩個同樣大小的矩陣或數(shù)組,結(jié)果是一個0,1矩陣或數(shù)組,每個分量代表相應(yīng)的矩陣或數(shù)組分量的關(guān)系運算結(jié)果,例如,在MATLAB工作窗口輸入程序:A=1:5,B=5:-1:1運行后輸出結(jié)果如下:A= 1 2 3 4 5B= 5 4 3 2 1在MATLAB工作窗口輸入程序:C=A>=4運行后輸出結(jié)果如下:

27、C= 0 0 0 1 1在MATLAB工作窗口輸入程序:D=A=B運行后輸出結(jié)果如下:D= 0 0 1 0 0下面舉一個例子說明如何將關(guān)系運算和數(shù)值運算結(jié)合起來.在MATLAB工作窗口輸入程序:x=(-3:3)/3運行后輸出結(jié)果如下:x=-1.0000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000在MATLAB工作窗口輸入程序:sin(x)./x運行后輸出結(jié)果如下:Warning: Divide by zeroans= 0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415在計算sinx/x時給出了警告信息,是因為第4個數(shù)據(jù)s

28、in0/0沒有定義,MATLAB返回NaN.為了避免這種情況出現(xiàn)可以用最小浮點數(shù)eps來代替0,在MATLAB工作窗口輸入程序:x=(-3:3)/3;x=x+(x=0)*eps;sin(x)./x運行后輸出結(jié)果如下:ans= 0.8415 0.9276 0.9816 1.0000 0.9816 0.9276 0.8415給出了sinx/x在x=0時正確的極限值.MATLAB的邏輯運算符有:&與運算;|或運算;非運算.它們滿足熟知的邏輯運算規(guī)則:00001100101111邏輯運算將任何非零元素視為1(真).邏輯運算也可以作用于矩陣或數(shù)組.在MATLAB工作窗口輸入程序:a=1:9,b=

29、9-a,c=(a>4),d=(a>=3)&(b<6)運行后輸出結(jié)果如下:a= 1 2 3 4 5 6 7 8 9b= 8 7 6 5 4 3 2 1 0c= 1 1 1 1 0 0 0 0 0d= 0 0 0 1 1 1 1 1 1MATLAB還提供了一些關(guān)系和邏輯函數(shù),常見的有all和any,用法是:y=all(x),若x為向量,當(dāng)所有元素非零時y=1,否則y=0;若x為矩陣,all作用于列元素,y為行向量y=any(x),若x為向量,當(dāng)有一元素非零時y=1,否則y=0;若x為矩陣,all作用于列元素,y為行向量例如,在MATLAB工作窗口輸入程序:a=1 0 -5

30、 0;-3 0 8 2,b=all(a),c=any(a),d=all(b),e=any(c)運行后輸出結(jié)果如下:a= 1 0 -5 0 -3 0 8 2B= 1 0 1 0c= 1 0 1 1d= 0e= 12條件和循環(huán)語句條件和循環(huán)語句屬于流控制語句,MATLAB的流控制語句主要有四個:if,while,for,switch,它們都用end結(jié)束.(一)if語句條件語句 if 最簡單的用法是:if <關(guān)系表達(dá)式> <語句1> end如果關(guān)系表達(dá)式的值為1,則語句1執(zhí)行;否則,執(zhí)行end的后續(xù)命令if語句的另外一種用法是:if <關(guān)系表達(dá)式> <語句1

31、> else <語句2> end如果關(guān)系表達(dá)式的值為1,則語句1執(zhí)行;否則(關(guān)系表達(dá)式的值為0),語句2執(zhí)行,然后執(zhí)行end的后續(xù)命令.當(dāng)我們有多個選擇時還可以用下列結(jié)構(gòu):if <關(guān)系表達(dá)式1> <語句1>elseif <關(guān)系表達(dá)式2> <語句2> elseif <關(guān)系表達(dá)式n> <語句n>else <語句n1> end如果關(guān)系表達(dá)式j(luò)(j=1,2,n)的值為1,則語句j執(zhí)行,然后執(zhí)行end的后續(xù)命令;否則,語句2執(zhí)行,然后執(zhí)行end的后續(xù)命令.例如,可用以下程序得到圖8-6的分段函數(shù).yO0

32、1x1function y=fun(x)if x<=0 y=0;elseif x<=pi/2 y=x;else y=1;end 圖8-6 在MATLAB工作窗口輸入程序:>>x=31;y=fun(x)運行后輸出結(jié)果如下:y = 1(二)for語句循環(huán)語句for的一般形式為for <循環(huán)參數(shù)>=<初值>:<步長>:<終值> <語句>end步長為1時可以省略對于每一參數(shù)值,語句都重復(fù)執(zhí)行當(dāng)作多重循環(huán)時for語句可以嵌套使用,如用以下程序可以生成希爾伯特矩陣function A=f(n,m)A=zeros(n,m);

33、for i=1:n for j=1:m A(i,j)=1/(i+j-1); end end format rat在MATLAB工作窗口輸入程序:>>n=4,m=5,A=f(n,m)運行后輸出結(jié)果如下:A= 1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8for語句的循環(huán)參數(shù)可以是任意的數(shù)組或矩陣,循環(huán)參數(shù)依次取數(shù)組元素的值,或按矩陣的列依次取值(三)while語句for循環(huán)主要應(yīng)用于已知循環(huán)次數(shù)的情況,如果不知道循環(huán)次數(shù),可以使用while循環(huán)來完成,其表達(dá)方式為while &

34、lt;關(guān)系表達(dá)式> <語句>end當(dāng)關(guān)系表達(dá)式的值為1(真)時,語句被反復(fù)執(zhí)行,直至關(guān)系表達(dá)式為0(假)時終止,如,在MATLAB工作窗口輸入程序:>>n=0;EPS=1; while (1+EPS)>1 EPS=EPS/2; n=n+1; end EPS=2*EPS; n,format short E,EPS運行后輸出結(jié)果如下:n= 53EPS= 2.2204e-016這個例子給出了計算MATLAB中特殊常量eps的過程(我們用大寫EPS以便與eps相區(qū)別)EPS不斷地被2除直到(1+EPS)>1為假時終止這里需要注意的是,MATLAB用16位數(shù)來表

35、示數(shù)據(jù),因此當(dāng) EPS接近10-16時,它會認(rèn)為(1+EPS)>1不成立MATLAB還提供了跳出循環(huán)的break語句,遇到此語句立即執(zhí)行此循環(huán)end的后續(xù)語句,如上面計算eps的程序可以改為:>>EPS=1; for n=1:100 EPS=EPS/2; if (1+EPS)<=1 EPS=2*EPS; break endend n,format short E,EPS運行后輸出同樣的結(jié)果.(四)switch語句switch語句根據(jù)表達(dá)式的值來執(zhí)行相應(yīng)的語句,用法如下:switch <表達(dá)式>case value1 <語句1> case valu

36、e2 <語句2> otherwise <語句n> end實驗8-21已知矩陣,求,2已知3階方陣,求,8.3 初等數(shù)學(xué)運算與簡單作圖本節(jié)介紹MATLAB系統(tǒng)進(jìn)行初等數(shù)學(xué)運算,并討論一元函數(shù)圖形的畫法,應(yīng)當(dāng)學(xué)習(xí)上機操作8.3.1 簡單計算1加法:例如計算154+67 在命令窗口鍵入154+67 按回車鍵Enter(簡記),就會顯示和數(shù)2212減法:例如計算356-418 在命令窗口鍵入356-418 (得差數(shù)-62)3乘法:例如計算214×87 在命令窗口鍵入214*87 (得乘積18618)4除法:例如計算235÷15 在命令窗口鍵入235/15 (

37、得商數(shù)15.6667)5乘方:例如計算262 鍵入262 (得676)6平方根:例如求 鍵入sqxt(pi) 或者pi(1/2) (得1.7725)7求多項式的根:MATLAB系統(tǒng)中roots函數(shù)可以求出多項式的根【例1】求多項式的根解 p=1,0,3,12,-7;%多項式的系數(shù)數(shù)組(按降冪排列) roots(p)%計算數(shù)組p對應(yīng)的多項式的根可得這個多項式的4個根:0.7876+2.4351j,0.7876-2.4351j,-2.0872,0.51218因式分解:因式分解時先要將變量x用syms定義為符號變量,這樣字母x才能參加運算,再調(diào)用因式分解函數(shù)factor【例2】將多項因式分解解 sy

38、ms x; s=x6+1; factor(s) (得(x2+1)*(x4-x2+1)8.3.2 函數(shù)作圖 1二維曲線的繪制MATLAB軟件提供繪制二維曲線(平面曲線)的指令是plot,有下面三種常用格式(1)plot(x,s)當(dāng)x是實數(shù)組時,以實數(shù)的先后排序為橫坐標(biāo),元素值為相應(yīng)的縱坐標(biāo)畫出一條曲線. 命令中s是可選參數(shù),用來指定曲線的線型、顏色、數(shù)據(jù)點形狀等,例如,s(紅色),g(綠色),b(藍(lán)色),y(黃色),s不選則用MATLAB設(shè)定的默認(rèn)值(2)plot(x,y,s)當(dāng)x、y是同維向量時,繪制以向量x和y分別為橫、縱坐標(biāo)的曲線命令中;s是可選參數(shù)(3)plot(X1,Y1,s1,X2,

39、Y2,s2,)每三項為一組,繪制多條曲線,用法同前MATLAB7系統(tǒng)的繪圖函數(shù)和工具可將所繪制的圖形在圖形窗口中顯示出來,該窗口與主窗口是隔離的【例3】繪制在0,10上的圖形解 x=linspace(0,10,100); %生成自變量數(shù)組,在0,10上等間隔含100個元素 y=tan(x); %給出函數(shù)表達(dá)式 figure(1); %選擇一個繪圖窗口 plot(x,y) %調(diào)用繪圖函數(shù)圖8-7【例4】在同一個坐標(biāo)系下畫出兩條曲線和在0,2上的圖形解 x=0:2*pi/30:2*pi; y=sin(x); z=cos(x); figure(1) plot(x,y,'r',x,z,

40、'g')title('一條正弦曲線和一條余弦曲線') %title給出圖形標(biāo)題xlabel('x的取值范圍') %橫坐標(biāo)數(shù)值范圍ylabel('y和z的值') %縱坐標(biāo)數(shù)值范圍legend('y=sin(x)','z=cos(x)') %自動標(biāo)注圖例圖8-823維圖形只對幾種常用命令通過例子作簡單介紹【例5】做曲面的圖形,解 x=-7.5:0.5:7.5;y=x;X,Y=meshgrid(x,y);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;mesh(X,Y,Z)圖8-9如果將m

41、esh命令改成surf(X,Y,Z),圖形效果如下圖8-108.3.3 方程求解1.先將未知量用syms定義為符號變量,再用函數(shù)solve解方程,格式如下:solve(eqnl,eqn2,eqnN)或solve(eqnl,eqn2,eqnN,var1,var2,varN)上面eqns是一些具體方程的表達(dá)式,vars是求解的獨立變量【例6】解方程解 syms x solve(x3-10*x2+29*x-20=0,x)輸出ans=1 4 5,表示三個解x=1,x=4,x=5【例7】解方程組解 syms x y a x,y=solve(x2*y2=0,x-2*y=a) 輸出x=a a 0 0, y=

42、0 0 -1/2*a -1/2*a,表示有4組解,2對于復(fù)雜的方程,求數(shù)值解的命令為fsolve,此時需要提供解的一個初始值. 【例8】求方程的數(shù)值根解 先作函數(shù)的圖形,找出零點的大致位置 clear x=-1:0.01:1; y=exp(2*x).*sin(x)-cos(x); plot(x,y)(在figure1窗口顯示圖形如圖8-11,可以看到零點約在x=0.5)圖8-11然后,取初始解x=0.5,用fsolve解方程x=0.5;y=sin(x)*exp(2*x)-cos(x);x=fsolve(y,x)(答案:x=0.4128)【例9】解方程組解 在程序編輯器上鍵入下述M文件funct

43、ion y=myfun1(x)y(1)=3*x(1)2-x(2)2;y(2)=3*x(1)*x(2)2-x(1)2-1;將這個文件以myfun1.m文件名保存到work目錄中,再在命令窗口輸入如下命令:x=0.8,0.4; %提取初始解向量x=fsolve(myfun1,x)(解得x=0.5208,x=0.9020)實驗8-3用MATLAB軟件系統(tǒng)完成下列計算1解方程(1);(2)2解方程8.4 一元函數(shù)的微積分計算本節(jié)討論用MATLAB軟件系統(tǒng)進(jìn)行一元函數(shù)的微積分運算8.4.1 極限運算用函數(shù)limit直接計算函數(shù)的極限,調(diào)用格式如下:(1)limit(f,x,a) 求表達(dá)式f當(dāng)xa時的極限

44、(2)limit(f,x,a,right) 求f在xa時的右極限(3)limit(f,x,a,left) 求f在xa時的左極限【例1】求下限極限:(1);(2);(3)解 (1)syms x limit(sin(x)/x,x,0) (得ans=1) (2)syms x limit(sqrt(x2+3*x)-x,x,inf) (得ans=3/2) (3)syms x limit(sqrt(x)-2(-1/x),x,0,right) (得ans=0)8.4.2 求導(dǎo)數(shù)求函數(shù)導(dǎo)數(shù)的命令是diff,調(diào)用格式如下:(1)diff(f,x) 表示對表達(dá)式f求關(guān)于變量x的一階導(dǎo)數(shù)(2)diff(f,x,n)

45、 表示f對x求n階導(dǎo)數(shù)【例2】求下列函數(shù)的一階導(dǎo)數(shù):(1);(2)解(1)syms x adiff(log(x)/log(a) (得ans=1/x/loga,即)(2)syms n xdiff(sin(x)n) (得ans=sin(x)n*n*cos(x)/sin(x)【例3】設(shè),求解 syms x y= sin(x)/(x+cos(2*x); diff(y,x,3)(得ans=-cos(x)/(x+cos(2*x)+3*sin(x)/(x+cos(2*x)2*(1-2*sin(2*x)+6*cos(x)/(x+cos(2*x)3*(1-2*sin(2*x)2+12*cos(x)/(x+cos

46、(2*x)2*cos(2*x)-6*sin(x)/(x+cos(2*x)4*(1-2*sin(2*x)3-24*sin(x)/(x+cos(2*x)3*(1-2*sin(2*x)*cos(2*x)-8*sin(x)/(x+cos(2*x)2*sin(2*x))8.4.3 積分運算1求函數(shù)積分的命令是int,格式如下:(1)int(f,x) 對f關(guān)于x求不定積分(2)int(f,x,a,b) 對f關(guān)于變量x從a到b求定積分【例4】求不定積分解 syms x int(x2+3*x+7,x) (得ans=1/3*x3+3/2*x2+7*x)【例5】求定積分解 syms x int(log(x)/sqrt(x),x,1,4)(得ans=8*log(2)-4)2數(shù)值積分MATLAB系統(tǒng)還提供了數(shù)值積分(定積分近似計算)的命令quad,調(diào)用格式為q=quad(f,a,b,tol)其中f是被積函數(shù)的M文件名,a,b分別是積分下限和積分上限,tol是指定的絕對誤差限,若tol缺省則約定求積分的相對誤差為10-3,所得積分值是用辛普森法得到的積分近似值【例6】求解 首先在程序編輯器中編寫出函數(shù)的M文件myfun2.mfunction y=myfun2(x)y=sin(sin(x);以文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論