精通MATLAB Simulink系統(tǒng)仿真學習課件PPT(MATLAB的簡介、通用命令、計算基礎(chǔ)、程序設(shè)計、繪圖功能等)_第1頁
精通MATLAB Simulink系統(tǒng)仿真學習課件PPT(MATLAB的簡介、通用命令、計算基礎(chǔ)、程序設(shè)計、繪圖功能等)_第2頁
精通MATLAB Simulink系統(tǒng)仿真學習課件PPT(MATLAB的簡介、通用命令、計算基礎(chǔ)、程序設(shè)計、繪圖功能等)_第3頁
精通MATLAB Simulink系統(tǒng)仿真學習課件PPT(MATLAB的簡介、通用命令、計算基礎(chǔ)、程序設(shè)計、繪圖功能等)_第4頁
精通MATLAB Simulink系統(tǒng)仿真學習課件PPT(MATLAB的簡介、通用命令、計算基礎(chǔ)、程序設(shè)計、繪圖功能等)_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

精通MATLABSimulink系統(tǒng)仿真目錄1.1MATLAB簡介1.2MATLAB的通用命令1.3MATLAB的計算基礎(chǔ)1.4MATLAB程序設(shè)計基礎(chǔ)1.5MATLAB的繪圖功能1.6微積分問題的MATLAB求解1.7非線性方程與線性規(guī)劃問題求解MATLAB基礎(chǔ)知識MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達式與數(shù)學、工程中常用的形式十分相似,MATLAB解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點,從而使MATLAB成為一個強大的數(shù)學軟件。因此,本書從最基本的運算單元出發(fā),講述了MATLAB矩陣的表示方法,符號變量的應(yīng)用,線性方程組的求解,并著重講解了MATLAB在工程上的簡單應(yīng)用研究。學習目標:(1)熟練掌握MATLAB矩陣的表示方法;(2)熟練運用符號變量求解實際物理模型;(3)熟練掌握線性規(guī)劃問題的求解,線性齊次方程和非齊次方程的求解等;(4)熟練掌握使用MATLAB工具解決簡單工程問題等。1.1MATLAB簡介1.易用性2.平臺獨立性3.預(yù)定義函數(shù)4.機制獨立的畫圖5.用戶圖形界面6.MATLAB編譯器1.2MATLAB的通用命令1.2.1MATLAB菜單說明1.2.2MATLAB路徑設(shè)置1.2.3MATLAB系統(tǒng)常量說明1.2.4MATLAB程序注解符說明1.3MATLAB的計算基礎(chǔ)

1.3.1MATLAB的預(yù)定義變量(1)元胞數(shù)組(2)結(jié)構(gòu)體1.3.2常用運算和基本數(shù)學函數(shù)MATLAB支持多種矩陣的函數(shù),常用的矩陣的函數(shù)運算如表1-5所示。1.方程的解方程的解采用矩陣逆運算或者采用左除運算進行求解編寫MATLAB程序如下:clc,clear,closeallA=[634;-2,5,7;8,-1,-3];%左邊系數(shù)B=[3;-4;-7];%方程右邊系數(shù)x=inv(A)*B運行程序輸出結(jié)果如下:x=1.0200-14.00009.72002.矩陣的秩求解矩陣的秩,MATLAB采用如下運算:調(diào)用格式:R=rank(A);其中,A為輸入的矩陣;R為輸出的矩陣A的秩。則由方程組,編寫MATLAB程序如下:r=rank(A)運行程序輸出結(jié)果如下:r=33.矩陣的特征值與特征向量

求解矩陣的特征值與特征向量,MATLAB采用如下運算:調(diào)用格式:[v,lambda]=eig(A);其中,A為輸入的矩陣;v為輸出的矩陣A的特征向量;lambda為輸出的矩陣A的特征值。則由方程組,編寫MATLAB程序如下:[v,lambda]=eig(A)運行程序輸出結(jié)果如下:v=0.8013-0.1094-0.16060.3638-0.65640.86690.47490.7464-0.4719lambda=9.7326000-3.29280001.56024.矩陣的乘冪與開方

求解矩陣的乘冪與開方,MATLAB運算較簡單,直接按照數(shù)學表達式模式進行輸入即可求解。則由方程組,編寫MATLAB程序如下:A1=A^2%乘冪A2=sqrt(A)%開方運行程序輸出結(jié)果如下:A1=62293334126262234A2=Columns1through22.4495+0.0000i1.7321+0.0000i0.0000+1.4142i2.2361+0.0000i2.8284+0.0000i0.0000+1.0000iColumn32.0000+0.0000i2.6458+0.0000i0.0000+1.7321i5.矩陣的指數(shù)與對數(shù)

求解矩陣的指數(shù)與對數(shù),MATLAB采用如下運算:指數(shù)求解調(diào)用格式:y1=exp(A);對數(shù)求解調(diào)用格式:y2=exp(A);其中,A為輸入的矩陣或者向量值;y1為輸出的矩陣A的指數(shù)值;y2為輸出的矩陣A的對數(shù)值。則由方程組,編寫MATLAB程序如下:A3=exp(A)%指數(shù)A4=log(A)%對數(shù)運行程序輸出結(jié)果如下:A3=1.0e+03*0.40340.02010.05460.00010.14841.09662.98100.00040.0000A4=Columns1through21.7918+0.0000i1.0986+0.0000i0.6931+3.1416i1.6094+0.0000i2.0794+0.0000i0.0000+3.1416iColumn31.3863+0.0000i1.9459+0.0000i1.0986+3.1416i6.矩陣的提取與翻轉(zhuǎn)

求解矩陣的提取與翻轉(zhuǎn),MATLAB采用如下運算:矩陣的提取包括矩陣上三角、矩陣下三角、矩陣的對角線元素提取等,具體如下:矩陣上三角元素提取調(diào)用格式:y1=triu(A);矩陣下三角元素提取調(diào)用格式:y2=tril(A);矩陣對角線元素提取調(diào)用格式:y3=diag(A);其中,A為輸入的矩陣或者向量值;y1為輸出的矩陣A的上三角元素值,其他值為0;y2為輸出的矩陣A的下三角元素值,其他值為0;y3為輸出的矩陣A的對角線元素值,其他值為0;矩陣的翻轉(zhuǎn)包括矩陣上下翻轉(zhuǎn)、左右翻轉(zhuǎn)、沿列翻轉(zhuǎn)、沿行翻轉(zhuǎn)、逆時針旋轉(zhuǎn)翻轉(zhuǎn)等,具體如下:矩陣上下翻轉(zhuǎn)調(diào)用格式:y4=flipud(A);矩陣左右翻轉(zhuǎn)調(diào)用格式:y5=fliplr(A);矩陣沿列翻轉(zhuǎn)調(diào)用格式:y6=flipdim(A,1);矩陣沿行翻轉(zhuǎn)調(diào)用格式:y7=flipdim(A,2);矩陣逆時針旋轉(zhuǎn)翻轉(zhuǎn)調(diào)用格式:y8=rot90(A);其中,A為輸入的矩陣或者向量值; y4為輸出的矩陣A的上下翻轉(zhuǎn)后的矩陣; y5為輸出的矩陣A的左右翻轉(zhuǎn)后的矩陣; y6為輸出的矩陣A的沿列翻轉(zhuǎn)后的矩陣; y7為輸出的矩陣A的沿行翻轉(zhuǎn)后的矩陣; y8為輸出的矩陣A的逆時針旋轉(zhuǎn)翻轉(zhuǎn)后的矩陣;則由方程組,編寫MATLAB程序如下:A5=triu(A)%提取矩陣A的右上三角元素,其余元素補0A6=tril(A)%提取矩陣A的左下三角元素,其余元素補0A7=diag(A)%提取矩陣A的對角線元素A8=flipud(A)%矩陣A沿水平軸上下翻轉(zhuǎn)A9=fliplr(A)%矩陣A沿垂直軸左右翻轉(zhuǎn)A10=flipdim(A,1)%矩陣A沿特定軸翻轉(zhuǎn)。dim=1,按行翻轉(zhuǎn);dim=2,按列翻轉(zhuǎn)A11=flipdim(A,2)%矩陣A沿特定軸翻轉(zhuǎn)。dim=1,按行翻轉(zhuǎn);dim=2,按列翻轉(zhuǎn)A12=rot90(A)%矩陣A整體逆時針旋轉(zhuǎn)90°7.“商”及“余”多項式。

求多項式

的“商”及“余”多項式。求解矩陣的“商”及“余”多項式,MATLAB采用如下運算:調(diào)用格式:[q,r]=deconv(p1,p2);其中,p1為輸入的分子多項式系數(shù);P2為輸入的分母多項式系數(shù);q為輸出的該多項式的“商”多項式;r為輸出的該多項式的“余”多項式。則由方程組,編寫MATLAB程序如下:%第二題clc,clear,closeallp1=conv([1,0,1],conv([1,3],[1,1]));p2=[1,2,1];[q,r]=deconv(p1,p2)disp(['商多項式為:',poly2str(q,'t')])disp(['余多項式為:',poly2str(r,'t')])運行程序輸出結(jié)果如下:q=12-1r=00044商多項式為:t^2+2t-1余多項式為:4t+41.3.3數(shù)值的輸出格式(1)數(shù)值型數(shù)據(jù)MATLAB數(shù)值型數(shù)據(jù)包括整數(shù)(有符號和無符號)和浮點數(shù)(單精度和雙精度),表1-6列出了數(shù)值型的不同格式。需要注意的是,在缺省狀態(tài)下,數(shù)據(jù)類型默認為雙精度的浮點數(shù)。(2)MATLAB的數(shù)值精度

MATLAB所能表示的最小實數(shù)稱為MATLAB的數(shù)值精度,在MATLAB7以上版本中,MATLAB的數(shù)據(jù)精度為

,任何絕對值小于

的實數(shù),MATLAB都將其視為0。在MATLAB命令窗口輸入命令如下:clc,clear,closeallformatlongx1=2^-3x2=2^30運行程序輸出結(jié)果如下:x1=0.125000000000000x2=1.073741824000000e+09(3)MATLAB的顯示精度

MATLAB所能顯示的有效位數(shù)稱為MATLAB的顯示精度。默認狀態(tài)下,若數(shù)據(jù)為整數(shù),則以整型顯示;若為實數(shù),則以保留小數(shù)點后4位的浮點數(shù)顯示。MATLAB的顯示格式可由format函數(shù)控制,需要注意的是,format函數(shù)并不改變原數(shù)據(jù),只影響其在命令窗中的顯示。此外還可以使用digits和vpa函數(shù)來控制顯示精度分別使用format,short,rat,digits和vpa函數(shù)控制顯示精度,在MATLAB命令窗口輸入命令如下:clc,clear,closeallpiformatlongpiformatshortpiformatratpidigits(10);vpa(pi)vpa(pi,15)運行程序輸出結(jié)果如下:ans=3.141592653589793ans=3.141592653589793ans=3.1416ans=355/113ans=3.141592654ans=3.14159265358979(4)字符型數(shù)據(jù)

類似于其他高級語言,MATLAB的字符和字符串運算也相當強大。在MATLAB中,字符串可以用單引號(')進行賦值,字符串的每個字符(含空格)都是字符數(shù)組的一個元素。MATLAB還包含很多字符串相關(guān)操作函數(shù),具體見表1-7。對于字符型數(shù)據(jù),MATLAB輸入命令如下:clc,clear,closeallsymsaby=a運行程序輸出結(jié)果如下:>>yy=a字符串的相減運算操作如下:y1=a+1y2=y1-2運行程序輸出結(jié)果如下:y1=a+1y2=a–1字符串的相加運算操作如下:y3=y+y1運行程序輸出結(jié)果如下:>>y+y1ans=2*a+1字符串的相乘運算操作如下:y4=y*y1運行程序輸出結(jié)果如下:>>y4=y*y1y4=a*(a+1)字符串的相除運算操作如下:y5=y/y1運行程序輸出結(jié)果如下:>>y5=y/y1y5=a/(a+1)(5)數(shù)據(jù)類型間的轉(zhuǎn)換

MATLAB支持不同數(shù)據(jù)類型間的轉(zhuǎn)換,這給數(shù)據(jù)處理帶來極大方便,常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)如表1-8所示。

字符型變量轉(zhuǎn)換,命令如下:clc,clear,closealla='pi'b=double(a)b1=str2num(a)c=11*ad=11*bd=11*b1運行程序輸出結(jié)果如下:a=pib=112105b1=355/113c=12321155d=12321155d=3905/1131.4MATLAB程序設(shè)計基礎(chǔ)

1.4MATLAB程序設(shè)計基礎(chǔ)1.M文件的類型(1)腳本M文件(2)函數(shù)M文件2.M文件的結(jié)構(gòu)1.4.2MATLAB程序控制語句運用1.程序分支控制語句程序分支控制語句包括if結(jié)構(gòu)和switch結(jié)構(gòu)語句,if與else或elseif連用,偏向于是非選擇,當某個邏輯條件滿足時執(zhí)行if后的語句,否則執(zhí)行else語句。switch和case、otherwise連用,偏向于各種情況的列舉,當表達式結(jié)果為某個或某些值時,執(zhí)行特定case指定的語句段,否則執(zhí)行otherwise語句。其中if語句在實際編程中運用較多,具體的if語句句法形式如下所示:clc,clear,closealla=1;ifa==1b=0elseb=1end運行程序輸出結(jié)果如下:b=0如果a=2,繼續(xù)運行程序,clc,clear,closealla=11;switchacase1b=0otherwiseb=1end運行程序輸出結(jié)果如下:b=12.程序循環(huán)控制語句循環(huán)控制語句使用能夠使用處理大規(guī)模的數(shù)據(jù),能夠循環(huán)進行數(shù)據(jù)處理,特別是矩陣的運算,一個矩陣包括M行N列,通常需要對M行N列均進行處理,因此循環(huán)語句顯得尤為重要,MATLAB中提供了兩類循環(huán)語句,分別是for循環(huán)和while循環(huán):for循環(huán)指定了循環(huán)的次數(shù),如M行數(shù)據(jù)處理,則循環(huán)M次。while循環(huán)則判別等式是否成立,若成立繼續(xù)在循環(huán)體中運行,若不成立則跳出循環(huán)體,如果設(shè)置參數(shù)不合理,則可能導致死循環(huán),因此在使用while時,應(yīng)該注意判別語句的使用。與for和while搭配的接觸循環(huán)的語句有end、break、continue等等,end表示循環(huán)結(jié)束,break表示內(nèi)嵌判別語句下的結(jié)束循環(huán),continue語句使得當前次循環(huán)不向下執(zhí)行,直接進入下一次循環(huán)。(1)for循環(huán)

for循環(huán)直接指定循環(huán)的次數(shù),具體的語法格式如下:clc,clear,closealla=0fori=1:3a=a+1end運行程序輸出結(jié)果如下:a=0a=1a=2a=33.程序終止控制語句

return語句能夠使程序立即退出循環(huán),節(jié)約程序執(zhí)行時間,特別是內(nèi)嵌循環(huán)中,應(yīng)該使用return語句跳出循環(huán),例如用于查找某一個元素,如果找到了立即跳出,具體的return語句使用如下:clc,clear,closeallb=0i=0ifi<2i=i+1b=b+1elsereturn;end運行程序輸出結(jié)果如下:b=0i=0i=1b=1順序執(zhí)行return語句時,立即跳出循環(huán)結(jié)構(gòu)體,return語句更多地用在MATLAB函數(shù)M文件中。1.5MATLAB的繪圖功能

1.5.1離散數(shù)據(jù)圖形繪制一個二元實數(shù)標量對(x0,y0)可以用平面上的點來表示,一個二元實數(shù)標量數(shù)組[(x1,y1)(x2,y2)…(xn,yn)]可以用平面上的一組點來表示,對于離散函數(shù)Y=f(X),當X為一維標量數(shù)組X=[x1,x2,…,xn]時,根據(jù)函數(shù)關(guān)系可以求出Y相應(yīng)的為一維標量Y=[y1,y2,…,yn]。當把這兩個向量數(shù)組在直角坐標系中用點序列來表示時,就實現(xiàn)了離散函數(shù)的可視化。應(yīng)當注意的是,MATLAB是無法實現(xiàn)對無限區(qū)間上的數(shù)據(jù)的可視化的。【例3-1】離散數(shù)據(jù)的圖形繪制clc,clear,closeallx=1:10;y=rand(10,1);plot(x,y,'bo-')xlabel('x')ylabel('y')運行該程序文件,得到圖形1.5.2函數(shù)圖形繪制

在MATLAB中,是無法畫出真正的連續(xù)函數(shù)的,只是將步長盡量取到最小,因此在實現(xiàn)連續(xù)函數(shù)的可視化時,首先也必須將連續(xù)函數(shù)用在一組離散自變量上計算函數(shù)結(jié)果,然后將自變量數(shù)組和結(jié)果數(shù)組在圖形中表示出來。當然,這些離散的點還是不能表現(xiàn)函數(shù)的連續(xù)性的,為了更形象地表現(xiàn)函數(shù)的規(guī)律及其連續(xù)變化,通常采用以下兩種方法:(1)對離散區(qū)間進行更細的劃分,逐步趨近函數(shù)的連續(xù)變化特性,直到達到視覺上的連續(xù)效果;(2)把每兩個離散點用直線連接,以每兩個離散點之間的直線,來近似表示兩點間的函數(shù)特性。clc,clear,closeallx=-11:0.1:10;y=tan(x*pi);plot(x,y,'r--')xlabel('x')ylabel('y')axistight1.5.3網(wǎng)格圖繪制

三維網(wǎng)格圖和曲面圖的繪制比三維曲線圖的繪制稍顯復(fù)雜,主要是因為:繪圖數(shù)據(jù)的準備以及三維圖形的色彩、明暗、光照和視角等的處理。繪制函數(shù)z=f(x,y)的三維網(wǎng)格圖的過程如下:1.確定自變量x和y的取值范圍和取值間隔如下:x=x1:dx:x2,y=y1:dy:y22.構(gòu)成xoy平面上的自變量采樣個點矩陣(1)利用“格點”矩陣的原理生成矩陣x=x1:dx:x2;y=y1:dy:y2;X=ones(size(y))*x;Y=y*ones(size(x));(2)利用meshgrid指令生成“格點”矩陣x=x1:dx:x2;y=y1:dy:y2;[X,Y]=meshgrid(x,y);3.計算在自變量采樣“格點”上的函數(shù)值:Z=f(X,Y)繪制網(wǎng)格圖的基本mesh指令的句法格式如下:(1)mesh(X,Y,Z)其功能為以X為x軸自變量、Y為y軸自變量,繪制網(wǎng)格圖;XY均為向量,若X、Y長度分別為m、n,則Z為mn的矩陣,即[m,n]=size(Z),則網(wǎng)格線的頂點為(Xj,Yi,Zij)。(2)mesh(Z)其功能為以Z矩陣列下標為x軸自變量、行下標為y軸自變量,繪制網(wǎng)格圖;(3)mesh(X,Y,Z,C)其功能為以X為x軸自變量、Y為y軸自變量,繪制網(wǎng)格圖;其中C用于定義顏色,如果不定義C,則成為mesh(X,Y,Z),其繪制的網(wǎng)格圖的顏色隨著Z值(即曲面高度)成比例變化,(4)mesh(X,Y,Z,’PropertyName’,PropertyValue,…)其功能為以X為x軸自變量、Y為y軸自變量,繪制網(wǎng)格圖;PropertyValue用來定義網(wǎng)格圖的標記等屬性。1)觀察meshgrid指令的效果,編寫程序如下:clc,clear,closealla=-0.98;b=0.98;c=-1;d=1;n=10;x=linspace(a,b,n);y=linspace(c,d,n);[X,Y]=meshgrid(x,y);plot(X,Y,'+')運行程序輸出圖形如圖1-14所示。2)做函數(shù)的定義域裁剪,觀察上述三維繪圖指令的效果,編程如下:clear,clf,a=-1;b=1;c=-15;d=15;n=20;eps1=0.01;x=linspace(a,b,n);y=linspace(c,d,n);[X,Y]=meshgrid(x,y);fori=1:n%計算函數(shù)值z,并作定義域裁剪

forj=1:nif(1-X(i,j))<eps1|X(i,j)-Y(i,j)<eps1%if語句這樣用

z(i,j)=NaN;%作定義域裁剪,定義域以外的函數(shù)值為NaNelsez(i,j)=1000*sqrt(1-X(i,j))^-1.*log(X(i,j)-Y(i,j));endendendzz=-20*ones(1,n);plot3(x,x,zz),gridoff,holdon%畫定義域的邊界線mesh(X,Y,z)%繪圖,讀者可用meshz,surf,meshc在此替換之view([-56.538]);xlabel('x'),ylabel('y'),zlabel('z'),boxon%把三維圖形封閉在箱體里1.5.4曲面圖的繪制曲面圖的繪制由surf指令完成,該指令的調(diào)用格式與mesh指令類似,具體如下:(1)surf(X,Y,Z)(2)surf(Z)(3)surf(X,Y,Z,C)(4)surf(X,Y,Z,’PropertyName’,PropertyValue,…)與mesh指令不同的是,mesh指令所繪制的圖形是網(wǎng)格劃分的曲面圖,而surf指令繪制得到的是平滑著色的三維曲面圖,著色的方式是在得到相應(yīng)的網(wǎng)格點后,對每一個網(wǎng)格依據(jù)該網(wǎng)格所代表的節(jié)點的色值(由變量C控制)來定義這一網(wǎng)格的顏色。采用surf命令實現(xiàn)曲面的繪制,程序如下:clc,clear,closeallX=-10:1:10;Y=-10:1:10;[X,Y]=meshgrid(X,Y);Z=-X.^2-Y.^2+10;surf(X,Y,Z)xlabel('x')ylabel('y')zlabel('z')axistightcolormap(jet)shadinginterpset(gca,'Ydir','reverse');set(gcf,'color','w')1.5.5特殊圖形繪制MATLAB對于不同的三維曲面繪制,提供了不同的畫圖函數(shù),例如slice切片函數(shù)、quiver3三維箭頭標記函數(shù)、sphere等等,因此MATLAB豐富的圖形可視化工具箱函數(shù)應(yīng)用相當廣泛??臻g曲線及其運動方向的表現(xiàn),編程如下:clc,clear,closeallt=0:0.1:1.5;Vx=2*t;Vy=2*t.^2;Vz=6*t.^3-t.^2;x=t.^2;y=(2/3)*t.^3;z=(6/4)*t.^4-(1/3)*t.^3;%由速度得到曲線plot3(x,y,z,'r.-'),%畫飛行軌跡holdon%算數(shù)值梯度Vx=gradient(x);Vy=gradient(y);Vz=gradient(z);quiver3(x,y,z,Vx,Vy,Vz),%畫速度矢量圖gridon%柵格化xlabel('x')ylabel('y')zlabel('z')1.6微積分問題的MATLAB求解符號變量在解決工程問題中應(yīng)用較多,對于一個工程問題而言,一般首先從變量出發(fā),把問題用符號變量表示出來(得到符號矩陣),然后通過符號變量求解得到一般表達式,根據(jù)該表達式,代入相應(yīng)的初始條件,即可得到問題的具體的解。1.極限MATLAB提供了求極限函數(shù)limit(),函數(shù)調(diào)用格式為:y=limit(fun,x,x0)。其中,y為返回的函數(shù)極限值;

fun為要求解的函數(shù);

x為函數(shù)自變量;

x0位函數(shù)自變量的取值,x趨近于x0。MATLAB求解極限問題有專門的函數(shù),編程如下:clc,clear,closeallsymsxaI1=limit('(sin(x)-sin(3*x))/sin(x)',x,0)I2=limit('(tan(x)-tan(a))/(x-a)',x,a)I3=limit('(3*x-5)/(x^3*sin(1/x^2))',x,inf)運行程序輸出結(jié)果如下:I1=-2

I2=tan(a)^2+1

I3=32.導數(shù)diff是求微分最常用的函數(shù),其輸入?yún)?shù)既可以是函數(shù)表達式,也可以是符號矩陣。MATLAB常用的格式是:diff(f,x,n);其中,f關(guān)于x求n階導數(shù)。MATLAB求解導數(shù)問題,編程如下:clc,clear,closeallsymsxyf=sym('exp(-2*x)*cos(3*x^(1/2))')diff(f,x)g=sym('g(x,y)')%建立抽象函數(shù)。f=sym('f(x,y,g(x,y))')%建立復(fù)合抽象函數(shù)。diff(f,x)diff(f,x,2)運行程序輸出結(jié)果如下:f=exp(-2*x)*cos(3*x^(1/2))

ans=-2*exp(-2*x)*cos(3*x^(1/2))-(3*exp(-2*x)*sin(3*x^(1/2)))/(2*x^(1/2))

g=g(x,y)

f=f(x,y,g(x,y))

ans=D([3],f)(x,y,g(x,y))*diff(g(x,y),x)+D([1],f)(x,y,g(x,y))

ans=(D([3,3],f)(x,y,g(x,y))*diff(g(x,y),x)+D([1,3],f)(x,y,g(x,y)))*diff(g(x,y),x)+D([1,3],f)(x,y,g(x,y))*diff(g(x,y),x)+D([3],f)(x,y,g(x,y))*diff(g(x,y),x,x)+D([1,1],f)(x,y,g(x,y))數(shù)值求導指令diff,程序如下:clc,clear,closeallx=linspace(0,2*pi,50);y=sin(x);dydx=diff(y)./diff(x);plot(x(1:49),dydx),gridMATLABint()函數(shù)是求積分最常用的函數(shù),其輸入?yún)?shù)可以是函數(shù)表達式。常用的格式是:int(f,r,x0,x1)。其中,f為所要積分的表達式;r為積分變量,若為定積分,則x0與x1為積分上下限。求解積分函數(shù)int,編寫程序如下:clc,clear,closeallsymsxyzI1=int(sin(x*y+z),z)I2=int(1/(3+2*x+x^2),x,0,1)I3=int(1/(3+2*x+x^2),x,-inf,inf)運行程序輸出結(jié)果如下:I1=-cos(z+x*y)I2=-(2^(1/2)*(atan(8^(1/2)/4)-atan(2^(1/2))))/2I3=(pi*2^(1/2))/21.6.2微分方程的數(shù)值解求解微積分方程你的數(shù)值解常用的MATLAB函數(shù)調(diào)用如下:[t,x]=ode23(‘xprime’,t0,tf,x0,tol,trace)[t,x]=ode45(‘xprime’,t0,tf,x0,tol,trace)或[t,x]=ode23(‘xprime’,[t0,tf],x0,tol,trace)[t,x]=ode45(‘xprime’,[t0,tf],x0,tol,trace)說明:(1)兩個指令的調(diào)用格式相同,均為Runge-Kutta法。(2)該指令是針對一階常微分設(shè)計的。因此,假如待解的是高階微分方程,那么它必修先演化為形如的一階微分方程組,即“狀態(tài)方程”。(3)’xprime’是定義的函數(shù)名。該函數(shù)文件必須以為一個列向量輸出,以為輸入?yún)⒘浚ㄗ⒁廨斎胱兞恐g的關(guān)系,先“時間變量”后“狀態(tài)變量”)。(4)輸入?yún)⒘亢头謩e是積分的起始值和終止值。(5)輸入?yún)⒘繛槌跏紶顟B(tài)列向量。(6)輸出參量和分別給出“時間”向量和相應(yīng)的狀態(tài)向量。(7)tol控制解的精度,可缺省。缺省時,ode23默認tol=1.e-3;ode23默認tol=1.e-6。(8)輸入?yún)⒘縯race控制求解的中間結(jié)果是否顯示,可缺省,缺省時,默認為tol=0,不顯示中間結(jié)果。(9)一般地,兩者分別采用自適應(yīng)變步長(即當解的變化較慢時采用較大的步長,從而使得計算速度快;當解的變化速度較快時步長會自動地變小,從而使得計算精度更高)的二、三階Runge-Kutta算法和四、五階Runge-Kutta算法,ode45比ode23的積分分段少,而運算速度快。建立方程組的函數(shù)文件如下:functiondz=dzdx1(x,z)dz(1)=z(2);dz(2)=z(3);dz(3)=z(3)*x^(-1)-3*x^(-2)*z(2)+2*x^(-3)*z(1)+9*x^3*sin(x);dz=[dz(1);dz(2);dz(3)];end編寫主程序如下:clc,clear,closeallH=[0.1,60];z0=[1;1;1];[x,z]=ode15s('dzdx1',H,z0);plot(x,z(:,1),'g--',x,z(:,2),'b*--',x,z(:,3),'mp--')xlabel('軸\itx');ylabel('軸\ity')gridonlegend('方程解z1的曲線','方程解z2的曲線','方程解z3的曲線')1.6.3龍貝格積分法微積分運算

在MATLAB中編程實現(xiàn)的龍貝格積分法的函數(shù)為:[I,step]=Roberg(f,a,b,eps)。功能:龍貝格積分法求函數(shù)的數(shù)值積分。調(diào)用格式:[I,step]=Roberg(f,a,b,eps)。其中,I:積分值;step:積分劃分的子區(qū)間次數(shù);f:函數(shù)名;a:積分下限;b:積分上限;eps:積分精度;1.6.4有限差分方法求邊值問題

在MATLAB中編程實現(xiàn)的有限差分方法的函數(shù)為:[k,A,B1,X,Y,y,wucha,p]=yxcf(q1,q2,q3,a,b,alpha,beta,h)功能:有限差分方法求函數(shù)的邊值問題。調(diào)用格式:[k,A,B1,X,Y,y,wucha,p]=yxcf(q1,q2,q3,a,b,alpha,beta,h)。其中,q1、q2、q3:方程系數(shù);a為方程y的初始化值x0;b為方程y的區(qū)間終值xn;alpha為y(a)對應(yīng)的值;beta為y(b)對應(yīng)的值;h為求解步長;k為計算迭代步數(shù);A為

矩陣系數(shù);B1為

矩陣系數(shù);Y為

矩陣向量;y為求解目標方程的邊值;wucha為求解誤差;p等于[k',X',y,wucha'],為一個矩陣;1.6.5樣條函數(shù)求積分

MATLAB中的樣條工具箱中提供了求樣條函數(shù)的積分的函數(shù)fnint。函數(shù)fnint的常見用法如下:q=fnint(Y)它表示求取樣條函數(shù)Y的積分。在用函數(shù)fnint求積分之前,必須用樣條工具箱中的函數(shù)csape對被積分函數(shù)進行樣條插值擬合。1.6.6常微分方程符號解

MATLAB常微分方程符號解的語法是:dsolve('equation','condition')其中,equation代表常微分方程式即y'=g(x,y),且須以Dy代表一階微分項y',D2y代表二階微分項y'',condition則為初始條件。函數(shù)dsolve用來解符號常微分方程、方程組,如果沒有初始條件,則求出通解,如果有初始條件,則求出特解。dsolve的調(diào)用格式如下:(1)dsolve('equation') %給出微分方程的解析解,表示為t的函數(shù);(2)dsolve('equation','condition') %給出微分方程初值問題的解,表示為t的函數(shù);(3)dsolve('equation','v') %給出微分方程的解析解,表示為v的函數(shù);(4)dsolve('equation','condition','v') %給出微分方程初值問題的解,表示為v的函數(shù)。1.7非線性方程與線性規(guī)劃問題求解

最優(yōu)化理論和方法日益受到重視,已經(jīng)滲透到生產(chǎn)、管理、商業(yè)、軍事、決策等各個領(lǐng)域,應(yīng)用MATLAB來解決最優(yōu)化問題,通過將“最優(yōu)化問題”、“MATLAB優(yōu)化工具箱”和“MATLAB編程”這三方面有機結(jié)合進行講述,來快速解決最優(yōu)化問題。1.7.1非線性方程組求解

函數(shù):fsolve格式如下:x=fsolve(fun,x0)%用fun定義向量函數(shù),其定義方式為:先定義方程函數(shù)functionF=myfun(x)。F=[表達式1;表達式2;…表達式m]%保存為myfun.m,并用下面方式調(diào)用:x=fsolve(@myfun,x0),x0為初始估計值。x=fsolve(fun,x0,options)[x,fval]=fsolve(…)%fval=F(x),即函數(shù)值向量[x,fval,exitflag]=fsolve(…)[x,fval,exitflag,output]=fsolve(…)[x,fval,exitflag,output,jacobian]=fsolve(…)%jacobian為解x處的Jacobian陣。1.7.2無約束最優(yōu)化問題求解

MATLAB中利用函數(shù)fminsearch求無約束多元函數(shù)最小值。函數(shù):fminsearch格式如下:x=fminsearch(fun,x0)%x0為初始點,fun為目標函數(shù)的表達式字符串或MATLAB自定義函數(shù)的函數(shù)柄。x=fminsearch(fun,x0,options)%options查optimset[x,fval]=fminsearch(…)%最優(yōu)點的函數(shù)值[x,fval,exitflag]=fminsearch(…)%exitflag與單變量情形一致[x,fval,exitflag,output]=fminsearch(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論