數(shù)學(xué)實驗是以數(shù)學(xué)建模和數(shù)值計算_第1頁
數(shù)學(xué)實驗是以數(shù)學(xué)建模和數(shù)值計算_第2頁
數(shù)學(xué)實驗是以數(shù)學(xué)建模和數(shù)值計算_第3頁
數(shù)學(xué)實驗是以數(shù)學(xué)建模和數(shù)值計算_第4頁
數(shù)學(xué)實驗是以數(shù)學(xué)建模和數(shù)值計算_第5頁
已閱讀5頁,還剩110頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、前 言0第一篇 數(shù)學(xué)軟件簡介1一、MATLAB軟件1一、概 述1二、MATLAB基本的學(xué)習(xí)方法1三、Matlab基礎(chǔ)知識介紹21、MATLAB 6工作環(huán)境簡介22、語言規(guī)則43、數(shù)值與變量54、數(shù)據(jù)的輸入和輸出65、矩陣元素的操作76、M文件的編輯與建立87、運(yùn)算符及特殊字符98、數(shù)學(xué)函數(shù)及其運(yùn)算109、使用繪圖命令1310、數(shù)據(jù)處理14四、Matlab的編程141、條件語句152、循環(huán)語句163、switchcaseend分支結(jié)構(gòu)18第二章Mathematica20一、概述20二、Mathematica基本學(xué)習(xí)方法20三、Mathematica基礎(chǔ)知識介紹221、Mathematica 4.

2、0工作環(huán)境簡介222、語言規(guī)則253.1數(shù)的表示和計算253.2、表達(dá)式263.3、求算術(shù)運(yùn)算的近似值:通常我們用格式Nexpr263.4 變量274、常用函數(shù)274.1函數(shù)的有關(guān)常識274.2 常見數(shù)學(xué)函數(shù)294.3常用表達(dá)式轉(zhuǎn)換函數(shù)295、解方程316、極限327、 微分327.1 求導(dǎo)數(shù)的基本格式為Dexpr,變量327.2 對于含兩個以上未知數(shù)的表達(dá)式,可求偏導(dǎo)數(shù)和混合偏導(dǎo)數(shù)。例如327.3 求表達(dá)式的全微分用格式Dtexpr,如337.4 求高階導(dǎo)數(shù)用Dexpr,x,n337.5 對隱函數(shù)求導(dǎo),用Dexpr,自變量,NonConstants->因變量338、積分348.1 求不

3、定積分的格式為:Integrateexpr,x348.2 求定積分的格式為 Integrateexpr,x,a,b348.3 計算含有兩個變量的表達(dá)式的二重積分的格式為:Integrateexpr,x,x1,x2,y,y1,y2359、級數(shù)359.1 冪級數(shù)的Taylor展開。359.2 數(shù)列求和,求積3610、 表和矩陣3710.1 表的構(gòu)造3710.2 矩陣,向量3810.3 利用矩陣解線性方程組4011、數(shù)據(jù)擬合4112、圖形處理4212.1 二維作圖4212.2三維作圖44四、Mathematica的編程46第二篇 實 驗49第一章 軟件操作實驗49實驗1 矩陣的基本運(yùn)算49一、實驗?zāi)?/p>

4、的49二、預(yù)備知識49三、內(nèi)容與要求49四、思考與練習(xí)50五、與你一起做實驗50實驗2 矩陣初等變換及向量的線性相關(guān)性53一、實驗?zāi)康?3二、預(yù)備知識53三、實驗要求53四、思考與練習(xí)54五、與你一起做實驗54實驗3 解方程和方程組55一、實驗?zāi)康?5二、預(yù)備知識55三、實驗內(nèi)容與要求55四、與你一起作實驗56實驗4 微分運(yùn)算57一、實驗?zāi)康?7二、預(yù)備知識57三、實驗內(nèi)容與要求57四、思考與練習(xí)58五、與你一起作實驗58第二章 應(yīng)用實驗59實驗1 最佳售房問題59一、問題59二、實驗?zāi)康?9三、預(yù)備知識59四、實驗內(nèi)容與要求59五、思考問題60實驗2、工資問題61一、問題61二、實驗?zāi)康?1

5、三、預(yù)備知識61四、實驗內(nèi)容與要求61五、思考問題62實驗3 放射性廢料的處理問題63一、問題63二、實驗?zāi)康?3三、預(yù)備知識63四、實驗內(nèi)容與要求63五、思考問題63實驗4 路程估計問題65一、問題65二、實驗?zāi)康?5三、預(yù)備知識65四、實驗內(nèi)容與要求65五、思考問題66第三篇、命令總匯67第一章、MATLAB 6 常用函數(shù)簡介671、通用命令671.1通用信息查詢671.2工作空間管理671.3管理指令和函數(shù)681.4搜索路徑管理681.5指令窗控制681.6操作系統(tǒng)指令682、運(yùn)算符和特殊運(yùn)算符692.1算術(shù)運(yùn)算符692.2關(guān)系運(yùn)算符692.3邏輯操作692.4特殊運(yùn)算符703、編程語言

6、結(jié)構(gòu)703.1控制語句703.2計算運(yùn)行713.3腳本文件、函數(shù)及變量713.4參數(shù)處理713.5信息顯示713.6交互式輸入724、基本矩陣函數(shù)和操作724.1基本矩陣724.2矩陣基本信息724.3矩陣操作734.4特殊變量和常量734.5特殊矩陣745、基本數(shù)學(xué)函數(shù)745.1三角函數(shù)745.2指數(shù)函數(shù)755.3復(fù)數(shù)函數(shù)755.4圓整和求余函數(shù)756、坐標(biāo)變換、向量運(yùn)算等特殊函數(shù)767、矩陣函數(shù)和數(shù)值線性代數(shù)767.1矩陣分析767.2線性方程767.3特性值與奇異值777.4矩陣函數(shù)777.5因式分解778、數(shù)據(jù)分析和傅立葉變換788.1基本運(yùn)算788.2有限差分788.3相關(guān)788.4

7、濾波卷積799、插補(bǔ)與多項式函數(shù)799.1數(shù)據(jù)插補(bǔ)799.2樣條插補(bǔ)799.3多項式8010、數(shù)值泛函函數(shù)和ODE解算器8010.1優(yōu)化和尋根8010.2優(yōu)化選項處理8010.3數(shù)值積分8010.4繪圖8110.5差微分函數(shù)解算器8111、二維圖形函數(shù)8111.1基本平面圖形8111.2軸控制8211.3圖形注釋8212、三維圖形函數(shù)8212.1基本三維圖形8212.2色彩控制8312.3色圖8313、文件輸入/輸出8414、示例函數(shù)8415、符號工具包8415.1微積分8415.2線性代數(shù)8515.3化簡8515.4方程求解8515.5變量精度8615.6積分變換8615.7基本操作8615

8、.8圖形應(yīng)用8615.9 Maple接口8716、圖象處理工具箱8716.1圖象顯示8716.2圖象文件數(shù)據(jù)輸入/輸出8816.3圖象的幾何操作8816.4象值與統(tǒng)計8816.5圖像分析8816.6圖像增強(qiáng)8916.7線性濾波8916.8二維線性濾波器的設(shè)計8916.9圖像變換9016.10鄰域及塊處理9016.11二值圖像操作9016.12圖像的區(qū)域處理9116.13色圖操作9116.14色彩空間變換9113.15圖像類型判斷及其轉(zhuǎn)換9116.16圖像處理演示函數(shù)92第二章、Mathematica命令匯總921、數(shù)字計算921.1數(shù)字求值921.2方程求解93求常微分方程eqns的數(shù)字解,其

9、未知函數(shù)yi為自變量x的函數(shù),且自變量的取值范圍區(qū)間為xmin,xmax931.3求和與求積931.4積分941.5優(yōu)化941.6數(shù)據(jù)處理941.7數(shù)的表達(dá)952、代數(shù)計算952.1基本代數(shù)95Expandexpr952.2公式操作962.3方程求解962.4微積分963、數(shù)學(xué)函數(shù)973.1基本算術(shù)運(yùn)算973.2數(shù)學(xué)常數(shù)973.3數(shù)值函數(shù)973.4隨機(jī)數(shù)983.5基本初等函數(shù)983.6階乘983.7數(shù)論984、表和矩陣994.1表的構(gòu)建994.2元素抽取994.3表的特征1004.4表的操作1004.5結(jié)構(gòu)操作1014.6向量與矩陣操作1015、圖形1015.1 2D圖形1015.2 3D圖形

10、1025.3等高線圖1025.4圖的組合1025.5基本選項1025.6 3D選項1035.7 等高線選項1035.8圖元1046、編程1046.1變量賦值1046.2檢查1056.3邏輯運(yùn)算1056.4流程控制1056.5功能編程1066.6輸入與輸出1066.7統(tǒng)計107前 言馬克思曾經(jīng)說過:“任何一門科學(xué)只有充分利用了數(shù)學(xué)才能夠達(dá)到完美的境界”。隨著科學(xué)技術(shù)的發(fā)展,數(shù)學(xué)發(fā)揮著越來越重要的作用。為了適應(yīng)科學(xué)技術(shù)的發(fā)展,數(shù)學(xué)教學(xué)面臨著改革,特別是信息時代的到來,要求數(shù)學(xué)教學(xué)的實踐性增強(qiáng)。數(shù)學(xué)實驗這門課程就是基于上述原因而產(chǎn)生的?!皵?shù)學(xué)實驗”是以數(shù)學(xué)建模和數(shù)值計算為核心、借助計算機(jī),培養(yǎng)學(xué)生應(yīng)

11、用所學(xué)知識解決實際問題內(nèi)容的課程。根據(jù)省教委的要求,我院從1999年上學(xué)期試點以來,目前已在全院推廣。通過近幾年的教學(xué)實踐兵結(jié)合我院實際情況,為適應(yīng)培養(yǎng)新世紀(jì)的創(chuàng)新人才的時代要求,編寫了這本講義。本講義包括以下幾部分:一、學(xué)軟件基本操作介紹(Matlab和Mathematica);二、據(jù)不同專業(yè)的要求和數(shù)學(xué)基礎(chǔ)課程的教學(xué)進(jìn)度而編寫的8個實驗;1、 軟件操作實驗:實驗1、2是MATLAB的內(nèi)容;實驗3、4是Mathematica的內(nèi)容;2、基礎(chǔ)實驗:原則上每個實驗都可用MATLAB和Mathematica來作,但實驗1、2用MATLAB,實驗3、4用Mathematica將更方便。三、Matla

12、b和Mathematica的基本命令。根據(jù)這幾年的實驗教學(xué)經(jīng)驗以及學(xué)生的要求,軟件操作實驗部分給予了參考答案,而基礎(chǔ)實驗沒有編寫參考答案。為了能讓同學(xué)進(jìn)一步學(xué)習(xí),我們將其常用的命令編寫在最后,以便幫助全面掌握數(shù)學(xué)軟件?!皵?shù)學(xué)實驗”是一門新課程,其內(nèi)容和方法在國內(nèi)外均不是很成熟,講義內(nèi)容的取舍不易掌握,雖經(jīng)努力,但限于水平,仍存在不少問題,懇請各位讀者提出寶貴的意見。有什么意見,請發(fā)E-mail到an編著者2003年2月9日第一篇 數(shù)學(xué)軟件簡介一、MATLAB軟件一、概 述Matlab是由美國的Mathworks公司推出的一個科技應(yīng)用軟件。它的名字是由矩陣(MATrix)和實驗室 ( LABor

13、atory)的頭三個字母組成。顧名思義,它相當(dāng)于把矩陣放在實驗里做實驗,Matlab是以矩陣為單位進(jìn)行處理的,也就是它把一切都當(dāng)作矩陣。即使是一個數(shù)也是。比如:Matlab是一種高性能的、用于工程計算的編程軟件,它把科學(xué)計算、結(jié)果的可視化和編程都集中在一個使用非常方便的環(huán)境中。一般來說,Matlab系統(tǒng)包括下面五個主要部分:(1)編程語言:他是以矩陣和數(shù)組為基本單位的編程語言;(2)工作環(huán)境:包括了一系列的應(yīng)用工具,提供編程和調(diào)試程序的環(huán)境;(3)圖形處理:包括繪制二維、三維圖形和創(chuàng)建圖形用戶接口;(4)數(shù)學(xué)庫函數(shù):包含了大量的數(shù)學(xué)函數(shù),也包括復(fù)雜的功能;(5)應(yīng)用程序接口:提供接口程序,可使

14、MATLAB與其它語言程序進(jìn)行交互。Matlab典型的應(yīng)用包括以下兩方面:(1)數(shù)值計算和符號計算; (2)建模和動態(tài)仿真二、MATLAB基本的學(xué)習(xí)方法作為一門高級語言,MATLAB和其它高級語言一樣,具有完善的幫助系統(tǒng)。如果同學(xué)們能夠?qū)ATLAB的幫助系統(tǒng)很熟悉的話,自由運(yùn)用它進(jìn)行編程肯定沒有多大問題,另外本講義附錄了有關(guān)命令,使得大家能夠更方便的使用幫助,更好的進(jìn)行學(xué)習(xí)。1、help指令在指令窗口中運(yùn)行help能夠獲得范圍不同的幫助信息,例如:(1)運(yùn)行 help help,將得到如何使用help的提示;(2)直接運(yùn)行help,會列出可以用于help顯示的所有主體(topic);(3)h

15、elp topic可獲得每個topic的幫助;比如,想對二維圖形(graph2d)編程有所了解,可運(yùn)行:>> help graph2d(4)對每個topic中的任何指令的用法,同樣可以用help來查看;如對于二維圖形(graph2d)指令中的plot,用help查看則顯示如下:>> help plot2、lookfor指令當(dāng)用戶要查找具有某種功能但不知道其準(zhǔn)確名字的指令時,help就無能為力了。而lookfor可以根據(jù)用戶提供的完整或不完整的關(guān)鍵詞,去搜索出一組與之有關(guān)的指令,用戶可從列表中挑選出滿足需要的指令。這被稱為“模糊查找。”不過這個命令所查找的范圍只限于一個。

16、如利用 lookfor 指令查找矩陣求逆函數(shù)>>lookfor inverse3、doc、helpwin和helpdesk指令在指令窗口中運(yùn)行doc、helpwin和helpdesk指令中的任何一個,都會打開一個名為help的幫助窗口。大家自己在計算機(jī)上試一試。4、demo指令Demo指令用于查看集成于MATLAB環(huán)境內(nèi)的各種演示內(nèi)容。在MATLAB的指令窗口鍵入Demo指令可以得到演示界面,從而可以方便的了解MATLAB的基本功能。5、幫助菜單啟動matlab應(yīng)用程序后,單擊help主菜單,則會彈出一系列子菜單,可以根據(jù)菜單直接進(jìn)行操作三、Matlab基礎(chǔ)知識介紹1、MATLAB

17、 6工作環(huán)境簡介MATLAB 6的啟動l 雙擊Windows桌面上的快捷圖標(biāo);l 從開始菜單的程序子菜單中的MATLAB 6l 在MATLAB目錄中搜索到可執(zhí)行程序的matlab.exe,雙擊該程序使之啟動啟動后的對話框如圖1,它大致包括以下幾個部分:圖1l 菜單項;l 工具欄;l Command Window窗口(指令窗口);l Launch Pad窗口(分類幫助文件夾);l Workspace窗口(工作臺);l Command History窗口(指令的歷史記錄);l Current Directory窗口(當(dāng)前目錄選項)。MATLAB 6菜單環(huán)境介紹a) 文件菜單File文件菜單出了具有

18、Windows一般應(yīng)用程序所具有的新建、打開、關(guān)閉、退出、打印選項外,還包括如下選項:l Import Data:有關(guān)數(shù)據(jù)的導(dǎo)入;l Save Workspace As:保存工作平臺;l Preferences:部分MATLAB工作環(huán)境的交互性設(shè)置l Set Path:設(shè)置當(dāng)前工作路徑。b) 編輯菜單Edit編輯菜單出了具有Windows一般應(yīng)用程序所具有的撤消操作、重復(fù)操作、拷貝、粘貼、全選選項外,還包括如下選項l Clear Command Window:清除指令窗口;l Clear Command History:清除指令的歷史記錄;l Clear Workspace:清除工作臺。c)視

19、圖菜單(View)視圖菜單為了改動MATLAB工作環(huán)境外觀,它可以決定顯不顯示界面上擺布的一些窗口。大家可以對其中的每個菜單操作一下,看分別會出現(xiàn)什么效果。d) 網(wǎng)頁菜單Web網(wǎng)頁菜單用于直接與MATLAB的生產(chǎn)商Mathworks工作的Internet聯(lián)網(wǎng),尋求有關(guān)的幫助或獲得新的產(chǎn)品信息等。e) 窗口菜單Window窗口菜單用于顯示當(dāng)前打開的M文件的文件名以及將它們一次全部關(guān)閉。f) 幫助菜單Help幫助菜單能為用戶及時提供所需要的幫助信息。常用窗口簡介l 指令窗口(Command Window):在提示符>>后直接輸入命令可以執(zhí)行相關(guān)的命令l 指令歷史記錄窗口(Command

20、 History):該窗口記錄著用戶每一次開啟MATLAB的時間,以及每一次開啟MATLAB后在MATLAB指令窗口(Command Window)中運(yùn)行過的所有指令行。這些指令行記錄可以被復(fù)制到指令窗口中再運(yùn)行,從而減少了重新輸入的麻煩。選中該窗口中的任一指令記錄,然后單擊鼠標(biāo)右鍵,則可根據(jù)菜單進(jìn)行相應(yīng)操作。l 工作臺窗口(Workspace):該程序窗口中列出了程序計算過程中產(chǎn)生的變量及其對應(yīng)的數(shù)據(jù)的尺寸、字節(jié)和類型。選中一個變量,單擊鼠標(biāo)右鍵則可根據(jù)菜單進(jìn)行相應(yīng)的操作。 2、語言規(guī)則MATLAB要區(qū)分大小寫,它的命令全是小寫的;一行可以輸入幾個命令,用“;”或“,”隔開。如用“;”則該函

21、數(shù)的執(zhí)行結(jié)果不顯示(圖形函數(shù)除外);如用“,”則該函數(shù)的運(yùn)行結(jié)果要顯示。3、數(shù)值與變量數(shù)值MATLAB環(huán)境下的數(shù)值表示一般采用十進(jìn)制,可以帶小數(shù)點和正負(fù)號。下面的數(shù)值都是合法的:6+6-6.660.0066-60006.6e-6100e60-0.060e-012在采用IEEE浮點算法的計算機(jī)上,數(shù)值的相對精度為eps,MATLAB規(guī)定一個eps的值為2.2204e-016,即大約保持16位有效數(shù)字。有時用戶希望在指令窗口中得到的是自己想要的數(shù)據(jù)形式,比如說是有理數(shù)(Rational)形式,則可以通過在File主菜單中打開Preferences 子菜單,并在對話框中做相應(yīng)的選擇操作即可。變量MA

22、TLAB是基于矩陣運(yùn)算的,因此其基本數(shù)據(jù)結(jié)構(gòu)只有一個:矩陣。一個數(shù)也是矩陣。只不過它是11的矩陣。MATLAB中的變量可用來存放數(shù)據(jù),也可用來存放向量或矩陣,并進(jìn)行各種運(yùn)算。MALAB將所有變量均保存成double的形式,所以不需要經(jīng)過變量聲明。MATLAB也會自動進(jìn)行內(nèi)存的使用和回收。變量命名的規(guī)則為:l 變量名、函數(shù)名是對大小寫很敏感的,兩個字符串表示的變量,字母都相同,大小寫不同,也視為不同的變量;l 第一個字母必須是英文字母;l 字符間不可留空格;l 最多只能有31個字符(只能用英文字母、數(shù)字和下連字符)一行中“%”后的內(nèi)容僅作注釋用,對MATLAB的計算不產(chǎn)生任何影響。who、who

23、s、clear和永久變量who:用于檢查現(xiàn)存于空間(Workspace)的變量whos:用于檢查現(xiàn)存于空間(Workspace)的變量的詳細(xì)資料clear:用于刪除工作空間的變量;永久變量:是變量的一種特殊情況,它在工作空間中看不到,但是使用者可直接調(diào)用,如:pi等符號變量在MATLAB中,如果沒有定義則不能對符號進(jìn)行引用,在對變量進(jìn)行引用時需要先用syms命令創(chuàng)建符號變量和表達(dá)式。如:>>syms xsyms不僅可以聲明一個變量,還可以指定這個變量的數(shù)學(xué)特性,比如:l 聲明變量為實數(shù)類型,如:>>syms x y reall 聲明變量為整數(shù)類型,如:syms x y

24、positivel 創(chuàng)建表達(dá)式,如:>>f=syms(cos(x)+sin(x)4、數(shù)據(jù)的輸入和輸出(1)直接輸入:由于MATLAB都是將視為矩陣進(jìn)行操作,如果是單個元素則象計算器一樣直接輸入元素,如果有多個元素,比如矩陣有多行多列的則用:變量=表達(dá)式;或,格式,其中行中元素間用“空格”或“,”分開;行與行之間用“;”或“回車”分開。如果一行寫不完,要用“”作為繼行標(biāo)記(在英文狀態(tài)下輸入三個句號);如果只有表達(dá)式,則會出現(xiàn)一個變量“ans”,“ans”為“answer”(答案)的縮寫,引出運(yùn)算結(jié)果。值得注意的是整個矩陣分別用左右方括號“”和“”表示開始和結(jié)束。比如:>>

25、a=1 2 3;4 5 6;7 8 9或a=1 2 3 4 5 6 7 8 9(2)利用語句或函數(shù)產(chǎn)生“初值:步長:終值” 產(chǎn)生一個行向量(行矩陣)。當(dāng)步長為1時可以省略。如:>>1:5;1:2:6,1:2:5特殊命令:l linspace(x,x2,n): 產(chǎn)生一個行向量,指定初值(x)、終值(x2)、向量資料(n)。如:linspace(1,4,3);l ones(n)或ones(n,m)或ones(n,m): 產(chǎn)生全一的矩陣。如:ones(5)。l zeros(n)或zeros(n,m)或zeros(n,m): 產(chǎn)生全零的矩陣。如:zeros(5)。l eye (n)或eye

26、(n,m)或eye(n,m): 產(chǎn)生單位(或?qū)蔷€上為1)的矩陣。如:eye (5);eye (2,4)。l rand:產(chǎn)生平均分布的隨機(jī)矩陣。如:rand(3)。l randn:產(chǎn)生正態(tài)分布的隨機(jī)矩陣l diag(4,2) 對角矩陣l vander(2,4) 范德蒙矩陣(3)用input指令輸入單個參數(shù)例如:小侯吃桃問題:有一天小侯摘下了若干個桃子,當(dāng)即吃掉了一半,還覺得不過隱,又多吃了2個。第二天接著吃下剩下的一半,又多吃了2個。以后每天都是吃掉尚存的一半零兩個。到第十天早上,小侯準(zhǔn)備吃桃子時,看到只剩下n個桃子了。問小侯第一天共摘下多少個桃子?分析:根據(jù)建立數(shù)學(xué)模型的步驟可以看到我們應(yīng)該

27、怎樣分析這個問題,首先是根據(jù)實際情況建立關(guān)系式,即我們說的數(shù)學(xué)模型,在建立模型時注意建立模型的各種常用方法,這里用遞推法建立,然后運(yùn)用計算機(jī)來求解:比如這個問題的答案與n有關(guān),設(shè)第k天的桃子數(shù)為Pk,變化規(guī)律(我們在建立模型時實際上就是找到各個量之間的變化規(guī)律),首先令P0=n,利用遞推式Pk-1=2(Pk+1)(k=10,9,8,2)構(gòu)造循環(huán)算法。編寫Matlab程序如下:n=input(input n:);P(10)=n;for k=10:-1:2 P(k-1)=2*(P(k)+2);endP(1)(4)小型矩陣或用數(shù)據(jù)文件輸入將資料以矩陣的形式輸入程序的開始部分,比如上次輸入了矩陣a,并

28、保存到文件:LAB1.mat中,下次運(yùn)行時用load LAB1(回車)就可以了,如果是用.M文件輸入,則只要在命令窗口中輸入文件名就可以了。5、矩陣元素的操作(1)矩陣元素的提?。含F(xiàn)令a=1 2 3;4 5 6;7 8 9;b=4 5 8 1;l 按矩陣元素的序號進(jìn)行提取:MATLAB是以列為單位計算的,它按列給矩陣的元素編號,可用變量名加上下標(biāo)表示。如取b的第二個元素:b(2);取b的一二兩個元素:b(1 2)。l 按照矩陣的行列提?。篴(i , j): a矩陣的第i行與第j列的交叉元素的值,i與j可以是向量,它們分別表示對矩陣的行和列進(jìn)行操作。如:a(2 , 3):表示取第2行第3列的元素

29、6;a(2 , 1 3):表示取a第2行的第1列和第3列的元素4和6;a(2 3 , 1 3) :表示取a第2、3行的第1、3列的四個元素;a(1,1 : 3):表示取a的第1行的第1列到第3列的所有元素;a(1, :):表示取a的第1行的所有元素。這里a(1, :) 中的“:”是把列號省略的意思,就是所有的列,a(:,1) 中的“:”是把行號省略的意思。(2)小矩陣構(gòu)造大矩陣l c=a; 3 2 1表示在矩陣a中加一行構(gòu)成矩陣c(列數(shù)必須相等)。l 現(xiàn)令 d=1 2 3, d2=d,d表示構(gòu)造d2=、l 這里還有一種矩陣的構(gòu)造方法:x(m1: m2,n1: n2)=a。注:a 是n行m列的矩

30、陣,生成的x是m2行n2列的矩陣,其中,m2-m1+1=n; n2-n1+1=m,對應(yīng)元素為a的值,其余的全為零。如:x(1:4,2:4)=a;y(2:5,2:4)=a;(3):可以用它來刪除矩陣的行列,或整個矩陣。如:y(1, :)=,x= 6、M文件的編輯與建立MATLAB 6可以有兩種常用的工作方式:一種是直接交互的指令行操作方式;另一種是M文件的編程方式(程序的寫法見后)。前一種MATLAB給當(dāng)做一種高級的數(shù)學(xué)演算和計算可視化器來使用。后一種相當(dāng)于集成環(huán)境。M文件有兩種形式:命令文件和函數(shù)文件。這兩種文件的擴(kuò)展名相同,都是“.m”。當(dāng)用戶要運(yùn)行的指令較多時,可以直接從鍵盤上逐行輸入指令

31、,但這樣做顯得很麻煩;而命令文件則可以較好的解決這一問題。用戶可以將一組相關(guān)命令編輯在同一個ASCII碼命令中,運(yùn)行時只需輸入文件名,MATLAB就會自動按順序執(zhí)行文件中的命令,這類似于批處理文件。函數(shù)文件是另一種形式的M文件,它的第一句可執(zhí)行語句是以function引導(dǎo)的定義語句。在函數(shù)文件中的變量都是局部變量,它們在函數(shù)執(zhí)行過程中駐留在內(nèi)存中,在函數(shù)執(zhí)行結(jié)束時自動消失。函數(shù)文件不單單具有命令文件的功能,更重要的是它提供了與其它MATLAB函數(shù)和程序的接口,因此功能更強(qiáng)大。(1)命令文件命令文件中的語句可以訪問MATLAB工作空間(Workspace)中的所有數(shù)據(jù)。在運(yùn)行的過程中所產(chǎn)生的變量

32、均是全局變量。這些變量一旦生成,就一直保存在內(nèi)存空間中,除非用戶將它們清除(如clear命令)。運(yùn)行一個命令文件等價于從指令窗口中按順序連續(xù)執(zhí)行文件中的指令。由于命令文件只是一串指令的結(jié)合,因此程序不需要預(yù)先定義,而只需按在指令窗口中的指令輸入順序,依次將指令編輯在命令文件中就可以(在指令窗口中的新建m文件中進(jìn)入這個編輯窗口)。如果某個命令的結(jié)果不需要顯示出則在該命令后加上“;”,注意文件名一定是“.m”。如:求下列1,2,3,4,100的和:程序如下:s=0;for n=1:100 s=s+n;ends(2)函數(shù)文件如果M文件的第一行包含function,則該文件就是函數(shù)文件。每個函數(shù)文件都

33、定義一個函數(shù)。從形式上看,函數(shù)文件于命令文件的區(qū)別在于:命令文件的變量在文件執(zhí)行完后保留在內(nèi)存;而函數(shù)文件內(nèi)定義的變量僅在函數(shù)文件內(nèi)部起作用,當(dāng)函數(shù)文件執(zhí)行完成后,這些內(nèi)部變量將被清除。定義函數(shù)格式如下:function 因變量名=函數(shù)名(自變量名)注意:函數(shù)名應(yīng)該和M文件名相同。例:function y=f(x)y=sin(x);7、運(yùn)算符及特殊字符(1)算術(shù)運(yùn)算符+ 加法運(yùn)算。適用于兩個數(shù)相加或兩個同階矩陣相加。如果是一個矩陣和一個數(shù)字相加,則這個數(shù)字自動擴(kuò)展為與矩陣同維的一個矩陣。- 減法運(yùn)算。適用于兩個數(shù)相加或兩個同階矩陣相加。如果是一個矩陣和一個數(shù)字相減,則這個數(shù)字自動擴(kuò)展為與矩陣同

34、維的一個矩陣。* 乘法運(yùn)算。適用于兩個數(shù)相乘或兩個可乘矩陣相乘。.* 點乘運(yùn)算。適用于兩個同階矩陣對應(yīng)元素相乘。./ 點除運(yùn)算。適用于兩個同階矩陣對應(yīng)元素相除。 乘冪運(yùn)算。適用于一個方陣的多少次方。 反斜杠表示左除。如x=AB可以得到矩陣方程Ax=B的解。除、左除:a2/a3與a2*inv(a3)等價,a3a2與等價inv(a3)*a2,要求a3的逆存在。inv是求逆。(2)關(guān)系運(yùn)算符= = 等于 如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果相等,則在輸出矩陣的對應(yīng)位置輸出1,反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)

35、行比較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)eq(A,B)得到結(jié)果一樣。= 不等于 如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果相等,則在輸出矩陣的對應(yīng)位置輸出0,反之輸出1。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)ne(A,B)得到結(jié)果一樣。< 小于 如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是小于關(guān)系,則在輸出矩陣的對應(yīng)位置輸出1,反之輸出0。如

36、果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)lt(A,B)得到結(jié)果一樣。> 大于 如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是大于關(guān)系,則在輸出矩陣的對應(yīng)位置輸出1,反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)gt(A,B)得到結(jié)果一樣。<= 小于等于 如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將A中的元素和B中對應(yīng)元素進(jìn)行

37、比較,如果是小于或等于關(guān)系,則在輸出矩陣的對應(yīng)位置輸出1,反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)le(A,B)得到結(jié)果一樣。>= 大于等于 如果矩陣A和B都為矩陣,則A和B必須具有相同的維數(shù),運(yùn)算時將A中的元素和B中對應(yīng)元素進(jìn)行比較,如果是大于或等于關(guān)系,則在輸出矩陣的對應(yīng)位置輸出1,反之輸出0。如果其中一個為數(shù),則將這個數(shù)與另一個矩陣的所有元素進(jìn)行比較。無論何種情況,返回結(jié)果都與運(yùn)算的矩陣具有相同維數(shù)的由0和1組成的矩陣。函數(shù)ge(A,B)得到結(jié)果一樣。8、數(shù)學(xué)函數(shù)及其運(yùn)算MAT

38、LAB中函數(shù)的函數(shù)都有一個共同的特點:若自變量x為矩陣,則函數(shù)值也為x的同階矩陣。即對x的每一元素分別求函數(shù)值;若自變量x為通常情況下的一個數(shù)據(jù),則函數(shù)值是對應(yīng)于x的一個數(shù)據(jù)。MATLAB的函數(shù)有很多,后面有按照功能分類的各種函數(shù)和工具箱,有興趣的同學(xué)可以通過幫助學(xué)習(xí),這里只介紹基本的函數(shù)。(在學(xué)習(xí)的過程中注意利用幫助中的例子)。(1)三角函數(shù)sin(x)正弦函數(shù)asin(x) 反正弦函數(shù)cos(x)余弦函數(shù)acos(x)反余弦函數(shù)tan(x)正切函數(shù)atan(x)反正切函數(shù)(2)基本數(shù)學(xué)函數(shù)abs(x)絕對值max(x)最大值min(x)最小值sum(x)元素求和sqrt(x)開平方exp(

39、x)以e為底的指數(shù)log(x) 自然對數(shù) log10(x) 求以10為底數(shù)的函數(shù)sign(x)正負(fù)符號函數(shù) fix(x) 朝零方面取整round(x) 四舍五入到最近的整數(shù)floor(x) 朝負(fù)無窮方向取整rem(x,y) 求兩整數(shù)相除的余數(shù)ceil(x) 朝正無窮方向取整conj(x) 求復(fù)數(shù)的共軛imag(x) 求復(fù)數(shù)的虛部real(x) 求復(fù)數(shù)的實部 eig(x) 求矩陣x的特征值x,d=eig(A) 求A的特征向量矩陣x及對 角陣Dorth(x) 將非奇異矩陣x正交規(guī)范化(3)矩陣及其運(yùn)算norm(A) 求向量或矩陣的范數(shù) rank(A) 求矩陣的秩det(A) 求矩陣的行列式 tra

40、ce(A) 求矩陣的跡inv(A) 求方陣的逆矩陣eig(A) 求特征值及特征向量schur(A) 求矩陣的舒爾分解rref(X) 求矩陣X階梯形的行最簡形式size(A) 求矩陣的階數(shù)(4)常用數(shù)值計算多項式的表示方法及其運(yùn)算MATLAB中用行矢量表示多項式的系數(shù),行矢量中的各元素按照多項式的項的次數(shù)從高到低排列。如可以表示為p=1 0 2 3。求此多項式當(dāng)x=5時的值p(4),可以使用函數(shù)polyval(p,4);polyvalm(p,X):第二個參數(shù)X是方陣,表示求以矩陣為自變量的多項式的值;roots(p):找出一個多項式的根。多項式的曲線擬合根據(jù)一組已知的自變量和函數(shù)值,應(yīng)用最小二乘

41、法,求出多項式的擬合曲線,在MATLAB中可以通過ployfit函數(shù)實現(xiàn)。函數(shù)形式為:p=polyfit(x,y,n)。其中,前兩個輸入?yún)?shù)x,y都是矢量,表示已知的自變量取值和函數(shù)值,n為擬合多項式的次數(shù)。如:>>x=1 2 3 4 5;y=5.6 40 150 250 498.6;polyfit(x,y,3)求函數(shù)的最小值和零點l 求解一元函數(shù)的最小值:通過fminbnd(以前版本是fmin函數(shù))來求指定區(qū)間上的函數(shù)的局部極小值。fminbnd(函數(shù)名,起點,終點);l 多元函數(shù)最小值:用fminsearch(以前版本是fmins)來求,它可以指定一個開始的矢量,并非指定一個區(qū)

42、間。此函數(shù)返回一個矢量為多元函數(shù)局部最小值對應(yīng)的自變量的取值。fminsearch(函數(shù)名,初始矢量);l 求函數(shù)的零點:MATLAB中使用fzero來實現(xiàn),尋找零點時可以指定一個開始的位置,或者指定一個區(qū)間。如果指定一個開始點,函數(shù)首先在開始點附近尋找一個使函數(shù)值變號的區(qū)間,如果不存在,則返回NaN。如果知道函數(shù)值在某個區(qū)間上變號,則可以把這個區(qū)間作為參數(shù)。>>fzero(函數(shù)名,起點,終點)或fzero(函數(shù)名,初始位置)。積分和微分運(yùn)算l 函數(shù)的定積分:quad(被積函數(shù),積分下限,積分上限);l 微分運(yùn)算:diff(多項式矢量,微分階數(shù)),微分階數(shù)為1時可以省略。方程求解l

43、 求解代數(shù)方程的根:用solve函數(shù),調(diào)用格式:p=solve(eq)如:>> syms x y>> x,y=solve('x2+x*y+y=3','x2-4*x+3=0')有多少個未知數(shù)則需要在前面分別列出,如本例中的x,y;如果等式的值為0,也可以只寫等式右邊,如x,y=solve('x2+x*y+y=3','x2-4*x+3');一般情況下,如果不能得到數(shù)值解也會得到符號解,這是需要指出未知數(shù),如果沒有指出則表示x為未知數(shù)。如下例中以b為未知數(shù):>> syms x b>> so

44、lve('x2+x*b+b=3','b')l 微分方程:當(dāng)常微分方程能夠解析求解時,可以用MATLAB的符號工具箱中的功能找到精確解。在微分方程難以獲得解析的情況下,可以方便的通過數(shù)值計算求解,高階微分方程必須等價地變換成一階微分方程組進(jìn)行求解。這時用t,y=ode23(函數(shù),t的初值,t的終值,y的初值)。例:描述震蕩器的經(jīng)典范得波(Var der Pol)微分方程對于上述微分方程,通過重新定義兩個新的變量,來實現(xiàn)這種變換。令,則高階微分方程變?yōu)閮蓚€低階的微分方程:要解這個方程首先要建立一個M文件varr.m,內(nèi)容如下:function der=var(t,y

45、)der=y(2) 2*(1-y(1)2)*y(2)-y(1)'函數(shù)的參數(shù)是時間t和一個二維向量,返回值是一個列向量,代表的是導(dǎo)數(shù)的值。>>t,y=ode23('var',0 20,2 0);第一個參數(shù)是函數(shù)名,第二個是時間跨度,第三個是初值。返回的t是一個矢量,y是個矩陣,分別代表微分方程兩個自變量在時間t 的取值。9、使用繪圖命令使用MATLAB的繪圖命令,可以根據(jù)數(shù)據(jù)(或函數(shù))在計算機(jī)屏幕上繪制出對應(yīng)的圖形,便于可視化計算,其圖形的操作請同學(xué)們根據(jù)菜單選項自己試一試,下面介紹幾個最常用的繪圖命令:plot:繪制二維線性圖形及兩個坐標(biāo)軸; plot(x,

46、y)表示以x為橫坐標(biāo),y為縱坐標(biāo)的圖形。如:>> x=0:pi/100:2*pi;y=sin(x);plot(x,y)plot3:繪制三維線性圖形及三個坐標(biāo)軸;一般格式:plot3(x,y,z)如:>> t=0:pi/100:6*pi;x=cos(t);y=sin(t);z=2*t;plot3(y,x,z)hist:統(tǒng)計直方圖,hist(X)如:>> x=randn(10000,1);hist(x)10、數(shù)據(jù)處理max 求向量或矩陣最大值min 求向量或矩陣最小值mean 求向量或矩陣的平均值median 求向量或矩陣的中間值sum 求向量或矩陣的元素和pr

47、od 求向量或矩陣的元素乘積find 求向量中滿足條件的元素length 求向量所含元素個數(shù)corrcoef 求向量或矩陣的相關(guān)系數(shù)四、Matlab的編程由于使用MATLAB編程運(yùn)算與人進(jìn)行科學(xué)計算的思路和表達(dá)方式完全一致,這使MATLAB受到廣大科技工作者的青睞,下面簡單介紹MATLAB編程所涉及的常用語句。1、條件語句在Matlab中,可以利用條件語句來實現(xiàn)分支算法,最簡單的條件語句是if語句。當(dāng)條件滿足時,執(zhí)行條件后的指令;當(dāng)條件不滿足時,則不執(zhí)行條件后的指令。其具體格式為: if條件 語句 end在if語句的條件選項中通常應(yīng)有一個(或多個)邏輯表達(dá)式,但表達(dá)式的邏輯值為真,則執(zhí)行條件后

48、面的語句塊包含的指令;否則跳過條件后面的語句塊。在建立邏輯表達(dá)式時,常用到的關(guān)系符有下面(見表)有九個符號:符號名稱意義= =雙等號等于小于號小于大于號大于小于等于號小于等于大于等于號大于等于 =上波號與等號不等于與號邏輯與豎杠邏輯或上波號邏輯非例1 求函數(shù)的值。當(dāng)自變量取值為零時,補(bǔ)充定義函數(shù)值為1。求該函數(shù)值的程序(程序1.1)用到了分支算法。用于分支算法的if語句,其格式為:程序1.1 else endyif條件1語句塊1else語句塊2end上面語句的算法結(jié)構(gòu)是:當(dāng)條件1滿足時,執(zhí)行語句塊1;當(dāng)條件不滿足時,則執(zhí)行語句塊2;當(dāng)條件較多時必須用分支算法,用于多分支算法的if語句,其格式為

49、:if條件1語句塊1elseif<條件2>語句塊2else語句塊3end2、循環(huán)語句Matlab的循環(huán)語句有for循環(huán)語句和while循環(huán)語句兩種。for循環(huán)語句用于重復(fù)執(zhí)行某些操作,直至循環(huán)變量達(dá)到終止為止。具體格式為:for循環(huán)變量=初值:步長 :終值 循環(huán)體 endfor循環(huán)語句常用于由數(shù)控制的循環(huán)算法。當(dāng)初值小于終值時,步長為正數(shù);當(dāng)初值大于終值時,步長為負(fù)數(shù);當(dāng)步長被省略時,Matlab默認(rèn)值為1。例2、例2 用雙重循環(huán)編寫程序生成4階Hilbert矩陣. for for H end end while循環(huán)語句適用于由條件控制的循環(huán)算法的實現(xiàn).反復(fù)執(zhí)行某些操作,直到條件不

50、滿足為止.其具體格式為 while條件, 循環(huán) end例3 產(chǎn)生裴波拉奇數(shù)列:1,1,2,5,8,13,21,.要求數(shù)列之中最后一個數(shù)不超過1000.數(shù)列產(chǎn)生的遞推公式為: 1 1; I=1; while <, end下面是將for語句和if語句結(jié)合起來一達(dá)到特殊的目的的一個例子.在實現(xiàn)循環(huán)算法時常用到轉(zhuǎn)移語句.Matlab中的轉(zhuǎn)換語句是以if條件break,end的格式來定義的.例4 用ifbreak語句跳出while循環(huán).計算無窮級數(shù)的近似值.要求誤差不超過.while if ends這段程序執(zhí)行的結(jié)果,誤差界限不超過.如果沒有轉(zhuǎn)移語句,程序見按照公式求和并一直進(jìn)行下去永不休止,形成

51、死循環(huán).3、switchcaseend分支結(jié)構(gòu)switch語句是多分支選擇語句,雖然在某些場合switch的功能可以由if語句的多層嵌套來完成,但是會使程序變得復(fù)雜和難于修改維護(hù),而利用switch語句構(gòu)造多分支選擇時顯得更加簡單明了、容易理解。switch的基本用法為:switch 表達(dá)式case 常量表達(dá)式1 語句塊1case 常量表達(dá)式2 語句塊2case常量表達(dá)式n,常量表達(dá)式n+1, 常量表達(dá)式n+2 語句塊notherwise 語句塊n+1endswitch 后面的表達(dá)式可以為任何類型,如字符串、矩陣等當(dāng)表達(dá)式的值與case后面的某個表達(dá)式的值相等時,就執(zhí)行這個case后面的語句塊

52、,如果所有的常量表達(dá)式的值都與此表達(dá)式的值不匹配時,就執(zhí)行otherwise后面的語句塊。與if語句不同的是,各個case和otherwise語句出現(xiàn)的先后順序并不會影響程序的執(zhí)行結(jié)果,將otherwise語句放到case語句的前面也是合法的。每個case后面的常量表達(dá)式可以有多個,而且可以是不同的類型,每個case中常量表達(dá)式的值是可以重復(fù)的,這在語法上沒有錯誤,只是在執(zhí)行時后面那些符合條件的case語句將被忽略,不會起作用。每次只執(zhí)行一個語塊,執(zhí)行完一個語句塊后就退出switch語句。例5 我國新稅法規(guī)定:個體工商戶的生產(chǎn)、經(jīng)營所得和對事業(yè)單位的承包經(jīng)營、承租經(jīng)營所得應(yīng)交納的個人所得稅為:全年收入中應(yīng)納稅所得稅部分 稅率(%)1、不超過5000元的 52、超過5000元至10000元的部分 103、超過10000元至30000元的部分 204、超過30000元至50000元的部分 305、超過50000元的部分 35function y=shui(x)x=input('input x:')n=fix(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

提交評論