matlab數(shù)值運算課件_第1頁
matlab數(shù)值運算課件_第2頁
matlab數(shù)值運算課件_第3頁
matlab數(shù)值運算課件_第4頁
matlab數(shù)值運算課件_第5頁
已閱讀5頁,還剩151頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章數(shù)值計算功能4.1多項式計算4.2數(shù)值插值和曲線擬合4.3函數(shù)極值4.4非線性方程問題求解4.5常微分方程的數(shù)值求解4.6數(shù)值微分與積分4.7概率統(tǒng)計4.1多項式運算

1.多項式表示法2.多項式運算函數(shù)

多項式求根多項式求值多項式乘法和除法多項式的微積分1.多項式表示法

(1)直接法:多項式多項式系數(shù)用行向量表示,按降冪排列;缺某冪次項,其冪次項系數(shù)為零。P=[a0,a1,...an-1,an]符串形式,x多項式變量y=poly2str(P,'x')(2)字符串表示法:y=poly2sym(P,x)(3)符號多項式表示法:完整形式p=[1,3,0,4,5]y=poly2str(p,'x')y=x^4+3x^3+4x+5symsxy=poly2sym(p,x)y=x^4+3*x^3+4*x+5>>p=[1,3,0,4,5]p=13045>>y=poly2str(p,'x')y=x^4+3x^3+4x+5>>rp=roots(p)rp=-3.23460.5594+1.1980i0.5594-1.1980i-0.8843>>P=[1,8,3,4,-10];>>pp=poly2str(P,'X')pp=X^4+8X^3+3X^2+4X-10例2.多項式的運算函數(shù)多項式的值;根和微分;擬合曲線;部分分式polyvalpolyvalpolyvalmcovolution

(1)多項式求根(roots)(1)多項式的根=0

n次多項式n個根,或?qū)嵏?,或若干對共軛?fù)根。

r=roots(P)P:多項式系數(shù)向量;r:n個根b(1),b(2),…,b(n)的向量。>>r=roots(P)r=-7.6998-0.5572+1.1335i-0.5572-1.1335i0.8141例求多項式x4+8x3+3x2+4x-10的根P=[1,8,3,4,-10];r=roots(P)多項式根的r向量:[r(1),r(2),…,r(n)](2)根行向量創(chuàng)建多項式(poly)P=poly(r)>>PP=poly(r)PP=1.00008.00003.00004.0000-10.0000>>formatrat避免浮點顯示>>p=poly(r)p=1834-10多項式的向量系數(shù):(3)多項式求值(polyval)Y=polyval(P,x)若x數(shù)值,則求多項式在該點x的值;若X是向量或矩陣,每元素x(i,j)多項式求值。代數(shù)多項式P求值數(shù)組乘方運算:Y=a0*X.^n+a1*X.^(n-1)…an+1>>p=[1,3,0,2];>>poly2str(p,'x')ans=x^3+3x^2+2>>a=[1,2;3,4]a=1234>>y=polyval(p,a)y=62256114>>y=polyval(p,2)y=22例例

Y=polyvalm(P,X)矩陣多項式求值(polyvalm)Y=a0*X^n+a1*X^n-1…an+1X必為方陣,作自變量代入多項式求值;結(jié)果階數(shù)還是保持方陣階數(shù)。相當(dāng)于矩陣X乘方運算:設(shè)A為方陣,P代表多項式x3-5x2-2:pp=polyval(P,A)的含義pp=A.*A.*A

-5*A.*A-2Pm=polyvalm(P,A)的含義:Pm=A*A*A-5*A*A-2>>p=[1,-5,0,-2];>>a=[2,4;1,0]a=2410>>pp=polyval(p,a)pp=-14-18-6-2>>pm=polyvalm(p,a)pm=-18-8-2-14矩陣乘方運算:數(shù)組乘方運算:例例14(4)多項式加減運算相同次數(shù)多項式,加減其系數(shù)向量,

不同次數(shù),低次多項式中高次項用0補足。

p2=0x3-

0x2+2x

+1

p1+p2=2x3-

x2+2x

+4

[2,-1,0,3]

[2,1]

[0,0,

2,1]

[2,-1,2,4]

p1=2x3-

x2+3例例(5)多項式乘法-向量卷積w=conv(P1,P2)多項式x4+8x3-10與2x2-x+3的乘積。>>p1=[1,8,0,0,-10];>>p2=[2,-1,3];>>p12=conv(p1,p2)p12=Columns1through5215-524-20Columns6through710-30例例>>h=[3,2,1,-2,1,0,-4,0,3];>>x=[1,-2,3,-4,3,2,1];>>y=conv(h,x);>>n=0:14;>>stem(n,y);%桿圖>>xlabel('Timeindexn');%標(biāo)坐標(biāo)軸>>ylabel('Amplitude');>>title('OutputObtainedbyConvolution')%圖形標(biāo)題grid;卷積是兩個變量在某范圍內(nèi)相乘后求和的結(jié)果。卷積的變量是序列x(n)和h(n),y=conv(x,h)來實現(xiàn)卷級的,輸出的結(jié)果個數(shù)等于x的長度與h的長度之和減去1。卷積公式:z(n)=x(n)*y(n)=∫x(m)y(n-m)dm.例(6)多項式除法-向量解卷積[Q,r]=deconv(P1,P2)Q:多項式P1除以P2的商式,r:P1除以P2的余式,Q和r仍是多項式系數(shù)向量。P1=conv(P2,Q)+rdeconv是conv的逆函數(shù)求多項式x4+8x3-10除以2x2-x+3的結(jié)果。>>[q,r]=deconv(p12,p2)q=1800-10r=Columns1through500000Columns6through700>>[q,r]=deconv(p2,p12)q=0r=2-13例(7)多項式的一階導(dǎo)數(shù)(polyder)

k=polyder(P)k=polyder(P,Q)多項式乘積P·Q的導(dǎo)函數(shù):多項式P的導(dǎo)函數(shù):導(dǎo)函數(shù)的分子存入p,分母存入q。[p,q]=polyder(P,Q)多項式除法P/Q的導(dǎo)函數(shù):例:求有理分式的導(dǎo)數(shù)。命令如下:P=[1];Q=[1,0,5];[p,q]=polyder(P,Q)例例21(8)多項式積分(polyint)I=polyint([2,-1,0,3],5);例:

p(x)

=2x3-

x2+3求常數(shù)項5k=polyint(P,c)k=polyint(P)不定積分,常數(shù)項取c不定積分,常數(shù)項取零例

4.2曲線擬合和數(shù)據(jù)插值4.2.1曲線擬合polyfit

4.2.2數(shù)據(jù)插值interp

擬合成多項式推算未知點值4.2.1.多項式曲線擬合(polyfit)

最小二乘法(誤差平方和最小);x、y已知數(shù)據(jù)的橫、縱坐標(biāo);n為多項式次數(shù);p=polyfit(x,y,n)1.N次多項式曲線擬合S結(jié)構(gòu)體數(shù)組(struct),估計預(yù)測誤差,含R,df和normr。

R:先輸入x構(gòu)建范德蒙矩陣V,后QR分解,得上三角矩陣。

df:自由度,

df=length(y)-(n+1)。

df>0時,超定方程組求解,擬合點數(shù)比未知數(shù)(p(1)~p(n+1))多。

normr:標(biāo)準(zhǔn)偏差、殘差范數(shù),normr=norm(y-V*p),

此處的p為求解之后的數(shù)值。

[p,S]=polyfit(x,y,n)年份1900191019201930194019501960197019801990人口75.9991.97105.71123.20131.66150.69179.32203.21226.50249.63對不同年份人口數(shù)據(jù)分別進行1次、2次和9次多項式擬合(polyfit),用poly2str表示多項式完整形式法;1次、2次和9次多項式估計2000年人口(polyval),結(jié)合美國2000年人口普查截至2000年4月1日美國人口2.81421906億數(shù)據(jù)繪制1900~2000年間的時間-人口數(shù)(polyval)曲線,要求用plot不同線型(LineSpec)繪制原始數(shù)據(jù)點、擬合的1次、2次和9次多項式曲線,標(biāo)注圖例,說明是否階數(shù)越到高越好美國從1900年~1990年每隔10年進行人口普查的數(shù)據(jù)如下表所示:(百萬)例線型說明數(shù)據(jù)點標(biāo)記符說明顏色說明-實線(默認(rèn))+加號符r紅色--雙劃線*星號g綠色-.點劃線.實心圓b藍色:虛線o空心圓c青綠色x叉號符m洋紅色

s正方形y黃色

d菱形k黑色

^上三角形w白色

v下三角形

>

右三角形

<

左三角形

p五角星

h六邊形

plot(x,y,‘LineSpec’)線型屬性例如'r-.*'、'-.r*'、'*-.r'等形式是等效的屬性控制符順序不受限制,可有可無。plot(x,y,'-gh')clearn=1900:10:1990;r=[7599,9197,10571,12320,13166,15069,17932,20321,22650,24963];nrf1=polyfit(n,r,1)%1次多項式擬合nrfs1=poly2str(nrf1,'n')%1次多項式完整字符串表達式nrf2=polyfit(n,r,2)%2次多項式擬合nrf9=polyfit(n,r,9)%9次多項式擬合nrf10=polyfit(n,r,10)%10次多項式擬合nrf1_2000=polyval(nrf1,2000)%一次擬合得到的2000年人口數(shù)nrf2_2000=polyval(nrf2,2000)%2次擬合得到的2000年人口數(shù)nrf9_2000=polyval(nrf9,2000)%9次擬合得到的2000年人口數(shù)n20=1900:4:2000;%1900年到2000年的線性等分?jǐn)?shù)組nrfv1=polyval(nrf1,n20);%從1900年到2000年間1次擬合人口數(shù)nrfv2=polyval(nrf2,n20);%從1900年到2000年間2次擬合人口數(shù)nrfv9=polyval(nrf9,n20);%從1900年到2000年間9次擬合人口數(shù)

plot(n,r,'or',n20,nrfv1,'-<b',n20,nrfv2,'-*k')holdonplot(n20,nrfv9,'-dg')legend('原始數(shù)據(jù)’,‘1次曲線','2次多項式曲線','9次多項式曲線');xlabel('年');ylabel('人口數(shù)')2009版多項式次數(shù)要適當(dāng),過低誤差大,過高波動明顯2014版Goodnessoffit

適合度

SSE擬合誤差

(誤差平方和)

RMSErootmeansquareerror均方根誤差

Rsquare

方程的確定系數(shù),0~1之間,越接近1,表明方程的變量對y的解釋能力越強。

2.曲線擬合工具箱cftool

R-square=1,說明擬合的結(jié)果很好CustomEquations:用戶自定義的函數(shù)類型

Exponential:指數(shù)逼近,2種:a*exp(b*x)、a*exp(b*x)+c*exp(d*x)

Fourier:傅立葉逼近,7種,基礎(chǔ)型是a0+a1*cos(x*w)+b1*sin(x*w)

Gaussian:高斯逼近,8種,基礎(chǔ)型是a1*exp(-((x-b1)/c1)^2)

Interpolant:插值逼近,4種,linear、nearestneighbor、cubicspline、shape-PreservingPolynomial:多形式逼近,9種,linear~、quadratic~、cubic~、4-9thdegree~

工具箱提供的擬合類型Power:冪逼近,有2種類型,a*x^b、a*x^b+c

Rational:有理數(shù)逼近,分子、分母共有的類型是linear~、quadratic~、cubic~、4-5thdegree~;此外,分子還包括constant型

SmoothingSpline:平滑逼近(翻譯的不大恰當(dāng),不好意思)

SumofSinFunctions:正弦曲線逼近,有8種類型,基礎(chǔ)型是a1*sin(b1*x+c1)

Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)擬合工具cftool

x12345678910y1311122832457080104x=1:10;y=[1,3,11,12,28,32,45,70,80,104];%1次多項式擬合p1=polyfit(x,y,1)Ps1=poly2str(p1,'x')xx=1:0.05:10;y1=polyval(p1,xx);%5次多項式擬合p2=polyfit(x,y,5)Ps2=poly2str(p2,'x')y2=polyval(p2,xx);%9次多項式擬合p3=polyfit(x,y,9)Ps3=poly2str(p3,'x')y3=polyval(p3,xx);>>p4=polyfit(x,y,11)y4=polyval(p4,xx);Warning:Polynomialisnotunique;degree>=numberofdatapoints.例holdon;plot(x,y,'*');plot(xx,y1,'r-');plot(xx,y2,'g-');plot(xx,y3,'b-')多項式次數(shù)要適當(dāng),過低誤差大,過高波動明顯已知:10個實驗數(shù)據(jù),分別采用2次、5次、9次和11次擬合,選出最佳擬合次數(shù)3.函數(shù)擬合>>clear>>x=[0:5];>>y=[0.2097,0.3523,0.4339,0.5236,0.7590,0.8998];>>ly=log(y);>>p=polyfit(x,ly,1);b=p(1);la=p(2);a=exp(la);Xx=linspace(0,5,30);Yy=a*exp(b*Xx);plot(x,y,'ro',Xx,Yy)例例插值構(gòu)造的函數(shù)必須通過已知數(shù)據(jù)點;擬合則不要求,只要均方差最小。4.數(shù)據(jù)擬合和插值相同點都需根據(jù)已知數(shù)據(jù)構(gòu)造函數(shù);可使用得到函數(shù)計算未知點的函數(shù)值。不同點4.2.2數(shù)據(jù)插值構(gòu)造函數(shù)近似表達式的方法。常用多項式作插值函數(shù),稱多項式插值。多項式插值基本思想:高次多項式或分段的低次多項式為被插值函數(shù)f(x)的近似解析表達式。1.插值法根據(jù)已知輸入/輸出數(shù)據(jù)集和當(dāng)前輸入估計輸出值2.插值函數(shù)多項式插值法:拉格朗日插值法

牛頓插值法

埃爾米特插值法分段插值法樣條插值法等

3.一維插值函數(shù)y=f(x)一維插值原理:調(diào)用格式:

yi=interp1(x,y,xi,'method')已知X,Y兩個等長向量,采樣點和樣本值;Xi是向量或標(biāo)量,欲插值點;Yi是一個與Xi等長的插值結(jié)果。采用差值法估計美國的人口數(shù)量2000年人口及1900~1996年每隔4的人口數(shù)(interp1);將上題原始數(shù)據(jù)點、2階擬合曲線和插值曲線繪制在同一圖,標(biāo)注坐標(biāo)軸為‘時間’和‘人口’(xlabel、ylabel)、圖形標(biāo)題(title)為‘插值和擬合’和圖例legend年份1900191019201930194019501960197019801990人口75.9991.97105.71123.20131.66150.69179.32203.21226.50249.63例clearn=1900:10:1990;r=[7599,9197,10571,12320,13166,15069,17932,20321,22650,24963];n4=1900:4:1996;%1900~1996年每隔4的線性等分?jǐn)?shù)組nrf2=polyfit(n,r,2)%2次多項式擬合nrfv2=polyval(nrf2,n4)nr4=interp1(n,r,n4,'spline')%插值1900~1996年每隔4的人口數(shù)nr2000=interp1(n,r,2000)%

線性插值2000年人口數(shù)nr2000=interp1(n,r,2000,'spline')%

插值2000年人口數(shù)plot(n,r,'or',n4,nrfv2,'-*k',n4,nr4,'-dg')%繪圖legend('原始數(shù)據(jù)','2階多項式擬合曲線','插值曲線')%圖例

例分段線性插值linear:插值點樣本值落在兩相鄰數(shù)據(jù)點的連線上.

(缺省).最鄰近插值法nearest:兩點間插值點對應(yīng)值就是離兩點最近那點值。

3次多項式插值cubic:已知數(shù)據(jù)求3次多項式,用多項式求插值。

3次樣條插值spline:每分段內(nèi)構(gòu)造一3次多項式,插值函數(shù)除滿足插值條件和節(jié)點處光滑條件,再按照樣條函數(shù)插值。插值方法method

yy=spline(x,Y,xx)clearx=0:1:10;y=sin(x);xx=0:0.2:10;yy=interp1(x,y,xx)subplot(1,4,1)plot(x,y,'-*',xx,yy,'dr');subplot(1,4,2);y2=interp1(x,y,xx,'nearest');plot(x,y,'-*',xx,y2,'dr');subplot(1,4,3);y3=interp1(x,y,xx,'cubic');plot(x,y,'-*',xx,y3,'dr')subplot(1,4,4);y4=interp1(x,y,xx,'spline');plot(x,y,'-*',xx,y4,'dr')X1取值范圍不能超出X給定范圍,否則會給出“NaN”錯誤。例38.025 22138.075 26738.125 31838.175 48738.225 81538.275 150238.325 316238.375 620738.425 841438.475 815638.525 597538.575 347338.625 160138.675 71038.725 38638.775 32538.825 24738.875 23238.925 20738.975 18239.025 157插值解法XRD:nano-sic/Alcomposiste例plot(xrd1(:,1),xrd1(:,2))>>xx=linspace(38,39,80);yy=interp1(xrd1(:,1),xrd1(:,2),xx,'spline');>>plot(xx,yy,'-*g')>>x=xy(:,1)x=38.025038.075038.125038.175038.225038.275038.325038.375038.425038.475038.525038.575038.625038.675038.725038.775038.825038.875038.925038.975039.0250>>y=xy(:,2)y=22126731848781515023162620784148156597534731601710386325247232207182157yys=spline(xrd1(:,1),xrd1(:,2),xx)4.二維插值函數(shù)z=f(x,y)二維插值的原理:向量的采樣點X,Y,與采樣點對應(yīng)函數(shù)值Z;向量或標(biāo)量的欲插值點Xi,Yi,插值結(jié)果Zi。指定插值方法method:

‘linear’‘nearest’‘cubic’‘spline’

Xi,Yi取值不超X,Y給定范圍,否則“NaN”錯誤。

zi=interp2(x,y,z,xi,yi,method)函數(shù)interp2二維插值:例運行結(jié)果如下圖所示。向量的采樣點X,Y,與采樣點對應(yīng)函數(shù)值Z;向量或標(biāo)量的欲插值點Xi,Yi,插值結(jié)果Zi。指定插值方法method:linear(缺省)nearestcubicv4griddata算法

Xi,Yi取值不超X,Y給定范圍,否則“NaN”錯誤。

[xi,yi,zi]=griddata(x,y,z,xi,yi,method)函數(shù)griddata二維柵格插值:輸入?yún)⒘浚╔I,YI)通常是規(guī)則的格點>>clear>>p=rand(30,3)

X=p(:,1)Y=p(:,2)Z=p(:,3)[Xi,Yi]=meshgrid(linspace(min(X),max(X),100))[Xi,Yi,Zi]=griddata(X,Y,Z,Xi,Yi,'cubic')mesh(Xi,Yi,Zi)[Xi,Yi,Zi]=griddata(X,Y,Z,Xi,Yi,'v4')mesh(Xi,Yi,Zi)

隨機生成30*3矩陣?yán)?.3函數(shù)極值1.函數(shù)最小值和零點調(diào)用格式一樣[x,fval,exitflag,output]=

fminbnd(fun,x1,x2,options)最小值的解或零點根x、該點的函數(shù)值fval、程序退出標(biāo)志exitflag輸出結(jié)果output、待求根函數(shù)fun、初始值x0、左右邊界x1,x2fval,exitflag,output和options可省略[x,fval,exitflag,output]=fminsearch(fun,x0,options)[x,fval,exitflag,output]=fzero(fun,x0,options)迭代解法輸出量x:最小值的x解或零點的根(自變量值);fval=f(x):最小值或零點時函數(shù)值f(x);fun:待求最小值或根函數(shù)f(x):函數(shù)名(少用);字符串表達式,匿名對象、函數(shù)句柄、內(nèi)聯(lián)函數(shù);

exitflag:程序退出標(biāo)志,

1收斂到解x;output:選定輸出結(jié)果;x0:搜索初始值;x1,x2:左右邊界

output=

迭代次數(shù)iterations:24函數(shù)評價次數(shù)funcCount:48算法algorithm:‘bisection,interpolation’對分插值退出信息message:'Zerofoundintheinterval[-28,190.51]'option:配置優(yōu)化參數(shù),

optimset函數(shù)定義參數(shù);最優(yōu)化工具箱的(20多個)選項設(shè)定;optimset命令:將option顯示出來;改變其中某個選項;display:選項函數(shù)調(diào)用時中間結(jié)果顯示方式‘off’不顯示;‘iter’每步都顯示;‘final’只顯示最終結(jié)果。optimset(‘display’,‘off’)options=optimset('param1',value1...)[x,fval,exitflag,output]=

fminbnd(fun,x1,x2,options)2.求一元函數(shù)最小值求區(qū)間[x1x2]內(nèi)函數(shù)f(x)最小值時x:X:返回最小值的解;fval=F(x),即最小值;fun:用于定義需求解函數(shù);x1,x2:范圍;option:最優(yōu)化工具箱的選項設(shè)定x=2.5148f=-0.4993e=1o=iterations:13funcCount:14algorithm:'goldensectionsearch,parabolicinterpolation'message:'優(yōu)化已終止:當(dāng)前的x滿足使用1.000000e-04的OPTIONS.Tol...'functionf=mmfun(x)f=exp(-0.1*x)*(sin(x)^2)-0.5*(x+0.1)*sin(x)end[x,f,e,o]=fminbnd('mmfun',-10,10,optimset('display','iter'))求在(-10,10)最小值例[x,f,e,o]=fminbnd('mmfun',6,10,optimset('display','iter'))x=8.0236f=-3.5680e=1o=iterations:9funcCount:10algorithm:'goldensectionsearch,parabolicinterpolation'message:'優(yōu)化已終止:當(dāng)前的x滿足使用1.000000e-04的OPTIONS.Tol...'黃金分割搜索,拋物線插值x=-10:0.05:10; y=exp(-0.1*x).*(sin(x).^2)-0.5*(x+0.1).*sin(x);plot(x,y)plot(x,y)Fminbnd在指定區(qū)域找到真解最小最小求在(6,10)最小值x=-10:0.05:10; y=exp(-0.1*x).*(sin(x).^2)-0.5*(x+0.1).*sin(x);plot(x,y)plot(x,y)[x,fval]=fminbnd('exp(-0.1*x)*(sin(x)^2)-0.5*(x+0.1)*sin(x)',-10,10)x=2.514797840754235fval=-0.499312445280039最小[x,fval]=fminbnd('exp(-0.1*x)*(sin(x)^2)-0.5*(x+0.1)*sin(x)',6,10)x=8.0236;fval=-3.5680Fminbnd在指定區(qū)域找到真解例[x,fval]=fminbnd('-exp(-0.1*x)*(sin(x)^2)+0.5*(x+0.1)*sin(x)',-8,-2)x=-4.830203748934343fval=-3.947274022275747最大值求解:-f(x)在區(qū)間(a,b)上的最小值x=-10:0.05:10; y=-exp(-0.1*x).*(sin(x).^2)+0.5*(x+0.1).*sin(x);plot(x,y)>plot(x,y)最大例3.求多元函數(shù)的最小值在初始x0附近尋找局部最小值;使用options選項來指定優(yōu)化器的參數(shù);fval,exitflag,output和options可以省略。[x,fval,exitflag,output]=fminsearch(fun,x0,options)著名Rosenbrock's"Banana"測試函數(shù),理論極小值x=1,y=1.求極小值點

x=11fval=0exitflag=1iterations:24funcCount:49algorithm:'Nelder-Meadsimplexdirectsearch'message:'優(yōu)化已終止:

當(dāng)前的x滿足使用1.000000e-04的OPTIONS.TolX的終止條件,...例[x,fval,exitflag,output]=fminsearch('fxy',[1;1])functionf=fxy(x)f=100*(x(2)-x(1).^2).^2+(1-x(1)).^2end[x,fval,exitflag,output]=fminsearch('100*(x(2)-x(1).^2).^2+(1-x(1)).^2',[1;1])方程代數(shù)方程微分方程線性方程非線性方程常微分方程偏微分方程4.5常微分方程的求解2.5線性方程組求解4.4非線性方程求解4.4非線性方程數(shù)值求解4.4.1單變量非線性方程求解(fzero)4.4.2非線性方程組的求解(fsolve)迭代解法4.4.1單變量非線性方程求解(fzero)[x,fval,exitflag,output]=fzero(fun,x1,x2,options)[x,fval,exitflag,output]=fzero(fun,x0,

options)2.調(diào)用格式:函數(shù)是否穿越橫軸決定零點數(shù)值解,求方程f(x)=0根

1.解方程原理:fval,exitflag,output和options可省略3.求根函數(shù)fun【f(x)】的調(diào)用求f(x)=x-10x+2=0在x0=0.5附近的根。函數(shù)名:fzero(

‘funname’,x0)例最優(yōu)化的結(jié)構(gòu)體output,最優(yōu)化取下列域:

algorithm使用算法

funcCount函數(shù)個數(shù)評估

interval

iterations發(fā)現(xiàn)區(qū)間的迭代次數(shù)

iterations發(fā)現(xiàn)零值點迭代次數(shù)

message退出信息

[x,f,e,o]=fzero('fun',0.5,optimset('display','iter'))x=0.3758;f=0;e=1o=intervaliterations:8iterations:5funcCount:21algorithm:‘bisection,interpolation‘二分法’message:'在區(qū)間[0.34,0.613137]中發(fā)現(xiàn)零'建立函數(shù)文件fun.m。functionfv=fun(x)fv=x-10.^x+2;x=-4:0.05:1;f=x-10.^x+2;plot(x,f)[x,y]=ginput(1)ans=-2.0012[x,fval]=fzero('fun',-1)x=-1.989761447718557fval=0(1)建立函數(shù)文件fun.m。functionfv=fun(x)fv=x-10.^x+2;(2)調(diào)用fzero函數(shù)求根。

[x,fval,e,output]=fzero('fun',0.5)x=0.3758fval=0>>[x,y]=fzero('fun',-3,0.9)x=-1.9898y=0例多個根只求x0最近的根[x,f,e,o]=fzero('fun',8,optimset('display','iter'))

x=NaNfval=NaNexitflag=-3正在退出fzero:終止搜索包含符號變化的區(qū)間因為在搜索期間遇到NaN或Inf函數(shù)值。請檢查函數(shù)或使用其他起始值重試。o=intervaliter:22iterations:0funcCount:44algorithm:'bisection,interpolation'message:'正在退出fzero:終止搜索包含符號變化的區(qū)間因為在搜索期間遇到NaN或Inf函數(shù)值。例無根為Nan,函數(shù)句柄(Functionhandle)>>[x,y]=fzero(@fun,0.9)x=0.3758y=2.2204e-016匿名函數(shù):F=@(變量表)函數(shù)表達式>>[x,fval]=fzero(@(x)x-10^x+2,-1,6)x=0.3758fval=2.2204e-016class(f)function_handlehfun=@+函數(shù)名fun:待求最小值或根函數(shù)f(x):函數(shù)名(少用);字符串表達式,匿名對象、函數(shù)句柄、內(nèi)聯(lián)函數(shù);

字符串表達式:fzero(‘expression’,x0)>>[x,y,e,o]=fzero('x-10.^x+2',-1,6,optimset('Display','iter'))x=-1.9898y=0e=1o=intervaliterations:12iterations:6funcCount:31algorithm:'bisection,interpolation'message:'Zerofoundintheinterval[0.28,-2.28]'例例inline本質(zhì)和function一樣,它直接內(nèi)嵌在命令行里,不用單獨定義function。函數(shù)表達式內(nèi)聯(lián)函數(shù)inlineinline(‘expression’)>>f=inline('x-10.^x+2');>>f(3)ans=-995f=inline('x-10.^x+2','x')Z=fzero(f,0.5)或z=fzero(inline('x-10.^x+2'),0.5)hd=@funfa=@(x)x-10^x+2fs='x-10^x+2‘fi=inline('x-10^x+2')NameSizeBytesClassfa1x116function_handlefi1x1832inlinefs1x816charhd1x116function_handleclass(f)ans=inline例4.多項式求的根(roots)>>roots([1,0,-2,-5])ans=2.0946-1.0473+1.1359i-1.0473-1.1359i>>[x,fval]=fzero('x^3-2*x-5',3)x=2.0946fval=-8.8818e-016求解多項式例4.4.2非線性方程組求解x向量;F(x)

函數(shù)向量。x:返回的向量解;fval=F(x):函數(shù)值向量;Jacobian:解x處的Jacobian陣;fun:用于定義需求解函數(shù);x0:初始估計值,列向量;option:最優(yōu)化工具箱的選項設(shè)定方程組的標(biāo)準(zhǔn)形式:F(x)=0[x,fval,exitflag,output,jacobian]=fsolve(fun,x0,options)functionF=myfun(x)F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];end[x,fval]=fsolve(@myfun,[-5;-5])求方程組解例FunctionF=myfun(x)。%x為自變量所構(gòu)成的數(shù)組。F=[表達式1;表達式2;…表達式m]在x1=-5,x2=-5解

(1)建立函數(shù)文件myfun.m

functiony=myfun(x)y(1)=x(1)-0.6*sin(x(1))-0.3*cos(x(2));y(2)=x(2)-0.6*cos(x(1))+0.3*sin(x(2));[x,fval=fsolve('myfun',[0.5,0.5]',optimset('Display','iter'))在(0.5,0.5)附近解。例(2)初值x0=0.5,y0=0.5下,調(diào)用fsolve求方程的根。>>x=fsolve('myfun',[0.5,0.5]',optimset(‘display','iter'))x=0.63540.3734將求得的解代回原方程,檢驗結(jié)果是否正確,

可見得到了較高精度的結(jié)果。q=myfun([0.6354,0.3734])q=1.0e-004*-0.2744-0.6564例4.5常微分方程微分方程:y’=f(t,y),t0≤t≤tn初始條件:y(t0)=y01.一階常微分方程:方程的初值問題數(shù)值解:求解y(t)在節(jié)點t0,t1,t2,t3….tn,處近似值y0,y1,y2,y3….yn;采用等距節(jié)點tn=t0+nh,n=0,1,..n,h是步長微分方程描述:(ODE)t:時間列向量;y:對應(yīng)t的數(shù)值解(列向量);odefun:顯式方程y’=f(t,y),或含混合矩陣方程M(t,y),tspan:時間t范圍,形式t0,tf,或[t0,tf],

y0:初始條件的值,options:用odeset設(shè)置可選參數(shù)龍格-庫塔法

[t,y]=ode23(odefun,tspan,y0,options)[t,y]=ode45(odefun,tspan,y0,options)一階常微分方程數(shù)值解

設(shè)有初值問題,y’=(y^2-t-2)/4/(t+1);0≤t≤1;y0(t=0)=2試求其數(shù)值解,并與精確解(y(t)=sqrt(t+1)+1)比較。(1)建立函數(shù)文件funt.m。functionyp=funt(t,y)yp=(y^2-t-2)/4/(t+1);(2)求解微分方程。t0=0;tf=1;y0=2;[t,y]=ode23('funt',[t0,tf],y0);%求數(shù)值解y1=sqrt(t+1)+1;%求精確解t'y'y1'y為數(shù)值解,y1為精確值,顯然兩者近似。t=linspace(0,1,11)例求解著名的Rossler微分方程組a=b=0.2,c=5.7,x(0)=y(0)=z(0)=0functionddx=rossler(t,x,flag,a,b,c)ddx=[-x(2)-x(3);x(1)+a*x(2);b+(x(1)-c)*x(3)];end>>a=0.2;b=0.2;c=5.7;>>x0=[0,0,0]';[t,y]=ode45('rossler',[0,100],x0,[],a,b,c)>>plot(t,y)>>figure>>plot3(y(:,1),y(:,2),y(:,3))例例2.二階常微分方程:x’’=f(t,x,x’)

求解振蕩器的經(jīng)典Verderpol的微分方程令y(1)=x,y(2)=dx/dty=[y(1),y(2)],y’=[y(1)’,y(2)’]一階微分方程組:初始條件:x(t=0)=1,y(1)(t=0)=1x’(t=0)=0,y(2)(t=0)=0Y0=[1;0]globalMUMU=1[t,y]=ode23('verderpol1',[0,40],[1;0]);plot(t,y)functionyy=verderpol1(t,y)globalMUyy=[y(2);

MU*(1-y(1).^2).*y(2)-y(1)];MU=32.高于2階常微分方程的求解基本過程

(1)規(guī)律、定律、公式的描述形式:初始條件:微分方程:(2)高階方程(組)轉(zhuǎn)換一階:一階微分方程組:

初始條件:

列向量(3)根據(jù)(1)與(2),編寫導(dǎo)數(shù)M函數(shù)文件;(4)將M文件與初始條件傳遞給求解器Solver;(5)運行后得到ODE的、在指定時間區(qū)間解列向量y(其中包含y及不同階的導(dǎo)數(shù))。3.顯式常微分方程組解法對比[t,y]=solver(odefun,tspan,y0)solversolver求解器solver奇異矩陣奇異矩陣4.求解器Solver與方程組的關(guān)系函數(shù)指令含

義函

數(shù)含

義求解器Solverode23普通2-3階法解ODEodefile包含ODE的文件ode23s低階法解剛性O(shè)DE選項odeset創(chuàng)建、更改Solver選項ode23t解適度剛性O(shè)DEodeget讀取Solver的設(shè)置值ode23tb低階法解剛性O(shè)DE輸出odeplotODE的時間序列圖ode45普通4-5階法解ODEodephas2ODE的二維相平面圖ode15s變階法解剛性O(shè)DEodephas3ODE的三維相平面圖ode113普通變階法解ODEodeprint在命令窗口輸出結(jié)果5.不同求解器Solver的特點求解器SolverODE類型特點說明ode45非剛性一步算法;4,5階Runge-Kutta方程;累計截斷誤差達(△x)3大部分場合的首選算法ode23非剛性一步算法;2,3階Runge-Kutta方程;累計截斷誤差達(△x)3使用于精度較低的情形ode113非剛性多步法;Adams算法;高低精度均可到10-3~10-6計算時間比ode45短ode23t適度剛性采用梯形算法適度剛性情形ode15s剛性多步法;Gear’s反向數(shù)值微分;精度中等若ode45失效時,可嘗試使用ode23s剛性一步法;2階Rosebrock算法;低精度當(dāng)精度較低時,計算時間比ode15s短ode23tb剛性梯形算法;低精度當(dāng)精度較低時,計算時間比ode15s短6.常微分方程組解法器參數(shù)4.6數(shù)值積分和微分4.6.1數(shù)值積分

4.6.2數(shù)值微分將區(qū)間[a,b]等分n個子區(qū)間[xi,xi+1],i=1…n,x1=a,xn+1=b。求定積分就求和問題。數(shù)值積分方法:簡單的梯形法trapz

辛普生(Simpson)法

牛頓-柯特斯(Newton-Cotes)法4.6.1數(shù)值積分1.數(shù)值定積分基本原理向量自變量X和應(yīng)變量Y(1)梯形法數(shù)值積分trapz用trapz函數(shù)計算定積分。

X=1:0.01:2.5;Y=exp(-X);%生成函數(shù)關(guān)系數(shù)據(jù)向量trapz(X,Y)ans=0.285796824163932.數(shù)值積分的實現(xiàn)方法z=trapz(Y)z=28.5797Z=trapz(Y)Z=trapz(X,Y)

y向量和>>[q,n]=quad('exp(-x)',1,2.5)q=0.2858n=13例

fun:被積函數(shù);n:被積函數(shù)調(diào)用次數(shù);a和b:定積分下限和上限;tol:控制積分精度,缺省1e-6;trace[q,n]=quad(fun,a,b,tol,trace)q=quad(fun,a,b,tol,trace)

(2).變步長辛普生法(自適應(yīng)Simpleson)非0展現(xiàn)積分過程;0不展現(xiàn),缺省時trace=0;返回參數(shù)I即定積分值是否展現(xiàn)積分過程P為壓力kpa,V為體積,m3;n為摩爾數(shù)kmol;R為理想氣體常數(shù)8.314kpam3/kmolK;T為溫度。氣缸內(nèi)1mol氣體,溫度為300k,氣體在整個過程恒溫,體積由V1=1m3膨脹到V2=5m3求解氣缸活塞做功n=input('n=');T=input('T=');R=8.314;pp=@(v)n*R*T./v;W=quad(pp,1,5)例

(1)建立被積函數(shù)fesin.m。functionf=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);(2)調(diào)用數(shù)值積分函數(shù)quad

[S,n]=quad('fesin',0,3*pi)S=0.9008n=77

求定積分quad('(-0.5*x).*sin(x+pi/6)',0,3*pi)[q,n]=quad(‘sqrt(1+cos(x).^2)’,0,pi/2,1.0e-6,1))例

s=quad('0.2+sin(x)',0,pi/2,1e-8);>>x=0:pi/10:pi/2;>>y=0.2+sin(x);>>s1=sum(y);>>ss=s1*pi/10;>>st=trapz(x,y)formatshort>>disp(['quad積分',blanks(4),'sum求積分',blanks(4),'trapz求積分'])disp([s,ss,st])holdonplot(x,y,'linewidth',2)>>stairs(x,y,'-r*')>>stem(x,y,'-gh')quad積分sum求積分trapz求積分

1.31421.35781.3059例參數(shù)含義和quad相似;tol缺省值10-6;調(diào)用步數(shù)明顯小于quad,高效率求值;積分精度更高。[I,n]=quadl(fun,a,b,tol,trace)(3)牛頓-柯特斯法

求定積分(1)被積函數(shù)文件fx.m。functionf=fx(x)f=x.*sin(x)./(1+cos(x).*cos(x));(2)調(diào)用函數(shù)quad8求定積分。I=quad8('fx',0,pi)I=2.4674

例分別用quad和quadl求定積分的近似值,并在相同的積分精度下,比較函數(shù)的調(diào)用次數(shù)。調(diào)用函數(shù)quad求定積分:formatlong;fx=inline('exp(-x)');[I,n]=quad(fx,1,2.5,1e-10)I=0.28579444254766n=65調(diào)用函數(shù)quad8求定積分:formatlong;fx=inline('exp(-x)');[I,n]=quad8(fx,1,2.5,1e-10)I=0.28579444254754n=33例在[xmin,xmax]×[ymin,ymax]區(qū)域二重定積分;參數(shù)tol,trace的用法與函數(shù)quad相同;tol或method可以忽略。3.二重定積分的數(shù)值求解q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method)

(1)建立函數(shù)文件fxy.m:functionf=fxy(x,y)globalki;ki=ki+1;%ki用于統(tǒng)計被積函數(shù)的調(diào)用次數(shù)f=exp(-x.^2/2).*sin(x.^2+y);(2)調(diào)用dblquad函數(shù)globalki;ki=0;I=dblquad('fxy',-2,2,-1,1)kiI=1.57449318974494ki=1038

計算二重積分f=inline('exp(-x.^2/2).*sin(x.^2+y)','x','y');dblquad(f,-2,2,-1,1)ans=1.5745dblquad(f,-2,2,-1,1)ans=1.5745dblquad('exp(-x.^2/2).*sin(x.^2+y)',-2,2,-1,1)例4.三重積分?jǐn)?shù)值求解triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method)例計算三重積分>>triplequad(@(x,y,z)y.*sin(x)+z.*cos(x),0,pi,0,1,-1,1)ans=1.999999994362637>>triplequad(inline('y.*sin(x)+z.*cos(x)'),0,pi,0,1,-1,1)ans=1.999999994362637>>triplequad('y.*sin(x)+z.*cos(x)',0,pi,0,1,-1,1)tol或method可以忽略例4.7.2數(shù)值微分向前差分⊿f(x)=f(X+h)-f(x)向后差分⊿f(x)=f(X)-f(x-h)中心差分⊿f(x)=f(X+h/2)-f(x-h/2)h充分小差分1.數(shù)值差分與差商xX+hX-hX-h/2X+h/2f(x+h

)f(x)f(x-h)差商導(dǎo)數(shù)2.數(shù)值微分函數(shù)diff向量X向前差分:Y=diff(X)向量X的n階向前差分:Y=diff(X,n)矩陣A的n階差分:dX(i)=X(i+1)-X(i),i=1,2,…,n-1。diff(X,2)=diff(diff(X))Y=diff(A,n,dim)dim=1時(缺省狀態(tài)),按行計算;dim=2按列計算。

生成以向量V=[1,2,3,4,5,6]為基礎(chǔ)的范得蒙矩陣,按列進行差分運算。V=vander(1:6)DV=diff(V)%計算V的一階差分V=1111116842181279312566416416251252551dv=15731065195101753771036961910例3.梯度函數(shù)gradient中心差分FX=gradient(F)[FX,FY]=gradient(F)一元函數(shù):二元函數(shù):Fx:向量F的中心梯度H:F相鄰兩點間的間距。F是二維矩陣,F(xiàn)X相當(dāng)于dF/dx=dF/HXFY相當(dāng)于dF/dy=dF/HYHX,HY各方向相鄰點距離V=vander(1:5);[FX,FY]=gradient(V)FX=00000-8-6-3-3/2-1-54-36-12-4-2-192-120-30-15/2-3-500-300-60-12-4FY=1573104013410120286102724981036961910例clearde=5*eps;d=pi/100;x=0:d:2*pi;y=sin(x);yde=(sin(x+de)-sin(x))/de;yd=(sin(x+d)-sin(x))/d;ydd=diff(sin(x))/d;yg=gradient(sin(x))/d;holdonplot(x,y,x,yde,'-b*',x,yd,'yh',x(1:end-1),ydd,'r>',x,yg,'+k')已知y=sin(x),采用diff和gradient計算該函數(shù)在[0,2π]區(qū)間中的近似導(dǎo)函數(shù)。eps是一個極小的數(shù):2.2204e-16,為了避免0帶來運算錯誤用eps代替,用機器零閾值eps替代理論0計算極限例f=inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2');x=-3:0.01:3;p=polyfit(x,f(x),5);%用5次多項式p擬合f(x)dp=polyder(p);%對擬合多項式p求導(dǎo)數(shù)dpdpx=polyval(dp,x);%求dp在假設(shè)點的函數(shù)值f=inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2');dx=diff(f([x,3.01]))/0.01;%直接對f(x)求數(shù)值導(dǎo)數(shù)g=inline('(3*x.^2+4*x-1)./sqrt(x.^3+2*x.^2-x+12)/2+1/6./(x+5).^(5/6)+5');%

f(x)導(dǎo)數(shù)解析式gx=g(x);%求函數(shù)f的導(dǎo)函數(shù)g在假設(shè)點的導(dǎo)數(shù)plot(x,dpx,x,dx,'.',x,gx,'-');%作圖

用不同方法求f(x)的導(dǎo)數(shù),并在同一坐標(biāo)中做f'(x)的圖像。例4.7概率統(tǒng)計4.7.1二項分布的概率計算

4.7.2正態(tài)分布的概率計算

4.7.3專用概率函數(shù)列表

4.7.4數(shù)字特征

4.7.5交互界面統(tǒng)計

隨機現(xiàn)象統(tǒng)計規(guī)律的數(shù)學(xué)方法1.二項分布

N次隨機試驗的隨機現(xiàn)象滿足條件:1)重復(fù)N次相互獨立隨機試驗;2)每次試驗兩結(jié)果成功概率p失敗的概率1-p。4.7.1二項分布bino的概率計算離散隨機變量:重復(fù)N次試驗取得p成功的次數(shù)為k,k可以在N+1個數(shù)即[0,1,…,n]范圍取值的離散隨機變量bino

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論