數學建模培訓-_MATLAB_第1頁
數學建模培訓-_MATLAB_第2頁
數學建模培訓-_MATLAB_第3頁
數學建模培訓-_MATLAB_第4頁
數學建模培訓-_MATLAB_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、q 用計算機解決數值分析問題q 三大數學軟件Matlab,Maple, Mathematicaq Matlab: Matrix Laboratry 矩陣實驗室矩陣實驗室q 在國際上在國際上 30 幾個數學類科技應用軟件中,幾個數學類科技應用軟件中, Matlab 在在數值數值計算計算方面獨占鰲頭。方面獨占鰲頭。q 目前,目前,Matlab 已經成為國際上最流行的科學與工程計算的已經成為國際上最流行的科學與工程計算的軟件工具,是一種具有廣泛應用前景的全新的計算機高級編軟件工具,是一種具有廣泛應用前景的全新的計算機高級編程語言了,有人稱它為程語言了,有人稱它為“第四代第四代”計算機語言。計算機語言

2、。 就影響而言,就影響而言,至今仍然沒有一個別的計算軟件可與至今仍然沒有一個別的計算軟件可與 Matlab 匹敵。匹敵。 q Matlab 的最新版本的最新版本2010年,年, Matlab 7.11(R2010b)q Matlab 具有很強的數值計算功能具有很強的數值計算功能 Matlab 以以矩陣矩陣作為數據操作的基本單位,但無需預先指定作為數據操作的基本單位,但無需預先指定 矩陣維數(矩陣維數(動態(tài)定維動態(tài)定維) 按照按照 IEEE 的數值計算標準進行計算的數值計算標準進行計算 提供十分豐富的數值計算函數,方便計算,提高效率提供十分豐富的數值計算函數,方便計算,提高效率 Matlab 命

3、令與數學中的符號、公式非常接近,可讀性強,命令與數學中的符號、公式非常接近,可讀性強, 容易掌握容易掌握q Matlab 是一個交互式軟件系統(tǒng)是一個交互式軟件系統(tǒng)輸入一條命令,立即就可以得出該命令的結果輸入一條命令,立即就可以得出該命令的結果q Matlab 符號計算功能符號計算功能Matlab 和著名的符號計算語言和著名的符號計算語言 Maple 相結合相結合q Matlab 的編程功能的編程功能Matlab具有具有程序結構控制程序結構控制、函數調用函數調用、數據結構數據結構、輸入輸出輸入輸出、面向對象面向對象等程序語言特征,而且等程序語言特征,而且簡單易學簡單易學、編程效率高編程效率高。通

4、過通過 Matlab 提供的編程語言進行編程完成特定的任務提供的編程語言進行編程完成特定的任務q Matlab 的繪圖功能的繪圖功能Matlab提供豐富的繪圖命令,提供豐富的繪圖命令,很方便實現(xiàn)數據的可視化很方便實現(xiàn)數據的可視化q Matlab 豐富的工具箱(豐富的工具箱(toolbox)根據專門領域中的特殊需要而設計的各種可選工具箱根據專門領域中的特殊需要而設計的各種可選工具箱q Matlab 的的 Simulink 動態(tài)仿真集成環(huán)境動態(tài)仿真集成環(huán)境提供建立系統(tǒng)模型、選擇仿真參數和數值算法、啟動仿真程提供建立系統(tǒng)模型、選擇仿真參數和數值算法、啟動仿真程序對該系統(tǒng)進行仿真、設置不同的輸出方式來

5、觀察仿真結果序對該系統(tǒng)進行仿真、設置不同的輸出方式來觀察仿真結果等功能等功能Symbolic Math PDEOptimizationSignal processImage ProcessStatisticsControl SystemSystem Identification 1.2 Matlab 的集成環(huán)境的集成環(huán)境q Matlab 系統(tǒng)的啟動系統(tǒng)的啟動 雙擊雙擊 Matlab 快捷圖標快捷圖標q Matlab 系統(tǒng)的退出系統(tǒng)的退出 單擊單擊 Matlab 主窗口的主窗口的“關閉關閉”按鈕按鈕Matlab 的工作界面命令窗口命令窗口當前工當前工作目錄作目錄當前工當前工作空間作空間輸入命令的

6、輸入命令的歷史記錄歷史記錄命令命令提示符提示符q Matlab命令窗口(命令窗口(command window)在在后鍵入命令,并按下后鍵入命令,并按下enter鍵后,鍵后, Matlab 就會解就會解釋執(zhí)行所輸入的命令,并在命令后面給出計算結果。釋執(zhí)行所輸入的命令,并在命令后面給出計算結果。默認的顯示結果變量為默認的顯示結果變量為mand window是是Matlab的主要交互窗口,用于的主要交互窗口,用于:輸輸入命令并顯示除圖形以外的所有執(zhí)行結果。入命令并顯示除圖形以外的所有執(zhí)行結果。命令命令提示符提示符 命令行的輸入規(guī)則命令行的輸入規(guī)則命令行后以命令行后以分號分號(;)結尾結尾,表示,表

7、示不顯示運行結果不顯示運行結果。命令行后命令行后無符號或以逗號無符號或以逗號(,)結尾結尾,表示,表示顯示運行結果顯示運行結果一個命令行可以輸入若干條命令,各命令之間以逗一個命令行可以輸入若干條命令,各命令之間以逗號或分號分隔號或分號分隔如果一個命令行很長,需要換行時,要加續(xù)行符如果一個命令行很長,需要換行時,要加續(xù)行符(三個小黑點(三個小黑點)標點符號一定要在標點符號一定要在下輸入。下輸入。若需要在命令行后加注釋,注釋以若需要在命令行后加注釋,注釋以%開始。開始。q 幫助命令幫助命令help 顯示指定命令的簡短使用說明顯示指定命令的簡短使用說明例:例: help eig lookfor 按指

8、定的關鍵詞查詢與之相關的命令按指定的關鍵詞查詢與之相關的命令例:例: lookfor eig doc 以網頁形式以網頁形式顯示指定命令的幫助頁顯示指定命令的幫助頁例:例: doc eig q clc: 清除命令窗口清除命令窗口;clf: 清除當前圖形清除當前圖形;clear: 清除工作空間的變量和函數清除工作空間的變量和函數. 第二節(jié)第二節(jié) MATLAB語言基本操作語言基本操作2、變量命名原則:、變量命名原則:u 以以字母開頭字母開頭u 后面可以跟后面可以跟 字母、數字字母、數字 和和 下劃線下劃線u 長度長度不超過不超過 63 個字符個字符u變量名變量名 區(qū)分字母的區(qū)分字母的 大小大小 寫,

9、寫,MATLAB提供的提供的標準函數名以及命令名必須用標準函數名以及命令名必須用小寫字母小寫字母。1、基本變量:基本變量:矩陣矩陣 在在MATLAB工作空間中,還駐留幾個由系統(tǒng)工作空間中,還駐留幾個由系統(tǒng)本身定義的變量。它們有特定的含義,在使用時,本身定義的變量。它們有特定的含義,在使用時,應盡量避免對這些變量重新賦值。應盡量避免對這些變量重新賦值。 例如:例如:pi 、i、inf等等。等等。3、預定義變量、預定義變量預定義變量預定義變量含義含義預定義變量預定義變量含義含義ans計算結果的缺省變量名計算結果的缺省變量名pi圓周率圓周率i或或j虛數單位虛數單位eps機器零閾值(機器零閾值(=2.

10、2204e-016)Inf或或Inf無窮大,如無窮大,如1/0nan或或NaN不是一個數,如不是一個數,如0/0,/realmax最大正實數最大正實數realmin最小正實數最小正實數nargin函數輸入宗量數目函數輸入宗量數目nargout函數輸出宗量數目函數輸出宗量數目lasterr最新一次的錯誤信息最新一次的錯誤信息lastwarn最新一次的警告信息最新一次的警告信息4、變量(矩陣)的建立、變量(矩陣)的建立 (1)直接輸入法直接輸入法例如例如 A=1 2 3;4 5 6;7 8 9 矩陣用方括號矩陣用方括號“ ”括起括起矩陣同一行中的元素之間用矩陣同一行中的元素之間用 空格空格 或或

11、逗號逗號 分隔分隔矩陣行與行之間用矩陣行與行之間用 分號分號 分開分開直接輸入法中,分號可以用直接輸入法中,分號可以用 回車回車 代替代替或或 A=1,2,3 4,5,6 7,8,9(2) 利用利用MATLAB函數建立矩陣函數建立矩陣幾個產生特殊矩陣的函數:幾個產生特殊矩陣的函數:zeros:產生全:產生全0矩陣矩陣(零矩陣零矩陣)。ones:產生全:產生全1矩陣矩陣(幺矩陣幺矩陣)。eye:產生單位矩陣。:產生單位矩陣。rand:產生:產生01間均勻分布的隨機矩陣。間均勻分布的隨機矩陣。randn:產生均值為:產生均值為0,方差為,方差為1的標準正態(tài)分布隨機矩的標準正態(tài)分布隨機矩陣。陣。ma

12、gic:產生魔方陣:產生魔方陣pascal:產生帕斯卡陣:產生帕斯卡陣 這幾個函數的調用格式相似,下面以產生零矩這幾個函數的調用格式相似,下面以產生零矩陣的陣的zeros函數為例進行說明。其調用格式是:函數為例進行說明。其調用格式是: zeros(m) 產生產生mm零矩陣零矩陣 zeros(m,n) 產生產生mn零矩陣零矩陣 zeros(size(A) 產生與矩陣產生與矩陣A同樣大小的零矩陣同樣大小的零矩陣u size(A) 列出矩陣列出矩陣 A 的的行數和列數行數和列數 大矩陣可以由方括號將小矩陣或向量建立。大矩陣可以由方括號將小矩陣或向量建立。例例: A=1,2,3; 4,5,6; 7,8

13、,9; B=1:3 C=A;B (3) 通過矩陣擴展建立矩陣通過矩陣擴展建立矩陣x=logspace(a,b,n) 創(chuàng)建從創(chuàng)建從10a開始,到開始,到10b結束,有結束,有n個個元素的對數分隔行向量元素的對數分隔行向量. (4) 創(chuàng)建行向量創(chuàng)建行向量直接產生:直接產生:x=a b c d e f 創(chuàng)建包含指定元素的行向量創(chuàng)建包含指定元素的行向量利用冒號表達式產生:利用冒號表達式產生:x=a:h:b 創(chuàng)建從創(chuàng)建從a開始,以開始,以h為步長,到為步長,到b結束的行向量,缺省時結束的行向量,缺省時h=1x=linspace(a,b,n) 與與a:(b-a)/(n-1):b等價等價 創(chuàng)建從創(chuàng)建從a開始

14、,到開始,到b結束,有結束,有n個元素的行向量個元素的行向量(5 5)創(chuàng)建列向量)創(chuàng)建列向量n 直接產生直接產生 例例 c=1;2;3;4 說明:以空格或逗號分隔的元素指定的是不同列說明:以空格或逗號分隔的元素指定的是不同列的元素,而以分號分隔的元素指定了不同行的元素的元素,而以分號分隔的元素指定了不同行的元素. . n 轉置產生轉置產生 例例 b=1 2 3 4; c=bq 矩陣單個元素的提取矩陣單個元素的提取利用小括弧和元素所在的位置(下標)利用小括弧和元素所在的位置(下標)A(i, j):矩陣:矩陣 A 中的第中的第 i 行,第行,第 j 列元素列元素A(i):):矩陣矩陣 A 中的第中

15、的第i個元素,它表示矩陣個元素,它表示矩陣A 中從第一列開始從上到下數,接著在從中從第一列開始從上到下數,接著在從 第二列第二列 開始從上到下數,依次下去,開始從上到下數,依次下去, 直到數到第直到數到第i i個。個。5、元素的提取、元素的提取例:例: A=1,2,3,4; 4,5,6,7; 5,7,9,0 b1= A(3,2) b2=A(6) 結果:結果: b1= 7 b2= 7 q 矩陣多個元素的提取矩陣多個元素的提取 冒號運算符冒號運算符u A(:) 或或 A(:,:) 提取提取A的所有元素的所有元素u A(:,k) 提取提取 A的第的第 k 列全部元素列全部元素 A(k,:) 提取提取

16、A的第的第 k 行全部元素行全部元素 u A(i:j,m:n) 提取提取 A A 的第的第 i i 到第到第 j j 行和第行和第 m m 到第到第 n n 列交叉線上的元素組成的子矩陣。列交叉線上的元素組成的子矩陣。u A(k:m) 提取提取A的第的第 k 到第到第 m 個元素個元素u A(:,k:m) 提取提取A的第的第 k列列 到第到第 m 列元素列元素 A(i:j,:) 提取提取A A的第的第 i i 行到第行到第 j j 行元素行元素(3 3)直接使用元素編址序號)直接使用元素編址序號: : x(a b c d) 表示提取表示提取向量向量x的第的第a、b、c、d個元素構成一個新的向量

17、個元素構成一個新的向量x(a) x(b) x(c) x(d). (2 2)提取一塊元素)提取一塊元素: : x (a :b :c)表示提取向量表示提取向量x的從第的從第a個元素開始,以個元素開始,以b為步長,到第為步長,到第c個元素(但不超過個元素(但不超過c)結束的這些元素,結束的這些元素,b可以為負數,可以為負數,b缺省時為缺省時為1.(1 1)提取一個元素:)提取一個元素: x(i)表示提取向量表示提取向量x的第的第i個元素個元素.q 向量元素的提取向量元素的提取 6、Matlab 賦值語句的通常形式賦值語句的通常形式變量變量=表達式表達式表達式是用運算符將有關運算量連接起來的式子,表達

18、式是用運算符將有關運算量連接起來的式子,其結果被賦給賦值號其結果被賦給賦值號“=”左邊的變量左邊的變量或或表達式表達式sin 正弦函數正弦函數 asin 反正弦函數反正弦函數 cos 余弦函數余弦函數 acos 反余弦函數反余弦函數 tan 正切函數正切函數 atan 反正切函數反正切函數 cot 余切函數余切函數 acot 反余切函數反余切函數 sec 正割函數正割函數 asec 反正割函數反正割函數 csc 余割函數余割函數 acsc 反余割函數反余割函數 sinh 雙曲正弦函數雙曲正弦函數 asinh 反雙曲正弦函數反雙曲正弦函數 cosh 雙曲余弦函數雙曲余弦函數 acosh 反雙曲余

19、弦函數反雙曲余弦函數 tanh 雙曲正切函數雙曲正切函數 atanh 反雙曲正切函數反雙曲正切函數 coth 雙曲余切函數雙曲余切函數 acoth 反雙曲余切函數反雙曲余切函數 sech 雙曲正割函數雙曲正割函數 asech 反雙曲正割函數反雙曲正割函數 csch 雙曲余割函數雙曲余割函數 acsch 反雙曲余割函數反雙曲余割函數 abs(x) 實數的絕對值實數的絕對值或復數的模或復數的模sqrt(x) 開平方開平方rat(x) 化為分數表示化為分數表示gcd(x,y) 最大公因數最大公因數lcm(x,y) 最小公倍數最小公倍數exp(x) 自然指數自然指數pow2(x) 2 2為底的指數為底

20、的指數log(x) e為底的對數為底的對數log10(x) 10為底的對數為底的對數log2(x) 2為底的對數為底的對數sign(x)符號函數符號函數conj(z)共軛復數共軛復數angle(z)復數復數z的相角的相角real(z)復數復數z的實部的實部imag(z)復數復數z的虛部的虛部round(x) 四舍五入取整四舍五入取整ceil(x)朝朝方向取整方向取整floor(x) 朝朝方向取整方向取整fix(x) 朝朝0 0方向方向取整取整rem(x,y)求求x除以除以y的余數的余數factor(x)質因數質因數factorial(x) x! 1、 算術運算算術運算(1) 基本算術運算基本算

21、術運算、*(乘)、(乘)、 (左除)、(左除)、 /(右除)、(右除)、(乘方)(乘方)23如:如: 2/3或或 3 2 運算是在矩陣意義下進行的,單個數據的算運算是在矩陣意義下進行的,單個數據的算術運算只是矩陣運算的一種特例。術運算只是矩陣運算的一種特例。 對于矩陣對于矩陣 A/B:AB-1 AB:A-1B 兩矩陣進行兩矩陣進行點運算點運算是指它們的是指它們的對應位置上的元素對應位置上的元素進行相關運算,要求兩矩陣的維數相同。進行相關運算,要求兩矩陣的維數相同。 (2) 點運算點運算.*、./、.、.(2)關系運算符的運算法則:)關系運算符的運算法則:2、關系運算、關系運算(1)MATLAB

22、提供了提供了6種關系運算符:種關系運算符:(小于小于)、(大于大于)、=(大于或大于或等于等于)、=(等于等于)、=(不等于不等于)。它們的含義不它們的含義不難理解,但要注意其書寫方法與數學中的不等式難理解,但要注意其書寫方法與數學中的不等式符號不盡相同。符號不盡相同。u 當兩個比較量當兩個比較量都是標量都是標量時,直接時,直接比較兩數的大小比較兩數的大小。若關系成立,關系表達式結果為若關系成立,關系表達式結果為1,否則為,否則為0。u 當當兩個維數相同的矩陣比較兩個維數相同的矩陣比較時,時,相同位置上的元相同位置上的元素素按標量關系運算規(guī)則逐個進行。按標量關系運算規(guī)則逐個進行。u 當參與比較

23、的當參與比較的一個是標量一個是標量,而,而另一個是矩陣另一個是矩陣時,時,把把標量標量與與矩陣的每一個元素矩陣的每一個元素按標量關系運算規(guī)則按標量關系運算規(guī)則逐個比較。逐個比較。3、邏輯運算、邏輯運算(1)MATLAB提供了提供了3種邏輯運算符:種邏輯運算符:&(與與)、|(或或)和和(非非)。(2)邏輯運算符的運算法則:)邏輯運算符的運算法則:u 在邏輯運算中,確認非零元素為真,用在邏輯運算中,確認非零元素為真,用1 1表示,表示,零元素為假,用零元素為假,用0 0表示。表示。u 當參與邏輯運算的是當參與邏輯運算的是兩個標量兩個標量a a和和b b,那么,那么, a&b: a

24、,b全為非零時,結果為全為非零時,結果為1,否則為,否則為0。 a|b : a,b中只要有一個非零,結果為中只要有一個非零,結果為1。 a: 當當a是零時是零時,結果為結果為1;當;當a非零時非零時,結果為結果為0。u 當當兩個維數相同的矩陣兩個維數相同的矩陣做邏輯運算做邏輯運算 時,時,相同位相同位置上的元素置上的元素按標量關系運算規(guī)則逐個進行。按標量關系運算規(guī)則逐個進行。u 當參與邏輯運算的當參與邏輯運算的一個是標量一個是標量,而,而另一個是矩陣另一個是矩陣時,把時,把標量標量與與矩陣的每一個元素矩陣的每一個元素按標量關系運算按標量關系運算規(guī)則逐個進行。規(guī)則逐個進行。u各運算符的優(yōu)先級各運

25、算符的優(yōu)先級算術算術 關系關系 邏輯邏輯u size(A) 求出矩陣求出矩陣 A 的的行數和列數行數和列數u length(x) 返回返回向量向量 X 的的長度長度1、查看矩陣的大?。?、查看矩陣的大小:2、 矩陣的轉置與共軛轉置矩陣的轉置與共軛轉置u 共軛轉置共軛轉置u . 轉置,矩陣元素不取共軛轉置,矩陣元素不取共軛點與單引號之間不能有空格點與單引號之間不能有空格!例如例如 A=1 2;2i 3i B=A C=A.3、 刪除矩陣元素刪除矩陣元素 A=1 2 3; 4 5 6; 7 8 9 A(:,2)= 結果:結果: A= 1 3 4 6 7 9 注:注:如要刪除單個元素不能如要刪除單個元素

26、不能:A(1,2)= ; 可用可用A(4)= 不過剩下的元素將排成一組數,而非矩不過剩下的元素將排成一組數,而非矩陣。陣。 A=1 2 3; 4 5 6; 7 8 9 A(4)= 結果:結果:A = 1 4 7 5 8 3 6 94、向量和矩陣的范數向量和矩陣的范數u norm(V)或或norm(V,2) 求向量求向量V(或矩陣(或矩陣V )的的2范數范數u norm(V,1) 求向量求向量V(或矩陣(或矩陣V)的)的1范范數數u norm(V,inf) 求向量求向量V(或矩陣(或矩陣V)的的范數范數5、求方陣、求方陣A的行列式的行列式: det(A)6、求方陣、求方陣A的逆矩陣的逆矩陣: i

27、nv(A)7、求矩陣、求矩陣A的跡的跡: trace(A)8、求矩陣、求矩陣A的秩的秩: rank(A)9、求矩陣、求矩陣A的特征值和特征向量的特征值和特征向量: d=eig(A) V,D=eig(A)10、矩陣分解、矩陣分解u三角分解三角分解 :L,U=lu(A) 其中:其中:L是由對角線元素全為是由對角線元素全為1的下三角陣經轉化而成,的下三角陣經轉化而成,U為為上三角陣,滿足上三角陣,滿足A=LUu正交分解:正交分解:Q,R=qr(A) 其中:其中:Q是正交陣,是正交陣,R為上三角陣,滿足為上三角陣,滿足A=QR11、其他常用命令、其他常用命令max(A) 求求A各列最大元素各列最大元素

28、min(A) 求求A各列的最小值各列的最小值mean(A) 求求A各列的平均值各列的平均值sum(A) 求求A各列元素之和各列元素之和prod(A) 求求A的各列元素之積的各列元素之積sort(A) 使使A各列元素按遞增排序各列元素按遞增排序median(A) 求求A各列的中位元素各列的中位元素std(A) 求求A各列的標準差各列的標準差var(A) 求求A各列的方差各列的方差find(A) 找出找出矩陣矩陣A中非零中非零元素所在的元素所在的下標下標find(條件條件) 找出符合條件的元素所在的位置找出符合條件的元素所在的位置diag(A) 提取矩陣提取矩陣A 的主對角線上元素,生成一個列向量

29、的主對角線上元素,生成一個列向量diag(A,k) 提取矩陣提取矩陣A第第k條對角線的元素條對角線的元素diag(V) 以向量以向量V的元素為主對角線上的元素構造的對角的元素為主對角線上的元素構造的對角 矩陣矩陣diag(V,k) 以向量以向量V的元素為第的元素為第k條對角線上的元素的構造條對角線上的元素的構造 的對角陣的對角陣12、向量與多項式、向量與多項式例:建立多項式例:建立多項式5421( )2544pxxxxx p1=2,5,0,4,1,4;422( )24pxxx p1=2,5,0,4,1,4; p2=0,1,0,2,0,4; p1+p2 p1-p2求求1( )2( ), 1( )

30、2( )pxpxpxpx u多項式的乘法多項式的乘法 conv(P1,P2) 求多項式求多項式P1和和P2的乘積的乘積u多項式的除法多項式的除法 Q,r=deconv(P1,P2) 求求P1/P2; 其中其中Q為商式為商式,r為余式為余式。u 多項式求根多項式求根 roots(P) P是多項式是多項式 p(x)的系數向量,該函數返回的系數向量,該函數返回 p(x)=0 的的全部根(含重根,復根)全部根(含重根,復根)u多項式求函數值多項式求函數值 polyval(P, x) 求多項式求多項式 P在某點或某些點的函數值;在某點或某些點的函數值; 若若x為一為一數值,則求多項式數值,則求多項式P在

31、該點處的值;在該點處的值; 若若x為向量或矩陣,則求多項式為向量或矩陣,則求多項式P在向量或矩陣中的每個元素在向量或矩陣中的每個元素處的值處的值第三節(jié)第三節(jié) MATLAB程序設計程序設計q 用用 Matlab 語言編寫的程序稱為語言編寫的程序稱為 M 文件文件。q M 文件根據調用方式的不同可以分為兩類:文件根據調用方式的不同可以分為兩類:u Script:腳本文件:腳本文件/命令文件命令文件 u Function:函數文件:函數文件 q M 文件以文件以 .m 為擴展名。為擴展名。M 文件的建立、打開、運行q 新建一個新建一個 M 文件文件u 菜單操作菜單操作 ( File New M-Fi

32、le )u命令按鈕命令按鈕 ( 快捷鍵快捷鍵 )q 打開已有的打開已有的 M 文件文件u 菜單操作菜單操作 ( File Open )u 命令按鈕命令按鈕 ( 快捷鍵快捷鍵 )q 運行運行 M腳本文件腳本文件u editor編輯窗口編輯窗口 ( Debug run)u命令按鈕命令按鈕 ( 快捷鍵快捷鍵 )function 輸出形參列表輸出形參列表=函數名函數名(輸入形參列表輸入形參列表)% 注釋說明部分注釋說明部分(可選可選)函數體語句函數體語句(必須必須)u 第一行為第一行為引導行引導行,表示該,表示該 M文件是函數文件文件是函數文件u 函數名的命名規(guī)則與變量名相同函數名的命名規(guī)則與變量名相

33、同 ( 必須以字母開頭必須以字母開頭 )u 當輸出行參只有一個時,可省略當輸出行參只有一個時,可省略方括號方括號u 函數必須是一個函數必須是一個單獨的單獨的 M文件文件u 函數函數文件名必須與函數名一致文件名必須與函數名一致u 以以百分號百分號開始的語句為開始的語句為注釋語句注釋語句3.2 函數文件函數文件q 函數文件的結構:由 function 語句引導q 函數調用函數調用輸出實參列表輸出實參列表=函數名函數名(輸入實參列表輸入實參列表)u 函數調用時,函數調用時,實參的順序實參的順序應與函數定義時的應與函數定義時的形參的順形參的順序序一致。一致。 函數文件如下:函數文件如下: functi

34、on s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圓半徑圓半徑 %s 圓面積圓面積 %p 圓周長圓周長 s=pi*r*r; p=2*pi*r; 例例 編寫函數文件求半徑為編寫函數文件求半徑為r的圓的面積和周長。的圓的面積和周長。以文件名以文件名fcircle.m存入存入c:matlab71work下,下,然后在然后在MATLAB命令窗口調用該函數:命令窗口調用該函數: s,p=fcircle(10)q 程序控制結構有三種:順序結構、選擇結構和循環(huán)結構。任何復雜的程序都由這三種

35、基本結構組成。u 順序結構順序結構l 按排列順序依次執(zhí)行各條語句,直到程序的最后。l 這是最簡單的一種程序結構,一般涉及數據的輸入輸出、數據的計算或處理等。選擇結構選擇結構 是根據給定的條件成立或不成立,分別執(zhí)行不同的語句。Matlab 用于實現(xiàn)選擇結構的語句有 if 語句、switch 語句和try語句 。u 選擇結構選擇結構if 條件條件 語句組語句組1else 語句組語句組2endl 雙分支結構l 單分支結構if 條件條件 語句組語句組endif 條件語句if 條件1 語句組1elseif 條件2 語句組2 . . elseif 條件m 語句組melse 語句組endl 多分支結構l 根

36、據表達式的不同取值,分別執(zhí)行不同的語句。switch 表達式表達式 case 表達式表達式1 語句組語句組1 case 表達式表達式2 語句組語句組2 . . case 表達式表達式m 語句組語句組m otherwise 語句組語句組endswitch 語句l Matlab 首先計算 表達式表達式的值,然后將它依次與各個 case 指令后的檢測值進行比較,當比較結果為真時,就執(zhí)行相應的語句組,然后跳出 switch 結構。l switch 后面的表達式 表達式表達式的值可以是一個標量或字符串。switch 語句l otherwise 指令可以不出現(xiàn)。l 如果所有的比較結果都為假,則執(zhí)行 oth

37、erwise 后面的語句組,然后跳出 switch 結構。try 語句try 語句組語句組1 %語句組語句組1若正確則跳出該結構若正確則跳出該結構catch 語句組語句組2endl try語句先試探性執(zhí)行語句組語句先試探性執(zhí)行語句組1,如果語句組,如果語句組1在在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執(zhí)行語句組變量,并轉去執(zhí)行語句組2。for 循環(huán)變量循環(huán)變量=初值:步長:終值初值:步長:終值 循環(huán)體循環(huán)體endu 循環(huán)結構循環(huán)結構注意:注意:for 循環(huán)適合循環(huán)次數確定的情況;循環(huán)適合循環(huán)次數確定的情況; while循環(huán)

38、適合循環(huán)次數不確定的情況循環(huán)適合循環(huán)次數不確定的情況 while循環(huán)循環(huán)容易出現(xiàn)容易出現(xiàn)死循環(huán)死循環(huán),使用時一定要注意,使用時一定要注意. 若出現(xiàn)死循環(huán),則按鍵盤:若出現(xiàn)死循環(huán),則按鍵盤:Ctrl+C強制結束程序強制結束程序.while 條件條件 循環(huán)體循環(huán)體end提示:與各種編程語言一樣,各種結構之間可以嵌套使用提示:與各種編程語言一樣,各種結構之間可以嵌套使用. 例例 已知已知y的表達式的表達式 ,當,當n=100時,求時,求y的值。的值。程序如下:程序如下: y=0;n=100; for i=1:n y=y+1/i/i; end y在實際在實際MATLAB編程中,編程中,為提高程序的執(zhí)行

39、速度,常為提高程序的執(zhí)行速度,常用向量運算來代替循環(huán)操作:用向量運算來代替循環(huán)操作: n=100; i=1:n; f=1./i.2; y=sum(f)211/niyi 1、 法法1:plot(x,y) ,若,若 x 的長度與的長度與 y 的行數相等,則將的行數相等,則將 x 與與 y 中的各列相對應,繪制多條平面曲線;否則,若中的各列相對應,繪制多條平面曲線;否則,若 x 的長的長度與度與 y 的列數相等,則將的列數相等,則將 x 與與 y 中的各行相對應,繪制多條中的各行相對應,繪制多條平面曲線。此時平面曲線。此時 x 的長度必須等于的長度必須等于 y 的行數或列數的行數或列數。 x, y

40、都是矩陣,都是矩陣,則將則將 x和和 y的對應列組合的對應列組合,繪制多條平面曲,繪制多條平面曲線。此時線。此時 x, y 必須具有必須具有相同的大小相同的大小。 x, y 都是向量都是向量,則以,則以 x 中元素為中元素為橫坐標橫坐標, y 中元素中元素為縱坐為縱坐標標作平面曲線。此時作平面曲線。此時 x, y 必須具有必須具有相同長度相同長度。4.1 4.1 二維圖形二維圖形u輸入參數都為輸入參數都為向量向量時,時,x1和和y1,, xn和和yn分別分別組成一組向量對,每一組向量對的長度可以不同。組成一組向量對,每一組向量對的長度可以不同。每一向量對可以繪制出一條曲線,這樣可以在同每一向量

41、對可以繪制出一條曲線,這樣可以在同一坐標內繪制出多條曲線。一坐標內繪制出多條曲線。 plot(x1,y1,選項選項1,xn,yn,選項選項n)u當輸入參數當輸入參數有矩陣形式有矩陣形式時,配對的時,配對的x,y按對應列按對應列元素元素為橫、縱坐標分別繪制曲線,曲線條數等于矩陣的列數為橫、縱坐標分別繪制曲線,曲線條數等于矩陣的列數圖形的基本屬性圖形的基本屬性線型線型點標記點標記顏色顏色- - 實線實線: : 虛線虛線-.-. 點劃線點劃線- 間斷線間斷線. . 點點o o 小圓圈小圓圈x x 叉子符叉子符+ + 加號加號* * 星號星號s s 方格方格d d 菱形菱形 朝上三角朝上三角v v 朝

42、下三角朝下三角 朝右三角朝右三角 x=0:pi/15:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,b:+,x,y2,g-.*)例:例:01234567-1-0.8-0.6-0.4-0.200.20.40.60.81藍色、虛線、藍色、虛線、離散點用加號離散點用加號綠色、點劃線線、綠色、點劃線線、離散點用星號離散點用星號法2、二維曲線的繪制: ezplotu ezplot(f(x,y),a,b,c,d)繪繪f(x,y)=0在區(qū)間在區(qū)間 axb,cyd 上的圖形上的圖形u ezplot(f,g,a,b)繪繪x=f(t),y=g(t)在區(qū)間在區(qū)間 atb 上的圖形上的圖

43、形u ezplot(f(x,y),a,b)繪繪f(x,y)=0在區(qū)間在區(qū)間 ax,yb 上的圖形上的圖形缺省的繪圖區(qū)間為缺省的繪圖區(qū)間為 -2 , 2 缺省的繪圖區(qū)間為缺省的繪圖區(qū)間為 0, 2 u ezplot(f,a,b)繪繪 y=f(x)在區(qū)間在區(qū)間 axb 上的圖形上的圖形缺省的繪圖區(qū)間為缺省的繪圖區(qū)間為 -2 , 2 例:ezplot 作圖4.2 三維曲線 : plot3繪制一條三維曲線:x=x(t),y=y(t),z=z(t),則:則:plot3的用法與的用法與 plot 類似類似plot3(x,y,z,選項選項)plot3(x1,y1,z1,選項選項1,x2,y2,z2,選項選項

44、2 ,xn,yn,zn,選項選項n)繪制多條三維曲線:q三維曲線的簡捷繪制: ezplot3缺省的繪圖區(qū)間為缺省的繪圖區(qū)間為 0, 2 u ezplot3(x,y,z,a,b)繪空間曲線繪空間曲線x=x(t),y=y(t),z=z(t)在在 atb 上的圖形上的圖形4.3 三維曲面 繪制由函數 z=z(x,y) 確定的曲面時,步驟如下:u setp1:x=a:dx:b;y=c:dy:d;X,Y=meshgrid(x,y);u setp2: 再計算函數z=z(x,y)在各網格點上的值Z= ;注意此處采用點運算注意此處采用點運算u setp3:其中,其中,X, Y 是網格劃是網格劃分后得到的網格矩

45、陣分后得到的網格矩陣若 x = y, 則可簡寫為 X,Y= meshgrid(x)mesh(X,Y,Z,C) 或或 surf(X,Y,Z,C) 或或 其它繪圖函數其它繪圖函數繪制由矩陣繪制由矩陣 X,Y,Z 所確定的曲面所確定的曲面網格圖網格圖(或著色的表或著色的表面圖面圖),矩陣矩陣 C 用于確定網格用于確定網格顏色,省略時顏色,省略時 C=Z。q 例:“墨西哥帽子”確定的曲面其中由函數 ,/ )sin( 22yxrrrz( a x a, -a y x=-8:0.5:8; y=-8:0.5:8; X,Y=meshgrid(x,y); r=sqrt(X.2+Y.2)+eps; Z=sin(r)

46、./r; subplot(1,2,1), mesh(X,Y,Z) subplot(1,2,2), surf(X,Y,Z)epseps?mesh 與與 surf 的比較的比較q 三維三維曲面的簡捷繪制: ezmesh、ezsurfu ezmesh(z,a,b,c,d)dycbxayxzz,),(u ezmesh(x,y,z,a,b,c,d)dtcbsatszztsyytsxx,),(),(),(ezsurf 的用法與 ezmesh 相同u 標題標注title(text, 屬性屬性1, 屬性屬性1的值的值, 屬性屬性2, 屬性屬性2的值的值, .)屬性屬性: linewidth, markersi

47、ze, fontsize, fontweight, fontname, 4.4 輔助操作(適合二維和三維圖形)輔助操作(適合二維和三維圖形)u 坐標軸標注 xlabel 、ylabel、zlabelu 添加圖例 legendu 在指定位置(x,y)處添加文本text(x,y,string1,string2, .)u 顯示網格grid on/off 畫畫/不畫網格線不畫網格線grid 在兩種狀態(tài)之間切換在兩種狀態(tài)之間切換axis(xmin, xmax, ymin, ymax, zmin, zmax)作用:控制坐標軸的顯示范圍作用:控制坐標軸的顯示范圍u坐標軸控制命令: axisu 劃分繪圖區(qū)域s

48、ubplot(m,n,p)將一個繪圖窗口分割成將一個繪圖窗口分割成 m*n 個子區(qū)域,并個子區(qū)域,并 按行按行 從左至從左至右右 依次編號依次編號 。并指定第。并指定第p 個為圖形的繪圖區(qū)域。個為圖形的繪圖區(qū)域。 x=-pi:pi/10:pi; subplot(2,2,1);plot(x,sin(x); subplot(2,2,2);plot(x,cos(x); subplot(2,2,3);plot(x,x.2); subplot(2,2,4);plot(x,exp(x);例例:-4-2024-1-0.500.51-4-2024-1-0.500.51-4-20240246810-4-2024

49、05101520251、求解線性方程組、求解線性方程組 u Ax=B 命令:命令:x=ABu xA=B 命令:命令: x=B/A 對對Am*n m=n 正定矩陣正定矩陣 給出唯一解給出唯一解 mn 超定矩陣超定矩陣 給出最小二乘解給出最小二乘解 mf=inline(cos(15*x),x); tic,I1=quad(f,0,3*pi/2),toc結果:結果: I1 = 6.666665694139176e-002 Elapsed time is 0.177297 seconds.可見,這樣的計算精度并不高,不是很令人滿意,現(xiàn)可見,這樣的計算精度并不高,不是很令人滿意,現(xiàn)在設置精度為在設置精度為

50、10-15,看看結果如何看看結果如何法法1-2: f=inline(cos(15*x),x); tic,I2=quad(f,0,3*pi/2,1e-15),toc結果為:結果為: Warning: Maximum function count exceeded; singularity likely. In quad at 110I2 = -4.119866644515864e-001Elapsed time is 1.733378 seconds.可見,當設置精度為可見,當設置精度為10-15時,該方法失效時,該方法失效下面試試下面試試quadl,在精度為,在精度為10-15時,是否會失效時

51、,是否會失效法法2-1: f=inline(cos(15*x),x); tic,I3=quadl(f,0,3*pi/2,1e-15),toc結果為:結果為: I3 = 6.666666666666668e-002 Elapsed time is 0.830788 seconds.可見,當設置精度為可見,當設置精度為10-15時,時,quadl并未失效并未失效當設置精度為當設置精度為10-20時,時,quadl會失效嗎會失效嗎法法2-2: f=inline(cos(15*x),x); tic,I4=quadl(f,0,3*pi/2,1e-20),toc結果為:結果為: Warning: Maxi

52、mum function count exceeded; singularity likely. I4 = 0.4803Elapsed time is 0.578557.可見,當設置精度為可見,當設置精度為10-20時,時,quadl失效失效其實本題可以用符號工具箱求出更精確的解其實本題可以用符號工具箱求出更精確的解法法4: syms x; I=vpa(int(cos(15*x),0,3*pi/2),60) 結果:結果: I = .666666666666666666666666666666666666666666666666666666666667e-1u數值求解二重積分的命令數值求解二重積

53、分的命令 dblquad(fun,x1,x2,y1,y2,tol)求被積函數求被積函數fun在矩形區(qū)域在矩形區(qū)域x1,x2y1,y2的二重積分;的二重積分;其他參數和其他參數和quad完全相同完全相同例例212212sin()xIexy dxdy f=inline(exp(-x.2/2).*sin(x.2+y),x,y); I=dblquad(f,-2,2,-1,1)遺憾的是,遺憾的是,matlab中并沒有提供求下面二重積分的函數中并沒有提供求下面二重積分的函數2( )1( )( , )byxayxIf x y dydx u數值求解三重積分的命令數值求解三重積分的命令 triplequad(f

54、un,x1,x2,y1,y2,z1.z2.tol,quadl)在在The MathWorks網站提供了免費數值求解積分的工網站提供了免費數值求解積分的工具箱具箱NIT,可解決,可解決matlab數值求解不了的積分數值求解不了的積分roots(p):多項式的多項式的所有零點所有零點,p 是多項式系數向量。是多項式系數向量。fzero(f,x0):求求 f=0 在在 x0 附近的根,附近的根,f 可以使用可以使用 inline、字符串,但不能是方程或符號表達式!、字符串,但不能是方程或符號表達式!4 4、數值求解非線性方程命令、數值求解非線性方程命令 fzero(x3-3*x+1,1) fzero(x3-3*x+1

溫馨提示

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

評論

0/150

提交評論