數(shù)學(xué)實(shí)驗(yàn)(線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等)_第1頁(yè)
數(shù)學(xué)實(shí)驗(yàn)(線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等)_第2頁(yè)
數(shù)學(xué)實(shí)驗(yàn)(線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等)_第3頁(yè)
數(shù)學(xué)實(shí)驗(yàn)(線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等)_第4頁(yè)
數(shù)學(xué)實(shí)驗(yàn)(線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等)_第5頁(yè)
已閱讀5頁(yè),還剩218頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGE1PAGE220內(nèi)容簡(jiǎn)介本書(shū)主要講授大學(xué)工科數(shù)學(xué)課程中的線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等重要數(shù)學(xué)方法用MATLAB軟件的實(shí)現(xiàn)過(guò)程及其應(yīng)用,內(nèi)容分五個(gè)部分:第一部分為MATLAB軟件使用簡(jiǎn)介,介紹MATLAB軟件的基本內(nèi)容;第二部分為線性代數(shù)實(shí)驗(yàn),介紹用MATLAB軟件求解線性方程組、計(jì)算矩陣特征值和特征向量、進(jìn)行矩陣的相似對(duì)角化及矩陣分解的方法;第三部分為微積分實(shí)驗(yàn),介紹用MATLAB軟件進(jìn)行符號(hào)微積分運(yùn)算、數(shù)值微分和數(shù)值積分計(jì)算的方法;第四部分為常微分方程實(shí)驗(yàn),介紹用MATLAB軟件求解線性(非線性)微分方程(組)的解析解和數(shù)值解、進(jìn)行動(dòng)態(tài)仿真的方法;第五部分為概率論與數(shù)理統(tǒng)計(jì)實(shí)驗(yàn),介紹用MATLAB軟件進(jìn)行隨機(jī)變量的相關(guān)計(jì)算、隨機(jī)數(shù)的產(chǎn)生及樣本數(shù)據(jù)統(tǒng)計(jì)與可視化的方法。另外,針對(duì)具體內(nèi)容介紹了相應(yīng)的應(yīng)用實(shí)例,以幫助學(xué)生逐步學(xué)會(huì)用所學(xué)知識(shí)去解決實(shí)際問(wèn)題。每一章后附有一定量的實(shí)驗(yàn)題,以供學(xué)生課后上機(jī)練習(xí)及實(shí)驗(yàn)。本書(shū)適用于理工科院校大學(xué)本、??茖W(xué)生,以及具備工科數(shù)學(xué)知識(shí)和計(jì)算機(jī)知識(shí)的其他科技工作者。前言“數(shù)學(xué)實(shí)驗(yàn)”是在數(shù)學(xué)應(yīng)用于各個(gè)學(xué)科領(lǐng)域,特別是應(yīng)用于工程技術(shù)領(lǐng)域的過(guò)程中產(chǎn)生的,是伴隨著計(jì)算機(jī)的廣泛使用和數(shù)學(xué)軟件的有效開(kāi)發(fā)而發(fā)展的,它著重體現(xiàn)了“用數(shù)學(xué)”和“實(shí)現(xiàn)數(shù)學(xué)”的理念?!坝脭?shù)學(xué)”是指應(yīng)用數(shù)學(xué)理論知識(shí)解決相關(guān)領(lǐng)域中的實(shí)際問(wèn)題;“實(shí)現(xiàn)數(shù)學(xué)”是指通過(guò)計(jì)算機(jī)及數(shù)學(xué)軟件實(shí)現(xiàn)部分?jǐn)?shù)學(xué)結(jié)果的理論推導(dǎo)和計(jì)算過(guò)程,使得抽象的數(shù)學(xué)內(nèi)容直觀化、可視化。數(shù)學(xué)實(shí)驗(yàn)課程是大學(xué)工科數(shù)學(xué)課程教學(xué)改革與建設(shè)的主要成果之一,目前已在全國(guó)各高校廣泛開(kāi)設(shè),并已成為大學(xué)工科數(shù)學(xué)課程的重要組成部分。數(shù)學(xué)實(shí)驗(yàn)課開(kāi)設(shè)的主要目的是通過(guò)“數(shù)學(xué)實(shí)驗(yàn)”使學(xué)生深入理解數(shù)學(xué)基本概念和基礎(chǔ)理論、熟悉并掌握常用的數(shù)學(xué)軟件,培養(yǎng)學(xué)生應(yīng)用數(shù)學(xué)知識(shí)并結(jié)合計(jì)算機(jī)工具解決實(shí)際問(wèn)題的能力。數(shù)學(xué)實(shí)驗(yàn)課將數(shù)學(xué)知識(shí)與計(jì)算機(jī)應(yīng)用有機(jī)地結(jié)合起來(lái),以數(shù)學(xué)知識(shí)為背景、以數(shù)學(xué)軟件為工具,為學(xué)生自覺(jué)學(xué)習(xí)數(shù)學(xué)方法、動(dòng)手解決實(shí)際問(wèn)題搭建了平臺(tái),對(duì)提高學(xué)生學(xué)習(xí)數(shù)學(xué)的興趣、加強(qiáng)學(xué)生的數(shù)學(xué)理論基礎(chǔ)、培養(yǎng)學(xué)生的開(kāi)拓性思維等具有重要作用。本書(shū)主要講授大學(xué)工科數(shù)學(xué)課程中的線性代數(shù)、微積分、常微分方程、概率論與數(shù)理統(tǒng)計(jì)等重要數(shù)學(xué)方法用MATLAB軟件的實(shí)現(xiàn)過(guò)程,內(nèi)容分五個(gè)部分:第一部分為MATLAB軟件使用簡(jiǎn)介,介紹功能強(qiáng)大的MATLAB軟件的基本運(yùn)行,變量、矩陣、數(shù)組及其運(yùn)算,函數(shù)及語(yǔ)句和M文件的編寫(xiě),以及繪圖功能及數(shù)據(jù)的導(dǎo)入導(dǎo)出等。第二部分為線性代數(shù)實(shí)驗(yàn),介紹用MATLAB軟件求解線性方程組、計(jì)算矩陣特征值和特征向量以及進(jìn)行矩陣相似對(duì)角化和矩陣分解的方法。第三部分為微積分實(shí)驗(yàn),介紹用MATLAB軟件進(jìn)行符號(hào)微積分運(yùn)算、數(shù)值微分、函數(shù)插值和數(shù)值積分計(jì)算的方法。第四部分為常微分方程實(shí)驗(yàn),介紹用MATLAB軟件求解線性(非線性)微分方程(組)的解析解和數(shù)值解、進(jìn)行向量場(chǎng)繪制和動(dòng)態(tài)仿真的方法。第五部分為概率論與數(shù)理統(tǒng)計(jì)實(shí)驗(yàn),介紹用MATLAB軟件進(jìn)行隨機(jī)變量相關(guān)計(jì)算、隨機(jī)數(shù)的產(chǎn)生,及進(jìn)行樣本數(shù)據(jù)的統(tǒng)計(jì)描述與可視化的方法。另外,針對(duì)具體方法介紹了相應(yīng)的應(yīng)用實(shí)例,所以更有利于培養(yǎng)學(xué)生“用數(shù)學(xué)”的意識(shí)和能力。本書(shū)的主要閱讀對(duì)象是理工科院校本??茖W(xué)生。數(shù)學(xué)實(shí)驗(yàn)課對(duì)學(xué)生后繼課程的學(xué)習(xí),特別是學(xué)生在課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)等環(huán)節(jié)中的學(xué)習(xí)和研究具有重要幫助,提供思想和方法的指導(dǎo)。本課程也將為學(xué)生進(jìn)一步學(xué)習(xí)數(shù)學(xué)建模、參加數(shù)學(xué)建模競(jìng)賽、利用數(shù)學(xué)方法解決各個(gè)領(lǐng)域中的實(shí)際問(wèn)題打下良好的基礎(chǔ)。本書(shū)由陳東彥老師組織編寫(xiě),主要由劉鳳秋、李善強(qiáng)、曹作寶編寫(xiě),牛犇、宋顯華、孫偉參與了部分內(nèi)容的編寫(xiě),田廣悅老師對(duì)書(shū)中各部分內(nèi)容的選編給與了很多具體的指導(dǎo)。由于缺乏經(jīng)驗(yàn)、水平有限,書(shū)中難免有不妥之處,希望同行專家及廣大讀者批評(píng)指正!編者目錄內(nèi)容簡(jiǎn)介 1前言 2第1章MATLAB軟件使用簡(jiǎn)介 81.1MATLAB軟件使用入門(mén) 81.1.1MATLAB啟動(dòng)/退出 81.1.2MATLAB操作的注意事項(xiàng)及常用技巧 111.1.3MATLAB幫助 111.2MATLAB的變量和表達(dá)式 131.3MATLAB矩陣創(chuàng)建及其運(yùn)算 161.3.1MATLAB矩陣的創(chuàng)建 161.3.2MATLAB矩陣的運(yùn)算 181.4M文件的編寫(xiě)與調(diào)用 211.4.1文件的操作 221.4.2命令文件 231.4.3函數(shù)文件 241.5MATLAB編程 251.5.1MATLAB常用的程序控制語(yǔ)句 251.5.2MATLAB編程應(yīng)用 301.6MATLAB基本繪圖 321.6.1二維圖形的繪制 321.6.2三維圖形的繪制 381.7MATLAB數(shù)據(jù)的導(dǎo)入與導(dǎo)出 411.7.1導(dǎo)入數(shù)據(jù) 411.7.2導(dǎo)出文本文件 441.7.3對(duì)MS-Excel電子表格文件的操作 46實(shí)驗(yàn)1 48第2章線性代數(shù)實(shí)驗(yàn) 502.1線性方程組的求解 502.1.1MATLAB中矩陣的相關(guān)運(yùn)算 502.1.2線性方程組的求解 522.1.3應(yīng)用實(shí)例 562.2矩陣的特征值與特征向量及其相似對(duì)角化 592.2.1矩陣的特征值與特征向量 592.2.2矩陣的相似對(duì)角化 612.2.3應(yīng)用實(shí)例 642.3矩陣的分解 682.3.1矩陣的LU分解 682.3.2矩陣的QR分解 692.3.3矩陣的Cholesky分解 702.3.4矩陣的奇異值分解 712.3.5*矩陣的Hessenberg分解 742.3.6*矩陣的Schur分解 75實(shí)驗(yàn)2 77第3章微積分實(shí)驗(yàn) 803.1微積分符號(hào)運(yùn)算 803.1.1符號(hào)變量與符號(hào)表達(dá)式 803.1.2符號(hào)函數(shù)的極限 813.1.3符號(hào)函數(shù)的微分 833.1.4符號(hào)函數(shù)的積分 883.1.5符號(hào)函數(shù)的求和與泰勒多項(xiàng)式 913.1.6應(yīng)用實(shí)例 933.2數(shù)值微分 953.2.1數(shù)值微分計(jì)算方法 953.2.2數(shù)值微分的MATLAB實(shí)現(xiàn) 973.2.3應(yīng)用實(shí)例 973.3函數(shù)插值 983.3.1拉格朗日插值 993.3.2函數(shù)插值的MATLAB實(shí)現(xiàn) 1003.3.3應(yīng)用實(shí)例 1033.4數(shù)值積分 1063.4.1數(shù)值積分計(jì)算方法 1063.4.2誤差估計(jì)和收斂性 1133.4.3數(shù)值積分的MATLAB實(shí)現(xiàn) 1143.4.5應(yīng)用實(shí)例 1203.5*二次曲面與曲面交線的繪制 1223.5.1二次曲面 1223.5.2空間兩曲面的交線 124實(shí)驗(yàn)3 127第4章常微分方程實(shí)驗(yàn) 1294.1常微分方程及其模型 1294.1.1常微分方程的基本概念 1294.1.2常微分方程模型 1314.2常微分方程解析解的MATLAB實(shí)現(xiàn) 1334.3常微分方程數(shù)值解及其MATLAB實(shí)現(xiàn) 1364.3.1數(shù)值解的Euler法 1374.3.2數(shù)值解的Runge-Kutta法 1404.3.3常微分方程數(shù)值解的MATLAB實(shí)現(xiàn) 1424.4*向量場(chǎng)繪圖及Simulink在求解微分方程上的應(yīng)用 1474.4.1向量場(chǎng)繪圖 1474.4.2.Simulink應(yīng)用 148實(shí)驗(yàn)4 158第5章概率論與數(shù)理統(tǒng)計(jì)實(shí)驗(yàn) 1605.1隨機(jī)變量及概率分布 1605.1.1概率密度函數(shù)值的計(jì)算 1615.1.2概率密度函數(shù)的可視化 1645.1.3分布函數(shù)的計(jì)算 1685.1.4逆累積分布函數(shù)的計(jì)算 1705.1.5隨機(jī)變量數(shù)字特征的計(jì)算 1735.2隨機(jī)數(shù)的產(chǎn)生及應(yīng)用 1755.2.1隨機(jī)數(shù)的產(chǎn)生 1755.2.2應(yīng)用實(shí)例 1785.3樣本的統(tǒng)計(jì)描述 1815.3.1樣本的統(tǒng)計(jì)量及其計(jì)算 1815.3.2樣本的分布及其可視化 1885.3.3應(yīng)用實(shí)例 1945.4參數(shù)估計(jì)與假設(shè)檢驗(yàn) 1985.4.1參數(shù)估計(jì)及其MATLAB實(shí)現(xiàn) 1985.4.2假設(shè)檢驗(yàn)及其MATLAB實(shí)現(xiàn) 2015.4.3應(yīng)用實(shí)例 204實(shí)驗(yàn)5 207附錄 209附表1-1常用三角函數(shù)表 209附表1-2常用計(jì)算函數(shù) 209附表1-3文件操作函數(shù)表 210附表5-1常見(jiàn)分布概率密度函數(shù)表 210附表5-2常見(jiàn)分布函數(shù)表 212附表5-3專用函數(shù)計(jì)算概率密度函數(shù)表 213附表5-4專用函數(shù)計(jì)算累積概率值函數(shù)表 214附表5-5常用臨界值函數(shù)表 215附表5-6常見(jiàn)分布的均值和方差 215附表5-7隨機(jī)數(shù)產(chǎn)生函數(shù)表 216附表5-8參數(shù)估計(jì)函數(shù)表 217參考文獻(xiàn) 219

第1章MATLAB軟件使用簡(jiǎn)介MATLAB是矩陣實(shí)驗(yàn)室(MatrixLaboratory)的簡(jiǎn)稱,由美國(guó)MathWorks公司出品,與Mathematica、Maple并稱為三大數(shù)學(xué)軟件。MATLAB是一個(gè)功能強(qiáng)大的常用數(shù)學(xué)軟件,它不但可以解決數(shù)學(xué)中的數(shù)值計(jì)算問(wèn)題,而且可以解決符號(hào)演算、矩陣運(yùn)算、繪制圖形、實(shí)現(xiàn)算法、創(chuàng)建用戶界面和連接其它編程語(yǔ)言的程序等問(wèn)題,并且能夠方便地繪出各種函數(shù)圖形。MATLAB主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)與圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。它使用方便,輸入簡(jiǎn)潔,并且很容易由用戶自行擴(kuò)展,因此已成為國(guó)內(nèi)外許多大學(xué)教學(xué)和科學(xué)研究中最常用且必不可少的工具。不同的操作系統(tǒng)有相應(yīng)的MATLAB版本,本書(shū)介紹Windows操作系統(tǒng)下的MATLAB7.1版本的基本使用。1.1MATLAB軟件使用入門(mén)1.1.1MATLAB啟動(dòng)/退出1.啟動(dòng)MATLABWindows版本的MATLAB按照安裝光盤(pán)中的安裝說(shuō)明成功安裝后,系統(tǒng)會(huì)在Windows【開(kāi)始】菜單的【程序】子菜單中加入啟動(dòng)MATLAB命令的圖標(biāo),用鼠標(biāo)單擊此圖標(biāo)就可啟動(dòng)MATLAB系統(tǒng),如圖1.1。圖1.1啟動(dòng)MATLAB啟動(dòng)MATLAB后,就可以進(jìn)入MATLAB的工作環(huán)境。首先出現(xiàn)MATLAB的圖標(biāo),接著就進(jìn)入了其默認(rèn)的桌面系統(tǒng)如圖1.2。圖1.2是MATLAB桌面系統(tǒng)的默認(rèn)界面(通過(guò)更改Desktop菜單里的選項(xiàng)可以組合不同的窗口模式)。左上視窗為當(dāng)前目錄(CurrentDirectory),可切換為工作空間(Workspace);其左下視窗為歷史命令(CommandHistory),可切換為當(dāng)前目錄(CurrentDirectory);右半個(gè)視窗為命令窗口(CommandWindow),命令窗口是用戶與MATLAB進(jìn)行人機(jī)交互的主要環(huán)境,在此可輸入命令或執(zhí)行M文件,>>是命令窗口的提示符,可以在它后面輸入命令或輸入語(yǔ)句。圖1.2MATLAB界面2.MATLAB基本演示下面通過(guò)三個(gè)實(shí)例來(lái)初步了解MATLAB的操作和功能。例1.1計(jì)算,并輸出的值。>>x1=sqrt(2),x2=pi↙x1=1.4142x2=3.1416思考題1:例1.1中的變量x1和x2中間“,”能否去掉,請(qǐng)驗(yàn)證你的結(jié)果?注:MATLAB在提示符>>后的每一行輸入后需要輸入↙,即Enter鍵(回車)。例1.2繪制在區(qū)間,上的圖形。>>[X,Y]=meshgrid(-8:0.5:8);↙>>R=sqrt(X.^2+Y.^2)+eps;↙>>Z=sin(R)./R;↙>>surf(X,Y,Z)↙%surf函數(shù)繪制由矩陣X,Y,Z所確定的曲面輸出圖像如圖1.3所示:圖1.3直角坐標(biāo)的圖形例1.3極坐標(biāo)繪圖演示。>>t=0:0.01:2*pi;↙>>polar(t,sin(6*t))↙%圖1.4圖1.4極坐標(biāo)繪圖3.退出MATLAB若要退出MATLAB,只需用鼠標(biāo)點(diǎn)擊其系統(tǒng)集成界面右上角的關(guān)閉按鈕,或者在命令窗口輸入exit或quit命令即可。1.1.2MATLAB操作的注意事項(xiàng)及常用技巧1.注意事項(xiàng)(1)在命令窗口工作區(qū)中輸入MATLAB命令后,須按下Enter鍵,MATLAB才能執(zhí)行所輸入的命令,否則不執(zhí)行該命令。(2)MATLAB區(qū)分字母大小寫(xiě)。(3)一般情況下,在命令窗口中輸入一個(gè)命令并按下Enter鍵,計(jì)算機(jī)會(huì)顯示此次輸入的執(zhí)行結(jié)果。為了簡(jiǎn)便,在后續(xù)的章節(jié)中我們將不再顯示↙符號(hào)。(4)如果用戶不想顯示輸入的結(jié)果,只要在所輸命令的后面加上一個(gè)分號(hào)“;”即可。如:>>x=2+3↙x=5>>x=2+3;↙(5)可以在某一行結(jié)尾處鍵入3個(gè)英文句號(hào)“…”實(shí)現(xiàn)續(xù)行的目的。如:>>q=5^6+sin(pi)+exp(3)+(1+2+3+4+5)/sin(x)...-5*x+1/2-567/(x+y)(6)MATLAB中的變量必須為字母、數(shù)字及某些符號(hào)組合,某些情況也允許輸入漢字,但標(biāo)點(diǎn)符號(hào)必須是英文狀態(tài)下的標(biāo)點(diǎn)符號(hào)。(7)MATLAB中不需要專門(mén)定義變量類型,系統(tǒng)會(huì)自動(dòng)根據(jù)表達(dá)式的值或輸入的值來(lái)確定變量的數(shù)據(jù)類型。(8)命令行與M文件中的注釋語(yǔ)句都以百分號(hào)“%”開(kāi)始;語(yǔ)句行中百分號(hào)后面的該行內(nèi)容將被忽略而不被執(zhí)行,在M文件中%后面的語(yǔ)句可以用help命令顯示出來(lái)。2.常用技巧特殊的功能鍵如下:(1)ESC恢復(fù)當(dāng)前命令輸入前的空白狀態(tài)。(2)↑調(diào)出上一行命令。(3)↓調(diào)出下一行命令。其中,↑為鍵盤(pán)中的向上鍵,↓為鍵盤(pán)中的向下鍵。后兩個(gè)功能鍵在程序調(diào)試時(shí)很有用。在MATLAB實(shí)際使用中,往往需要對(duì)剛執(zhí)行過(guò)的命令進(jìn)行修改后重新執(zhí)行,為了避免重復(fù)輸入,可用↑調(diào)出原命令后再做修改。1.1.3MATLAB幫助MATLAB的離線幫助文件內(nèi)容豐富,是學(xué)習(xí)MATLAB的最佳資料,學(xué)習(xí)MATLAB首先要學(xué)會(huì)MATLAB幫助的使用。在命令窗口中輸入help命令或直接用鼠標(biāo)左鍵單擊菜單中的Help按鈕(快捷鍵F1),可以打開(kāi)如圖1.5所示的幫助窗口。圖1.5MATLAB幫助窗口圖1.5中左上角有四個(gè)可以切換的選項(xiàng)頁(yè),分別為Contents,Index,Search和Demos,可以根據(jù)需要打開(kāi)相應(yīng)的選項(xiàng)頁(yè)查找所需的信息。當(dāng)遇見(jiàn)一個(gè)新的函數(shù)時(shí),可通過(guò)Search來(lái)進(jìn)行查找其功能及詳細(xì)用法。Demos提供了大量的演示文件,也為初學(xué)者提供幫助。MATLAB還提供了在線幫助功能,但用戶需要連接網(wǎng)絡(luò)。下面介紹一下通過(guò)Search來(lái)查找sin函數(shù)。進(jìn)入幫助界面后選中Search選項(xiàng)頁(yè)進(jìn)入下一界面并在后面空白處輸入sin,點(diǎn)擊Go按鈕就會(huì)看到如圖1.6的結(jié)果。圖1.6MATLAB中的Seacrchfor搜索功能還可以在命令窗口直接輸入查找命令,例如>>helpsin↙SINSine.SIN(X)isthesineoftheelementsofX.Seealsoasin,sind.Overloadedfunctionsormethods(oneswiththesamenameinotherdirectories)helpsym/sin.mReferencepageinHelpbrowserdocsin借助于MATLAB提供的幫助系統(tǒng),可以解決在使用MATLAB過(guò)程中遇到的許多問(wèn)題。1.2MATLAB的變量和表達(dá)式1.MATLAB變量命名規(guī)則(1)MATLAB中變量名可以包含字母、數(shù)字及下劃線,但必須以字母開(kāi)頭,后面最多跟63個(gè)字母或數(shù)字,如x,y,asd_f,d3er45等都是合法的變量名。(2)變量名區(qū)分大小寫(xiě),如ab與Ab表示兩個(gè)不同的變量。(3)注意不要用MATLAB中的內(nèi)部函數(shù)或命令名作為變量名。如果內(nèi)部函數(shù)用作變量名,內(nèi)部函數(shù)將失效。2.與工作空間中的變量有關(guān)的函數(shù)1)列出變量函數(shù):who功能:列出當(dāng)前工作空間中的變量,且內(nèi)存中的當(dāng)前變量以簡(jiǎn)單形式列出函數(shù):whos功能:列出當(dāng)前內(nèi)存變量的名稱、大小、類型等信息2)清除變量函數(shù):clear功能:清除工作空間中的所有變量,用于釋放系統(tǒng)內(nèi)存函數(shù):clearall功能:清除函數(shù)工作空間和基本工作空間的所有函數(shù)變量,全局變量和類函數(shù):clc功能:清除命令窗口3.MATLAB的運(yùn)算符1)數(shù)學(xué)運(yùn)算符+(加號(hào)),-(減號(hào)),*(乘號(hào)),\(左除),/(右除),^(乘冪)2)關(guān)系運(yùn)算符<(小于),>(大于),<=(小于等于),>=(大于等于),==(等于),~=(不等于)3)邏輯運(yùn)算符&(邏輯與運(yùn)算),|(邏輯或運(yùn)算),~(邏輯非運(yùn)算)例1.4已知矩陣,,對(duì)其做簡(jiǎn)單的關(guān)系與邏輯運(yùn)算。>>A=[1,2;1,2];>>B=[1,1;1,2];>>C=(A<B)&(A==B)C=00004.MATLAB的表達(dá)式MATLAB的表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組成的有意義的式子。MATLAB語(yǔ)句由變量、表達(dá)式及MATLAB命令組成,用戶輸入的語(yǔ)句由MATLAB系統(tǒng)解釋后運(yùn)行。常見(jiàn)的MATLAB語(yǔ)句有兩種格式:格式1:表達(dá)式格式2:變量=表達(dá)式其中,系統(tǒng)自動(dòng)將格式1中的表達(dá)式的運(yùn)行結(jié)果賦值給內(nèi)部變量ans,并在屏幕上輸出;在格式2中,系統(tǒng)將表達(dá)式的運(yùn)行結(jié)果賦給了變量。例1.5用兩種形式計(jì)算算術(shù)運(yùn)算結(jié)果。>>5^6+sin(pi)+exp(3)%計(jì)算結(jié)果賦給默認(rèn)變量ansans=1.5645e+004%即為1.5645×104>>a=5^6+sin(pi)+exp(3)%計(jì)算結(jié)果賦給變量aa=1.5645e+004>>a=5^6+sin(pi)+exp(3);即如果在表達(dá)式后面加“;”,則執(zhí)行后不顯示運(yùn)算結(jié)果。例1.5中的正弦、指數(shù)函數(shù)是MATLAB自帶的函數(shù)。MATLAB中還有很多類似的函數(shù),常用的函數(shù)詳見(jiàn)附錄中的附表1-1和1-2。5.MATLAB的數(shù)據(jù)顯示MATLAB系統(tǒng)中數(shù)值數(shù)據(jù)的存儲(chǔ)和計(jì)算默認(rèn)都是雙精度,如果需要可以利用format命令來(lái)調(diào)整數(shù)據(jù)的顯示格式。MATLAB默認(rèn)顯示格式為formatloose(松散格式),屏幕的顯示會(huì)有一些空行,占用更大的篇幅,因此可以在命令語(yǔ)句輸入前,輸入顯示格式命令formatcompact(緊湊格式)。此外,format命令還可以用于控制數(shù)字顯示的方式,例如formatrat表示此后的數(shù)據(jù)顯示為近似的有理數(shù)。下面是format用于控制浮點(diǎn)變量的輸出精度的八種格式,如表1.1所示。表1.1format用于浮點(diǎn)數(shù)的八個(gè)格式類型結(jié)果例子formatshort固定5個(gè)小數(shù)的輸出3.1416formatlong固定15個(gè)小數(shù)的輸出3.14159265358979formatshorte帶有5位精度的浮點(diǎn)格式3.1416e+000formatlongte帶有15位精度的浮點(diǎn)格式3.141592653589793e+002formatshortg帶有5位數(shù)的最佳的定點(diǎn)數(shù)或浮點(diǎn)數(shù)3.1416formatlongg帶有15位數(shù)用于顯示double、7位用于顯示single的最佳的定點(diǎn)數(shù)或浮點(diǎn)數(shù)3.14159265358979formatshorteng工程格式,至少5個(gè)有效小數(shù)和冪為3的數(shù)3.1416e+007formatlongeng工程格式,正好有16位有效數(shù)字和冪為3的倍數(shù)3.14159265358979e+081例1.6分別用五位定點(diǎn)、十五位定點(diǎn)及有理數(shù)形式將表示出來(lái)。>>a=5+sin(7);>>formatshort,aa=5.6570>>formatlong,aa=5.65698659871879>>formatrat,aa=3117/5516.MATLAB中的常量在MATLAB中有些變量是固有的,在使用時(shí)注意輕易不要對(duì)這些變量重新賦值以免出現(xiàn)錯(cuò)誤。一些常見(jiàn)變量及具體意義見(jiàn)表1.2。表1.2MATLAB中常量常量符號(hào)常量含義i或j虛數(shù)單位,定義為i2=j2=-1Inf或inf正無(wú)窮大,由零做除數(shù)引入此常量NaN不定式,表示非數(shù)值量,產(chǎn)生于0/0,∞/∞,0*∞等運(yùn)算pi圓周率π的雙精度表示eps容差變量,PC上此值為2^-52realmin最小浮點(diǎn)數(shù),2^-1022realmax最大浮點(diǎn)數(shù),2^10231.3MATLAB矩陣創(chuàng)建及其運(yùn)算MATLAB的基本運(yùn)算單位是矩陣,能否熟練掌握矩陣的輸入、各種數(shù)值運(yùn)算以及矩陣函數(shù)的使用是能否學(xué)好MATLAB的關(guān)鍵。1.3.1MATLAB矩陣的創(chuàng)建1.通過(guò)輸入直接創(chuàng)建矩陣輸入方法是先鍵入左方括號(hào)“[”,然后按行直接鍵入矩陣的所有元素,最后鍵入右方括號(hào)“]”。注意:整個(gè)矩陣以“[”和“]”作為首尾,同行的元素用“,”或空格隔開(kāi),不同行的元素用“;”或按Enter鍵來(lái)分隔;矩陣的元素可以是數(shù)字或表達(dá)式。例1.7直接輸入創(chuàng)建矩陣。>>A=[1,2,3;4,15,60;7,8,9]A=12341560789>>A=[1,2,34,15,607,8,9]A=123415607892.相關(guān)函數(shù)創(chuàng)建矩陣MATLAB提供了若干函數(shù)來(lái)創(chuàng)建一些特殊矩陣,見(jiàn)表1.3。表1.3生成特殊矩陣的相關(guān)函數(shù)函數(shù)名稱函數(shù)功能函數(shù)名稱函數(shù)功能zeros(m,n)m行n列零矩陣randn(m,n)m行n列正態(tài)分布隨機(jī)矩陣eye(n)n階單位矩陣magic(n)n階魔方矩陣ones(m,n)m行n列元素為1的矩陣rand(m,n)m行n列均勻分布隨機(jī)矩陣?yán)?.8創(chuàng)建矩陣。>>ones(3)%生成元素都為1的3階方陣ans=111111111例1.9創(chuàng)建矩陣。>>zeros(2,5)%生成元素都為0的2行5列零矩陣ans=0000000000例1.10生成3階魔方矩陣。>>magic(3)ans=8163574923.冒號(hào)操作符“:”j:k表示生成步長(zhǎng)為1的等差數(shù)列構(gòu)成的數(shù)組:[j,j+1,j+2,…,k];j:i:k表示生成步長(zhǎng)為i的等差數(shù)列構(gòu)成的數(shù)組:[j,j+i,j+2*i,…,k];例1.11等差數(shù)列的生成。>>1:5%步長(zhǎng)為1的等差數(shù)列ans=12345>>linspace(1,5,5)%給出區(qū)間[1,5]的5個(gè)等分點(diǎn)數(shù)據(jù)ans=12345>>1:2:7 %步長(zhǎng)為2的等差數(shù)列ans=1357>>8:-2:0 %步長(zhǎng)為-2的等差、遞減數(shù)列ans=864201.3.2MATLAB矩陣的運(yùn)算1.MATLAB矩陣元素操作下面介紹矩陣元素的抽取與賦值、矩陣擴(kuò)充、矩陣元素的刪除等操作。詳細(xì)用法見(jiàn)表1.4。1)矩陣元素的抽取與賦值例1.12已知矩陣,抽取與修改的一些元素。>>A=[12356;sin(3)79;log(2)61]%輸入矩陣AA=1.000023.000056.00000.14117.00009.00000.69316.00001.0000>>A(2,3) %抽取矩陣A的第二行第三列元素ans=9>>A(4) %抽取矩陣A(:)的第四個(gè)元素ans=23>>A(2:4) %抽取矩陣A(:)的第二、三、四個(gè)元素ans=0.14110.693123.0000>>A(1,:)%抽取矩陣A的第一行ans=12356>>A(:,3)%抽取矩陣A的第三列ans=5691>>a=A(1,3) %把矩陣A的第一行第三列元素賦值給變量aa=56>>A(2,1)=100 %把矩陣A的第二行第一列元素修改為100A=1.000023.000056.0000100.00007.00009.00000.69316.00001.0000>>B=A([3,1],[2,3])B= 61 23562)矩陣的擴(kuò)充例1.13已知矩陣,,利用與生成矩陣,和。>>A=[1,3;6,9];%輸入矩陣A>>C=A;>>C(1,3)=100; %把矩陣A擴(kuò)充為2行3列矩陣>>CC=13100690>>B=[1,5;0,8]; %輸入矩陣B>>D=[A,B] %由矩陣A與B合成矩陣D>>D=13156908>>F=[A,zeros(2);zeros(2),B] %矩陣A與B合成分塊矩陣FF=13006900001500083)矩陣部分元素的刪除例1.14已知矩陣,刪除的第一行。>>A=[12356;sin(3)79;log(2)61];>>A(1,:)=[]%刪出A的第一行A=0.14117.00009.00000.69316.00001.0000表1.4矩陣元素的操作用法功能A(i,j)矩陣A的第i行第j列元素A(:,j)矩陣A的第j列A(i,:)矩陣A的第i行A(:,:)矩陣A的所有元素構(gòu)造一個(gè)2維矩陣A(:)矩陣A的所有元素按列構(gòu)造一個(gè)列矩陣A(i)矩陣A(:)的第i個(gè)元素A(i:j)矩陣A(:)的第i個(gè)到j(luò)個(gè)元素構(gòu)成的向量[]空矩陣A([i,j],[k,l])取出矩陣A的第i,j行及第k,l列交點(diǎn)上的元素2.矩陣的基本運(yùn)算A+B:矩陣加法A-B:矩陣減法A*B:矩陣乘法A\B:矩陣的左除A/B:矩陣的右除transpose(A)或A':A的轉(zhuǎn)置k*A:數(shù)k乘以A矩陣A的n次冪:A^n矩陣的點(diǎn)冪:.^其中,矩陣的左除“\”和右除“/”。如果矩陣A是非奇異方陣,則A\B等于A的逆矩陣乘B,即inv(A)*B;同理B/A等于B乘A的逆矩陣,即B*inv(A)。具體計(jì)算時(shí)可不用逆矩陣而直接計(jì)算。右除B/A也可由(A'\B')'來(lái)實(shí)現(xiàn)。例1.15已知矩陣,,求和。>>A=[123;456];B=[321;654];>>C=A+BC=444101010>>C=A.^BC=143409631251296注:點(diǎn)和算術(shù)運(yùn)算符之間不能有空格。例1.16已知,,求,和。>>X=[123];Y=[456];>>X.^2ans=149>>2.^Xans=248>>2.^[X;Y]ans=248163264例1.17矩陣,求的3次冪。>>symsa;>>A=[a01;0a3;0a2];>>A^3ans=[a^3,2*a^2+2*a,a*(a+2)+4+3*a][0,a*(a^2+3*a)+3*a^2+6*a,12+a*(6+3*a)+9*a][0,a*(a^2+3*a)+2*a^2+4*a,8+a*(6+3*a)+6*a]注:當(dāng)矩陣中含有未知變量時(shí),需要用syms聲明未知變量,否則會(huì)出現(xiàn)“???Undefinedfunctionorvariable'a'”的錯(cuò)誤提示。列于表1.5中的其它的矩陣相關(guān)運(yùn)算函數(shù)將在第二章中做詳細(xì)介紹。表1.5矩陣的其它相關(guān)運(yùn)算函數(shù)名稱函數(shù)功能函數(shù)名稱函數(shù)功能rank(A)求A的秩rref(A)求A的行最簡(jiǎn)形eig(A)求A的特征值及特征向量inv(A)求A的逆矩陣poly(A)求A的特征多項(xiàng)式det(A)求A的行列式trace(A)求A的跡norm(A,1)求A的1范數(shù)cond(A)求A的條件數(shù)1.4M文件的編寫(xiě)與調(diào)用在初學(xué)階段,通常在命令窗口中輸入MATLAB語(yǔ)句。輸入一行命令后系統(tǒng)立即執(zhí)行該命令,這種方式稱為命令窗口下的命令行方式。用命令行方式編寫(xiě)的程序可讀性差且不易存儲(chǔ)。因而,對(duì)于相對(duì)復(fù)雜問(wèn)題的求解,一般先編寫(xiě)成可存儲(chǔ)的程序文件,然后在MATLAB中執(zhí)行該程序文件,這種方式稱為程序文件方式。由MATLAB語(yǔ)句組成的程序文件類型是M文件,M文件的擴(kuò)展名為m。M文件可分為兩種形式:一種是命令文件或腳本文件(scriptfile),是用戶為解決特定的問(wèn)題而編制的。另一種是函數(shù)文件(functionfile),通常被其它M文件調(diào)用。它們都是由若干MATLAB語(yǔ)句或命令組成的文件。要注意在編寫(xiě)M文件時(shí),M文件名一定以字母開(kāi)頭,且不要與內(nèi)置函數(shù)重名。1.4.1文件的操作MATLAB類型文件的打開(kāi)、關(guān)閉和保存等操作與Word非常相似。新建M文件的操作是在命令窗口中選擇FileNewM-File(見(jiàn)圖1.7),然后用鼠標(biāo)單擊M-File,打開(kāi)了MATLAB中的“M函數(shù)與M文件編輯器”(見(jiàn)圖1.8),用戶可以在該編輯窗口中編輯一個(gè)新的M文件。此編輯器還可以用來(lái)對(duì)已存在的M文件進(jìn)行編輯、調(diào)試和運(yùn)行。實(shí)際上,M文件也可用其它文本編輯器來(lái)建立、編輯。圖1.7新建M文件圖1.8M函數(shù)與M文件編輯器(編輯窗口)M文件有三種運(yùn)行方式:一是在命令窗口中直接鍵入文件名,按Enter鍵;二是在編輯窗口中打開(kāi)菜Tools,再單Run(快捷鍵F5);三是直接單擊工具欄中的Run圖標(biāo)。M文件保存的路徑一定要在其設(shè)置的搜索路徑上,否則MATLAB找不到此文件,導(dǎo)致無(wú)法運(yùn)行。后面的例題如果不特別說(shuō)明,都是以第一種方式運(yùn)行的。在M文件中,當(dāng)表達(dá)式后面接分號(hào)時(shí),與命令行方式的語(yǔ)句一樣,表達(dá)式的計(jì)算結(jié)果不顯示,但中間結(jié)果仍保存在內(nèi)存中。1.4.2命令文件命令文件(也稱腳本文件)的一般形式為:<文件名>.m,如a1.m,pp.m等都是合法的M文件名。命令文件的格式特征如下:(1)用clear,closeall等語(yǔ)句開(kāi)始,清除工作空間中原有的變量和圖形,以避免其它已執(zhí)行程序所殘留數(shù)據(jù)對(duì)當(dāng)前程序的影響。(2)前幾行通常是注釋行,用于對(duì)此程序用途的說(shuō)明,特別是在運(yùn)行時(shí)對(duì)用戶輸入數(shù)據(jù)的要求,更要敘述清楚,否則程序的可讀性將很差。這些注釋行必須以%開(kāi)始(這與C語(yǔ)言中的/**/類似),此后程序運(yùn)行時(shí)將忽略%后的該行內(nèi)容。MATLAB規(guī)定可以通過(guò)輸入“help文件名”來(lái)輸出該文件中的所有注釋。(3)程序的主體。如果文件中有全局變量,即可以在子程序即函數(shù)文件和主程序命令文件中共用的變量,應(yīng)在程序的起始部分注明。其語(yǔ)句是global變量名1變量名2……為了改善程序的可讀性,應(yīng)注重語(yǔ)句的縮進(jìn)及與end的對(duì)應(yīng)關(guān)系。在程序中有時(shí)誤操作輸入中文符號(hào),可能導(dǎo)致程序無(wú)法運(yùn)行,MATLAB用紅色標(biāo)注有問(wèn)題的語(yǔ)句。因而在輸入程序中,要注意中英文的切換。(4)命令文件常會(huì)調(diào)用用戶編寫(xiě)的函數(shù)或者系統(tǒng)自帶的函數(shù)。例1.18編寫(xiě)列出區(qū)間上的素?cái)?shù)的程序。%列出素?cái)?shù)的程序exam01_18.mclear,closeallM=input('輸入M的值M='),N=input('輸入N的值N=')x=M:N;%列出從M到N的全部自然數(shù)foru=2:sqrt(N)%列出除數(shù)(最大到N的平方根)n=find(rem(x,u)==0&x~=u);%找到不是素?cái)?shù)的序號(hào)x(n)=[];%將其刪除掉end,x%循環(huán)結(jié)束,顯示結(jié)果>>exam01_18%執(zhí)行exam01_18.m,輸入5和20x=57111317191.4.3函數(shù)文件MATLAB提供了許多函數(shù)文件,且隨著版本的更新不斷擴(kuò)充。MATLAB軟件的大部分功能都是來(lái)自其建立的函數(shù)集,利用這些函數(shù)可以使用戶方便地解決各種問(wèn)題。函數(shù)文件的一般形式為:function<因變量>=<函數(shù)名>(<自變量>)M函數(shù)文件可以有多個(gè)自變量和多個(gè)因變量,當(dāng)有多個(gè)因變量時(shí)用[]括起來(lái)。函數(shù)文件中的變量除非用global聲明,否則均為局部變量,不保存在工作空間中。下面看MATLAB自帶的求素?cái)?shù)的M文件,通過(guò)其幫助很容易找到該函數(shù)為primes.m。>>typeprimes輸出:functionp=primes(n)%PRIMESGeneratelistofprimenumbers.%PRIMES(N)isarowvectoroftheprimenumberslessthanor%equaltoN.Aprimenumberisonethathasnofactorsother%than1anditself.%%ClasssupportforinputN:%float:double,single%%SeealsoFACTOR,ISPRIME.%Copyright1984-2004TheMathWorks,Inc.%$Revision:$$Date:2004/07/0517:02:09$iflength(n)~=1error('MATLAB:primes:InputNotScalar','Nmustbeascalar');endifn<2,p=zeros(1,0,class(n));return,endp=1:2:n;q=length(p);p(1)=2;fork=3:2:sqrt(n)ifp((k+1)/2)p(((k*k+1)/2):k:q)=0;endendp=p(p>0);注:函數(shù)文件是以function開(kāi)始,后跟函數(shù)名(在保存時(shí),會(huì)默認(rèn)為M文件的文件名,不要修改為其它名稱,當(dāng)M文件名與function后的函數(shù)名不一致時(shí),調(diào)用函數(shù)文件時(shí)常會(huì)發(fā)生錯(cuò)誤)。另外,函數(shù)文件通常都有變量的輸入輸出。下面來(lái)編寫(xiě)函數(shù)文件。例1.19設(shè)方陣可逆,編寫(xiě)求的M函數(shù)文件。%編寫(xiě)exam01_19.m用于求矩陣A的四個(gè)值function[da,a2,inva,traa]=comp4(A)da=det(A) %da為矩陣A的行列式a2=A^2 %a2為矩陣A的平方inva=inv(A) %inva為矩陣A的逆矩陣traa=A' %traa為矩陣A的轉(zhuǎn)置因?yàn)楹瘮?shù)的輸入變量為A,所以在調(diào)用前先給A賦值,然后才能對(duì)編寫(xiě)的M文件進(jìn)行調(diào)用。>>A=[1,2;5,8];%輸入矩陣A>>exam01_19%調(diào)用exam01_19.m函數(shù)計(jì)算矩陣的da=-2a2=11184574inva=-4.00001.00002.5000-0.5000traa=15281.5MATLAB編程在解決實(shí)際問(wèn)題時(shí),往往需要編寫(xiě)較復(fù)雜的程序,下面將介紹MATLAB編程涉及到的內(nèi)容。1.5.1MATLAB常用的程序控制語(yǔ)句程序控制結(jié)構(gòu)有三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。任何復(fù)雜的程序都由這三種基本結(jié)構(gòu)組成。1.順序結(jié)構(gòu)按排列順序依次執(zhí)行各條語(yǔ)句,直到程序的最后,這是一種最簡(jiǎn)單的程序結(jié)構(gòu),一般涉及數(shù)據(jù)的輸入、輸出和計(jì)算等。1)數(shù)據(jù)的輸入函數(shù):input格式:A=input(‘提示信息’)其中,提示信息為字符串,此格式通過(guò)提示信息輸入A的值,輸入的A可以是數(shù)或者字符串,輸入字符串時(shí)必須帶單引號(hào)。例1.20輸入A的值和name的值。>>A=input('PleaseinputA:')%要求用戶輸入A的值(可以是數(shù)或字符串)PleaseinputA:1000%輸入1000A=1000>>name=input('What''syourname?')What'syourname?'MichaelJordan'%輸入'MichaelJordan'name=MichaelJordan2)數(shù)據(jù)的顯示函數(shù):disp格式:disp(X)其中,X是數(shù)值矩陣或字符串,該格式用于顯示變量X的值,且一次只能顯示一個(gè)變量。例1.21顯示A的值。>>A='Hello,Tom!';>>disp(A)Hello,Tom!3)數(shù)據(jù)的格式化輸出若要求數(shù)字以某種形式輸出,則需要對(duì)數(shù)據(jù)的輸出進(jìn)行格式化。除了用前面介紹的format進(jìn)行控制外,還可以用fprintf來(lái)控制輸出。函數(shù):fprintf格式:fprintf(fid,format,variables)其中,fid為文件句柄,若缺省,則輸出到屏幕上;format用來(lái)指定變量variables輸出時(shí)采用的格式,包含普通字符串、格式字符串(見(jiàn)表1.6)、轉(zhuǎn)義字符(見(jiàn)表1.7)。表1.6格式字符串%d整數(shù)%f實(shí)數(shù):小數(shù)形式%e實(shí)數(shù):科學(xué)計(jì)數(shù)法形式%s輸出字符串表1.7轉(zhuǎn)義字符\n換行\(zhòng)t制表符\b退格\\反斜杠%%百分號(hào)例1.22格式化輸出變量。>>a='Hello';>>b=2.4;>>c=100*pi;>>fprintf('a=%s,b=%f,c=%e\n',a,b,c)a=Hello,b=2.400000,c=3.141593e+0022.選擇結(jié)構(gòu)1)條件語(yǔ)句if條件語(yǔ)句有3種形式:形式1:if表達(dá)式語(yǔ)句序列end說(shuō)明:如果表達(dá)式的值為真,就執(zhí)行語(yǔ)句序列,否則執(zhí)行end后面的語(yǔ)句。形式2:if表達(dá)式 語(yǔ)句序列1else語(yǔ)句序列2end說(shuō)明:如果表達(dá)式的值為真,就執(zhí)行語(yǔ)句序列1,否則執(zhí)行語(yǔ)句序列2。形式3:if表達(dá)式1 語(yǔ)句序列1elseif表達(dá)式2 語(yǔ)句序列2else 語(yǔ)句序列nend說(shuō)明:如果表達(dá)式1的值為真,就執(zhí)行語(yǔ)句序列1,然后跳出if語(yǔ)句;否則判斷表達(dá)式2,如果表達(dá)式2的值為真,就執(zhí)行語(yǔ)句序列2,然后跳出if語(yǔ)句;否則依此類推,一直進(jìn)行下去;如果所有的表達(dá)式的值都為假,就執(zhí)行else后面的語(yǔ)句序列n,然后跳出if語(yǔ)句。例1.23編寫(xiě)分段函數(shù)的M函數(shù)文件,并計(jì)算函數(shù)值和。解:%exam01_23.mfunctiony=exam01_23(x)ifx<1y=xelseifx<=10 y=2*x-1elseifx<=30 y=3*x-11elsey=sin(x)+log(x)end%調(diào)用exam01_23.m函數(shù)文件計(jì)算函數(shù)值>>result=[exam01_23(0.2),exam01_23(2),exam01_23(30),exam01_23(10*pi)]result=0.20003.000079.00003.4473所以和。2)多向條件語(yǔ)句switch-case-end分支switch表達(dá)式case常量表達(dá)式1語(yǔ)句塊1case常量表達(dá)式2語(yǔ)句塊2case{常量表達(dá)式n,常量表達(dá)式n+1,…}語(yǔ)句塊notherwise語(yǔ)句塊n+1end說(shuō)明:switch語(yǔ)句后面的表達(dá)式可以為任何類型;每個(gè)case后面可以是多個(gè)不同類型的常量表達(dá)式;與if語(yǔ)句不同,各個(gè)case和otherwise語(yǔ)句出現(xiàn)的先后順序不會(huì)影響程序運(yùn)行的結(jié)果。例1.24根據(jù)輸入月份來(lái)判斷季節(jié)。%編寫(xiě)exam01_24.mformonth=1:12 switchmonth case{3,4,5} season='Spring'; case{6,7,8} season='Summer'; case{9,10,11} season='Autumn'; case{12,1,2} season='Winter'; end fprintf('Month%d===>%s.\n',month,season); end%執(zhí)行exam01_24.m>>exam01_24Month1===>Winter.Month2===>Winter.Month3===>Spring.Month4===>Spring.Month5===>Spring.Month6===>Summer.Month7===>Summer.Month8===>Summer.Month9===>Autumn.Month10===>Autumn.Month11===>Autumn.Month12===>Winter.注:MATLAB的switch指令和C語(yǔ)言的switch指令略有差別:在C語(yǔ)言的switch中,每個(gè)case后需加上break以跳出該switch,而在MATLAB中則不需要。3.循環(huán)結(jié)構(gòu)1)for循環(huán)fori=表達(dá)式語(yǔ)句1……….語(yǔ)句nend說(shuō)明:表達(dá)式是一個(gè)向量,可以是m:n,m:s:n,也可以是字符串、字符串矩陣等;for循環(huán)的循環(huán)體中,可以多次嵌套for循環(huán)和其它的結(jié)構(gòu)體。例1.25寫(xiě)出Hilbert矩陣。%exam01_25.mn=input('n='),formatratfori=1:n,forj=1:n,h(i,j)=1/(i+j-1);end,end,h運(yùn)行后,會(huì)提示輸入n,輸入5,得到如下的運(yùn)行結(jié)果:h=11/21/31/41/51/21/31/41/51/61/31/41/51/61/71/41/51/61/71/81/51/61/71/81/9上面的代碼顯然可讀性很差,注意縮進(jìn)對(duì)齊后為:n=input('n='),formatratfori=1:nforj=1:nh(i,j)=1/(i+j-1);endendh此時(shí)代碼的邏輯結(jié)構(gòu)就清晰了。例1.26利用for循環(huán)求1~100的整數(shù)之和。%建立M文件exam01_26.msum=0;fori=1:100sum=sum+i;endsum%執(zhí)行M文件exam01_26.m。>>exam01_26sum=50502)while循環(huán)while表達(dá)式循環(huán)體語(yǔ)句end說(shuō)明:表達(dá)式一般是由關(guān)系運(yùn)算符、邏輯運(yùn)算符及其它運(yùn)算符組成,用來(lái)判斷循環(huán)要繼續(xù)進(jìn)行還是要停止。若表達(dá)式的值非零,即邏輯為“真”,程序就繼續(xù)循環(huán);若表達(dá)式的值為零,就停止循環(huán)。例1.27利用while循環(huán)來(lái)計(jì)算1!+2!+?+50!的值。%建立M文件exam01_27.msum=0;i=1;whilei<51prd=1;j=1;whilej<=iprd=prd*j;j=j+1;endsum=sum+prd;i=i+1;enddisp(‘1!+2!+...+50!的和為:’)sum%執(zhí)行命令文件exam01_27.m>>exam01_271!+2!+...+50!的和為:sum=2.5613e+018即得到1!+2!+?+50!的值為。4.其它控制語(yǔ)句(1)函數(shù)break用于終止循環(huán)的執(zhí)行,即跳出最內(nèi)層循環(huán)(2)函數(shù)continue用于結(jié)束本次循環(huán),進(jìn)行下一次循環(huán),break和continue一般與if語(yǔ)句配合使用。(3)函數(shù)return用于退出正在運(yùn)行的腳本或函數(shù),通常用在函數(shù)文件中。MATLAB編程的內(nèi)容涉及很廣,MATLAB也提供了一些現(xiàn)成函數(shù)供用戶直接調(diào)用,詳細(xì)請(qǐng)參閱幫助系統(tǒng)。1.5.2MATLAB編程應(yīng)用前面介紹了MATLAB的基本控制流程語(yǔ)句,下面將介紹MATLAB的編程應(yīng)用。例1.28(猜數(shù)游戲)請(qǐng)利用計(jì)算機(jī)隨機(jī)產(chǎn)生區(qū)間[0,100]上的一個(gè)整數(shù),然后猜測(cè)所產(chǎn)生的這個(gè)數(shù),根據(jù)猜測(cè)的情況給出不同的提示。如果猜測(cè)的數(shù)大于產(chǎn)生的數(shù),則顯示Higher,小于則顯示Lower,等于則顯示Youwon!,同時(shí)退出游戲,用戶最多有7次機(jī)會(huì)。編寫(xiě)猜數(shù)游戲的程序。%猜數(shù)游戲exam01_28.mclear;x=round(100*rand);%隨機(jī)產(chǎn)生區(qū)間[0,100]上的一個(gè)整數(shù)n=7;%7次機(jī)會(huì)test=1;disp(['歡迎參加猜數(shù)游戲!你共有',num2str(n),'次機(jī)會(huì)']);disp('請(qǐng)輸入一個(gè)0到100之間的整數(shù)');fork=1:nguess=input('Enteryourguess:');ifguess<xdisp('Lower');elseifguess>xdisp('Higher');elsedisp('Youwon!');test=0;break;endn=n-1;disp(['你還有',num2str(n),'次機(jī)會(huì)!']);endiftest==1disp('Youlost!')end%執(zhí)行exam01_28.m>>exam01_28歡迎參加猜數(shù)游戲!你共有7次機(jī)會(huì)請(qǐng)輸入一個(gè)0到100之間的整數(shù)Enteryourguess:50Higher你還有6次機(jī)會(huì)!Enteryourguess:25Higher你還有5次機(jī)會(huì)!Enteryourguess:12Lower你還有4次機(jī)會(huì)!Enteryourguess:19Lower你還有3次機(jī)會(huì)!Enteryourguess:22Lower你還有2次機(jī)會(huì)!Enteryourguess:24Lower你還有1次機(jī)會(huì)!Enteryourguess:23Youwon!從上面的猜數(shù)過(guò)程可見(jiàn),是否能猜對(duì)似乎需要碰運(yùn)氣。但實(shí)際還是有章可循的。上面的猜數(shù)過(guò)程利用的是數(shù)據(jù)結(jié)構(gòu)里的折半查找算法。即由于該數(shù)介于0和100之間,因此第一次折半為(0+100)/2=50。輸入50,如果提示high,意味著數(shù)在51-100之間,繼續(xù)折半,就可以找到這個(gè)數(shù)。如果提示low,意味著要猜的數(shù)在1-49之間,繼續(xù)折半,就可以找到這個(gè)數(shù)。如果不是7次,而是6次,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論