數(shù)模競(jìng)賽賽前培訓(xùn)_第1頁
數(shù)模競(jìng)賽賽前培訓(xùn)_第2頁
數(shù)模競(jìng)賽賽前培訓(xùn)_第3頁
數(shù)模競(jìng)賽賽前培訓(xùn)_第4頁
數(shù)模競(jìng)賽賽前培訓(xùn)_第5頁
已閱讀5頁,還剩138頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

歡送大家參加2021年

全國大學(xué)生數(shù)學(xué)建模競(jìng)賽賽前培訓(xùn)1張力寧2021年全國大學(xué)生數(shù)學(xué)建模競(jìng)賽賽前培訓(xùn)講座數(shù)模競(jìng)賽簡(jiǎn)介

MATLAB編程根底XAWL2主要內(nèi)容全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介1對(duì)你的要求與你的收獲2

MATLAB編程基礎(chǔ)3MATLAB繪圖43一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介什么是數(shù)學(xué)模型?引例:自由落體運(yùn)動(dòng)xO根據(jù)牛頓第二定律,有假設(shè):忽略阻力不計(jì),初速度解得:假設(shè)假設(shè):阻力與速度成正比,那么有解得:4一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介什么是數(shù)學(xué)模型?數(shù)學(xué)模型是針對(duì)某種事物系統(tǒng)的特征或數(shù)量依存關(guān)系,通過抽象和簡(jiǎn)化,采用數(shù)學(xué)語言,概括地或近似地表述出的一種數(shù)學(xué)結(jié)構(gòu),這種數(shù)學(xué)結(jié)構(gòu)是借助于數(shù)學(xué)符號(hào)刻劃出來的某種系統(tǒng)的純關(guān)系結(jié)構(gòu)。建立數(shù)學(xué)模型的根本要求

獲得數(shù)學(xué)模型、求解該模型并得到結(jié)論以及驗(yàn)證結(jié)論是否正確的全過程稱為數(shù)學(xué)建模。

真實(shí)完整、簡(jiǎn)明實(shí)用、適應(yīng)變化。5一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介數(shù)學(xué)建模的根本原那么1、簡(jiǎn)化原那么現(xiàn)實(shí)世界的原型都是具有多因素、多變量、多層次的比較復(fù)雜的系統(tǒng),對(duì)原型進(jìn)行一定的簡(jiǎn)化即抓住主要矛盾,數(shù)學(xué)模型應(yīng)比原型簡(jiǎn)化,數(shù)學(xué)模型自身也應(yīng)是“最簡(jiǎn)單〞的。2、可推導(dǎo)原那么由數(shù)學(xué)模型的研究可以推導(dǎo)出一些確定的結(jié)果,如果建立的數(shù)學(xué)模型在數(shù)學(xué)上是不可推導(dǎo)的,得不到確定的可以應(yīng)用于原型的結(jié)果,這個(gè)數(shù)學(xué)模型就是無意義的。3、反映性原那么數(shù)學(xué)模型實(shí)際上是人對(duì)現(xiàn)實(shí)世界的一種反映形式,因此數(shù)學(xué)模型和現(xiàn)實(shí)世界的原型就應(yīng)有一定的“相似性〞,抓住與原型相似的數(shù)學(xué)表達(dá)式或數(shù)學(xué)理論就是建立數(shù)學(xué)模型的關(guān)鍵性技巧。61〕對(duì)某個(gè)實(shí)際問題進(jìn)行觀察、分析(重點(diǎn)是抓住主要方面);2〕對(duì)實(shí)際問題進(jìn)行必要的抽象、簡(jiǎn)化,作出合理的假設(shè)(往往是很不容易的);3〕確定要建立的模型中的變量和參數(shù);4〕根據(jù)某種“規(guī)律〞(的各學(xué)科中的定律,甚至是經(jīng)驗(yàn)的規(guī)律),建立變量和參數(shù)間確定的數(shù)學(xué)關(guān)系;一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介數(shù)學(xué)建模的主要步驟75〕解析或近似地求解該數(shù)學(xué)問題.這往往涉及復(fù)雜的數(shù)學(xué)理論和方法,近似方法和算法;6〕數(shù)學(xué)結(jié)果能否展示、解釋甚至預(yù)測(cè)實(shí)際問題中出現(xiàn)的現(xiàn)象,或用某種方法〔例如,歷史數(shù)據(jù)、實(shí)驗(yàn)數(shù)據(jù)或現(xiàn)場(chǎng)測(cè)試數(shù)據(jù)等〕來驗(yàn)證結(jié)果是否正確;7〕如果第6步的結(jié)果是肯定的,那么就可以付之試用;如果是否認(rèn)的,那就要回到第1–6步進(jìn)行仔細(xì)分析,重復(fù)上述建模過程。一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介數(shù)學(xué)建模的主要步驟8數(shù)學(xué)模型涉及的領(lǐng)域千差萬別,建模的方法也多種多樣,從不同的角度可對(duì)數(shù)學(xué)模型進(jìn)行各種分類,常見的有:按模型的應(yīng)用領(lǐng)域分類

數(shù)學(xué)建模的分類一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介9按建模的數(shù)學(xué)方法分類一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介數(shù)學(xué)建模的分類10按模型的表現(xiàn)特性分類

考慮隨機(jī)因素的影響考慮時(shí)間因素的影響模型中的變量為離散還是連續(xù)的一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介數(shù)學(xué)建模的分類11

一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介全國大學(xué)生數(shù)學(xué)建模競(jìng)賽的開展1985年開始由美國工業(yè)與數(shù)學(xué)學(xué)會(huì)舉辦數(shù)學(xué)建模競(jìng)賽(MCM).1989年我國大學(xué)生開始參加MCM.1990年上海率先舉辦了“上海市大學(xué)生數(shù)學(xué)模型競(jìng)賽〞1992年,教育部高教司和中國工業(yè)與應(yīng)用數(shù)學(xué)協(xié)會(huì)聯(lián)合舉辦“中國大學(xué)生數(shù)學(xué)建模競(jìng)賽〔CUMCM)〞參賽規(guī)模從十年前10省市70多所院校300多隊(duì)增長(zhǎng)到2021年33個(gè)省、市、自治區(qū)以及香港特別行政區(qū)1137所院校15042個(gè)隊(duì),45000多人參加。12

一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介全國大學(xué)生數(shù)學(xué)建模競(jìng)賽的開展參賽學(xué)校數(shù):1995年:259所,2021年:1137所參賽隊(duì)數(shù):1995年:1234隊(duì),2021年:15042隊(duì)13

一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介近年來全國大學(xué)生數(shù)學(xué)建模競(jìng)賽題目2000年A題:DNA序列分類

B題:鋼管訂購和運(yùn)輸2001年A題:血管的三維重建

B題:公交車調(diào)度2002年A題:車燈線光源的優(yōu)化設(shè)計(jì)

B題:彩票中的數(shù)學(xué)2003年A題:SARS的傳播

B題:露天礦生產(chǎn)的車輛安排2004年A題:奧運(yùn)會(huì)臨時(shí)超市網(wǎng)點(diǎn)設(shè)計(jì)

B題:電力市場(chǎng)的輸電阻塞管理14

一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介近年來全國大學(xué)生數(shù)學(xué)建模競(jìng)賽題目2005年A題:長(zhǎng)江水質(zhì)的評(píng)價(jià)和預(yù)測(cè)B題:DVD在線租賃2006年A題:出版社的資源配置B題:艾滋病療法的評(píng)價(jià)及療效的預(yù)測(cè)2007年2007年A題:中國人口增長(zhǎng)預(yù)測(cè)B題:乘公交,看奧運(yùn)2021年A題:數(shù)碼相機(jī)定位B題:高等教育學(xué)費(fèi)標(biāo)準(zhǔn)探討2021年A題:制動(dòng)器試驗(yàn)臺(tái)的控制方法分析B題:眼科病床的合理安排15一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介數(shù)學(xué)建模論文的一般結(jié)構(gòu)摘要問題重述與分析問題假設(shè)符號(hào)說明模型建立與求解結(jié)果分析模型檢驗(yàn)?zāi)P屯茝V模型評(píng)價(jià)參考文獻(xiàn)和附錄16一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介全國大學(xué)生數(shù)學(xué)建模競(jìng)賽的參賽形式開卷形式的通訊比賽,可以使用任意圖書資料和互聯(lián)網(wǎng),自由的收集資料、調(diào)查研究。由三名學(xué)生組成一隊(duì),各參賽隊(duì)任選一競(jìng)賽題。在三天時(shí)間內(nèi),團(tuán)結(jié)合作、奮力攻關(guān),完成一篇數(shù)學(xué)建模全過程的論文。沒有事先設(shè)定的標(biāo)準(zhǔn)答案,多名專家從以下幾個(gè)方面來綜合評(píng)定〔1〕問題分析及假設(shè)的合理性;〔2〕模型的正確性和創(chuàng)造性;〔3〕運(yùn)算結(jié)果的正確性;〔4〕結(jié)論和討論的科學(xué)性;〔5〕論文表達(dá)的清晰性等。競(jìng)賽地點(diǎn)是學(xué)生所在院校,競(jìng)賽時(shí)間是每年9月第三周周五開始的三天時(shí)間,共計(jì)72小時(shí),即第一天8:00開題,第四天8:00交卷。17一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介全國大學(xué)生數(shù)學(xué)建模競(jìng)賽的評(píng)獎(jiǎng)與公布全國大學(xué)生數(shù)學(xué)建模競(jìng)賽以各個(gè)省、自治區(qū)、直轄市、特別行政區(qū)為分賽區(qū),首先由各分賽區(qū)組織專家評(píng)閱,評(píng)出本賽區(qū)的一、二、三等獎(jiǎng)〔陜西省已于2021年取消省級(jí)三等獎(jiǎng)〕,并按照一定比例選拔出局部?jī)?yōu)秀論文報(bào)送全國組委會(huì),由全國組委會(huì)組織各賽區(qū)的專家進(jìn)行集中評(píng)閱,評(píng)出國家級(jí)一、二等獎(jiǎng)〔獲獎(jiǎng)率分別為2%和6%〕,對(duì)全國范圍內(nèi)表現(xiàn)最突出的一個(gè)競(jìng)賽隊(duì)伍授予獎(jiǎng)杯。2021年全國組委會(huì)還從全國一等獎(jiǎng)獲獎(jiǎng)?wù)撐闹性u(píng)選出“2021高教社杯全國大學(xué)生數(shù)學(xué)建模競(jìng)賽MATLAB創(chuàng)新獎(jiǎng)〞兩份。選拔一些優(yōu)秀論文刊登在每年第一期的?工程數(shù)學(xué)學(xué)報(bào)?上。18高校、企業(yè)對(duì)數(shù)學(xué)建模競(jìng)賽的認(rèn)可

IBM中國研究中心-招聘條件Positiontitle:BusinessOptimization(BJ)

1.Backgroundinindustrialengineering,operationsresearch,mathematics,ArtificialIntelligence,managementscienceetc.

2.Knowledgeinnetworkdesign,jobscheduling,dataanalysis,simulationandoptimization

3.Awardinmathematicalcontestinmodelingisaplus

4.Experienceinindustryisaplus

5.Experienceineclipseorprogrammingmodel/architecturedesignisaplus

--一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介19企業(yè)對(duì)數(shù)學(xué)建模人才的需求

一、全國大學(xué)生數(shù)學(xué)建模競(jìng)賽簡(jiǎn)介20

二、對(duì)你的要求與你的收獲對(duì)你的要求精神狀態(tài)與學(xué)習(xí)紀(jì)律方面

對(duì)數(shù)學(xué)建模的學(xué)習(xí)興趣和熱情

持之以恒的工作態(tài)度積極主動(dòng)的學(xué)習(xí)態(tài)度與精益求精的研究精神勤于思考、勇于創(chuàng)新的學(xué)習(xí)習(xí)慣富于團(tuán)隊(duì)精神和集體榮譽(yù)感21

二、對(duì)你的要求與你的收獲對(duì)你的要求知識(shí)根底與能力要求良好的數(shù)學(xué)根底〔高數(shù)、線性代數(shù)、概率統(tǒng)計(jì)等〕熟練的計(jì)算機(jī)操作水平,熟練使用office軟件一定的計(jì)算機(jī)高級(jí)語言編程根底熟練使用互聯(lián)網(wǎng)搜索參考文獻(xiàn)快速獲取、消化新知識(shí),并能學(xué)以致用的自學(xué)能力嚴(yán)謹(jǐn)、簡(jiǎn)潔、清晰的文字表達(dá)能力22

二、對(duì)你的要求與你的收獲你的收獲學(xué)習(xí)數(shù)學(xué)、運(yùn)用數(shù)學(xué)解決實(shí)際問題的能力將得到提高對(duì)計(jì)算機(jī)常用軟件的操作,尤其是對(duì)Office軟件的操作將更加熟練利用MATLAB等數(shù)學(xué)軟件編程解決實(shí)際問題的能力將得到質(zhì)的飛躍能夠更加熟練地使用互聯(lián)網(wǎng)搜索參考文獻(xiàn)自學(xué)能力與水平將得到明顯提高數(shù)學(xué)根底將得到明顯加強(qiáng)23

二、對(duì)你的要求與你的收獲你的收獲體驗(yàn)科研工作的全過程,對(duì)今后的畢業(yè)設(shè)計(jì)乃至進(jìn)一步深造的學(xué)位論文寫作將非常有利體會(huì)團(tuán)隊(duì)精神在協(xié)作攻關(guān)搞研究中的重要性廣泛了解多學(xué)科知識(shí),自信心明顯增強(qiáng),對(duì)自己的期望和要求也更高??萍颊撐牡膶懽鲿?huì)從入門到不斷提高學(xué)會(huì)與他人交流學(xué)習(xí)體會(huì)、交流對(duì)問題的看法,準(zhǔn)確表述自己的觀點(diǎn),學(xué)會(huì)虛心接受別人合理的建議和意見,及時(shí)調(diào)整和改進(jìn)自身的缺乏24MATLAB是MATrixLABoratory〔“矩陣實(shí)驗(yàn)室〞〕的縮寫,是由美國MathWorks公司開發(fā)的集數(shù)值計(jì)算、符號(hào)計(jì)算和圖形可視化三大根本功能于一體的,功能強(qiáng)大、操作簡(jiǎn)單的語言。是國際公認(rèn)的優(yōu)秀數(shù)學(xué)應(yīng)用軟件之一。MATLAB的開展過程20世紀(jì)80年代初期,CleveMoler與JohnLittle等利用C語言開發(fā)了MATLAB語言1984年正式成立Mathworks公司,把MATLAB語言推向市場(chǎng),并開始了對(duì)MATLAB工具箱等的開發(fā)設(shè)計(jì)1993年推出了面向PC的MATLAB4.0,1997年推出了MATLAB5三、MATLAB編程根底25隨后,MATLAB不斷推出新版本。目前最新的版本是2021年11月MATLABR2021b,它包含了Win32位版和WIn64位版。隨著版本的不斷升級(jí),它在數(shù)值計(jì)算及符號(hào)計(jì)算功能上得到了進(jìn)一步完善。MATLAB已經(jīng)開展成為多學(xué)科、多種工作平臺(tái)的功能強(qiáng)大的大型軟件。在歐美等高校,MATLAB已經(jīng)成為線性代數(shù)、自動(dòng)控制理論、概率論及數(shù)理統(tǒng)計(jì)、數(shù)字信號(hào)處理、時(shí)間序列分析、動(dòng)態(tài)系統(tǒng)仿真等高級(jí)課程的根本教學(xué)工具,是攻讀學(xué)位的大學(xué)生、碩士生、博士生必須掌握的根本技能。三、MATLAB編程根底26MATLAB的主要特點(diǎn)運(yùn)算符和庫函數(shù)極其豐富,語言簡(jiǎn)潔,編程效率高,既具有結(jié)構(gòu)化的控制語句〔如for循環(huán)、while循環(huán)、break語句、if語句和switch語句〕,又有面向?qū)ο蟮木幊烫匦?。圖形功能強(qiáng)大。它既包括對(duì)二維和三維數(shù)據(jù)可視化、圖像處理、動(dòng)畫制作等高層次的繪圖命令,也包括可以修改圖形及編制完整圖形界面的、低層次的繪圖命令。功能強(qiáng)大的工具箱。工具箱可分為兩類:功能性工具箱和學(xué)科性工具箱。易于擴(kuò)充。除內(nèi)部函數(shù)外,所有MATLAB的核心文件和工具箱文件都是可讀可改的源文件。三、MATLAB編程根底27

一、MATLAB的安裝與啟動(dòng)MATLAB對(duì)硬件的要求CPU要求:PentiumII、PentiumIII、AMDAthlon或者更高;光驅(qū):8倍速以上;內(nèi)存:至少64MB,但推薦128MB以上;硬盤:視安裝方式不同要求不統(tǒng)一,但至少留1GB用于安裝;顯卡:8位;MATLAB對(duì)軟件的要求各種微軟的Windows操作系統(tǒng)都可以;AdobeAcrobatReader用于閱讀幫助文件MATLAB的安裝運(yùn)行MATLAB光盤上的安裝文件即可三、MATLAB編程根底28MATLAB的桌面系統(tǒng)命令窗口工作空間瀏覽器歷史命令窗口路徑瀏覽器菜單三、MATLAB編程根底29窗口名稱功能命令窗口執(zhí)行MATLAB所有的函數(shù)和命令,實(shí)現(xiàn)即時(shí)的人機(jī)交互歷史命令窗口保留自安裝時(shí)起所有命令的歷史記錄,并標(biāo)明使用時(shí)間,以方便使用者的查詢。組件平臺(tái)(LaunchPad)說明用戶所擁有的Mathworks公司產(chǎn)品的工具包、演示以及幫助信息。當(dāng)選中該窗口中的某個(gè)組件之后,可以打開相應(yīng)的窗口工具包。路徑瀏覽器顯示或改變當(dāng)前目錄,還可以顯示當(dāng)前目錄下的文件,包括文件名、文件類型、最后修改時(shí)間以及該文件的說明信息等并提供搜索功能。三、MATLAB編程根底MATLAB的桌面系統(tǒng)30窗口名稱功能幫助瀏覽器為MATLAB的操作方法和各種函數(shù)提供幫助文件工作空間瀏覽器顯示所有目前保存在內(nèi)存中的MATLAB變量的變量名、數(shù)據(jù)結(jié)構(gòu)、字節(jié)數(shù)以及類型,而不同的變量類型分別對(duì)應(yīng)不同的變量名圖標(biāo)。。數(shù)組編輯器(ArrayEditor)按照用戶選定的格式顯示或修改內(nèi)存中所有變量的類型、規(guī)格及當(dāng)前值M文件編輯調(diào)試器

M文件編輯以及調(diào)試的窗口,供編程及調(diào)試程序使用MATLAB的桌面系統(tǒng)三、MATLAB編程根底31MATLAB的命令窗口在MATLAB命令窗口中,命令的實(shí)現(xiàn)不僅可以由菜單操作來實(shí)現(xiàn),也可以由命令行操作來執(zhí)行

命令行操作便于人機(jī)交互,通過對(duì)命令行操作,防止了編程序的麻煩。但運(yùn)算的結(jié)果不保存,復(fù)雜的算法還是在M-文件調(diào)試編輯器中編寫程序完成。例如:在命令窗口中輸入sin(pi/5),然后單擊回車鍵,那么會(huì)得到該表達(dá)式的值sin〔pi/5〕ans=0.5878三、MATLAB編程根底32當(dāng)需要處理相當(dāng)繁瑣的計(jì)算時(shí),可能在一行之內(nèi)無法寫完表達(dá)式,可以換行表示,此時(shí)需要使用續(xù)行符“……〞否那么MATLAB將只計(jì)算一行的值,而不理會(huì)該行是否已輸入完畢。例如:sin(1/9*pi)+sin(2/9*pi)+sin(3/9*pi)+……sin(4/9*pi)+sin(5/9*pi)+sin(6/9*pi)+……sin(7/9*pi)+sin(8/9*pi)+sin(9/9*pi)+……ans=5.6713在MATLAB命令行操作中,“↑〞可用于調(diào)出前一個(gè)命令行,“↓〞可調(diào)出后一個(gè)命令行,三、MATLAB編程根底33MATLAB的M文件調(diào)試編輯器——編寫程序的窗口程序名斷點(diǎn)調(diào)試文本運(yùn)行行號(hào)三、MATLAB編程根底34在此窗口中可以逐行輸入程序語句,也可以在每個(gè)語句的末尾以“;〞表示結(jié)束。MATLAB的M文件調(diào)試編輯器中重要的菜單【File〔文件〕】:包括新建〔New〕,翻開〔Open〕,存盤〔Save〕,另存為〔Saveas〕等文件操作命令?!綯ext〔文本〕】:包括設(shè)置為注釋〔Comment〕,取消注釋特性〔Uncomment〕,減少縮進(jìn)〔DecreaseIndent〕增加縮進(jìn)〔IncreaseIndent〕等命令。三、MATLAB編程根底35【Debug〔調(diào)試〕】:包括步進(jìn)執(zhí)行語句〔Step〕,進(jìn)入子函數(shù)執(zhí)行程序〔Stepin〕,跳出子函數(shù)執(zhí)行程序〔Stepout〕,從斷點(diǎn)開始繼續(xù)執(zhí)行程序〔Continue〕,退出調(diào)試形式〔ExitDebugMode〕?!綛reakpoints〔斷點(diǎn)〕】:包括設(shè)置/取消當(dāng)前斷點(diǎn)〔Set/ClearBreakpoint〕,取消所有斷點(diǎn)〔ClearAllBreakpoints〕,出錯(cuò)時(shí)中斷執(zhí)行程序〔StopIfError〕,警告時(shí)中斷執(zhí)行程序〔WarningIfError〕,出現(xiàn)空值或數(shù)值超界時(shí)中斷執(zhí)行程序〔StopIfNaNorInf〕。MATLAB的M文件調(diào)試編輯器中重要的菜單三、MATLAB編程根底36參加斷點(diǎn)是調(diào)試程序的常用方法三、MATLAB編程根底37

二、MATLAB的變量MATLAB的數(shù)據(jù)類型主要包括:數(shù)字、字符串、矩陣、單元型數(shù)據(jù)及結(jié)構(gòu)型數(shù)據(jù)等變量與常量的命名〔1〕變量名區(qū)分大小寫?!?〕變量名長(zhǎng)度不能超過31位,〔3〕變量名以字母開頭,可以是字母、數(shù)字、下劃線組成,但不能使用標(biāo)點(diǎn)。變量的作用域:局部變量和全局變量,全局變量必須聲明為Global,一般用大寫字母命名。三、MATLAB編程根底38MATLAB中的常量常量表示數(shù)值

pi圓周率

eps浮點(diǎn)運(yùn)算的相對(duì)精度

inf正無窮大

NaN表示不定值

realmax最大的浮點(diǎn)數(shù)

i,j虛數(shù)單位在MATLAB語言中,定義變量時(shí)應(yīng)防止與常量名重復(fù)三、MATLAB編程根底39數(shù)字變量的運(yùn)算及顯示格式MALAB是以矩陣為根本運(yùn)算單元的,而構(gòu)成數(shù)值矩陣的根本單元是數(shù)字。對(duì)于簡(jiǎn)單的數(shù)字運(yùn)算,可以直接在命令窗口中以平常慣用的形式輸入,如計(jì)算2和3的乘積再加1時(shí),可以直接輸入:>>1+2*3ans=7用戶也可以輸入:>>a=1+2*3a=7三、MATLAB編程根底40數(shù)字變量的顯示格式在缺省情況下,假設(shè)數(shù)據(jù)為整數(shù),那么就以整數(shù)表示;假設(shè)數(shù)據(jù)為實(shí)數(shù),那么以保存小數(shù)點(diǎn)后4位的精度近似表示。MATLAB語言提供了10種數(shù)據(jù)顯示格式,常用的有下述幾種格式:short

小數(shù)點(diǎn)后4位(系統(tǒng)默認(rèn)值)long

小數(shù)點(diǎn)后14位shorte5位指數(shù)形式longe15位指數(shù)形式三、MATLAB編程根底41MATLAB常用數(shù)學(xué)函數(shù)(一):三角函數(shù)名稱含義名稱含義名稱含義sin正弦csc余割atanh反雙曲正切cos余弦asec反正割acoth反雙曲余切tan正切acsc反余割sech雙曲正割cot余切sinh雙曲正弦csch雙曲余割asin反正弦cosh雙曲余弦asech反雙曲正割acos反余弦tanh雙曲正切acsch反雙曲余割atan反正切coth雙曲余切atan2四象限反正切acot反余切asinh反雙曲正弦sec正割acosh反雙曲余弦三、MATLAB編程根底42MATLAB常用數(shù)學(xué)函數(shù)(二):指數(shù)函數(shù)名稱含義名稱含義名稱含義expE為底的指數(shù)log1010為底的對(duì)數(shù)pow22的冪log自然對(duì)數(shù)log22為底的對(duì)數(shù)sqrt平方根MATLAB常用數(shù)學(xué)函數(shù)(三):復(fù)數(shù)函數(shù)名稱含義名稱含義名稱含義abs絕對(duì)值conj復(fù)數(shù)共軛real復(fù)數(shù)實(shí)部angle相角imag復(fù)數(shù)虛部三、MATLAB編程根底43MATLAB常用數(shù)學(xué)函數(shù)(四):取整函數(shù)和求余函數(shù)名稱含義名稱含義ceil向+∞取整rem求余數(shù)fix向0取整round向靠近整數(shù)取整floor向-∞取整sign符號(hào)函數(shù)mod模除求余三、MATLAB編程根底44MATLAB常用數(shù)學(xué)函數(shù)(五):矩陣變換函數(shù)名稱含義名稱含義fiplr矩陣左右翻轉(zhuǎn)diag產(chǎn)生或提取對(duì)角陣fipud矩陣上下翻轉(zhuǎn)tril產(chǎn)生下三角fipdim矩陣特定維翻轉(zhuǎn)triu產(chǎn)生上三角Rot90矩陣反時(shí)針90翻轉(zhuǎn)det行列式的計(jì)算三、MATLAB編程根底45MATLAB常用數(shù)學(xué)函數(shù)(六):其它函數(shù)名稱含義名稱含義min最小值max最大值mean平均值median中位數(shù)std標(biāo)準(zhǔn)差diff相鄰元素的差sort排序length個(gè)數(shù)norm歐氏(Euclidean)長(zhǎng)度sum總和prod總乘積dot內(nèi)積cumsum累計(jì)元素總和cumprod累計(jì)元素總乘積cross外積三、MATLAB編程根底46數(shù)字變量的字符串MATLAB中的字符串是其進(jìn)行符號(hào)運(yùn)算表達(dá)式的根本構(gòu)成單元。在MATLAB中,字符串和字符數(shù)組根本上是等價(jià)的;所有的字符串都用單引號(hào)進(jìn)行輸入或賦值〔也可以用函數(shù)char來生成〕。字符串的每個(gè)字符〔包括空格〕都是字符數(shù)組的一個(gè)元素。例如:>>s=’matrixlaboratory’;s=matrixlaboratoryMATLAB對(duì)字符串的各種操作與C語言幾乎完全相同三、MATLAB編程根底47三、矩陣及其運(yùn)算矩陣是MATLAB數(shù)據(jù)存儲(chǔ)的根本單元,而矩陣的運(yùn)算是MATLAB語言的核心,在MATLAB語言系統(tǒng)中幾乎一切運(yùn)算均是以對(duì)矩陣的操作為根底的。

矩陣的生成在MATLAB中生成矩陣的方法共有三種:直接輸入法、外部文件讀入法、特殊矩陣的函數(shù)生成法。直接輸入法直接輸入矩陣是最方便、最常用的創(chuàng)立數(shù)值矩陣的方法,尤其適合較小的簡(jiǎn)單矩陣。在用此方法創(chuàng)立矩陣時(shí),應(yīng)當(dāng)注意以下幾點(diǎn):三、MATLAB編程根底48輸入矩陣時(shí)要以“[]〞為其標(biāo)識(shí)符號(hào),矩陣的所有元素必須都在括號(hào)內(nèi)。矩陣同行元素之間由空格或逗號(hào)分隔,行與行之間用分號(hào)或回車鍵分隔。矩陣大小不需要預(yù)先定義。矩陣元素可以是運(yùn)算表達(dá)式。假設(shè)“[]〞中無元素表示空矩陣。三、MATLAB編程根底49矩陣操作時(shí)冒號(hào)的作用用于生成等步長(zhǎng)的向量,默認(rèn)步長(zhǎng)值為1。>>a=1:0.5:4a=Columns1through711.522.533.54另外,通過使用冒號(hào),可以截取指定矩陣中的指定行、列或元素,例如:

>>A=[123;456;789]A=123456789三、MATLAB編程根底50通過上例可以看到B是由矩陣A的1到2行和相應(yīng)的所有列的元素構(gòu)成的一個(gè)新的矩陣。在這里,冒號(hào)代替了矩陣A的所有列。>>B=A(1:2,:)B=123456同理>>C=A(:,2:3)C=235689C是由矩陣A的2到3列相應(yīng)的所有列的元素構(gòu)成的一個(gè)新的矩陣,在這里,冒號(hào)代替了矩陣A的所有行。三、MATLAB編程根底51外部文件讀入法命令:Load+文件名[參數(shù)]作用:Load函數(shù)將會(huì)從文件名所指定的文件中讀取數(shù)據(jù),并將輸入的數(shù)據(jù)賦給以文件名命名的變量,例如:事先在記事本中建立文件:111〔并以data1.txt保存〕123136在MATLAB命令窗口中輸入:

>>loaddata1.txt>>data1data1=111123136該文件必須保存在MATLAB規(guī)定的缺省目錄中,否那么需要之名路徑。三、MATLAB編程根底52特殊矩陣的函數(shù)生成法。單位矩陣:eye(m,n);eye(m)零矩陣:zeros(m,n);zeros(m)一矩陣:ones(m,n);ones(m)對(duì)角矩陣:對(duì)角元素向量V=[a1,a2,…,an]A=diag(V)隨機(jī)矩陣:rand(m,n),rand〔m〕產(chǎn)生一個(gè)均勻分布的隨機(jī)矩陣randn(m,n)產(chǎn)生一個(gè)正態(tài)分布的隨機(jī)矩陣randperm(n)產(chǎn)生1~n之間整數(shù)的隨機(jī)排列三、MATLAB編程根底53?eye(2,3)ans=100010?ones(2,3)ans=111111?zeros(2)ans=0000?zeros(2,3)ans=000000?eye(2)ans=1001?ones(2)ans=1111?V=[572];A=diag(V)A=500070002例如:三、MATLAB編程根底54

子數(shù)組的訪問與賦值指令修改:要給矩陣A第i行,第j列的元素賦值為k,可以用語句

A(i,j)=k;來實(shí)現(xiàn)修改例如:a=[120;305;789]a=120305789a(3,3)=0;a=120305780三、MATLAB編程根底55也可以一次訪問或修改一個(gè)子數(shù)組,如:x=0.95010.23110.60680.48600.8913x([125]) %尋訪數(shù)組x的第一、二、五個(gè)元素組成的子數(shù)組。

ans=0.95010.23110.8913x(1:3)

%尋訪前三個(gè)元素組成的子數(shù)組

ans=0.95010.23110.6068三、MATLAB編程根底56x=0.95010.23110.60680.48600.8913x(3:end) %尋訪數(shù)組x的尋訪從第3個(gè)到最后一個(gè)元素。

ans=0.95010.23110.8913x(3:-1:1)

%由前三個(gè)元素倒排構(gòu)成的子數(shù)組ans=0.60680.23110.9501x(find(x>0.5))

%由大于0.5的元素構(gòu)成的子數(shù)組ans=0.95010.60680.8913三、MATLAB編程根底57x=0.95010.23110.60680.48600.8913x([12344321]) %對(duì)元素可以重復(fù)尋訪,使所得數(shù)組長(zhǎng)度允許大于原數(shù)組。

ans=Columns1through70.95010.23110.60680.48600.48600.60680.2311Column80.9501x([14])=[11]

%把當(dāng)前x數(shù)組的第一、四個(gè)元素都賦值為1ans=1.00000.231101.00000.8913三、MATLAB編程根底58另外,對(duì)于二維數(shù)組,訪問和賦值時(shí),A(r,c)表示提取二維數(shù)組A中第r行,第c列的元素;A(r,:)表示提取二維數(shù)組A中第r行的所有元素;A(:,c)表示提取二維數(shù)組A中第c列的所有元素;A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素〔提取子塊〕。A(:):得到一個(gè)長(zhǎng)列向量,該向量的元素按矩陣的列進(jìn)行排列。三、MATLAB編程根底59矩陣的運(yùn)算轉(zhuǎn)置,四那么運(yùn)算與冪運(yùn)算’,+;-;*;\和/;^;.*;.\;./;.^如:a=[12;34];b=[35;59]?c=a+bd=a-be=a’?c=d=e=47-2-313813-2-524a*b=[1323;2951]三、MATLAB編程根底60a/b運(yùn)算等效于求a*x=b的解a/b=[-0.500.50;3.50–1.50]a\b=[-1-1;23]a\b等效于求x*b=a的解a^3=[3754;81118]只有方陣才可以求冪。a.*b=[310;1536]點(diǎn)運(yùn)算是兩個(gè)維數(shù)相同矩陣對(duì)應(yīng)元素之間的運(yùn)算a./b=[0.330.40;0.600.44]a.\b=[3.002.50;1.672.25]a.^3=[18;2764]三、MATLAB編程根底61矩陣的運(yùn)算:常見矩陣函數(shù)det(a)求矩陣a的行列式eig(a)求矩陣a的特征值inv(a)或a^(-1)求矩陣a的逆矩陣rank(a)求矩陣a的秩trace(a)求矩陣a的跡〔對(duì)角線元素之和〕size(a)求矩陣大小,返回〔m,n〕,其中m表示a的行數(shù),n表示a的列數(shù)三、MATLAB編程根底62find(a)求矩陣a中所有非零元素的位置,返回〔m,n〕,其中m表示a中所有非零元素的行數(shù),n表示a中所有非零元素的列數(shù)find〔a邏輯判別式〕求矩陣a中所有滿足邏輯判別式〔如a==0,a>=1等〕的元素的位置,返回〔m,n〕其中m表示a中所有非零元素的行數(shù),n表示a中所有非零元素的列數(shù)numel〔a〕返回矩陣a中元素的個(gè)數(shù)sort〔a〕對(duì)矩陣a中的元素進(jìn)行排序從小到大排序三、MATLAB編程根底63矩陣的運(yùn)算:邏輯運(yùn)算符號(hào)運(yùn)算符功能函數(shù)名==等于eq~=不等于ne<小于lt>大于gt<=小于等于le>=大于等于ge&邏輯與and|邏輯或or~邏輯非not三、MATLAB編程根底64a=[123;456;789];>>x=5;>>xa=x<=a例如xa=000011111三、MATLAB編程根底65MATLAB作為一種高級(jí)語言,它不僅可以如前面介紹的那樣,以一種人機(jī)交互式的命令行的方式工作,還可以像BASIC、FORTRAN、C等其他高級(jí)計(jì)算機(jī)語言一樣進(jìn)行控制流的程序設(shè)計(jì),即編制一種以.m為擴(kuò)展名的MATLAB程序〔簡(jiǎn)稱M文件〕。而且,由于MATLAB本身的一些特點(diǎn),M文件的編制同上述幾種高級(jí)語言比較起來,有許多無法比較的優(yōu)點(diǎn)。三、MATLAB編程根底66

四、MATLAB的函數(shù)文件

M文件所謂M文件就是由MATLAB語言編寫的可在MATLAB語言環(huán)境下運(yùn)行程序源代碼文件。由于商用的MATLAB軟件是用C語言編寫而成。因此,M文件的語法與C語言十分相似。M文件可以分為腳本文件(Script)和函數(shù)文件(Function)兩種。M文件不僅可以在MATLAB的程序編輯器中編寫,也可以在其他的文本編輯器〔如Windows中的記事本或word〕中編寫,并以“.m〞為擴(kuò)展名加以存儲(chǔ)。三、MATLAB編程根底67M文件的創(chuàng)立方法1、在MATLAB命令窗口點(diǎn)擊file菜單newm-file三、MATLAB編程根底682、MATLAB會(huì)翻開程序編輯器窗口,在該窗口中逐行輸入MATLAB程序語句即可。三、MATLAB編程根底693、輸入完畢后,單擊File菜單中的“save〞項(xiàng),然后輸入文件名MATLAB會(huì)按照缺省路徑,保存在MATLAB安裝目錄下work子目錄中,也可自行設(shè)定存盤目錄。三、MATLAB編程根底70腳本文件〔Script〕腳本類似于DOS下的批處理文件,不需要在其中輸入?yún)?shù),也不需要給出輸出變量來接受處理結(jié)果,腳本僅是假設(shè)干命令或函數(shù)的集合,用于執(zhí)行特定的功能。腳本的操作對(duì)象為MATLAB工作空間〔Workspace〕內(nèi)的變量,并且在腳本執(zhí)行結(jié)束后,腳本中對(duì)變量的一切操作均會(huì)被保存。直到MATLAB被關(guān)閉或采用命令clear將內(nèi)存中的變量刪除。三、MATLAB編程根底71腳本文件舉例編寫m腳本文件,畫出以下分段函數(shù)所表示的曲面。如前所述,新建一個(gè)m-文件,MATLAB會(huì)翻開文件編輯調(diào)試器MATLABEditor/Debugger。其窗口名為untitled,用戶即可在空白窗口中編寫程序。輸入如下一段程序:三、MATLAB編程根底72[zx81.m]%zx81.m Thisismyfirstexample. a=2;b=2; clf;x=-a:0.2:a;y=-b:0.2:b;fori=1:length(y)forj=1:length(x)ifx(j)+y(i)>1z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j));elseifx(j)+y(i)<=-1z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j));elsez(i,j)=0.7575*exp(-y(i)^2-6.*x(j)^2);endendendaxis([-a,a,-b,b,min(min(z)),max(max(z))]);colormap(flipud(winter));surf(x,y,z);腳本文件舉例73編寫完成后,點(diǎn)擊編輯調(diào)試器工具條圖標(biāo),在彈出的Windows標(biāo)準(zhǔn)風(fēng)格的“保存為”對(duì)話框中,選擇保存文件夾,鍵入新編文件名(如zx81),點(diǎn)擊【保存】鍵,就完成了文件保存。運(yùn)行文件使zx81.m所在目錄成為當(dāng)前目錄,或讓該目錄處在MATLAB的搜索路徑上,然后點(diǎn)擊工具條上的圖標(biāo),便可得到如右圖所示的圖形。

腳本文件舉例三、MATLAB編程根底74MATLAB的函數(shù)文件MATLAB語言中,函數(shù)需要給定輸入?yún)?shù),并能夠?qū)斎胱兞窟M(jìn)行假設(shè)干操作,實(shí)現(xiàn)特定的功能,最后給出一定的輸出結(jié)果或圖形等,其操作對(duì)象為函數(shù)的輸入變量和函數(shù)內(nèi)的局部變量等。MATLAB語言的函數(shù)文件包含如下5個(gè)局部:函數(shù)題頭:指函數(shù)的定義行,是函數(shù)語句的第一行,在該行中將定義函數(shù)名、輸入變量列表及輸出變量列表等。函數(shù)題頭必須以單詞function作為引導(dǎo)詞,必須遵循如下形式:

function

<因變量>=<函數(shù)名>(<自變量>)三、MATLAB編程根底752.HI行:指函數(shù)幫助文本的第一行,為該函數(shù)文件的幫助主題,當(dāng)使用lookfor命令時(shí),可以查看到該行信息。3.幫助信息:這局部提供了函數(shù)的完整的幫助信息,包括HI之后至第一個(gè)可執(zhí)行行或空行為止的所有注釋語句,通過MATLAB語言的幫助系統(tǒng)查看函數(shù)的幫助信息時(shí),將顯示該部分。4.函數(shù)體:指函數(shù)代碼段,也是函數(shù)的主體局部。5.注釋局部:指對(duì)函數(shù)體中各語句的解釋和說明文本,注釋語句是以%引導(dǎo)的。三、MATLAB編程根底76例如:function[output,output2]=function—example(input1,input2)

%函數(shù)題頭%Thisisfunctiontoexchangetwomatrices%HI行%input1,input2areinputvariables%幫助信息%output1,output2areoutputvariables%幫助信息

output1=input2;%函數(shù)體

output2=input1;%函數(shù)體%Theendofthisexamplefunction調(diào)用方法:[c,d]=function---example〔a,b〕三、MATLAB編程根底77注:m文件的文件名必須是<函數(shù)名>.m。注:并不是所有的函數(shù)文件都需要全部的這5個(gè)局部,實(shí)際上,5局部中只有函數(shù)題頭是一個(gè)函數(shù)文件所必需的,而其他的4個(gè)局部均可省略。當(dāng)然,如果沒有函數(shù)體那么為一空函數(shù),不能產(chǎn)生任何作用。注:程序中的變量均為局部變量,不保存在工作空間(Workspace)中。其變量只在函數(shù)運(yùn)行期間有效。三、MATLAB編程根底78

函數(shù)變量及變量作用域在MATLAB語言的函數(shù)中,變量主要有輸入變量、輸出變量及函數(shù)內(nèi)所使用的變量。函數(shù)的輸入變量為形式參數(shù),即只傳遞變量的值而不傳遞變量的地址,函數(shù)對(duì)輸入變量的一切操作和修改如果不依靠輸出變量傳出的話,將不會(huì)影響工作空間中該變量的值。在MATLAB語言中,函數(shù)內(nèi)定義的變量均被視為局部變量,即不加載到工作空間中,如果希望使用全局變量,那么應(yīng)當(dāng)使用命令global定義,而且在任何使用該全局變量的函數(shù)中都應(yīng)加以定義。三、MATLAB編程根底79

一、MATLAB的函數(shù)文件

定義全局變量時(shí),與定義輸入變量和輸出變量不同,變量之間必須用空格分隔,而不能用逗號(hào)分隔,否那么系統(tǒng)將不能識(shí)別逗號(hào)后的全局變量。例如:globalfirstlevel

secondlevel三、MATLAB編程根底80

五、MATLAB的流程控制語句

如其他的程序設(shè)計(jì)語言一樣,MATLAB語言也給出了豐富的流程控制語句,以實(shí)現(xiàn)具體的程序設(shè)計(jì)。在M文件中,通過對(duì)流程控制語句的組合使用,可以實(shí)現(xiàn)各種各樣的復(fù)雜算法。MATLAB語言的流程控制語句主要有for、while、if-else-end及switch-case等4種語句。通過這些語句可以實(shí)現(xiàn)除順序結(jié)構(gòu)以外的循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu)。三、MATLAB編程根底81for語句for循環(huán)語句是流程控制語句中的根底,使用該循環(huán)語句可以以指定的次數(shù)重復(fù)執(zhí)行循環(huán)體內(nèi)的語句。for循環(huán)語句的調(diào)用形式為:for循環(huán)控制變量=〈初始值〉:〈步長(zhǎng)〉:〈終值〉

循環(huán)體end三、MATLAB編程根底82注:初始值為循環(huán)變量的初始設(shè)定值,每執(zhí)行循環(huán)體一次,循環(huán)控制變量將增加步長(zhǎng)大小,直至循環(huán)控制變量的值大于終值時(shí)循環(huán)結(jié)束。如果沒有給步長(zhǎng)賦值,步長(zhǎng)將按缺省值1計(jì)算,它也是可以為負(fù)的。for循環(huán)允許嵌套使用。嵌套使用時(shí),要通過逐層增加縮進(jìn)量加以區(qū)分。三、MATLAB編程根底83例:利用for循環(huán)求1!+2!+3!++5!的值

sum=0;fori=1:5pdr=1;fork=1:ipdr=pdr*k;endsum=sum+pdr;end三、MATLAB編程根底84

while語句while循環(huán)語句是以條件的滿足與否來判斷循環(huán)是否結(jié)束的。當(dāng)條件為真時(shí),執(zhí)行循環(huán)體內(nèi)的可執(zhí)行語句,條件不成立時(shí),跳出循環(huán)。與for循環(huán)相比,while循環(huán)不能直接確定執(zhí)行次數(shù)。while循環(huán)語句的調(diào)用形式為:while〈循環(huán)判斷的語句〉循環(huán)體end三、MATLAB編程根底85注:在while循環(huán)語句中,在語句內(nèi)必須有可以修改循環(huán)控制變量的命令,否那么該循環(huán)語言將陷入死循環(huán)中。注:循環(huán)語句中有控制退出循環(huán)的命令,如break語句。當(dāng)程序流程運(yùn)行至該命令時(shí),那么不管循環(huán)控制變量是否滿足循環(huán)判斷語句均將退出當(dāng)前循環(huán)。注:與break語句對(duì)應(yīng),MATLAB還提供了continue命令用于控制循環(huán),當(dāng)程序流運(yùn)行至該命令時(shí)會(huì)忽略其后的循環(huán)體操作轉(zhuǎn)而執(zhí)行下一層次的循環(huán)。三、MATLAB編程根底86a(1)=1;a(2)=1;i=2;whilea(i)<=10000 a(i+1)=a(i-1)+a(i);

%當(dāng)現(xiàn)有的元素仍小于10000時(shí),%計(jì)算下一個(gè)元素。

i=i+1;end例.Fibonacci數(shù)列的元素滿足Fibonacci規(guī)則:

,且,現(xiàn)要求該數(shù)組中第一個(gè)大于10000的元素。修改循環(huán)控制變量的語句在命令窗口下輸入i,a(i),

可得i=21ans=10946三、MATLAB編程根底87if-else-end語句條件判斷語句也是程序設(shè)計(jì)語言中流程控制語句之一。使用該語句,可以實(shí)現(xiàn)分支結(jié)構(gòu),即根據(jù)邏輯判斷語句的返回值選擇執(zhí)行指定的命令。if-end語句的一般形式為:if〈邏輯判斷語句〉邏輯值為“真〞時(shí)執(zhí)行的語句end三、MATLAB編程根底88if-else-end語句的一般形式為:if〈邏輯判斷語句〉邏輯值為“真〞時(shí)執(zhí)行的語句else邏輯值為“假〞時(shí)執(zhí)行的語句end三、MATLAB編程根底89if-else-end語句的嵌套形式為:if〈邏輯判斷語句1〉邏輯值1為“真〞時(shí)的執(zhí)行語句elseif〈邏輯判斷語句2〉邏輯值2“真〞時(shí)的執(zhí)行語句elseif〈邏輯判斷語句3〉……else當(dāng)以上所有的邏輯值均為假時(shí)的執(zhí)行語句 end在以上的各層次的邏輯判斷中,假設(shè)其中任意一層邏輯判斷為真,那么將執(zhí)行對(duì)應(yīng)的執(zhí)行語句,并跳出該條件判斷語句,其后的邏輯判斷語句均不進(jìn)行檢查。三、MATLAB編程根底90用for循環(huán)語句編程實(shí)現(xiàn)n=100;a=ones(1,n);fori=3:na(i)=a(i-1)+a(i-2);ifa(i)>=10000a(i)%不加分號(hào),結(jié)果顯示在命令窗口中break;%跳出所在的一級(jí)循環(huán)

end;endi例.Fibonacci數(shù)列的元素滿足Fibonacci規(guī)則:

,且,現(xiàn)要求該數(shù)組中第一個(gè)大于10000的元素。三、MATLAB編程根底91switch-case語句:switch-case語句的一般形式:switch〈選擇判斷量〉case

選擇判斷值1

判斷執(zhí)行語句1case

選擇判斷值2

判斷執(zhí)行語句2……otherwise

判斷執(zhí)行語句end

if-else-end語句所對(duì)應(yīng)的是多重判斷選擇,而有時(shí)也會(huì)遇到多分支判斷選擇的問題。MATLAB語言為解決多分支判斷選擇提供了switch-case語句。三、MATLAB編程根底92注:在MATLAB語言中,當(dāng)其中一個(gè)case語句后的條件為真時(shí),switch-case語句不對(duì)其后的case語句進(jìn)行判斷,也就是說在MATLAB語言中,即使有多條case判斷語句為真,也只執(zhí)行所遇到的第1條為真的語句。因此,不需要象C語言一樣,在每個(gè)case語句后面加上一個(gè)“break〞語句。三、MATLAB編程根底93fori=1:5switchS(i).Markscase100 %得分為100時(shí)S(i).Rank=='總分值'; %列為'總分值'等級(jí)casea %得分在90和99之間S(i).Rank=='優(yōu)秀'; %列為'優(yōu)秀'等級(jí)caseb %得分在80和89之間S(i).Rank=='良好'; %列為'良好'等級(jí)casec %得分在60和79之間S(i).Rank=='及格'; %列為'及格'等級(jí)otherwise %得分低于60。S(i).Rank=='不及格';%列為'不及格'等級(jí)endendswitch-case語句舉例94在邏輯表達(dá)式中,通常有:關(guān)系操作符:>,<,<=,>=,==,~=等邏輯操作符:&,|,~等邏輯函數(shù):isequal——假設(shè)是相等那么為真isempty——假設(shè)是空矩陣那么為真isstr——假設(shè)是字符串那么為真三、MATLAB編程根底95四、MATLAB繪圖MATLAB有很強(qiáng)的圖形功能,可以方便地實(shí)現(xiàn)數(shù)據(jù)的可視化。強(qiáng)大的計(jì)算功能與圖形功能相結(jié)合為MATLAB在科學(xué)技術(shù)和教學(xué)方面的應(yīng)用提供了更加廣闊的天地。96利用符號(hào)繪圖函數(shù)實(shí)現(xiàn)easyplot,即根據(jù)一元或二元函數(shù)的表達(dá)式,直接在指定區(qū)間內(nèi)繪制曲線或曲面圖。第一類利用plot命令對(duì)二維或三維離散數(shù)據(jù)繪制曲線或曲面圖第二類四、MATLAB繪圖MATLAB實(shí)現(xiàn)繪圖的兩大類方法97四、MATLAB繪圖〔一〕、符號(hào)繪圖函數(shù)符號(hào)變量與符號(hào)表達(dá)式f='sin(x)+5x'

f2=‘a(chǎn)

x^2+b

x+c=0'

f——符號(hào)變量名sin(x)+5x——符號(hào)表達(dá)式'

'——符號(hào)標(biāo)識(shí)注:符號(hào)表達(dá)式一定要用''單引號(hào)括起來matlab才能識(shí)別。特點(diǎn):運(yùn)算對(duì)象可以是沒賦值的符號(hào)變量可以獲得任意精度的解98四、MATLAB繪圖符號(hào)運(yùn)算與數(shù)值運(yùn)算的區(qū)別※數(shù)值運(yùn)算中必須先對(duì)變量賦值,然后才能參與運(yùn)算。

※符號(hào)運(yùn)算無須事先對(duì)獨(dú)立變量賦值,運(yùn)算結(jié)果以標(biāo)準(zhǔn)的符號(hào)形式表達(dá)。

注:符號(hào)表達(dá)式或符號(hào)方程可以賦給符號(hào)變量,以后調(diào)用方便;也可以不賦給符號(hào)變量直接參與運(yùn)算99四、MATLAB繪圖注:由此種方法創(chuàng)立的符號(hào)表達(dá)式對(duì)空格是很敏感的,因此不要在字符間亂加空格符。另外一種創(chuàng)立符號(hào)函數(shù)的方法是利用syms〔用于生成多個(gè)符號(hào)變量〕命令或sym〔用于生成1個(gè)符號(hào)變量〕命令,如:>>symx;>>f=sin(x)+cos(x)f=sin(x)+cos(x)但這種方法只能創(chuàng)立符號(hào)函數(shù),而不能創(chuàng)立符號(hào)方程。100四、MATLAB繪圖在符號(hào)運(yùn)算中sym命令可以將數(shù)值矩陣轉(zhuǎn)化為符號(hào)矩陣,如:>>a=sym(‘[1/s+x,sin(x),cos(x)^2/(b+x);9,exp(x^2+y^2),log(tanh(y))]’)a=

101四、MATLAB繪圖常見的符號(hào)運(yùn)算函數(shù)〔1〕符號(hào)表達(dá)式的化簡(jiǎn)pretty(f)將符號(hào)表達(dá)式化簡(jiǎn)成與高等數(shù)學(xué)課本上顯示符號(hào)表達(dá)式形式類似collect(f)合并符號(hào)表達(dá)式的同類項(xiàng)horner(f)將一般的符號(hào)表達(dá)式轉(zhuǎn)換成嵌套形式的符號(hào)表達(dá)式factor(f)對(duì)符號(hào)表達(dá)式進(jìn)行因式分解expand(f)對(duì)符號(hào)表達(dá)式進(jìn)行展開simple(f)對(duì)符號(hào)表達(dá)式嘗試多種不同的算法進(jìn)行化簡(jiǎn),以顯示長(zhǎng)度最短的符號(hào)表達(dá)式簡(jiǎn)化形式102四、MATLAB繪圖常見的符號(hào)運(yùn)算函數(shù)〔2〕符號(hào)矩陣transpose(A)符號(hào)矩陣的轉(zhuǎn)置determ(A)符號(hào)矩陣的行列式det(A)符號(hào)矩陣的行列式inv(A)符號(hào)矩陣求逆rank(A)符號(hào)矩陣求秩[B,C]=eig(A)B為A的特征向量,C為A特征值103四、MATLAB繪圖常見的符號(hào)運(yùn)算函數(shù)〔3〕符號(hào)微積分Limit(f,x,a)求符號(hào)表達(dá)式f當(dāng)x趨向于a時(shí)的極限Limit(f,x,a,‘right’)右極限Limit(f,x,a,‘left’)左極限D(zhuǎn)iff(f)求f的微分Diff(f,‘a(chǎn)’)對(duì)變量a求微分Diff(f,n)對(duì)f求n次微分Diff(f,'a',n)對(duì)變量a求n次微分104四、MATLAB繪圖常見的符號(hào)運(yùn)算函數(shù)〔3〕符號(hào)微積分int(f)對(duì)f求不定積分int(f,v)對(duì)v變量求不定積分int(f,a,b)對(duì)f求[[a,b]上的定積分int(f,v,a,b)對(duì)變量v求[a,b]上的定積分105四、MATLAB繪圖利用符號(hào)函數(shù)進(jìn)行繪圖根本命令1:ezplot格式1:ezplot(f)

在默認(rèn)區(qū)間一2*pi<x<2*pi繪制f=f(x)的曲線圖例如:ezplot('cos(x)')注:ezplot命令只能在一張圖中繪制一條曲線,而且會(huì)自動(dòng)在圖上加注函數(shù)的表達(dá)式。106四、MATLAB繪圖格式2:ezplot〔f,[a,b]〕在區(qū)間a<x<b上繪制f=f(x)的曲線圖例如:ezplot(‘sin(x)’,[-pi/2,pi/2])ezplot還可以繪制方程形式的隱函數(shù)曲線,如:ezplot('x^2+y^2-1',[-1.25,1.25]);axisequal;表示在[-1.25,1.25]內(nèi)繪制單位圓,且橫縱坐標(biāo)比例相同。107四、MATLAB繪圖ezplot還可以繪制二維參數(shù)曲線如:ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])108四、MATLAB繪圖根本命令2:ezplot3——用于繪制三維參數(shù)曲線例如:ezplot3('cos(t)','sin(t)','t',[0,6*pi])注:t的缺省區(qū)間為[0,2*pi].109四、MATLAB繪圖根本命令3:ezsurf——用于繪制方程為z=f(x,y)的三維曲面自變量的缺省取值范圍是:-2*pi<x<2*pi,-2*pi<y<2*pi例如:ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-6*pi,6*pi])ezsurf('4*sqrt(1-x^2/4-y^2/16)',[-2,2,-4,4]);axisequal110四、MATLAB繪圖參數(shù)s和t的缺省取值范圍是:-2*pi<s<2*pi,-2*pi<t<2*pi例如:ezsurf(‘s*cos(t)’,‘s*sin(t)’,‘t’,[-2,2,-3*pi,2*pi])

ezsurf(x,y,z,[smin,smax,tmin,tmax])

ezsurf(f):也可用于繪制參數(shù)曲面即:-2<s<2,-3*pi<t<2*pi111四、MATLAB繪圖又如:ezsurf(‘sin(s)*cos(t)’,‘sin(s)*sin(t)’,‘cos(s)’,[0,pi,0,2*pi])112四、MATLAB繪圖〔二〕利用Plot命令對(duì)離散數(shù)據(jù)繪圖MATLAB最常用的畫二維圖形的命令是plot;plot命令自動(dòng)翻開一個(gè)圖形窗口Figure;用直線連接相鄰兩數(shù)據(jù)點(diǎn)來繪制圖形;根據(jù)圖形坐標(biāo)大小自動(dòng)縮擴(kuò)坐標(biāo)軸,將數(shù)據(jù)標(biāo)尺及單位標(biāo)注自動(dòng)加到兩個(gè)坐標(biāo)軸上,也可自定坐標(biāo)軸,可把x,y軸用對(duì)數(shù)坐標(biāo)表示。如果已經(jīng)存在一個(gè)圖形窗口,plot命令那么去除當(dāng)前圖形,繪制新圖形;如果想保存本次繪圖命令的執(zhí)行結(jié)果,就要在plot命令后,加上“holdon〞語句。113plot的調(diào)用格式〔1〕plot(x)——缺省自變量繪圖格式,x為向量,以x元素值為縱坐標(biāo),以相應(yīng)元素的序號(hào)為橫坐標(biāo)繪圖。>>y=[00.580.700.950.830.25];>>plot(y)如:四、MATLAB繪圖114plot的調(diào)用格式〔2〕plot(x,y):以y(x)的函數(shù)關(guān)系作出直角坐標(biāo)圖,如果y為n×m的矩陣,那么以x為自變量,作出m條曲線>>x=linspace(0,2*pi,30);%生成一組線性等距的數(shù)值>>y=sin(x);>>plot(x,y)如:四、MATLAB繪圖115plot的調(diào)用格式〔3〕plot(x1,y1,x2,y2)——多條曲線繪圖格式>>x=0:pi/15:2*pi;>>y1=sin(x);>>y2=cos(x);>>plot(x,y1,x,y2)如:四、MATLAB繪圖116plot的調(diào)用格式〔4〕plot(x,y,‘s’)——開關(guān)格式,開關(guān)量字符串s設(shè)定曲線顏色和繪圖方式,使用顏色字符串的前1~3個(gè)字母,也可plot(x1,y1,‘s1’,x2,

y2,‘s2’,…)>>x=0:pi/15:2*pi;>>y1=sin(x);y2=cos(x);>>plot(x,y1,’b:+’,x,y2,’g-.*’)如:四、MATLAB繪圖117Plot命令中格式開關(guān)的參數(shù)的取值線型線方式-實(shí)線:點(diǎn)線-.虛點(diǎn)線--波折線點(diǎn)方式.圓點(diǎn)+加號(hào)*星號(hào)××型。小圓顏色y黃色r紅色g綠色b藍(lán)色w白色k黑色m粉紅c青色四、MATLAB繪圖118圖形的加注功能MATLAB繪圖時(shí),可以將標(biāo)題、坐標(biāo)軸標(biāo)記、網(wǎng)格線、圖例及文字注釋加注到圖形上,這些函數(shù)為:title——給圖形加標(biāo)題xlable——給x軸加標(biāo)注ylable——給y軸加標(biāo)注text——在圖形指定位置加標(biāo)注gtext——將標(biāo)注加到圖形任意位置gridon(off)——翻開、關(guān)閉坐標(biāo)網(wǎng)格線legend——添加圖例axis——控制坐標(biāo)軸的刻度四、MATLAB繪圖119例如t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--');x=[1.7*pi;1.6*pi];y=[-0.3;0.8];s=['sin(t)';'cos(t)'];text(x,y,s);title('正弦和余弦曲線');legend('正弦','余弦')xlabel('時(shí)間t'),ylabel('正弦、余弦')gridonaxissquare如果想在坐標(biāo)〔x,y〕處參加標(biāo)題,也可用命令title,如:>>text(2.5,0.7,’sinx’)四、MATLAB繪圖120四、MATLAB繪圖121坐標(biāo)的控制在缺省情況下MATLAB自動(dòng)選擇圖形的橫、縱坐標(biāo)的比例,如果你對(duì)這個(gè)比例不滿意,可以用axis命令控制,常用的有:axis([xminxmaxyminymax]):[]中分別給出x軸和y軸的最大值、最小值axisequal或axis(‘equal’):x軸和y軸的單位長(zhǎng)度相同axissquare或axis(‘square’):圖框呈方形axison(off):顯示〔隱藏〕坐標(biāo)刻度axisouto:系統(tǒng)自動(dòng)設(shè)定坐標(biāo)系四、MATLAB繪圖122多幅圖形繪制用subplot(m,n,p)命令;把一個(gè)畫面分成m×n個(gè)圖形區(qū)域,p代表當(dāng)前的區(qū)域號(hào),在每個(gè)區(qū)域中分別畫一個(gè)圖。如:>>x=linspace(0,2*pi,30);y=sin(x);z=cos(x);>>u=2*sin(x).*cos(x);v=sin(x)./cos(x);>>subplot(2,2,1),plot(x,y),axis([02*pi–11]),title(‘sin(x)’)>>subplot(2,2,2),plot(x,z),axis([02*pi–11]),title(‘cos(x)’)>>subplot(2,2,3),plot(x,u),axis([02*pi–11]),title(‘2sin(x)cos(x)’)>>subplot(2,2,4),plot(x,v),axis([02*pi–2020]),title(‘sin(x)/cos(x)’)四、MATLAB繪圖123四、MATLAB繪圖124特殊二維圖形的繪制bar

––––繪制直方圖polar

––––繪制極坐標(biāo)圖hist––––繪制統(tǒng)計(jì)直方圖stairs––––繪制階梯圖stem––––繪制火柴桿圖rose––––繪制統(tǒng)計(jì)扇形圖comet––––繪制彗星曲線四、MATLAB繪圖125errorbar––––繪制誤差棒圖compass––––復(fù)數(shù)向量圖(羅盤圖)feather––––復(fù)數(shù)向量投影圖(羽毛圖)quiver––––向量場(chǎng)圖area––––區(qū)域圖pie––––餅圖convhull––––凸殼圖scatter––––離散點(diǎn)圖四、MATLAB繪圖126例如:繪制階梯曲線

x=0:pi/20:2*pi;y=sin(x);stairs(x,y)四、MATLAB繪圖127例:繪制極坐標(biāo)繪圖

t=0:2*pi/90:2*pi;y=cos(4*t);polar(t,y)四、MATLAB繪圖128繪制直方圖例如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論