Matlab基礎知識ppt課件_第1頁
Matlab基礎知識ppt課件_第2頁
Matlab基礎知識ppt課件_第3頁
Matlab基礎知識ppt課件_第4頁
Matlab基礎知識ppt課件_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)學建模專題一數(shù)學建模專題一Matlab基礎基礎數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎引言引言q Matlab: Matrix Laboratry 矩陣實驗室q 選擇選擇Matlab的理由的理由 Matlab功能強大。功能強大。 操作簡單,容易上手。 Matlab應用非常廣泛。應用非常廣泛。 易于擴展。易于擴展。數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎內(nèi)容提綱內(nèi)容提綱1.1.基本用法基本用法2.2.向量與矩陣的生成和運算向量與矩陣的生成和運算3.Matlab3.Matlab編程編程4.4.符號運算符號運算5.Matlab5.Matlab繪圖繪圖1. Matlab基本用

2、法數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎基本用法提綱基本用法提綱q Matlab幫助系統(tǒng)q Matlab變量q 變量的讀取與存儲q 矩陣數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab 的工作界面的工作界面命令窗口命令窗口當前工當前工作目錄作目錄當前工當前工作空間作空間輸入命令的輸入命令的歷史記錄歷史記錄命令命令提示符提示符數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 矩陣的直接排列輸入矩陣的直接排列輸入例:例: A = 1 2 3; 4 5 6; 7 8 9矩陣矩陣q Matlab 的操作對象是的操作對象是 矩陣矩陣q 矩陣元素可以是任何數(shù)值表達式矩陣

3、元素可以是任何數(shù)值表達式例:例: x = -1.3, sqrt(3), (1+2+3)*4/5 q 大矩陣可以把小矩陣作為其元素大矩陣可以把小矩陣作為其元素例:例: A = A; 11 12 13 在原矩陣的下方加一行在原矩陣的下方加一行如何在原矩陣的右邊添加一列?如何在原矩陣的右邊添加一列?數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 單個元素的引用單個元素的引用例:例: A(2,3)矩陣元素的引用矩陣元素的引用q 多個元素的引用:冒號的特殊用法多個元素的引用:冒號的特殊用法利用小括弧和元素所在的位置下標)利用小括弧和元素所在的位置下標)x(i):向量:向量 x 中的第中的第 i

4、個元素個元素A(i, j):矩陣:矩陣 A 中的第中的第 i 行,第行,第 j 列元素列元素a:b:c產(chǎn)生一個由等差序列組成的向量;產(chǎn)生一個由等差序列組成的向量; a 是首項,是首項,b 是公是公差,差,c 確定最后一項;假設確定最后一項;假設 b=1,那么,那么 b 可以省略??梢允÷浴@豪?x=1:2:5 y=1:2:6 y=1:2:6例:例: x=2:1:5 y=2:5 y=2:5例:例: x=3:2:1數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 多個元素的引用續(xù))多個元素的引用續(xù))例:例: x(1:3)矩陣元素的引用矩陣元素的引用 A(3,1:3) A(3,1:3)A(

5、i:j, m:n) 表示由矩陣表示由矩陣 A 的第的第 i 到第到第 j 行和第行和第 m 到第到第 n列交叉線上的元素組成的子矩陣。列交叉線上的元素組成的子矩陣??衫妹疤柼崛【仃嚳衫妹疤柼崛【仃?的整行或整列。的整行或整列。例:例: A(1, :) A(:, 1:2) A(:, 1:2) A(:, :) A(:, :)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab幫助系統(tǒng)幫助系統(tǒng)q 聯(lián)機幫助聯(lián)機幫助help 顯示指定命令的簡短使用說明顯示指定命令的簡短使用說明例:例: help eig help help help help q 詳細使用幫助詳細使用幫助doc 以網(wǎng)頁形

6、式顯示指定命令的幫助頁以網(wǎng)頁形式顯示指定命令的幫助頁例:例: doc eig q lookfor 按指定的關鍵詞查詢與之相關的命令按指定的關鍵詞查詢與之相關的命令例:例: lookfor inverse 數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 變量命名原則變量命名原則Matlab 變量變量u 以字母開頭以字母開頭u 后面可以跟后面可以跟 字母、數(shù)字字母、數(shù)字 和和 下劃線下劃線u 長度不超過長度不超過 63 個字符個字符6.5 版本以前為版本以前為 19 個)個)u 變量名變量名 區(qū)分字母的區(qū)分字母的 大小大小 寫寫q Matlab 語句的通常形式語句的通常形式變量變量=表達式

7、表達式表達式是用運算符將有關運算量連接起來的式子,表達式是用運算符將有關運算量連接起來的式子,其結果被賦給賦值號其結果被賦給賦值號“=”左邊的變量左邊的變量數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 分號和續(xù)行符的作用分號和續(xù)行符的作用Matlab 變量變量若不想在屏幕上輸出結果,可以在語句最后加分號若不想在屏幕上輸出結果,可以在語句最后加分號 如果語句很長,可用續(xù)行符如果語句很長,可用續(xù)行符 “”(三個點續(xù)行(三個點續(xù)行 續(xù)行符的前面最好留一個空格續(xù)行符的前面最好留一個空格例:例:數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 變量的查詢變量的查詢Matlab 變量變量w

8、ho 顯示工作空間中的所有顯示工作空間中的所有變量變量whos 查看工作空間中變量的詳細屬性查看工作空間中變量的詳細屬性數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 系統(tǒng)預定義變量系統(tǒng)預定義變量Matlab 變量變量u pi 圓周率圓周率 u inf/Inf 無窮大無窮大 u nan/NaN Not-a-Number,一個不定值,如,一個不定值,如 0/0u eps 浮點運算相對精度浮點運算相對精度 q 特殊變量特殊變量 ansu i/j 虛部單位,即虛部單位,即1 應盡量避免給系統(tǒng)預定義變量重新賦值!應盡量避免給系統(tǒng)預定義變量重新賦值!數(shù)學建模專題一數(shù)學建模專題一 Matlab 基

9、礎基礎變量的存儲變量的存儲q 存儲當前工作空間中的變量存儲當前工作空間中的變量u save 將所有變量存入文件將所有變量存入文件 matlab.matu save mydata 將所有變量存入指定文件將所有變量存入指定文件 mydata.matq 存儲指定的變量存儲指定的變量u save mydata.mat 將所有變量存入文件將所有變量存入文件 mydata.matsave 文件名文件名 變量名列表變量名列表例:例: save mydata A x z 變量名列表中各變量之間用空格分隔。變量名列表中各變量之間用空格分隔。數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎變量的讀取變量的讀取

10、q 將數(shù)據(jù)文件中的變量載入當前工作空間將數(shù)據(jù)文件中的變量載入當前工作空間u load mydata 載入數(shù)據(jù)文件中的所有變量載入數(shù)據(jù)文件中的所有變量u load mydata A x 從數(shù)據(jù)文件中提取指定變量從數(shù)據(jù)文件中提取指定變量q 清除當前工作空間中的變量清除當前工作空間中的變量u clear 清除當前工作空間中的所有變量清除當前工作空間中的所有變量u clear A x 清除指定的變量清除指定的變量數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎內(nèi)容提綱內(nèi)容提綱1.1.基本用法基本用法2.2.向量與矩陣的生成和運算向量與矩陣的生成和運算3.Matlab3.Matlab編程編程4.4.

11、符號運算符號運算5.Matlab5.Matlab繪圖繪圖6.6.其它補充知識其它補充知識2. 向量與矩陣的生成和運算數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎向量與矩陣的生成與運算提綱向量與矩陣的生成與運算提綱q 常用矩陣操作命令q 矩陣的基本運算q 矩陣的數(shù)組運算q 向量與矩陣的生成數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 向量與矩陣的生成向量與矩陣的生成向量與矩陣生成向量與矩陣生成u 向量的生成向量的生成 直接輸入直接輸入: a=1,2,3,4 冒號運算符冒號運算符a=1:4 = a=1, 2, 3, 4= a=1, 2, 3, 4b=0:pi/3:pi = b=0

12、, 1.0472, 2.0944, 3.1416= b=0, 1.0472, 2.0944, 3.1416c=6:-2:0 = c = 6, 4, 2, 0= c = 6, 4, 2, 0例:例: 從矩陣中抽取行或列從矩陣中抽取行或列數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 向量與矩陣的生成續(xù))向量與矩陣的生成續(xù))向量與矩陣生成向量與矩陣生成u 矩陣的生成矩陣的生成 直接輸入直接輸入: A=1, 2, 3; 4, 5, 6; 7, 8, 9 由向量生成由向量生成 由函數(shù)生成由函數(shù)生成例:例: x=1,2,3;y=2,3,4; A=x,y, B=x;y A=x,y, B=x;y例:

13、例: C=magic(3)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎常見矩陣生成函數(shù)常見矩陣生成函數(shù)zeros(m,n)生成一個生成一個 m 行行 n 列的零矩陣,列的零矩陣,m=n 時可簡寫為時可簡寫為 zeros(n)ones(m,n)生成一個生成一個 m 行行 n 列的元素全為列的元素全為 1 的矩陣的矩陣, m=n 時可寫為時可寫為 ones(n)eye(m,n)生成一個主對角線全為生成一個主對角線全為 1 的的 m 行行 n 列矩陣列矩陣, m=n 時可簡寫為時可簡寫為 eye(n),即為即為 n 維單位矩陣維單位矩陣diag(X)若若 X 是矩陣,則是矩陣,則 diag(

14、X) 為為 X 的主對角線向量的主對角線向量若若 X 是向量,是向量,diag(X) 產(chǎn)生以產(chǎn)生以 X 為主對角線的對角矩陣為主對角線的對角矩陣tril(A)提取一個矩陣的下三角部分提取一個矩陣的下三角部分triu(A)提取一個矩陣的上三角部分提取一個矩陣的上三角部分rand(m,n)產(chǎn)生產(chǎn)生 01 間均勻分布的隨機矩陣間均勻分布的隨機矩陣 m=n 時簡寫為時簡寫為 rand(n)randn(m,n)產(chǎn)生均值為產(chǎn)生均值為0,方差為,方差為1的標準正態(tài)分布隨機矩陣的標準正態(tài)分布隨機矩陣m=n 時簡寫為時簡寫為 randn(n)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣操作矩陣操作q

15、 提取矩陣的部分元素:提取矩陣的部分元素: 冒號運算符冒號運算符u A(:) A A(:) A的所有元素的所有元素u A(:,:) A(:,:) 二維矩陣二維矩陣A A的所有元素的所有元素u A(:,k) A A(:,k) A的第的第 k k 列,列, A(k,:) A A(k,:) A的第的第 k k 行行 u A(k:m) A A(k:m) A的第的第 k k 到第到第 m m 個元素個元素u A(:,k:m) A A(:,k:m) A的第的第 k k 到第到第 m m 列組成的子矩陣列組成的子矩陣數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣操作矩陣操作q 矩陣的旋轉矩陣的旋轉

16、u fliplr(A) fliplr(A) 左右旋轉左右旋轉u flipud(A) flipud(A) 上下旋轉上下旋轉u rot90(A) rot90(A) 逆時針旋轉逆時針旋轉 90 90 度;度; rot90(A,k) rot90(A,k) 逆時針旋轉逆時針旋轉 k k90 90 度度例:例: A=1 2 3;4 5 6 B=fliplr(A) B=fliplr(A) C=flipud(A) C=flipud(A) D=rot90(A), E=rot90(A,-1) D=rot90(A), E=rot90(A,-1)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣操作矩陣操作q

17、矩陣的轉置與共軛轉置矩陣的轉置與共軛轉置u 共軛轉置共軛轉置u . . 轉置,矩陣元素不取共軛轉置,矩陣元素不取共軛例:例: A=1 2;2i 3i B=A B=A C=A. C=A.點與單引號之間不能有空格!點與單引號之間不能有空格!數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣操作矩陣操作q 改變矩陣的形狀:改變矩陣的形狀:reshape數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣操作矩陣操作q 查看矩陣的大?。翰榭淳仃嚨拇笮。簊izeu size(A) 列出矩陣列出矩陣 A 的行數(shù)和列數(shù)的行數(shù)和列數(shù)u size(A,1) 返回矩陣返回矩陣 A 的行數(shù)的行數(shù)u siz

18、e(A,2) 返回矩陣返回矩陣 A 的列數(shù)的列數(shù)例:例: A=1 2 3; 4 5 6 size(A) size(A) size(A,1) size(A,1) size(A,2) size(A,2)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣基本運算矩陣基本運算q 矩陣的加減:對應分量進行運算矩陣的加減:對應分量進行運算要求參與加減運算的矩陣具有要求參與加減運算的矩陣具有 相同的維數(shù)相同的維數(shù)例:例: A=1 2 3; 4 5 6; B=3 2 1; 6 5 4 C=A+B; D=A-B; C=A+B; D=A-B;q 矩陣的普通乘法矩陣的普通乘法要求參與運算的矩陣滿足線性代數(shù)中矩

19、陣相乘的原則要求參與運算的矩陣滿足線性代數(shù)中矩陣相乘的原則例:例: A=1 2 3; 4 5 6; B=2 1; 3 4; C=A C=A* *B B數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣基本運算矩陣基本運算q 矩陣的除法:矩陣的除法:/、 右除和左除右除和左除 假設 A 可逆方陣,那么AB A 的逆左乘的逆左乘 B inv(A)*BB/A A 的逆右乘的逆右乘 B B*inv(A)q乘冪:A 是方陣,p 是正整數(shù) Ap 表示表示 A 的的 p 次冪,即次冪,即 p 個個 A 相乘。相乘。 數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎矩陣的數(shù)組運算矩陣的數(shù)組運算q 數(shù)

20、組運算:對應元素進行運算數(shù)組運算:對應元素進行運算點與算術運算符之間不能有空格!u 數(shù)組運算包括:點乘、點除、點冪數(shù)組運算包括:點乘、點除、點冪u 相應的數(shù)組運算符為:相應的數(shù)組運算符為: “.* ” , “./ ” , “. ” 和和“ . ”參與運算的對象必須具有相同的形狀!參與運算的對象必須具有相同的形狀!例:例: A=1 2 3; 4 5 6; B=3 2 1; 6 5 4; C=A. C=A.* *B; D=A./B; E=A.B; F=A.B;B; D=A./B; E=A.B; F=A.B;數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab中常見數(shù)學函數(shù)中常見數(shù)學函數(shù)

21、sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc、exp、log、log2、log10、sqrtabs、conj、real、imag、signfix、floor、ceil、round、mod、remmax、min、sum、mean、sort、fftnorm、rank、det、inv、eig、lu、qr、svd數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎內(nèi)容提綱內(nèi)容提綱1.1.基本用法基本用法2.2.向量與矩陣的生成和運算向量與矩陣的生成和運算3.Matlab3.Matlab編程編程4.4.符號運算符號運算5.Matlab5.Ma

22、tlab繪圖繪圖3. Matlab編程入門數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab編程入門提綱編程入門提綱q 關系運算符q 邏輯運算符q 程序結構控制語句q 函數(shù)M文件的編寫q M文件數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab 編程入門編程入門q Matlab 編程簡介u Matlab 作為一種廣泛應用于科學計算的工具軟件,不僅具有強大的數(shù)值計算、符號計算、矩陣運算能力和豐富的繪圖功能,同時也具有和 C、FORTRAN 等高級語言一樣進行程序設計。u 在 Matlab 程序設計中,要充分利用 Matlab 數(shù)據(jù)結構的特點,提高編程效率。數(shù)學建模專題

23、一數(shù)學建模專題一 Matlab 基礎基礎q 用 Matlab 語言編寫的程序稱為 M 文件, 文 件以 .m為擴展名。q M 文件根據(jù)調用方式的不同可以分為兩類:u Script:腳本文件:腳本文件/命令文件命令文件 u Function:函數(shù)文件:函數(shù)文件 M 文件文件數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎u 在命令窗口中輸入 f2cs,即可執(zhí)行該 M 文件。5(32)9cf例:編寫一個腳本文件將華氏溫度轉化為攝氏溫度腳本文件舉例腳本文件舉例clear; % 清除當前工作空間中的變量清除當前工作空間中的變量f=input(Please input Fahrenheit temp

24、erature:);c=5*(f-32)/9;fprintf(The centigrade temperature is %gn,c);u 新建一個 M 文件 f2cs.m,內(nèi)容如下:數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎關系運算關系運算小于小于大于大于=大于等于大于等于=等于等于=不等于不等于l 比較大小,如果結論是 真 則返回 1 ,否則返回 0l 關系操作符能用來比較兩個同樣大小的數(shù)組,或用來比較一個數(shù)組和一個標量,在后一種情況,標量和數(shù)組中的每一個元素相比較,比較結果與數(shù)組大小一樣。q 關系運算符關系運算符數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎例:例:關系運

25、算舉例關系運算舉例 2+2=4 2+2=4 23 23 A=1 3 5; 2 0 6; A=1 3 5; 2 0 6; B=3 1 0; 2 4 6; B=3 1 0; 2 4 6; A=B A=B x=5 0; 4 2; x=5 0; 4 2; x x1 EPS=EPS/2; num=num+1;end數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎u break 和和 continuel break 語句用于終止循環(huán)的執(zhí)行,即跳出最內(nèi)層循環(huán) l continue 語句用于結束本次循環(huán),進行下一次循環(huán) l break 和 continue 一般與 if 語句配合使用其它流控制語句其它流控

26、制語句u returnl return 語句用于退出正在運行的腳本或函數(shù),通常用在函數(shù)文件中。數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎function 輸出形參列表輸出形參列表=函數(shù)名函數(shù)名(輸入形參列表輸入形參列表)% 注釋說明部分注釋說明部分(可選可選)函數(shù)體語句函數(shù)體語句(必需必需)u 第一行為引導行,表示該第一行為引導行,表示該 M文件是函數(shù)文件文件是函數(shù)文件u 函數(shù)名的命名規(guī)則與變量名相同函數(shù)名的命名規(guī)則與變量名相同 ( 必須以字母開頭必須以字母開頭 )u 當輸出行參多于一個時,用方括號括起來當輸出行參多于一個時,用方括號括起來u 函數(shù)必須是一個單獨的函數(shù)必須是一個單獨的

27、 M文件文件u 函數(shù)文件名必須與函數(shù)名一致函數(shù)文件名必須與函數(shù)名一致u 以百分號開始的語句為注釋語句以百分號開始的語句為注釋語句函數(shù)函數(shù)m文件的編寫與調用文件的編寫與調用q 函數(shù)文件由函數(shù)文件由 function 語句引導語句引導數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎function y = myfliplr(x)% returns X with row preserved and columns% flipped in the left/right direction% % X = 1 2 3 becomes 3 2 1% 4 5 6 6 5 4% num_col=size(x

28、,2); % 取取 x 的列數(shù)的列數(shù)y = x(:,num_col:-1:1);函數(shù)文件舉例函數(shù)文件舉例myfliplr.m數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎內(nèi)容提綱內(nèi)容提綱1.1.基本用法基本用法2.2.向量與矩陣的生成和運算向量與矩陣的生成和運算3.Matlab3.Matlab編程編程4.4.符號運算符號運算5.Matlab5.Matlab繪圖繪圖4. Matlab符號運算數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎符號運算提綱符號運算提綱q 因式分解、展開、合并、簡化及通分等q 計算極限q 計算導數(shù)q 計算積分q 符號求和q 代數(shù)方程和微分方程求解q 符號對象的

29、建立數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab 符號運算介紹符號運算介紹q Matlab 符號運算是通過符號數(shù)學工具箱Symbolic Math Toolbox來實現(xiàn)的。Matlab 符號數(shù)學工具箱是建立在功能強大的 Maple 軟件的基礎上的,當 Matlab 進行符號運算時,它就請求 Maple 軟件去計算并將結果返回給 Matlab。 q Matlab 的符號數(shù)學工具箱可以完成幾乎所有得符號運算功能。主要包括:符號表達式的運算,符號表達式的復合、化簡,符號矩陣的運算,符號微積分、符號作圖,符號代數(shù)方程求解,符號微分方程求解等。數(shù)學建模專題一數(shù)學建模專題一 Matla

30、b 基礎基礎Matlab 符號運算舉例符號運算舉例u 求一元二次方程 ax2 + bx + c = 0 的根 solve(a solve(a* *x2+bx2+b* *x+c)x+c)u 求的根 f (x) = (cos x)2 的一次導數(shù) x=sym(x); x=sym(x); diff(cos(x)2) diff(cos(x)2)u 計算 f (x) = x2 在區(qū)間 a, b 上的定積分 syms a b x; syms a b x; int(x2,a,b) int(x2,a,b)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎u sym 函數(shù)用來建立單個符號變量,一般調用格函數(shù)用來

31、建立單個符號變量,一般調用格式為:式為:q 符號對象的建立:sym 和 syms符號對象的建立符號對象的建立例: a=sym(a) a=sym(a) 符號變量 = sym(A)參數(shù) A 可以是一個數(shù)或數(shù)值矩陣,也可以是字符串a(chǎn) 是符號變量是符號變量b 是符號常量是符號常量 b=sym(1/3) b=sym(1/3)c 是符號矩陣是符號矩陣 c=sym(1 ab; e d) c=sym(1 ab; e d)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 符號對象的建立:sym 和 syms符號對象的建立符號對象的建立u syms 命令用來建立多個符號變量,一般調用格命令用來建立多個符號變

32、量,一般調用格式為:式為:syms 符號變量符號變量1 符號變量符號變量2 . 符號符號變量變量n 例: syms a b c syms a b c a=sym(a); a=sym(a); b=sym(b); b=sym(b); c=sym(c); c=sym(c);數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 符號表達式的建立:例:建立符號表達式通常有以下2種方法:(1) 用 sym 函數(shù)直接建立符號表達式。(2) 使用已經(jīng)定義的符號變量組成符號表達式。 y=sym(sin(x)+cos(x) y=sym(sin(x)+cos(x) x=sym(x); x=sym(x); y=si

33、n(x)+cos(x) y=sin(x)+cos(x)符號表達式的建立符號表達式的建立數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎符號表達式的替換符號表達式的替換subs(f,x,a) 用用 a 替換字符函數(shù)替換字符函數(shù) f 中的字符變量中的字符變量 x a 是可以是是可以是 數(shù)數(shù)/數(shù)值變量數(shù)值變量/表達式表達式 或或 字符變字符變量量/表達式表達式q 用給定的數(shù)據(jù)替換符號表達式中的指定的符號變量數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎subs 舉例舉例 f=sym(2 f=sym(2* *u);u); subs(f,u,2) subs(f,u,2) f2=subs(f,u

34、,u+2) f2=subs(f,u,u+2) a=3; a=3; subs(f2,u,a+2) subs(f2,u,a+2) subs(f2,u,a+2) subs(f2,u,a+2) syms x y syms x y f3=subs(f,u,x+y) f3=subs(f,u,x+y) subs(f3,x,y,1,2) subs(f3,x,y,1,2)ans=4f2=2*(u+2)ans=14ans=2*(a+2)+2)f3=2*x+2*yans=6u 例:指出下面各條語句的輸出結果f=2*u下面的命令運行結果會是什么? subs(f3,x,y,x+y,x+y) subs(f3,x,y,x+

35、y,x+y)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎六類常見符號運算六類常見符號運算q 因式分解、展開、合并、簡化及通分等q 計算極限q 計算導數(shù)q 計算積分q 符號求和q 代數(shù)方程和微分方程求解數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎因式分解、展開、合并、簡化等u 因式分解factor(f)u 函數(shù)展開expand(f)u 合并同類項collect(f,v): 按指定變量按指定變量 v 進行合并進行合并collect(f): 按默認變量進行合并按默認變量進行合并數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎計算極限計算極限limit(f,x,a): 計算計算li

36、mit(f,a): 當默認變量趨向于當默認變量趨向于 a 時的極時的極限限limit(f): 計算計算 a=0 時的極限時的極限limit(f,x,a,right): 計算右極限計算右極限limit(f,x,a,left): 計算左極限計算左極限lim( )xaf x例:計算例:計算 ,hxhxLh)ln()ln(lim0nnnxM1lim syms x h n; syms x h n; L=limit(log(x+h)-log(x)/h,h,0) L=limit(log(x+h)-log(x)/h,h,0) M=limit(1-x/n)n,n,inf) M=limit(1-x/n)n,n,i

37、nf)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎計算導數(shù)計算導數(shù)g=diff(f,v):求符號表達式:求符號表達式 f 關于關于 v 的導的導數(shù)數(shù)g=diff(f):求符號表達式:求符號表達式 f 關于默認變量的關于默認變量的導數(shù)導數(shù)g=diff(f,v,n):求:求 f 關于關于 v 的的 n 階導數(shù)階導數(shù)q diff syms x; syms x; f=sin(x)+3 f=sin(x)+3* *x2; x2; g=diff(f,x) g=diff(f,x)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎計算積分計算積分int(f,v,a,b): 計算定積分計算定積分int(

38、f,a,b): 計算關于默認變量的定積分計算關于默認變量的定積分int(f,v): 計算不定積分計算不定積分int(f): 計算關于默認變量的不定積分計算關于默認變量的不定積分 syms x; f=(x2+1)/(x2-2 syms x; f=(x2+1)/(x2-2* *x+2)2;x+2)2; I=int(f,x) I=int(f,x) K=int(exp(-x2),x,0,inf) K=int(exp(-x2),x,0,inf)( )baf v dv ( )f v dv 例:計算例:計算 和和2221(22)xIdxxx 20 xKedx 數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎

39、基礎u 梯形法:trapztrapz(x,y)x 為分割點節(jié)點組成的向量,為分割點節(jié)點組成的向量,y 為被積函數(shù)在節(jié)點上的函數(shù)值組成的為被積函數(shù)在節(jié)點上的函數(shù)值組成的向量。向量。22)(110nnbayyyynabdxxf,x10nxxx01y (),(),()nf xf xf xq Matlab 近似計算定積分的相關函數(shù)Matlab 數(shù)值積分函數(shù)數(shù)值積分函數(shù)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎u 例:用梯形法計算下面定積分 ( 取 n=100) 1021xdx解: x=0:1/100:1; x=0:1/100:1; y=1./(1+x.2); y=1./(1+x.2); tr

40、apz(x, y) trapz(x, y)trapz(x,1./(1+x.2)trapz 舉例舉例數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎quad(f,a,b,tol)f = f(x) 為被積函數(shù),為被積函數(shù),a,b 為積分為積分區(qū)間,區(qū)間,tol 為計算精度為計算精度將自變量看成是向量將自變量看成是向量badxxf)(u 拋物線法:quadl 不用自己分割積分區(qū)間l 可以指定計算精度,若不指定,缺省精度是 10-6l 精度越高,函數(shù)運行的時間越長l 此處的函數(shù) f 是數(shù)值形式,應該使用數(shù)組運算,即 點運算:.*,./ ,. ,. 注:拋物線法拋物線法數(shù)學建模專題一數(shù)學建模專題一

41、Matlab 基礎基礎1021xdx解:解: quad(1./(1+x.2),0,1) quad(1./(1+x.2),0,1) quad(1./(1+x.2),0,1,10e-10) quad(1./(1+x.2),0,1,10e-10) quad(1./(1+x.2),0,1,10e-16) quad(1./(1+x.2),0,1,10e-16)函數(shù)表達式一定要用函數(shù)表達式一定要用 單引號單引號 括起來!括起來!涉及的運算一定要用涉及的運算一定要用 數(shù)組運算!數(shù)組運算!u 例:用 quad 計算定積分:quad 舉例舉例數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 拋物線法計算二

42、重積分: dblquaddblquad(f,a,b,c,d,tol)u tol 為計算精度,若不指定,則缺省精度為 10-6 badcdxdyyxf),(u f(x,y) 可以由 inline 定義,或通過一個函數(shù)句柄傳遞u a,b 是第一積分變量的積分區(qū)間,c,d 是第二積分變量 的積分區(qū)間按字母順序,大寫字母排在小寫字母的前面二重積分的計算二重積分的計算數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎21201(43)Ixyydxdy f=inline(4 f=inline(4* *x x* *y+3y+3* *y2);y2); I=dblquad(f, -1,1,0,2) I=dbl

43、quad(f, -1,1,0,2)u f(x,y) 中關于第一自變量的運算是數(shù)組運算, 即把 x 看成是向量,y 看成是標量。u 也可以全部采用數(shù)組運算例2:計算二重積分 20112)34(dxdyxxy dblquad(inline(4 dblquad(inline(4* *x x* *y+3y+3* *x2),-1,1,0,2)x2),-1,1,0,2) dblquad(inline(4 dblquad(inline(4* *x x* *y+3y+3* *x.2),-1,1,0,2)x.2),-1,1,0,2)X例1:計算二重積分dblquad 舉例舉例數(shù)學建模專題一數(shù)學建模專題一 Mat

44、lab 基礎基礎例:計算二重積分 20112)34(dxdyxxy dblquad(x,y)4 dblquad(x,y)4* *x x* *y+3y+3* *x.2 , -1,1, 0, 2)x.2 , -1,1, 0, 2)指定 x、y 分別是第一和第二積分變量 dblquad(inline(4 dblquad(inline(4* *x x* *y+3y+3* *x.2), -1,1, 0, 2)x.2), -1,1, 0, 2)q 被積函數(shù) f (x,y) 的另一種定義方法:匿名函數(shù) dblquad(y,x)4 dblquad(y,x)4* *x x* *y+3y+3* *x.2 , -1

45、,1, 0, 2)x.2 , -1,1, 0, 2)下面的命令運行結果和上面的一樣嗎?dblquad 舉例舉例數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎221dxex x=1:0.001:2; x=1:0.001:2; y=exp(x.(-2); y=exp(x.(-2); trapz(x,y) trapz(x,y)l 梯形法:l 拋物線法: quad(exp(x.(-2),1,2,10e-10) quad(exp(x.(-2),1,2,10e-10)l 符號積分法: syms x syms x int(exp(x(-2),x,1,2) int(exp(x(-2),x,1,2)例 1

46、:用 Matlab 函數(shù)近似計算積分數(shù)值實驗數(shù)值實驗數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎20112)(dyyxdxl 拋物線法: dblquad(inline(x+y2),0,2,-1,1) dblquad(inline(x+y2),0,2,-1,1)l 符號積分法: f=int(x+y2,y,-1,1); f=int(x+y2,y,-1,1); int(f,0,2) int(f,0,2)數(shù)值實驗數(shù)值實驗例 2:用 Matlab 函數(shù)近似計算二重積分數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎符號求和符號求和 syms n; f=1/n2; syms n; f=1/n2

47、; S=symsum(f,n,1,inf) S=symsum(f,n,1,inf) S100=symsum(f,n,1,100) S100=symsum(f,n,1,100)symsum(f,v,a,b): 求和求和symsum(f,a,b): 關于默認變量求和關于默認變量求和( )bv af v 例:計算級數(shù)例:計算級數(shù) 及其前及其前100項的部分和項的部分和211nSn 例:計算函數(shù)級數(shù)例:計算函數(shù)級數(shù)21nxSn syms n x; f=x/n2; syms n x; f=x/n2; S=symsum(f,n,1,inf) S=symsum(f,n,1,inf)數(shù)學建模專題一數(shù)學建模專題

48、一 Matlab 基礎基礎代數(shù)方程和微分方程求解代數(shù)方程和微分方程求解u 代數(shù)方程求解solve(f,v):求方程關于指定自變量的解,:求方程關于指定自變量的解,f 可以是用字符串表示的方程、符號表達式或符號可以是用字符串表示的方程、符號表達式或符號方程;方程;u 微分方程求解數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q 自牛頓發(fā)明微積分以來,微分方程在描述事物運自牛頓發(fā)明微積分以來,微分方程在描述事物運動規(guī)律上已發(fā)揮了重要的作用。實際應用問題通過動規(guī)律上已發(fā)揮了重要的作用。實際應用問題通過數(shù)學建模所得到的方程,絕大多數(shù)是微分方程。數(shù)學建模所得到的方程,絕大多數(shù)是微分方程。q 由于實

49、際應用的需要,人們必須求解微分方程。由于實際應用的需要,人們必須求解微分方程。然而能夠求得解析解的微分方程十分有限,絕大多然而能夠求得解析解的微分方程十分有限,絕大多數(shù)微分方程需要利用數(shù)值方法來近似求解。數(shù)微分方程需要利用數(shù)值方法來近似求解。微分方程求解微分方程求解數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎符號解法符號解法dsolve 求解析解求解析解q dsolve 的使用的使用y=dsolve(eq1,eq2, . ,cond1,cond2, . ,v)其中其中 y 為輸出,為輸出, eq1、eq2、.為微分方程,為微分方程,cond1、cond2、.為初值條件,為初值條件,v

50、為自變量。為自變量。例例 1:求微分方程:求微分方程 的通解,并驗證。的通解,并驗證。22xdyxyxedx y=dsolve(Dy+2 y=dsolve(Dy+2* *x x* *y=xy=x* *exp(-x2),x)exp(-x2),x) syms x; diff(y)+2 syms x; diff(y)+2* *x x* *y - xy - x* *exp(-x2)exp(-x2)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎dsolve 的使用的使用q 幾點說明幾點說明l 如果省略初值條件,則表示求通解;如果省略初值條件,則表示求通解;l 如果省略自變量,則默認自變量為如果省略

51、自變量,則默認自變量為 t dsolve(Dy=2*x,x); dy/dx = 2xdsolve(Dy=2*x); dy/dt = 2xl 微分方程中用微分方程中用 D 表示對表示對 自變量自變量 的導數(shù),如:的導數(shù),如:Dy y; D2y y; D3y y數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎dsolve 舉例舉例例例 2:求微分方程:求微分方程 在初值條件在初值條件 下下的特解,并畫出解函數(shù)的圖形。的特解,并畫出解函數(shù)的圖形。0 xxyye y=dsolve(x y=dsolve(x* *Dy+y-exp(x)=0,y(1)=2Dy+y-exp(x)=0,y(1)=2* *e

52、xp(1),x)exp(1),x) ezplot(y); ezplot(y);12( )ye 數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎dsolve 舉例舉例例例3:求微分方程組:求微分方程組 在初值條件在初值條件 下的特解,并畫出解函數(shù)的圖形。下的特解,并畫出解函數(shù)的圖形。530tdxxyedtdyxydt x,y=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=0, . x(0)=1, y(0)=0, t)ezplot(x,y,0,1.3);0010|ttxy 數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎q Euler折線法折線法數(shù)值求解:數(shù)值求解:Eul

53、er 折線法折線法q Runge-Kutta龍格龍格-庫塔方法庫塔方法q 利用利用Matlab函數(shù)求數(shù)值解函數(shù)求數(shù)值解數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎初值問題的初值問題的Euler折線法折線法q 具體步驟:具體步驟:等距剖分:等距剖分:0121nnaxxxxxb 步長:步長:1 0 1 21()/, , ,kkhxxknnba u 分割求解區(qū)間分割求解區(qū)間u 差商代替微商差商代替微商1()()kkky xy xdydxhx 1 ()()()kkky xy xh yx 得方程組:得方程組:0011 ()(,)kkkkkkyy xyyh f xyxxh 分割求解區(qū)間,差商代替微

54、商,解代數(shù)方程分割求解區(qū)間,差商代替微商,解代數(shù)方程 為分割點為分割點 0nkkx k = 0, 1, 2, ., n-1yk 是是 y (xk) 的近似的近似數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Euler 折線法舉例折線法舉例例:用例:用 Euler 法解初值問題法解初值問題22 0 201 , ( )dyxydxyxy 取步長取步長 h = (2 - 0)/n = 2/n,得差分方程,得差分方程00110 1 2 ,(,)(/)kkkkkkkkkkxyyyh f xyyh yxyxxh 當當 h=0.4,即,即 n=5 時,時,Matlab 源程序見源程序見 fuluA.m

55、解:解:數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Euler 折線法源程序折線法源程序clearf=sym(y+2*x/y2);a=0; b=2;h=0.4;n=(b-a)/h+1; % n=(b-a)/h;x=0; y=1;szj=x,y;for i=1:n-1 % i=1:n y=y+h*subs(f,x,y,x,y); x=x+h; szj=szj;x,y;endszjplot(szj(:,1),szj(:,2),or-)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎 Euler折線法舉例續(xù))折線法舉例續(xù))解析解:解析解:1 3352233/xyex 解析解解析解近似解近

56、似解數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Runge-Kutta 方法方法q 為了減小誤差,可采用以下方法:為了減小誤差,可采用以下方法:u 讓步長讓步長 h 取得更小一些;取得更小一些;u 改用具有較高精度的數(shù)值方法:改用具有較高精度的數(shù)值方法:q 龍格龍格-庫塔方法庫塔方法Runge-Kutta (龍格龍格-庫塔庫塔) 方法方法u 是一類求解常微分方程的數(shù)值方法是一類求解常微分方程的數(shù)值方法u 有多種不同的迭代格式有多種不同的迭代格式數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Runge-Kutta 方法方法q 用得較多的是用得較多的是 四階四階R-K方法方法0011

57、1234 (22)/6(),kkkkyy xxxhyyh LLLL 12132432222(,)(/ ,/ )(/ ,/ )(,)kkkkkkkkLf xyLf xhyhLLf xhyhLLf xh yhL 其中其中數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎四階四階 R-K 方法源程序方法源程序clear;f=sym(y+2*x/y2);a=0; b=2; h=0.4;n=(b-a)/h+1; % n=(b-a)/h;x=0; y=1; szj=x,y;for i=1:n-1 % i=1:n l1=subs(f,x,y,x,y); l2=subs(f,x,y,x+h/2,y+l1*h

58、/2); l3=subs(f,x,y,x+h/2,y+l2*h/2); l4=subs(f,x,y,x+h,y+l3*h); y=y+h*(l1+2*l2+2*l3+l4)/6; x=x+h; szj=szj;x,y;endplot(szj(:,1),szj(:,2), dg-)數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Runge-Kutta 方法方法數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Euler 法與法與 R-K法誤差比較法誤差比較數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab函數(shù)數(shù)值求解函數(shù)數(shù)值求解T,Y = solver(odefun,tspa

59、n,y0)其中其中 y0 為初值條件,為初值條件,tspan為求解區(qū)間;為求解區(qū)間;Matlab在數(shù)值求解在數(shù)值求解時自動對求解區(qū)間進行分割,時自動對求解區(qū)間進行分割,T (向量向量) 中返回的是分割點的中返回的是分割點的值值(自變量自變量),Y (向量向量) 中返回的是解函數(shù)在這些分割點上的函中返回的是解函數(shù)在這些分割點上的函數(shù)值。數(shù)值。solver 為為Matlab的的ODE求解器可以是求解器可以是 ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb)沒有一種算法可以有效地解決所有的沒有一種算法可以有效地解決所有的 ODE 問題,因此問題,因此M

60、ATLAB 提供了多種提供了多種ODE求解器,對于不同的求解器,對于不同的ODE,可以調用不同的求解器??梢哉{用不同的求解器。數(shù)學建模專題一數(shù)學建模專題一 Matlab 基礎基礎Matlab提供的提供的ODE求解器求解器求解器求解器 ODE類型類型特點特點說明說明ode45非剛性非剛性單步法;單步法;4,5 階階 R-K 方法;方法;累計截斷誤差為累計截斷誤差為 (x)3大部分場合的大部分場合的首選方法首選方法ode23非剛性非剛性單步法;單步法;2,3 階階 R-K 方法;方法;累計截斷誤差為累計截斷誤差為 (x)3使用于精度較低的情形使用于精度較低的情形ode113非剛性非剛性多步法;多步

溫馨提示

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

評論

0/150

提交評論