實驗9-(非線性函數(shù)極值求解)課件_第1頁
實驗9-(非線性函數(shù)極值求解)課件_第2頁
實驗9-(非線性函數(shù)極值求解)課件_第3頁
實驗9-(非線性函數(shù)極值求解)課件_第4頁
實驗9-(非線性函數(shù)極值求解)課件_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)學實驗數(shù)學實驗1實驗9非線性函數(shù)極值求解實驗目的

1、學會用MATLAB求非線性函數(shù)極值;2、學會建立簡單的優(yōu)化模型并求解;實驗內(nèi)容1、用matlab軟件求解非線性函數(shù)極值;2、幾個具體非線性規(guī)劃模型的建立及求解。實驗9非線性函數(shù)極值求解實驗目的2設函數(shù)f在點x0的某鄰域內(nèi)有定義,若存在δ>0,使對于任意x∈U(x0,δ)時,不等式f(x)≤f(x0)(f(x)≥f(x0))成立,則稱f在點x0處取得無約束極大(小)值f(x0),極大值與極小值統(tǒng)稱極值。極值設函數(shù)f在點x0的某鄰域內(nèi)有定義,若存在δ>0,使對于任3稱關(guān)于n個變量x1,x2,…,xn的二次齊次多項式函數(shù)二次型為n元二次型,也可以寫成下面的矩陣形式稱關(guān)于n個變量x1,x2,…,xn的二次齊次多項式函數(shù)二次型4調(diào)用函數(shù):fminbnd

語法:x=fminbnd('fun',a,b)功能:找到[a,b]內(nèi)單變量函數(shù)的最小值。算法:基于黃金分割法和二次插值法.

說明:(1)要求目標函數(shù)必須是連續(xù)函數(shù);(2)該命令只給出局部最優(yōu)值.一元函數(shù)的極值調(diào)用函數(shù):fminbnd一元函數(shù)的極值5一般調(diào)用格式:[x,fval,exitflag,output]=fminbnd('fun',a,b)返回包含優(yōu)化信息的結(jié)構(gòu)輸出.fval為目標函數(shù)的最小值exitflag為終止迭代的條件output為優(yōu)化信息說明若參數(shù)exitflag>0,表示函數(shù)收斂于x,若exitflag=0,表示超過函數(shù)估計值或迭代的最大數(shù)字,exitflag<0表示函數(shù)不收斂于x;若參數(shù)output=iterations表示迭代次數(shù),output=funccount表示函數(shù)賦值次數(shù),output=algorithm表示所使用的算法。一般調(diào)用格式:6計算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值.示例[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)x=0.5223fval=0.3974exitflag=1output=iterations:9funcCount:9algorithm:'goldensectionsearch,parabolicinterpolation‘message:[1x112char]

運行結(jié)果:計算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值.示例[x,fval,7示例1:對邊長為6m的正方形鐵板,在四個角處剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大?

解:假設剪去的正方形邊長為x,則水槽的容積為.轉(zhuǎn)化為求的在[0,3]最小值。示例1示例1:對邊長為6m的正方形鐵板,在四個角處剪去相等的正8示例1functionf=myfun1(x)f=-(3-2*x)^2*x;%函數(shù)M—文件》[x,fval]=fminbnd(@myfun1,0,3)%調(diào)用命令》fmax=-fval

方法一:方法二:f='-(6-2*x)^2*x';[x,fval]=fminbnd(f,0,3)fmax=-fval示例1functionf=myfun1(x)9命令:f='2*exp(-x)*sin(x)';[xmin,fmin]=fminbnd(f,0,8)f1='-2*exp(-x)*sin(x)';[xmax,fval]=fminbnd(f1,0,8)fmax=-fval示例2命令:示例210多元無約束函數(shù)的極值函數(shù):fminunc、fminsearch

功能:求多變量無約束函數(shù)的最小值。

數(shù)學模型:

調(diào)用格式:[x,fval,exitflag,output]=fminunc(fun,x0,options)

[x,fval,exitflag,output]=fminsearch(fun,x0,options)多元無約束函數(shù)的極值函數(shù):fminunc、fminsearc11說明:fminsearch是用單純形法尋優(yōu).fminunc的算法見以下幾點說明:[1]fminunc為無約束優(yōu)化提供了大型優(yōu)化和中型優(yōu)化算法。由options中的參數(shù)LargeScale控制:LargeScale=’on’(默認值),使用大型算法LargeScale=’off’(默認值),使用中型算法說明:fminsearch是用單純形法尋優(yōu).[1]fmi12[2]fminunc為中型優(yōu)化算法的搜索方向提供了4種算法,由

options中的參數(shù)HessUpdate控制:HessUpdate=’bfgs’(默認值),擬牛頓法的BFGS公式;HessUpdate=’dfp’,擬牛頓法的DFP公式;HessUpdate=’steepdesc’,最速下降法[2]fminunc為中型優(yōu)化算法的搜索方向提供了413[3]fminunc為中型優(yōu)化算法的步長一維搜索提供了兩種算法,由options中參數(shù)LineSearchType控制:LineSearchType=’quadcubic’(缺省值),混合的二次和三次多項式插值;LineSearchType=’cubicpoly’,三次多項式插使用fminunc和fminsearch可能會得到局部最優(yōu)解.[3]fminunc為中型優(yōu)化算法的步長一維搜索提使14示例3、最小化下列函數(shù):

(1)先建立目標函數(shù)的M文件functionf=myfun2(x)f=3*x(1)^2+2*x(1)*x(2)+x(2)^2%函數(shù)M—文件(2)寫出調(diào)用命令

x0=[1,1];

[x,fval]=fminunc(@myfun2,x0)示例3示例3、最小化下列函數(shù):(1)先建立目標函數(shù)的M文件(15示例4minf(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1、編寫M-文件fun1.m:

functionf=fun1(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2…+4*x(1)*x(2)+2*x(2)+1);

2、輸入執(zhí)行命令:

x0=[-1,1];[x,fval]=fminunc('fun1',x0)

3、運行結(jié)果:x=0.5000,-1.0000;fval=1.3029e-10示例4示例4minf(x)=(4x12+2x22+4x1x2+16示例5示例517畫Rosenbrock函數(shù)圖象%畫Rosenbrock函數(shù)圖象;[x,y]=meshgrid(-2:0.1:2,-1:0.1:3);z=100*(y-x.^2).^2+(1-x).^2;mesh(x,y,z)畫Rosenbrock函數(shù)圖象%畫Rosenbrock函數(shù)18實驗9-(非線性函數(shù)極值求解)課件19畫Rosenbrock等高線圖象%畫等高線的圖contour(x,y,z,20)drawnowholdonplot(-1.2,2,'o')text(-1.2,2,'startpoint')plot(1,1,'o')text(1,1,'solution')畫Rosenbrock等高線圖象%畫等高線的圖20實驗9-(非線性函數(shù)極值求解)課件21求極小值命令f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';[x,fval,exitflag,output]=fminsearch(f,[-1.2,2])x=1.00001.0000fval=1.9151e-010exitflag=1output=iterations:108funcCount:202algorithm:'Nelder-Meadsimplexdirectsearch'求極小值命令f='100*(x(2)-x(1)^2)^2+(22調(diào)用函數(shù):quadprog

功能:求解二次規(guī)劃問題。數(shù)學模型:多元約束函數(shù)的極值調(diào)用函數(shù):quadprog多元約束函數(shù)的極值23調(diào)用格式:

[x,fval,exitflag,output,lambda]=quadprog(H,f,A,B,Aeq,Beq,vlb,vub,x0,options)

其中,H、A、Aeq為矩陣,f、b、beq、lb、ub、x為向量調(diào)用格式:其中,H、A、Aeq為矩陣,f、b、beq、l24示例6:求解下面的最優(yōu)化問題:示例6示例6:求解下面的最優(yōu)化問題:示例625H=[2-2;-24];

f=[-4;-12];A=[-12;21];B=[2;3];Aeq=[11];Beq=[2];lx=zeros(2,1);ux=inf*ones(2,1);[x,fval]=quadprog(H,f,A,B,Aeq,Beq,lx,ux)H=[2-2;-24];f=[-26

調(diào)用函數(shù):fmincon

功能:求多變量有約束非線性函數(shù)的最小值。數(shù)學模型:有約束非線性規(guī)劃調(diào)用函數(shù):fmincon有約束非線性規(guī)劃27調(diào)用格式:

[x,fval,exitflag,output,lambda]=fmincon(fun,x0,A,B,Aeq,Beq,lx,ux,nonlcon)數(shù)學模型中,x,B,Beq,lx和ux為向量,A和Aeq為矩陣,c(x)和ceq(x)為函數(shù),返回標量。f(x),c(x),ceq(x)可以是非線性函數(shù)調(diào)用格式:數(shù)學模型中,x,B,B28示例7、求側(cè)面積為常數(shù)150的體積最大的長方體體積。解;設該長方體的長、寬、高分別為,則數(shù)學模型為:

示例7示例7、求側(cè)面積為常數(shù)150的體積最大的長方體體積29(1)編寫目標函數(shù)的M文件(myfun.m)functionf=myfun(x)f=-x(1)*x(2)*x(3)

%目標函數(shù)(2)編寫約束函數(shù)的M文件(myconfun.m)function[c,ceq]=myconfun(x)c=[];%非線性不等約束ceq=[x(1)*x(2)+x(2)*x(3)+x(3)*x(1)-75]%非線性等式約束(1)編寫目標函數(shù)的M文件(myfun.m)(2)編寫約束函30(3)編寫調(diào)用程序命令x0=[1;1;1];A=[];B=[];Aeq=[];Beq=[];lx=zeros(3,1);ux=inf*ones(3,1);[x,fval]=fmincon(@myfun,x0,A,B,Aeq,Beq,lx,ux,@myconfun)(3)編寫調(diào)用程序命令31現(xiàn)有一旅行者,他要從多種物品中選取體積之和不超過一定限制的行李裝入背包隨身攜帶,問如何進行選擇,使得最后裝入背包內(nèi)的物品總價值達到最大?由這一典型應用抽象出的一類優(yōu)化問題常稱為背包問題.背包問題背包問題不僅可直接應用到管理中的資源分配、裝載問題、投資決策問題等,而且也常常以子問題形式出現(xiàn)在某些復雜的決策問題中.現(xiàn)有一旅行者,他要從多種物品中選取體積之和不超過32示例8示例8:現(xiàn)有容積為1.5立方米的背包,以及6件物品.已知物品的價格分別為0.7,0.5,0.4,0.6,0.8,0.55(萬元),物品的體積分別為0.35,0.3,0.6,0.4,0.7,0.5(立方米),確定一種方案選取哪幾件物品裝入包內(nèi),可使背包所裝物品的總價值最大?示例8示例8:現(xiàn)有容積為1.5立方米的背包,以及6件33該問題的本質(zhì)是如何選擇物品裝入背包以使在背包的容量限定之內(nèi)所裝的物品總價值達到最大。對每件物品只有選取與不選取兩種可能,用0表示沒有被選取,1表示被選取。用gi表示第i件物品。用長度為6的0-1字符串代表一個裝包策略。我們采用窮舉法舉出所有可能的策略,然后比較各種不同策略所產(chǎn)生的總價值,得到最優(yōu)策略。該問題的本質(zhì)是如何選擇物品裝入背包以使在背包的容量限定之內(nèi)所34示例8:模型建立示例8:模型建立35示例8:模型求解(法1:窮舉法)jz=[0.70.50.40.60.80.55];tj=[0.350.30.60.40.70.5];k=1;forx1=0:1;forx2=0:1;forx3=0:1;forx4=0:1;forx5=0:1;forx6=0:1;fx=[x1x2x3x4x5x6];iftj*fx'<=1.5;fxjz(k,1:6)=fx;k=k+1;endend;end;end;end;end;end;fxlr=fxjz*jz';[f,i]=max(fxlr);f,zjfx=fxjz(i,1:6),fxtj=tj*zjfx'示例8:模型求解(法1:窮舉法)jz=[0.70.50.36用窮舉法能保證求得最優(yōu)解,但當物品數(shù)量相當大時,計算量大,用時很長。貪婪算法是求解背包問題的另一種方法:將物品按價值密度的大小降序排列,則依該次序?qū)⑾鄳奈锲费b入背包,直到超出背包的容積限制為止。運用這種貪婪算法能求得背包問題的較好近似解,但不能保證一定是最優(yōu)解。用窮舉法能保證求得最優(yōu)解,但當物品數(shù)量相當大時,計算量大,用37示例8:模型求解(法2:貪婪算法)%貪心算法程序jz=[0.70.50.40.60.80.55];tj=[0.350.30.60.40.70.5];a1=tj./jz;[a,id]=sort(a1,'descend');tj0=0;fori=1:6b=tj0+tj(id(i));ifb<=1.5;tj0=b;fangshi(i)=1;elsefangshi(i)=0;endendfangshi,zjz=jz*fangshi'示例8:模型求解(法2:貪婪算法)%貪心算法程序38示例9:產(chǎn)銷量的最佳安排示例9:產(chǎn)銷量的最佳安排39示例9:模型建立示例9:模型建立40示例9:模型求解(一)%編寫函數(shù)文件functiony=cfun(x)y1=((100-x(1)-0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1);y2=((280-0.2*x(1)-2*x(2))-(100*exp(-0.02*x(2))+30))*x(2);y=-y1-y2;示例9:模型求解(一)%編寫函數(shù)文件41示例9:模型求解(一)續(xù)%調(diào)用命令進行求解x0=[11];[xmax,yval]=fminunc(@cfun,x0);xmaxymax=-yval示例9:模型求解(一)續(xù)%調(diào)用命令進行求解42示例9:模型求解結(jié)果

xmax=23.902562.4977ymax=6.4135e+003示例9:模型求解結(jié)果xmax=431.lsqcurvefit已知數(shù)據(jù)點:

xdata=(xdata1,xdata2,…,xdatan),ydata=(ydata1,ydata2,…,ydatan)非線性最小二乘擬合

Matlab的提供了兩個求非線性最小二乘擬合的函數(shù):lsqcurvefit和lsqnonlin。兩個命令都要先建立M-文件fun.m,在其中定義函數(shù)f(x),但兩者定義f(x)的方式是不同的,可參考例題.1.lsqcurvefit非線性最小二乘擬合Mat44lsqcurvefit用以求含參量x(向量)的向量值函數(shù)F(x,xdata)=(F(x,xdata1),…,F(xiàn)(x,xdatan))T中的參變量x(向量),使得

lsqcurvefit用以求含參量x(向量)的向量值函數(shù)F(45(1)x=lsqcurvefit(‘fun’,x0,xdata,ydata);(2)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’);(4)[x,options]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(5)[x,options,funval]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(6)[x,options,funval,Jacob]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);fun是一個事先建立的定義函數(shù)F(x,xdata)

的M-文件,自變量為x和xdata說明:x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);迭代初值已知數(shù)據(jù)點選項見無約束優(yōu)化

調(diào)用格式:(1)x=lsqcurvefit(‘46lsqnonlin用以求含參量x(向量)的向量值函數(shù)

f(x)=(f1(x),f2(x),…,fn(x))T中的參量x,使得

最小。其中fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai

2.lsqnonlin已知數(shù)據(jù)點:xdata=(xdata1,xdata2,…,xdatan)ydata=(ydata1,ydata2,…,ydatan)lsqnonlin用以求含參量x(向量)的向量值函數(shù)2.l471)x=lsqnonlin(‘fun’,x0);2)x=lsqnonlin(‘fun’,x0,options);3)x=lsqnonlin(‘fun’,x0,options,‘grad’);4)[x,options]=lsqnonlin(‘fun’,x0,…);5)[x,options,funval]=lsqnonlin(‘fun’,x0,…);說明:x=lsqnonlin(‘fun’,x0,options);fun是一個事先建立的定義函數(shù)f(x)的M-文件,自變量為x迭代初值選項見無約束優(yōu)化調(diào)用格式:1)x=lsqnonlin(‘fun’,x0);48示例10用下面一組數(shù)據(jù)擬合中的參數(shù)r,k.t0.250.511.523468c19.2118.1515.3614.1012.899.327.455.243.01示例10用下面一組數(shù)據(jù)擬合49(1)編寫M-文件curvefun1.m

functionf=curvefun1(x,tdata)f=x(1)*exp(-x(2)*tdata)%其中x(1)=r;x(2)=k;(2)輸入調(diào)用命令tdata=[0.250.511.523468];cdata=[19.2118.1515.3614.1012.899.327.455.243.01];x0=[100.5];

x=lsqcurvefit('curvefun1',x0,tdata,cdata)f=curvefun1(x,tdata)%輸出計算值解法1.用命令lsqcurvefit(1)編寫M-文件curvefun1.m(2)輸入調(diào)用命令50x=20.24130.2420f=19.053217.934815.891114.080212.47579.79457.68944.73942.9211(4)結(jié)論:r=20.2413k=0.2420(3)運算結(jié)果為:x=20.24130.2420(4)結(jié)論:(3)運算51(1)編寫M-文件curvefun2.m

functionf=curvefun2(x)tdata=[0.250.511.523468];cdata=[19.2118.1515.3614.1012.899.327.455.243.01];f=x(1)*exp(-x(2)*tdata)-cdata%其中x(1)=r;x(2)=k;(2)輸入調(diào)用命令x0=[100.5];x=lsqnonlin('curvefun2',x0)f=curvefun2(x)%輸出誤差解法2.用命令lsqnonlin(1)編寫M-文件curvefun2.m(2)輸入調(diào)52x=20.24130.2420f=-0.1568-0.21520.5311-0.0198-0.41430.47450.2394-0.5006-0.0889(4)結(jié)論:r=20.2413k=0.2420(3)運算結(jié)果為:x=20.24130.2420(4)結(jié)論:(3)運算53數(shù)學實驗數(shù)學實驗54實驗9非線性函數(shù)極值求解實驗目的

1、學會用MATLAB求非線性函數(shù)極值;2、學會建立簡單的優(yōu)化模型并求解;實驗內(nèi)容1、用matlab軟件求解非線性函數(shù)極值;2、幾個具體非線性規(guī)劃模型的建立及求解。實驗9非線性函數(shù)極值求解實驗目的55設函數(shù)f在點x0的某鄰域內(nèi)有定義,若存在δ>0,使對于任意x∈U(x0,δ)時,不等式f(x)≤f(x0)(f(x)≥f(x0))成立,則稱f在點x0處取得無約束極大(小)值f(x0),極大值與極小值統(tǒng)稱極值。極值設函數(shù)f在點x0的某鄰域內(nèi)有定義,若存在δ>0,使對于任56稱關(guān)于n個變量x1,x2,…,xn的二次齊次多項式函數(shù)二次型為n元二次型,也可以寫成下面的矩陣形式稱關(guān)于n個變量x1,x2,…,xn的二次齊次多項式函數(shù)二次型57調(diào)用函數(shù):fminbnd

語法:x=fminbnd('fun',a,b)功能:找到[a,b]內(nèi)單變量函數(shù)的最小值。算法:基于黃金分割法和二次插值法.

說明:(1)要求目標函數(shù)必須是連續(xù)函數(shù);(2)該命令只給出局部最優(yōu)值.一元函數(shù)的極值調(diào)用函數(shù):fminbnd一元函數(shù)的極值58一般調(diào)用格式:[x,fval,exitflag,output]=fminbnd('fun',a,b)返回包含優(yōu)化信息的結(jié)構(gòu)輸出.fval為目標函數(shù)的最小值exitflag為終止迭代的條件output為優(yōu)化信息說明若參數(shù)exitflag>0,表示函數(shù)收斂于x,若exitflag=0,表示超過函數(shù)估計值或迭代的最大數(shù)字,exitflag<0表示函數(shù)不收斂于x;若參數(shù)output=iterations表示迭代次數(shù),output=funccount表示函數(shù)賦值次數(shù),output=algorithm表示所使用的算法。一般調(diào)用格式:59計算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值.示例[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)x=0.5223fval=0.3974exitflag=1output=iterations:9funcCount:9algorithm:'goldensectionsearch,parabolicinterpolation‘message:[1x112char]

運行結(jié)果:計算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值.示例[x,fval,60示例1:對邊長為6m的正方形鐵板,在四個角處剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的容積最大?

解:假設剪去的正方形邊長為x,則水槽的容積為.轉(zhuǎn)化為求的在[0,3]最小值。示例1示例1:對邊長為6m的正方形鐵板,在四個角處剪去相等的正61示例1functionf=myfun1(x)f=-(3-2*x)^2*x;%函數(shù)M—文件》[x,fval]=fminbnd(@myfun1,0,3)%調(diào)用命令》fmax=-fval

方法一:方法二:f='-(6-2*x)^2*x';[x,fval]=fminbnd(f,0,3)fmax=-fval示例1functionf=myfun1(x)62命令:f='2*exp(-x)*sin(x)';[xmin,fmin]=fminbnd(f,0,8)f1='-2*exp(-x)*sin(x)';[xmax,fval]=fminbnd(f1,0,8)fmax=-fval示例2命令:示例263多元無約束函數(shù)的極值函數(shù):fminunc、fminsearch

功能:求多變量無約束函數(shù)的最小值。

數(shù)學模型:

調(diào)用格式:[x,fval,exitflag,output]=fminunc(fun,x0,options)

[x,fval,exitflag,output]=fminsearch(fun,x0,options)多元無約束函數(shù)的極值函數(shù):fminunc、fminsearc64說明:fminsearch是用單純形法尋優(yōu).fminunc的算法見以下幾點說明:[1]fminunc為無約束優(yōu)化提供了大型優(yōu)化和中型優(yōu)化算法。由options中的參數(shù)LargeScale控制:LargeScale=’on’(默認值),使用大型算法LargeScale=’off’(默認值),使用中型算法說明:fminsearch是用單純形法尋優(yōu).[1]fmi65[2]fminunc為中型優(yōu)化算法的搜索方向提供了4種算法,由

options中的參數(shù)HessUpdate控制:HessUpdate=’bfgs’(默認值),擬牛頓法的BFGS公式;HessUpdate=’dfp’,擬牛頓法的DFP公式;HessUpdate=’steepdesc’,最速下降法[2]fminunc為中型優(yōu)化算法的搜索方向提供了466[3]fminunc為中型優(yōu)化算法的步長一維搜索提供了兩種算法,由options中參數(shù)LineSearchType控制:LineSearchType=’quadcubic’(缺省值),混合的二次和三次多項式插值;LineSearchType=’cubicpoly’,三次多項式插使用fminunc和fminsearch可能會得到局部最優(yōu)解.[3]fminunc為中型優(yōu)化算法的步長一維搜索提使67示例3、最小化下列函數(shù):

(1)先建立目標函數(shù)的M文件functionf=myfun2(x)f=3*x(1)^2+2*x(1)*x(2)+x(2)^2%函數(shù)M—文件(2)寫出調(diào)用命令

x0=[1,1];

[x,fval]=fminunc(@myfun2,x0)示例3示例3、最小化下列函數(shù):(1)先建立目標函數(shù)的M文件(68示例4minf(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1、編寫M-文件fun1.m:

functionf=fun1(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2…+4*x(1)*x(2)+2*x(2)+1);

2、輸入執(zhí)行命令:

x0=[-1,1];[x,fval]=fminunc('fun1',x0)

3、運行結(jié)果:x=0.5000,-1.0000;fval=1.3029e-10示例4示例4minf(x)=(4x12+2x22+4x1x2+69示例5示例570畫Rosenbrock函數(shù)圖象%畫Rosenbrock函數(shù)圖象;[x,y]=meshgrid(-2:0.1:2,-1:0.1:3);z=100*(y-x.^2).^2+(1-x).^2;mesh(x,y,z)畫Rosenbrock函數(shù)圖象%畫Rosenbrock函數(shù)71實驗9-(非線性函數(shù)極值求解)課件72畫Rosenbrock等高線圖象%畫等高線的圖contour(x,y,z,20)drawnowholdonplot(-1.2,2,'o')text(-1.2,2,'startpoint')plot(1,1,'o')text(1,1,'solution')畫Rosenbrock等高線圖象%畫等高線的圖73實驗9-(非線性函數(shù)極值求解)課件74求極小值命令f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';[x,fval,exitflag,output]=fminsearch(f,[-1.2,2])x=1.00001.0000fval=1.9151e-010exitflag=1output=iterations:108funcCount:202algorithm:'Nelder-Meadsimplexdirectsearch'求極小值命令f='100*(x(2)-x(1)^2)^2+(75調(diào)用函數(shù):quadprog

功能:求解二次規(guī)劃問題。數(shù)學模型:多元約束函數(shù)的極值調(diào)用函數(shù):quadprog多元約束函數(shù)的極值76調(diào)用格式:

[x,fval,exitflag,output,lambda]=quadprog(H,f,A,B,Aeq,Beq,vlb,vub,x0,options)

其中,H、A、Aeq為矩陣,f、b、beq、lb、ub、x為向量調(diào)用格式:其中,H、A、Aeq為矩陣,f、b、beq、l77示例6:求解下面的最優(yōu)化問題:示例6示例6:求解下面的最優(yōu)化問題:示例678H=[2-2;-24];

f=[-4;-12];A=[-12;21];B=[2;3];Aeq=[11];Beq=[2];lx=zeros(2,1);ux=inf*ones(2,1);[x,fval]=quadprog(H,f,A,B,Aeq,Beq,lx,ux)H=[2-2;-24];f=[-79

調(diào)用函數(shù):fmincon

功能:求多變量有約束非線性函數(shù)的最小值。數(shù)學模型:有約束非線性規(guī)劃調(diào)用函數(shù):fmincon有約束非線性規(guī)劃80調(diào)用格式:

[x,fval,exitflag,output,lambda]=fmincon(fun,x0,A,B,Aeq,Beq,lx,ux,nonlcon)數(shù)學模型中,x,B,Beq,lx和ux為向量,A和Aeq為矩陣,c(x)和ceq(x)為函數(shù),返回標量。f(x),c(x),ceq(x)可以是非線性函數(shù)調(diào)用格式:數(shù)學模型中,x,B,B81示例7、求側(cè)面積為常數(shù)150的體積最大的長方體體積。解;設該長方體的長、寬、高分別為,則數(shù)學模型為:

示例7示例7、求側(cè)面積為常數(shù)150的體積最大的長方體體積82(1)編寫目標函數(shù)的M文件(myfun.m)functionf=myfun(x)f=-x(1)*x(2)*x(3)

%目標函數(shù)(2)編寫約束函數(shù)的M文件(myconfun.m)function[c,ceq]=myconfun(x)c=[];%非線性不等約束ceq=[x(1)*x(2)+x(2)*x(3)+x(3)*x(1)-75]%非線性等式約束(1)編寫目標函數(shù)的M文件(myfun.m)(2)編寫約束函83(3)編寫調(diào)用程序命令x0=[1;1;1];A=[];B=[];Aeq=[];Beq=[];lx=zeros(3,1);ux=inf*ones(3,1);[x,fval]=fmincon(@myfun,x0,A,B,Aeq,Beq,lx,ux,@myconfun)(3)編寫調(diào)用程序命令84現(xiàn)有一旅行者,他要從多種物品中選取體積之和不超過一定限制的行李裝入背包隨身攜帶,問如何進行選擇,使得最后裝入背包內(nèi)的物品總價值達到最大?由這一典型應用抽象出的一類優(yōu)化問題常稱為背包問題.背包問題背包問題不僅可直接應用到管理中的資源分配、裝載問題、投資決策問題等,而且也常常以子問題形式出現(xiàn)在某些復雜的決策問題中.現(xiàn)有一旅行者,他要從多種物品中選取體積之和不超過85示例8示例8:現(xiàn)有容積為1.5立方米的背包,以及6件物品.已知物品的價格分別為0.7,0.5,0.4,0.6,0.8,0.55(萬元),物品的體積分別為0.35,0.3,0.6,0.4,0.7,0.5(立方米),確定一種方案選取哪幾件物品裝入包內(nèi),可使背包所裝物品的總價值最大?示例8示例8:現(xiàn)有容積為1.5立方米的背包,以及6件86該問題的本質(zhì)是如何選擇物品裝入背包以使在背包的容量限定之內(nèi)所裝的物品總價值達到最大。對每件物品只有選取與不選取兩種可能,用0表示沒有被選取,1表示被選取。用gi表示第i件物品。用長度為6的0-1字符串代表一個裝包策略。我們采用窮舉法舉出所有可能的策略,然后比較各種不同策略所產(chǎn)生的總價值,得到最優(yōu)策略。該問題的本質(zhì)是如何選擇物品裝入背包以使在背包的容量限定之內(nèi)所87示例8:模型建立示例8:模型建立88示例8:模型求解(法1:窮舉法)jz=[0.70.50.40.60.80.55];tj=[0.350.30.60.40.70.5];k=1;forx1=0:1;forx2=0:1;forx3=0:1;forx4=0:1;forx5=0:1;forx6=0:1;fx=[x1x2x3x4x5x6];iftj*fx'<=1.5;fxjz(k,1:6)=fx;k=k+1;endend;end;end;end;end;end;fxlr=fxjz*jz';[f,i]=max(fxlr);f,zjfx=fxjz(i,1:6),fxtj=tj*zjfx'示例8:模型求解(法1:窮舉法)jz=[0.70.50.89用窮舉法能保證求得最優(yōu)解,但當物品數(shù)量相當大時,計算量大,用時很長。貪婪算法是求解背包問題的另一種方法:將物品按價值密度的大小降序排列,則依該次序?qū)⑾鄳奈锲费b入背包,直到超出背包的容積限制為止。運用這種貪婪算法能求得背包問題的較好近似解,但不能保證一定是最優(yōu)解。用窮舉法能保證求得最優(yōu)解,但當物品數(shù)量相當大時,計算量大,用90示例8:模型求解(法2:貪婪算法)%貪心算法程序jz=[0.70.50.40.60.80.55];tj=[0.350.30.60.40.70.5];a1=tj./jz;[a,id]=sort(a1,'descend');tj0=0;fori=1:6b=tj0+tj(id(i));ifb<=1.5;tj0=b;fangshi(i)=1;elsefangshi(i)=0;endendfangshi,zjz=jz*fangshi'示例8:模型求解(法2:貪婪算法)%貪心算法程序91示例9:產(chǎn)銷量的最佳安排示例9:產(chǎn)銷量的最佳安排92示例9:模型建立示例9:模型建立93示例9:模型求解(一)%編寫函數(shù)文件functiony=cfun(x)y1=((100-x(1)-0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1);y2=((280-0.2*x(1)-2*x(2))-(100*exp(-0.02*x(2))+30))*x(2);y=-y1-y2;示例9:模型求解(一)%編寫函數(shù)文件94示例9:模型求解(一)續(xù)%調(diào)用命令進行求解x0=[11];[xmax,yval]=fminunc(@cfun,x0);xmaxymax=-yval示例9:模型求解(一)續(xù)%調(diào)用命令進行求解95示例9:模型求解結(jié)果

xmax=23.902562.4977ymax=6.4135e+003示例9:模型求解結(jié)果xmax=961.lsqcurvefit已知數(shù)據(jù)點:

xdata=(xdata1,xdata2,…,xdatan),ydata=(ydata1,ydata2,…,ydatan)非線性最小二乘擬合

Matlab的提供了兩個求非線性最小二乘擬合的函數(shù):lsqcurvefit和lsqnonlin。兩個命令都要先建立M-文件fun.m,在其中定義函數(shù)f(x),但兩者定義f(x)的方式是不同的,可參考例題.1.lsqcurvefit非線性最小二乘擬合Mat97lsqcurvefit用以求含參量x(向量)的向量值函數(shù)F(x,xdata)=(F(x,xdata1),…,F(xiàn)(x,xdatan))T中的參變量x(向量),使得

lsqcurvefit用以求含參量x(向量)的向量值函數(shù)F(98(1)x=lsqcurvefit(‘fun’,x0,xdata,ydata);(2)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’);(4)[x,options]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(5)[x,options,funval]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(6)[x,options,funval,Jacob]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);fun是一個事先建立的定義函數(shù)F(x,xdata)

的M-文件,自變量為x和xdata說明:x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);迭代初值已知數(shù)據(jù)點選項見無約束優(yōu)化

調(diào)用格式:(1)x=lsqcurvefit(‘99lsqnonlin用以求含參量x(向量)的向量值函數(shù)

f(x)=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論