建模培訓(xùn)matlab使用課件_第1頁
建模培訓(xùn)matlab使用課件_第2頁
建模培訓(xùn)matlab使用課件_第3頁
建模培訓(xùn)matlab使用課件_第4頁
建模培訓(xùn)matlab使用課件_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Matlab入門與應(yīng)用主講:數(shù)學(xué)軟件:Matlab、Mathematica、Maple。統(tǒng)計(jì):spss、sas等運(yùn)籌:lingo等一、簡介:MATLAB介紹MATLAB意為“矩陣實(shí)驗(yàn)室”,源自MatrixLaboratory,它是一種科學(xué)計(jì)算軟件。

matlab語言是由美國的CleverMoler博士于1980年。開發(fā)的設(shè)計(jì)者的初衷是為解決“線性代數(shù)”課程的矩陣運(yùn)算問題。

目前MATLAB已經(jīng)成為國際上最流行的軟件之一,除了可提供傳統(tǒng)的交互式的編程方法之外,還能提供豐富可靠的矩陣運(yùn)算、圖形繪制、數(shù)據(jù)處理、圖像處理和Windows編程工具等。因而出現(xiàn)了各種以MATLAB為基礎(chǔ)的工具箱,應(yīng)用于自動(dòng)控制、圖像信號處理、生物醫(yī)學(xué)工程、語音處理、信號分析、時(shí)序分析與建模、優(yōu)化設(shè)計(jì)等廣泛的領(lǐng)域,表現(xiàn)出了一般高級語言難以比擬的優(yōu)勢。

美國Mathwork軟件公司推出的Matlab軟件就是為了給人們提供一個(gè)方便的數(shù)值計(jì)算平臺而設(shè)計(jì)的。它將一個(gè)優(yōu)秀軟件的易用性與可靠性、通用性與專業(yè)性、一般目的的應(yīng)用與高深的科學(xué)技術(shù)應(yīng)用有機(jī)的相結(jié)合。MATLAB是一種直譯式的高級語言,比其它程序設(shè)計(jì)語言容易。MATLAB已經(jīng)不僅僅是一個(gè)“矩陣實(shí)驗(yàn)室”了,它集科學(xué)計(jì)算、圖象處理、聲音處理于一身,并提供了豐富的Windows圖形界面設(shè)計(jì)方法。MATLAB在美國已經(jīng)作為大學(xué)工科學(xué)生必修的計(jì)算機(jī)語言之一(C,FORTRAN,ASSEMBLER,MATLAB)。近年來,MATLAB語言已在我國推廣使用,現(xiàn)在已應(yīng)用于各學(xué)科研究部門和許多高等院校。豐富的MATLAB工具箱MATLAB主工具箱符號數(shù)學(xué)工具箱SIMULINK仿真工具箱控制系統(tǒng)工具箱信號處理工具箱圖象處理工具箱通訊工具箱系統(tǒng)辨識工具箱神經(jīng)元網(wǎng)絡(luò)工具箱金融工具箱在使用中Matlab的優(yōu)點(diǎn)有如下幾點(diǎn):1.易學(xué),編程方便,快捷.2.豐富的數(shù)學(xué)函數(shù)使得數(shù)值問題的求解變得很容易。在使用中Matlab的缺點(diǎn)在于:

運(yùn)行速度,尤其是圖形的處理速度較為緩慢。1進(jìn)入與運(yùn)行方式1、窗口與界面2、運(yùn)行方式

1)命令行方式

2)M文件方式二、基本操作啟動(dòng)MATLAB后,將進(jìn)入MATLAB集成環(huán)境。MATLAB集成環(huán)境包括MATLAB主窗口、命令窗口(CommandWindow)、工作空間窗口(Workspace)、命令歷史窗口(CommandHistory)、當(dāng)前目錄窗口(CurrentDirectory)。

當(dāng)MATLAB安裝完畢并首次啟動(dòng)時(shí),展現(xiàn)在屏幕上的界面為MATLAB的默認(rèn)界面,如右圖所示。

eps—計(jì)算機(jī)浮點(diǎn)運(yùn)算誤差限,在pc機(jī)上,若某個(gè)量的絕對值小于eps,則可以認(rèn)為這個(gè)量為0。pi—圓周率的近似值3.1415926

inf或Inf—表示正無大,定義為1/0NaN—不定數(shù),不定式。它產(chǎn)生于0×,0/0,/

等運(yùn)算

i,j—虛數(shù)單位

ans—對于未賦值運(yùn)算結(jié)果,自動(dòng)賦給ans2)特殊變量2常用的數(shù)學(xué)運(yùn)算符+—*(乘).*(點(diǎn)乘)/(左除)./(點(diǎn)除)\(右除)^(冪)注:在運(yùn)算式中,MATLAB通常不需要考慮空格;多條命令可以放在一行中,它們之間需要用分號隔開;逗號告訴MATLAB顯示結(jié)果,而分號則禁止結(jié)果顯示。4MATLAB的工作空間命令1、MATLAB的工作空間包含了一組可以在命令窗口中調(diào)整(調(diào)用)的參數(shù)who:顯示當(dāng)前工作空間中所有變量的一個(gè)簡單列表 whos:則列出變量的大小、數(shù)據(jù)格式等詳細(xì)信息clear:清除工作空間中所有的變量clear變量名:清除指定的變量clc:清除命令窗口的內(nèi)容

2、退出工作空間quit

或exithelp命令,在命令窗口中顯示5、常用數(shù)學(xué)函數(shù)6M文件1)M文件概述用MATLAB語言編寫的程序,稱為M文件。M文件可以根據(jù)調(diào)用方式的不同分為兩類:命令文件(ScriptFile)(或腳本文件)和函數(shù)文件(FunctionFile)。2)M文件的建立與打開

M文件是一個(gè)文本文件,它可以用任何編輯程序來建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。

1)建立新的M文件為建立新的M文件,啟動(dòng)MATLAB文本編輯器有3種方法:

(1)菜單操作。從MATLAB主窗口的File菜單中選擇New菜單項(xiàng),再選擇M-file命令,屏幕上將出現(xiàn)MATLAB文本編輯器窗口。

(2)命令操作。在MATLAB命令窗口輸入命令edit,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤。

(3)命令按鈕操作。單擊MATLAB主窗口工具欄上的NewM-File命令按鈕,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤。3)打開已有的M文件打開已有的M文件,也有3種方法:

(1)菜單操作。從MATLAB主窗口的File菜單中選擇Open命令,則屏幕出現(xiàn)Open對話框,在Open對話框中選中所需打開的M文件。在文檔窗口可以對打開的M文件進(jìn)行編輯修改,編輯完成后,將M文件存盤。

(2)命令操作。在MATLAB命令窗口輸入命令:edit

文件名,則打開指定的M文件。

(3)命令按鈕操作。單擊MATLAB主窗口工具欄上的OpenFile命令按鈕,再從彈出的對話框中選擇所需打開的M文件。7函數(shù)文件

1)函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件由function語句引導(dǎo),其基本結(jié)構(gòu)為:

function輸出形參表=函數(shù)名(輸入形參表)

注釋說明部分函數(shù)體語句其中以function開頭的一行為引導(dǎo)行,表示該M文件是一個(gè)函數(shù)文件。函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于一個(gè)時(shí),則應(yīng)該用方括號括起來。例編寫函數(shù)文件求半徑為r的圓的面積和周長。函數(shù)文件如下:(fcircle.m)function[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圓半徑%s圓面積%p圓周長s=pi*r*r;p=2*pi*r;窗口調(diào)用:[s,p]=fcircle(6)程序2:例:,計(jì)算f(1)首先建立一個(gè)M函數(shù):functionY=fun1(x)Y=(x^3-2*x^2+x-6.3)/(x^2+0.05*x-3.14);在指令窗口運(yùn)行以下指令:Z=fun1(1)空陣[]—matlab允許輸入空陣,當(dāng)一項(xiàng)操作無結(jié)果時(shí),返回空陣。rand——隨機(jī)矩陣eye——單位矩陣

eye(N)

生成N*N的單位陣

eye(M,N)

生成M*N的單位陣。zeros——全部元素都為0的矩陣

zeros(N)

生成N*N的全零陣

zeros(M,N)

生成M*N的全零陣。ones——全部元素都為1的矩陣

ones(N)

生成N*N的全一陣

ones(M,N)

生成M*N的全一陣。2、特殊矩陣的生成例:a=[]b=zeros(4,5)c=ones(4,5)d=eye(4,5)e=eye(4,4)3.矩陣的幾種基本變換操作1.

通過在矩陣變量后加’的方法來表示轉(zhuǎn)置運(yùn)算:a=[10,2,12;34,2,4;98,34,6];a'2.

矩陣求逆:inv(a)3.矩陣的特征值:norm(a)4.矩陣的范數(shù):norm(a,1)norm(a,inf)[u,v]=eig(a)5.矩陣的行列式:det(a)4MATLAB運(yùn)算

1)基本算術(shù)運(yùn)算

MATLAB的基本算術(shù)運(yùn)算有:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)。

注意,運(yùn)算是在矩陣意義下進(jìn)行的,單個(gè)數(shù)據(jù)的算術(shù)運(yùn)算只是一種特例。(1)矩陣加減運(yùn)算

假定有兩個(gè)矩陣A和B,則可以由A+B和A-B實(shí)現(xiàn)矩陣的加減運(yùn)算。運(yùn)算規(guī)則是:若A和B矩陣的維數(shù)相同,則可以執(zhí)行矩陣的加減運(yùn)算,A和B矩陣的相應(yīng)元素相加減。如果A與B的維數(shù)不相同,則MATLAB將給出錯(cuò)誤信息,提示用戶兩個(gè)矩陣的維數(shù)不匹配。(2)矩陣乘法

假定有兩個(gè)矩陣A和B,若A為m×n矩陣,B為n×p矩陣,則C=A*B為m×p矩陣。(3)矩陣除法

在MATLAB中,有兩種矩陣除法運(yùn)算:\和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則A\B和B/A運(yùn)算可以實(shí)現(xiàn)。A\B等效于A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。

對于含有標(biāo)量的運(yùn)算,兩種除法運(yùn)算的結(jié)果相同,如3/4和4\3有相同的值,都等于0.75。(4)矩陣的乘方

一個(gè)矩陣的乘方運(yùn)算可以表示成A^x,要求A為方陣,x為標(biāo)量。

2.點(diǎn)運(yùn)算

在MATLAB中,有一種特殊的運(yùn)算,因?yàn)槠溥\(yùn)算符是在有關(guān)算術(shù)運(yùn)算符前面加點(diǎn),所以叫點(diǎn)運(yùn)算。點(diǎn)運(yùn)算符有.*、./、.\和.^。兩矩陣進(jìn)行點(diǎn)運(yùn)算是指它們的對應(yīng)元素進(jìn)行相關(guān)運(yùn)算,要求兩矩陣的維參數(shù)相同。a=[1,2,3;4,5,6;7,8,9]b=[-1,0,1;1,-1,0;0,1,1]c=a.*ba=123456789b=-1011-10011c=-1034-50089x=[1,2,3;4,5,6]y=[-2,1,3;-1,1,4]z1=x./yz2=y.\xx=123456y=-213-114z1=-0.521-451.5z2=-0.521-451.5例:當(dāng)時(shí),求的值.X=0.1:0.3:1;Y=sin(x).*cos(x)命令:一、二維繪圖1

)plot——最基本的二維圖形指令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軸用對數(shù)坐標(biāo)表示

四matlab語言的繪圖功能如果已經(jīng)存在一個(gè)圖形窗口,plot命令則清除當(dāng)前圖形,繪制新圖形可單窗口單曲線繪圖;可單窗口多曲線繪圖;可單窗口多曲線分圖繪圖;可多窗口繪圖可任意設(shè)定曲線顏色和線型可給圖形加坐標(biāo)網(wǎng)線和圖形加注功能plot的調(diào)用格式plot(x,y)——基本格式,以y(x)的函數(shù)關(guān)系作出直角坐標(biāo)圖。plot(x1,y1,x2,y2,…,xn,yn)——多條曲線繪圖格式。plot(x,y,’s’)——字符串s設(shè)定曲線顏色和繪圖方式,使用顏色字符串的前1~3個(gè)字母,如yellow—yel表示等?;騪lot(x1,y1,’s1’,x2,y2,’s2’,…)S的標(biāo)準(zhǔn)設(shè)定值如下:

字母顏色標(biāo)點(diǎn)線型

y黃色·點(diǎn)線

m粉紅○圈線

c亮藍(lán)××線

r大紅++字線

g綠色-實(shí)線

b藍(lán)色星形線

w白色:虛線

k黑色-·(--)點(diǎn)劃線x=0:0.001:10;%0到10的1000個(gè)點(diǎn)的x座標(biāo)y=sin(x);%對應(yīng)的y座標(biāo)plot(x,y);%繪圖1.單窗口單曲線繪圖2.單窗口多曲線繪圖(m11)例:t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y,t,y1,t,y2)yy1y23.單窗口多曲線分圖繪圖subplot——子圖分割命令調(diào)用格式:

subplot(m,n,p)行列繪圖序號

該函數(shù)將當(dāng)前圖形窗口分成m×n個(gè)繪圖區(qū),即每行n個(gè),共m行,區(qū)號按行優(yōu)先編號,且選定第p個(gè)區(qū)為當(dāng)前活動(dòng)區(qū),按從左至右,從上至下排列。在每一個(gè)繪圖區(qū)允許以不同的坐標(biāo)系單獨(dú)繪制圖形。例分別以條形圖、階梯圖、桿圖和填充圖形式繪制曲線y=2sin(x)。程序如下:(m12)x=0:pi/10:2*pi;y=2*sin(x);subplot(2,2,1);bar(x,y,'g');subplot(2,2,2);stairs(x,y,'b');subplot(2,2,3);stem(x,y,'k');subplot(2,2,4);fill(x,y,'y');4.圖形加注功能將標(biāo)題、坐標(biāo)軸標(biāo)記、網(wǎng)格線及文字注釋加注到圖形上,這些函數(shù)為:1)有關(guān)圖形標(biāo)注函數(shù)的調(diào)用格式為:title(圖形名稱)xlabel(x軸說明)ylabel(y軸說明)text(x,y,圖形說明)legend(圖例1,圖例2,…)

例在0≤x≤2區(qū)間內(nèi),繪制曲線y1=2e-0.5x和y2=cos(4πx),并給圖形添加圖形標(biāo)注。程序如下(m14)x=0:pi/100:2*pi;y1=2*exp(-0.5*x);y2=cos(4*pi*x);plot(x,y1,x,y2)title('xfrom0to2{\pi}');%加圖形標(biāo)題xlabel('VariableX');%加X軸說明ylabel('VariableY');%加Y軸說明text(0.8,1.5,‘曲線y1=2e^{-0.5x}’);%在指定位置添加圖形說明text(2.5,1.1,'曲線y2=cos(4{\pi}x)');legend(‘y1’,‘y2’)%加圖例2).坐標(biāo)控制axis函數(shù)的調(diào)用格式為:axis([xminxmaxyminymaxzminzmax])axis函數(shù)功能豐富,常用的格式還有:axisequal:縱、橫坐標(biāo)軸采用等長刻度。axissquare:產(chǎn)生正方形坐標(biāo)系(缺省為矩形)。axisauto:使用缺省設(shè)置。axisoff:取消坐標(biāo)軸。axison:顯示坐標(biāo)軸。給坐標(biāo)加網(wǎng)格線用grid命令來控制。gridon/off命令控制是畫還是不畫網(wǎng)格線,不帶參數(shù)的grid命令在兩種狀態(tài)之間進(jìn)行切換。給坐標(biāo)加邊框用box命令來控制。boxon/off命令控制是加還是不加邊框線,不帶參數(shù)的box命令在兩種狀態(tài)之間進(jìn)行切換。圖形保持用hold命令來控制。holdon/off命令控制是保持原有圖形還是刷新原有圖形,不帶參數(shù)的hold命令在兩種狀態(tài)之間進(jìn)行切換。例:(m15)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)內(nèi)繪制曲線y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。程序如下(m16):x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)holdony2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);holdoff5.ezplot(f)—符號函數(shù)(顯函數(shù)、隱函數(shù)和參數(shù)方程)的簡易繪圖函數(shù)MATLAB提供了一個(gè)ezplot函數(shù)繪制隱函數(shù)圖形,下面介紹其用法。(1)對于函數(shù),ezplot函數(shù)的調(diào)用格式為:ezplot(‘f’):在默認(rèn)區(qū)間-2π<x<2π和-2π<y<2π繪制f(x,y)=0的圖形。ezplot(‘f’,[xmin,xmax,ymin,ymax]):在區(qū)間xmin<x<xmax和ymin<y<ymax繪制f(x,y)=0的圖形。ezplot(‘f’,[a,b]):在區(qū)間a<x<b和a<y<b繪制f(x,y)=0的圖形。(2)對于參數(shù)方程x=x(t)和y=y(t),ezplot函數(shù)的調(diào)用格式為:ezplot(‘x’,‘y’):在默認(rèn)區(qū)間0<t<2π繪制x=x(t)和y=y(t)的圖形。ezplot(‘x’,‘y’,[tmin,tmax]):在區(qū)間tmin<t<tmax繪制x=x(t)和y=y(t)的圖形。subplot(2,2,1);ezplot('x^2+y^2-9');axisequal;subplot(2,2,2);ezplot('x^3+y^3-5*x*y+1/5')subplot(2,2,3);ezplot('cos(tan(pi*x))',[0,1])subplot(2,2,4);ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi])例隱函數(shù)繪圖應(yīng)用舉例。(m17)6polar函數(shù)用來繪制極坐標(biāo)圖,其調(diào)用格式為:

polar(theta,rho,選項(xiàng))其中theta為極坐標(biāo)極角,rho為極坐標(biāo)矢徑,選項(xiàng)的內(nèi)容與plot函數(shù)相似。例繪制r=sin(t)cos(t)的極坐標(biāo)圖,并標(biāo)記數(shù)據(jù)點(diǎn)。程序如下:(m19)t=0:pi/50:2*pi;r=sin(t).*cos(t);polar(t,r,'-*');7.特殊二維繪圖函數(shù)bar––––繪制直方圖stairs––––繪制階梯圖

stem––––繪制火柴桿圖

comet––––繪制彗星曲線

errorbar––––繪制誤差棒圖

area––––區(qū)域圖

pie––––餅圖

scatter––––離散點(diǎn)圖二維統(tǒng)計(jì)分析圖在MATLAB中,二維統(tǒng)計(jì)分析圖形很多,常見的有條形圖、階梯圖、桿圖和填充圖等,所采用的函數(shù)分別是:bar(x,y,選項(xiàng))stairs(x,y,選項(xiàng))stem(x,y,選項(xiàng))fill(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…)例:分別以條形圖、階梯圖、桿圖和填充圖形式繪制曲線y=2sin(x)。程序如下:(m20)x=0:pi/10:2*pi;y=2*sin(x);subplot(2,2,1);bar(x,y,'g');title('bar(x,y,''g'')');axis([0,7,-2,2]);subplot(2,2,2);stairs(x,y,'b');title('stairs(x,y,''b'')');axis([0,7,-2,2]);subplot(2,2,3);stem(x,y,'k');title('stem(x,y,''k'')');axis([0,7,-2,2]);subplot(2,2,4);fill(x,y,'y');title('fill(x,y,''y'')');axis([0,7,-2,2]);MATLAB提供的統(tǒng)計(jì)分析繪圖函數(shù)還有很多,例如,用來表示各元素占總和的百分比的餅圖、例繪制圖形:(1)某企業(yè)全年各季度的產(chǎn)值(單位:萬元)分別為:2347,1827,2043,3025,試用餅圖作統(tǒng)計(jì)分析。程序如下:(m21)pie([2347,1827,2043,3025]);title('餅圖');legend('一季度','二季度','三季度','四季度');二、三維繪圖三維繪圖的主要功能:繪制三維線圖繪制等高線圖繪制偽彩色圖繪制三維網(wǎng)線圖繪制三維曲面圖、柱面圖和球面圖繪制三維多面體并填充顏色(一)三維線圖plot3——基本的三維圖形指令plot3函數(shù)與plot函數(shù)用法十分相似,其調(diào)用格式為:plot3(x1,y1,z1,選項(xiàng)1,x2,y2,z2,選項(xiàng)2,…,xn,yn,zn,選項(xiàng)n)

其中每一組x,y,z組成一組曲線的坐標(biāo)參數(shù),選項(xiàng)的定義和plot函數(shù)相同。二維圖形的所有基本特性對三維圖形全都適用。定義三維坐標(biāo)軸大小

axis([xminxmaxyminymaxzminzmax])gridon(off)繪制三維網(wǎng)格

text(x,y,z,‘string’)三維圖形標(biāo)注子圖和多窗口也可以用到三維圖形中t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title('Linein3-DSpace');xlabel('X');ylabel('Y');zlabel('Z');gridon;例:繪制三維曲線(m22)例:繪制三維線圖t=0:pi/50:10*pi;plot3(t,sin(t),cos(t),‘r:’)(m23)三維曲面1.產(chǎn)生三維數(shù)據(jù)在MATLAB中,利用meshgrid函數(shù)產(chǎn)生平面區(qū)域內(nèi)的網(wǎng)格坐標(biāo)矩陣。其格式為:

x=a:d1:b;y=c:d2:d;1.[X,Y]=meshgrid(x,y);2.[X,Y]=meshgrid(x);meshgrid的作用是產(chǎn)生一個(gè)以向量x為行、向量y為列的矩陣。x=[234];y=[345];[X,Y]=meshgrid(x,y);例:繪制三維曲面的函數(shù)surf函數(shù)和mesh函數(shù)的調(diào)用格式為:mesh(x,y,z,c)surf(x,y,z,c)一般情況下,x,y,z是維數(shù)相同的矩陣。x,y是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點(diǎn)上的高度矩陣,c用于指定在不同高度下的顏色范圍例繪制三維曲面圖z=sin(x+sin(y))-x/10。程序如下:(m25)[x,y]=meshgrid(0:0.25:4*pi);z=sin(x+sin(y))-x/10;mesh(x,y,z);axis([04*pi04*pi-2.51]);注:meshc是帶等高線的三維網(wǎng)格曲面函數(shù)

meshz帶底座的三維網(wǎng)格曲面函數(shù)。其用法與mesh類似,不同的是meshc還在xy平面上繪制曲面在z軸方向的等高線,meshz還在xy平面上繪制曲面的底座。例在xy平面內(nèi)選擇區(qū)域[-8,8]×[-8,8],繪制4種三維曲面圖。程序如下:(m26)[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);subplot(2,2,1);title(‘’);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshc(x,y,z);title('meshc(x,y,z)')subplot(2,2,3);meshz(x,y,z);title('meshz(x,y,z)')subplot(2,2,4);surf(x,y,z);title('surf(x,y,z)')5.4.3其他三維圖形在介紹二維圖形時(shí),曾提到條形圖、桿圖、餅圖和填充圖等特殊圖形,它們還可以以三維形式出現(xiàn),使用的函數(shù)分別是bar3、stem3、pie3和fill3。bar3函數(shù)繪制三維條形圖,常用格式為:bar3(y)bar3(x,y)stem3函數(shù)繪制離散序列數(shù)據(jù)的三維桿圖,常用格式為:stem3(z)stem3(x,y,z)pie3函數(shù)繪制三維餅圖,常用格式為:pie3(x)fill3函數(shù)等效于三維函數(shù)fill,可在三維空間內(nèi)繪制出填充過的多邊形,常用格式為:fill3(x,y,z,c)1)關(guān)系、邏輯關(guān)系運(yùn)算五、Matlab程序設(shè)計(jì)2)數(shù)據(jù)的輸入、輸出

1.?dāng)?shù)據(jù)的輸入從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來進(jìn)行,該函數(shù)的調(diào)用格式為:

A=input(提示信息,選項(xiàng));其中提示信息為一個(gè)字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。如果在input函數(shù)調(diào)用時(shí)采用‘s’選項(xiàng),則允許用戶輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令:

xm=input('What'syourname?','s');2.?dāng)?shù)據(jù)的輸出

MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為:

disp(輸出項(xiàng))其中輸出項(xiàng)既可以為字符串,也可以為矩陣。

例輸入x,y的值,并將它們的值互換后輸出。程序如下:(m4)x=input(‘Inputxplease:');y=input(‘Inputyplease:');z=x;x=y;y=z;disp(x);disp(y);3)選擇結(jié)構(gòu)1.if語句在MATLAB中,if語句有3種格式。

(1)單分支if語句:

if

條件

語句組

end當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,則直接執(zhí)行if語句的后繼語句。(2)雙分支if語句:

if

條件

語句組1

else

語句組2

end

當(dāng)條件成立時(shí),執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。例計(jì)算分段函數(shù)的值。(m5)程序如下:x=input('請輸入x的值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy(3)多分支if語句:if條件1

語句組1elseif條件2

語句組2……elseif條件m

語句組melse

語句組nend語句用于實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。例:學(xué)生的成績管理,用來演示if-else-end分支結(jié)構(gòu)的應(yīng)用。%劃分區(qū)域:滿分(100),優(yōu)秀(90-99),良好(80-89),及格(60-79),不及格(<60)。(m6)N=input('輸入分?jǐn)?shù):');ifN>=90&N<=100S='優(yōu)秀'; %列為'優(yōu)秀'等級elseifN>=80&N<90S='良好'; %列為'良好'等級elseifN>=60&N<80S='及格';%列為'及格'等級elseS='不及格';%列為'不及格'等級enddisp(S)2.switch語句

switch語句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語句,其語句格式為:

switch表達(dá)式

case表達(dá)式1

語句組1case表達(dá)式2

語句組2……case表達(dá)式m

語句組motherwise

語句組nend當(dāng)表達(dá)式的值等于某個(gè)case語句后的條件時(shí),程序?qū)⑥D(zhuǎn)移到該語句中執(zhí)行當(dāng)任意一個(gè)分支的語句執(zhí)行完后,直接執(zhí)行switch語句的下一句。

程序如下:result=input(‘請輸入分?jǐn)?shù)');n=fix(result/10);switchncase{9,10}disp(‘優(yōu)秀’);case8disp(‘良好’);case{6,7}disp(‘及格’);otherwisedisp(‘不及格’);end2)循環(huán)結(jié)構(gòu)1.for語句for語句的格式為:for循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3

循環(huán)體語句end其中表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長,表達(dá)式3的值為循環(huán)變量的終值。步長為1時(shí),表達(dá)式2可以省略。2.while語句

while語句的一般格式為:

while

條件循環(huán)體語句

end

其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。例:用while循環(huán)求1~100間整數(shù)的和程序如下:(m9)sum=0;i=1;whilei<=100sum=sum+i;i=i+1;endsum

sum=5050

五Matlab符號運(yùn)算1符號對象2符號微積分3符號方程求解1符號對象1.1建立符號對象1.建立符號變量和符號常量MATLAB提供了兩個(gè)建立符號對象的函數(shù):sym和syms,兩個(gè)函數(shù)的用法不同。(1)sym函數(shù)sym函數(shù)用來建立單個(gè)符號量,一般調(diào)用格式為:

符號量名=sym('符號字符串')如:x=sym(‘x’)(2)syms函數(shù)MATLAB提供了另一個(gè)函數(shù)syms,一次可以定義多個(gè)符號變量。syms函數(shù)的一般調(diào)用格式為:syms符號變量名1符號變量名2…符號變量名n注:變量間用空格而不要用逗號分隔。如:symsxyz例1:f=2*x^2+3*x-5;g=x^2+x-7;>>symsx>>f=2*x^2+3*x-5;g=x^2+x-7;>>h=f+gans=h=3*x^2+4*x-12例2:f=cos(x);g=sin(2*x);>>symsx>>f=cos(x);g=sin(2*x);>>f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)2.符號表達(dá)式的因式分解與展開MATLAB提供了符號表達(dá)式的因式分解與展開的函數(shù),函數(shù)的調(diào)用格式為:factor(f):對符號表達(dá)式s分解因式。expand(f):對符號表達(dá)式s進(jìn)行展開。collect(f):對符號表達(dá)式s合并同類項(xiàng)。collect(f,v):對符號表達(dá)式s按變量v合并同類項(xiàng)。例:分解symsx;y=x^3+3*x^2-13*x-15;factor(y)ans=(x+5)*(x-3)*(x+1)例:展開symsx;y=(x-3)^2;expand(y)ans=x^2-6*x+94.符號表達(dá)式的化簡MATLAB提供的對符號表達(dá)式化簡的函數(shù)有:simplify(f):應(yīng)用函數(shù)規(guī)則對s進(jìn)行化簡。simple(f):調(diào)用MATLAB的其他函數(shù)對表達(dá)式進(jìn)行綜合化簡,并顯示化簡過程。symsxf=(x^2-3*x-10)/(x+2);simplify(f)例:化簡(m31)2.2符號導(dǎo)數(shù)diff函數(shù)用于對符號表達(dá)式求導(dǎo)數(shù)。該函數(shù)的一般調(diào)用格式為:diff(f):沒有指定變量和導(dǎo)數(shù)階數(shù),默認(rèn)變量對符號表達(dá)式f求一階導(dǎo)數(shù)。diff(f,'v',n):以v為自變量,對符號表達(dá)式f求n階導(dǎo)數(shù)。例:求函數(shù)的二階導(dǎo)數(shù)(m9)symsx;f=3*x^3+5*x+1;diff(f,2)解:Matlab命令(m32)例:求函數(shù)關(guān)于x的偏導(dǎo)數(shù)(m10)解:Matlab命令(m33)symsxy;z=x^2*sin(2*y);B=diff(z,x)pretty(B)2.3符號積分符號積分由函數(shù)int來實(shí)現(xiàn)。該函數(shù)的一般調(diào)用格式為:int(f):沒有指定積分變量和積分階數(shù)時(shí),系統(tǒng)默認(rèn)變量對被積函數(shù)或符號表達(dá)式f求不定積分。int(f,v):以v為自變量,對被積函數(shù)或符號表達(dá)式f求不定積分。int(f,v,a,b):求定積分運(yùn)算。a,b分別表示定積分的下限和上限。該函數(shù)求被積函數(shù)在區(qū)間[a,b]上的定積分。symsx;y=1/(sin(x)^2*cos(x)^2);pretty(int(y))計(jì)算解:Matlab命令(m34)symsxz;y=x/(1+z^2);pretty(int(y,z))計(jì)算解:Matlab命令(m35)計(jì)算二重不定積分symsxy;A=int(int(x^2+y^2+1,y,x,x+1),x,0,1);symsx;y=1/(3+2*x+x^2);pretty(int(y,x,0,1))計(jì)算解:Matlab命令(m36)解:Matlab命令(m37)4符號方程求解4.1符號代數(shù)方程求解在MATLAB中,求解用符號表達(dá)式表示的代數(shù)方程可由函數(shù)solve實(shí)現(xiàn),其調(diào)用格式為:solve(f):求解符號表達(dá)式f的代數(shù)方程,求解變量為默認(rèn)變量。solve(f,v):求解符號表達(dá)式f的代數(shù)方程,求解變量為v。solve(f1,f2,…,fn,v1,v2,…,vn):求解符號表達(dá)式f1,f2,…,fn組成的代數(shù)方程組,求解變量分別v1,v2,…,vn。例:解方程組(m38)

程序:[x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=1','x','y','z')z=5/6,y=-1/2,x=2/34.2符號常微分方程求解在MATLAB中,用大寫字母D表示導(dǎo)數(shù)。例如,Dy表示y‘,D2y表示y’‘,Dy(0)=5表示y’(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y‘’‘+y’‘+y’-x+5=0。符號常微分方程求解可以通過函數(shù)dsolve來實(shí)現(xiàn),其調(diào)用格式為:

dsolve(e,c,v)該函數(shù)求解常微分方程e在初值條件c下的特解。參數(shù)v描述方程中的自變量,省略時(shí)按缺省原則處理,dsolve在求常微分方程組時(shí)的調(diào)用格式為:

dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn)該函數(shù)求解常微分方程組e1,…,en在初值條件c1,…,cn下的特解,若不給出初值條件,則求方程組的通解,v1,…,vn給出求解變量。求該方程的解(m44)y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')解:exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y)——方程解y(t)的時(shí)間曲線圖程序:例:兩個(gè)線性一階方程

[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g')f=C1*exp(3*x)*sin(4*x)+C2*exp(3*x)*cos(4*x)g=-C2*exp(3*x)*sin(4*x)+C1*exp(3*x)*cos(4*x)程序:m54解:非線性方程數(shù)值求解單變量非線性方程求解

在MATLAB中提供了一個(gè)fzero函數(shù),可以用來求單變量非線性方程的根。該函數(shù)的調(diào)用格式為:

z=fzero('fname',x0,tol,trace)其中fname是待求根的函數(shù)文件名,x0為搜索的起點(diǎn)。一個(gè)函數(shù)可能有多個(gè)根,但fzero函數(shù)只給出離x0最近的那個(gè)根。tol控制結(jié)果的相對精度,缺省時(shí)取tol=eps,trace指定迭代信息是否在運(yùn)算中顯示,為1時(shí)顯示,為0時(shí)不顯示,缺省時(shí)取trace=0。六、數(shù)值方程解求f(x)=x-10x+2=0在x0=0.5附近的根。

步驟如下:(1)建立函數(shù)文件funx.m。

functionfx=funx(x)fx=x-10.^x+2;(2)調(diào)用fzero函數(shù)求根。m53

z=fzero('funx',0.5)z=0.3758非線性方程組的求解

對于非線性方程組F(X)=0,用fsolve函數(shù)求其數(shù)值解。函數(shù)的調(diào)用格式為:

X=fsolve('fun',X0,option)其中X為返回的解,fun是用于定義需求解的非線性方程組的函數(shù)文件名,X0是求根過程的初值,

option為最優(yōu)化工具箱的選項(xiàng)設(shè)定。最優(yōu)化工具箱提供了20多個(gè)選項(xiàng)。求下列非線性方程組在(0.5,0.5)附近的數(shù)值解。

(1)建立函數(shù)文件myfun.m。functionq=myfun(p)x=p(1);y=p(2);q(1)=x-0.6*sin(x)-0.3*cos(y);q(2)=y-0.6*cos(x)+0.3*sin(y);

(2)在給定的初值x0=0.5,y0=0.5下,調(diào)用fsolve函數(shù)求方程的根。m52x=fsolve('myfun',[0.5,0.5]')x=0.63540.37342常微分方程初值問題的數(shù)值解法龍格-庫塔法的實(shí)現(xiàn)基于龍格-庫塔法,MATLAB提供了求常微分方程數(shù)值解的函數(shù),一般調(diào)用格式為:

[t,y]=ode23('fname',tspan,y0)[t,y]=ode45('fname',tspan,y0)其中fname是定義f(t,y)的函數(shù)文件名,該函數(shù)文件必須返回一個(gè)列向量。tspan形式為[t0,tf],表示求解區(qū)間。y0是初始狀態(tài)列向量。t和y分別給出時(shí)間向量和相應(yīng)的狀態(tài)向量。設(shè)有初值問題,試求其數(shù)值解(1)建立函數(shù)文件funt.m。functionyp=funt(t,y)yp=(y^2-t-2)/4/(t+1);(2)求解微分方程。m51t0=0;tf=10;y0=2;[t,y]=ode23('funt',[t0,tf],y0);%求數(shù)值解t'y'設(shè)已知某個(gè)函數(shù)關(guān)系y=f(x)在某些離散點(diǎn)上的函數(shù)值:

(6.1)x0x1x2x3x4xg(x)

f(x)七、數(shù)據(jù)插值、擬和

插值問題:

根據(jù)這些已知數(shù)據(jù)來構(gòu)造函數(shù)y=f(x)的一種簡單的近似表達(dá)式以便于計(jì)算點(diǎn)的函數(shù)值,或計(jì)算函數(shù)的一階、二階導(dǎo)數(shù)值。oy●●●●

y0

x1

x2

xn

y1

yn

x0y=f(x)g(x)

y2x●oy●●●●

y0

x1

x2

xn

y1

yn

x0y=f(x)g(x)1一維數(shù)據(jù)插值在MATLAB中,一維插值的函數(shù)是interp1,其調(diào)用格式為:Y1=interp1(X,Y,X1,'method')函數(shù)根據(jù)X,Y的值,計(jì)算函數(shù)在X1處的值。X,Y是兩個(gè)等長的已知向量,分別描述采樣點(diǎn)和樣本值,X1是一個(gè)向量或標(biāo)量,描述欲插值的點(diǎn),Y1是一個(gè)與X1等長的插值結(jié)果。method是插值方法,允許的取值有‘linear’、‘nearest’、‘cubic’、‘spline’。‘linear’線形插值(缺省值)‘nearest’最近鄰點(diǎn)插值‘cubic’三次插值spline’三次樣條插值例某觀測站測得某日6:00時(shí)至18:00時(shí)之間每隔2小時(shí)的室內(nèi)外溫度(℃),用3次樣條插值分別求得該日室內(nèi)外6:30至17:30時(shí)之間每隔2小時(shí)各點(diǎn)的近似溫度(℃)。命令如下:m41h=6:2:18;t=[18,20,22,25,30,28,24;15,19,24,28,34,32,30]';XI=6.5:2

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論