




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
代數(shù)方程與最優(yōu)化問(wèn)題第1頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.1代數(shù)方程的求解
7.1.1代數(shù)方程的圖解法一元方程的圖解法例:>>ezplot('exp(-3*t)…*sin(4*t+2)+4*exp…(-0.5*t)*cos(2*t)-…0.5',[05])>>holdon,>>line([0,5],[0,0])%同時(shí)繪制橫軸第2頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月驗(yàn)證:>>symst;t=3.52028;vpa(exp(-3*t)*sin(4*t+2)+…4*exp(-0.5*t)*cos(2*t)-0.5)ans=-.19256654148425145223200161126442e-4第3頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月二元方程的圖解法例:>>ezplot('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)')%第一個(gè)方程曲線>>holdon%保持當(dāng)前坐標(biāo)系>>ezplot(‘x^2*…cos(x+y^2)+…y^2*exp(x+y)')第4頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月方程的圖解法僅適用于一元、二元方程的求根問(wèn)題。第5頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.1.2多項(xiàng)式型方程的準(zhǔn)解析解法例:>>ezplot('x^2+y^2-1');holdon%繪制第一方程的曲線>>ezplot(‘0.75*x^3-y+0.9’)%繪制第二方程為關(guān)于x的6次多項(xiàng)式方程應(yīng)有6對(duì)根。圖解法只能顯示求解方程的實(shí)根。第6頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月一般多項(xiàng)式方程的根可為實(shí)數(shù),也可為復(fù)數(shù)??捎肕ATLAB符號(hào)工具箱中的solve()函數(shù)。最簡(jiǎn)調(diào)用格式:
S=solve(eqn1,eqn2,…,eqnn)
(返回一個(gè)結(jié)構(gòu)題型變量S,如S.x表示方程的根。)直接得出根:(變量返回到MATLAB工作空間)
[x,…]=solve(eqn1,eqn2,…,eqnn)同上,并指定變量
[x,…]=solve(eqn1,eqn2,…,eqnn,’x,…’)第7頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:>>symsxy;>>[x,y]=solve('x^2+y^2-1=0','75*x^3/100-y+9/10=0')x=[-.98170264842676789676449828873194][-.55395176056834560077984413882735-.35471976465080793456863789934944*i][-.55395176056834560077984413882735+.35471976465080793456863789934944*i][.35696997189122287798839037801365][.86631809883611811016789809418650-1.2153712664671427801318378544391*i][.86631809883611811016789809418650+1.2153712664671427801318378544391*i]y=[.19042035099187730240977756415289][.92933830226674362852985276677202-.21143822185895923615623381762210*i][.92933830226674362852985276677202+.21143822185895923615623381762210*i][.93411585960628007548796029415446][-1.4916064075658223174787216959259-.70588200721402267753918827138837*i][-1.4916064075658223174787216959259+.70588200721402267753918827138837*i]第8頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月驗(yàn)證>>[eval('x.^2+y.^2-1')eval('75*x.^3/100-y+9/10')]ans=[0,0][0,0][0,0][-.1e-31,0][.5e-30+.1e-30*i,0][.5e-30-.1e-30*i,0]
由于方程階次可能太高,不存在解析解。然而,可利用MATLAB的符號(hào)工具箱得出原始問(wèn)題的高精度數(shù)值解,故稱(chēng)之為準(zhǔn)解析解。第9頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:>>[x,y,z]=solve('x+3*y^3+2*z^2=1/2','x^2+3*y+z^3=2','x^3+2*z+2*y^2=2/4');>>size(x)ans=271>>x(22),y(22),z(22)ans=-1.0869654762986136074917644096117ans=.37264668450644375527750811296627e-1ans=.89073290972562790151300874796949第10頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月驗(yàn)證:>>err=[x+3*y.^3+2*z.^2-1/2,x.^2+3*y+z.^3-2,x.^3+2*z+2*y.^2-2/4];>>norm(double(eval(err)))ans=1.4998e-027多項(xiàng)式乘積形式也可,如把第三個(gè)方程替換一下。>>[x,y,z]=solve('x+3*y^3+2*z^2=1/2','x^2+3*y+z^3=2','x^3+2*z*y^2=2/4');>>err=[x+3*y.^3+2*z.^2-1/2,x.^2+3*y+z.^3-2,x.^3+2*z.*y.^2-2/4];>>norm(double(eval(err)))%將解代入求誤差ans=5.4882e-028第11頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解(含變量倒數(shù))>>symsxy;>>[x,y]=solve('x^2/2+x+3/2+2/y+5/(2*y^2)+3/x^3=0',...'y/2+3/(2*x)+1/x^4+5*y^4','x,y');>>size(x)ans=261>>err=[x.^2/2+x+3/2+2./y+5./(2*y.^2)+3./x.^3,y/2+3./(2*x)+1./x.^4+5*y.^4];%驗(yàn)證>>norm(double(eval(err)))ans=8.9625e-030第12頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解(帶參數(shù)方程)>>symsabxy;>>[x,y]=solve('x^2+a*x^2+6*b+3*y^2=0','y=a+(x+3)','x,y')x=[1/2/(4+a)*(-6*a-18+2*(-21*a^2-45*a-27-24*b-6*a*b-3*a^3)^(1/2))][1/2/(4+a)*(-6*a-18-2*(-21*a^2-45*a-27-24*b-6*a*b-3*a^3)^(1/2))]y=[a+1/2/(4+a)*(-6*a-18+2*(-21*a^2-45*a-27-24*b-6*a*b-3*a^3)^(1/2))+3][a+1/2/(4+a)*(-6*a-18-2*(-21*a^2-45*a-27-24*b-6*a*b-3*a^3)^(1/2))+3]第13頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.1.3一般非線性方程數(shù)值解非線性方程的標(biāo)準(zhǔn)形式為f(x)=0函數(shù)
fzero格式x=fzero(fun,x0)%用fun定義表達(dá)式f(x),x0為初始解。
x=fzero(fun,x0,options)
[x,fval]=fzero(…)%fval=f(x)
[x,fval,exitflag]=fzero(…)
[x,fval,exitflag,output]=fzero(…)
說(shuō)明該函數(shù)采用數(shù)值解求方程f(x)=0的根。第14頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求的根解:>>fun='x^3-2*x-5';>>z=fzero(fun,2)%初始估計(jì)值為2z=2.0946>>formatlong>>opt=optimset('Tolx',1.0e-8);>>y=fzero('x^3-2*x-5',2,opt)y=2.09455148211709第15頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.1.4一般非線性方程組數(shù)值解格式:最簡(jiǎn)求解語(yǔ)句
x=fsolve(Fun,x0)一般求解語(yǔ)句
[x,f,flag,out]=fsolve(Fun,x0,opt,p1,p2,…)若返回的flag大于0,則表示求解成功,否則求解出現(xiàn)問(wèn)題,opt求解控制參數(shù),結(jié)構(gòu)體數(shù)據(jù)。獲得默認(rèn)的常用變量opt=optimset;用這兩種方法修改參數(shù)(解誤差控制量)opt.Tolx=1e-10;或set(opt.‘Tolx’,1e-10)第16頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:自編函數(shù):functionq=my2deq(p)q=[p(1)*p(1)+p(2)*p(2)-1;0.75*p(1)^3-p(2)+0.9];>>OPT=optimset;OPT.LargeScale='off';>>[x,Y,c,d]=fsolve('my2deq',[1;2],OPT)Optimizationterminatedsuccessfully:First-orderoptimalityislessthanoptions.TolFun.x=0.35700.9341Y=1.0e-009*0.12150.0964第17頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月c=1d=iterations:7funcCount:21algorithm:'trust-regiondogleg'firstorderopt:1.3061e-010%解回代的精度調(diào)用inline()函數(shù):>>f=inline('[p(1)*p(1)+p(2)*p(2)-1;0.75*p(1)^3-p(2)+0.9]','p');>>[x,Y]=fsolve(f,[1;2],OPT);%結(jié)果和上述完全一致,從略。Optimizationterminatedsuccessfully:First-orderoptimalityislessthanoptions.TolFun.若改變初始值x0=[-1,0]T第18頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>[x,Y,c,d]=fsolve(f,[-1,0]',OPT);x,Y,kk=d.funcCountOptimizationterminatedsuccessfully:First-orderoptimalityislessthanoptions.TolFun.x=-0.98170.1904Y=1.0e-010*0.5619-0.4500kk=15初值改變有可能得出另外一組解。故初值的選擇對(duì)解的影響很大,在某些初值下甚至無(wú)法搜索到方程的解。第19頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:用solve()函數(shù)求近似解析解>>symst;solve(exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5)ans=.67374570500134756702960220427474%不允許手工選擇初值,只能獲得這樣的一個(gè)解??上扔糜脠D解法選取初值,再調(diào)用fsolve()函數(shù)數(shù)值計(jì)算第20頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>formatlong>>y=inline('exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5','t');>>ff=optimset;ff.Display='iter';[t,f]=fsolve(y,3.5203,ff)NormofFirst-orderTrust-regionIterationFunc-countf(x)stepoptimalityradius121.8634e-0095.16e-0051243.67694e-0193.61071e-0057.25e-0101Optimizationterminatedsuccessfully:First-orderoptimalityislessthanoptions.TolFun.t=3.52026389294877f=-6.063776702980306e-010第21頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月重新設(shè)置相關(guān)的控制變量,提高精度。>>ff=optimset;ff.TolX=1e-16;ff.TolFun=1e-30;>>ff.Display='iter';[t,f]=fsolve(y,3.5203,ff)NormofFirst-orderTrust-regionIterationFunc-countf(x)stepoptimalityradius121.8634e-0095.16e-0051243.67694e-0193.61071e-0057.25e-01013605.07218e-01001Optimizationterminatedsuccessfully:First-orderoptimalityislessthanoptions.TolFun.t=3.52026389244155f=0第22頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求的根解:化為標(biāo)準(zhǔn)形式設(shè)初值點(diǎn)為x0=[-5-5]。functionF=myfun(x)F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];>>x0=[-5;-5];%初始點(diǎn)>>options=optimset('Display','iter');%顯示輸出信息>>[x,fval]=fsolve(@myfun,x0,options)
第23頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月NormofFirst-orderTrust-regionIterationFunc-countf(x)stepoptimalityradius0347071.22.29e+00411612003.415.75e+0031293147.0211.47e+0031312854.45213881415239.5271107151867.0412130.8162116.704219.0517242.4278812.2618270.0326580.7595110.2062.59307.03149e-0060.1119270.002942.510333.29525e-0130.001691326.36e-0072.5Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.x=0.567143031397360.56714303139736fval=1.0e-006*-0.40590960570519-0.40590960570519第24頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求矩陣x使其滿足方程,并設(shè)初始解向量為x=[1,1;1,1]。解:functionF=myfun(x)F=x*x*x-[1,2;3,4];>>x0=ones(2,2);%初始解向量>>options=optimset('Display','off');%不顯示優(yōu)化信息>>[x,Fval,exitflag]=fsolve(@myfun,x0,options)x=-0.12910.86021.29031.1612Fval=1.0e-003*0.1541-0.11630.0109-0.0243exitflag=1第25頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.2無(wú)約束最優(yōu)化問(wèn)題求解
7.2.1解析解法和圖解法第26頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:>>symst;y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;>>y1=diff(y,t);%求取一階導(dǎo)函數(shù)>>ezplot(y1,[0,4])%繪制出選定區(qū)間內(nèi)一階導(dǎo)函數(shù)曲線第27頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>t0=solve(y1)%求出一階導(dǎo)數(shù)等于零的點(diǎn)t0=1.4528424981725411893375778048840>>y2=diff(y1);b=subs(y2,t,t0)%并驗(yàn)證二階導(dǎo)數(shù)為正b=7.8553420253333601379464405534591>>t=0:0.4:4;y=exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5;>>plot(t,y)第28頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月單變量函數(shù)求最小值的(數(shù)值解法)%求解區(qū)間優(yōu)化問(wèn)題標(biāo)準(zhǔn)形式為:s.t.函數(shù)
fminbnd格式x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)[x,fval]=fminbnd(…)%fval為目標(biāo)函數(shù)的最小值[x,fval,exitflag]=fminbnd(…)
exitflag為終止迭代的條件,若exitflag>0,收斂于x,exitflag=0,表示超過(guò)函數(shù)估計(jì)值或迭代的最大數(shù)字,exitflag<0表示函數(shù)不收斂于x;
[x,fval,exitflag,output]=fminbnd(…)
output為優(yōu)化信息,若output=iterations表示迭代次數(shù),output=funccount表示函數(shù)賦值次數(shù),output=algorithm表示所使用的算法
第29頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:
計(jì)算下面函數(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:11algorithm:'goldensectionsearch,parabolicinterpolation'第30頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:在[0,5]上求下面函數(shù)的最小值
解:
functionf=myfun(x)f=(x-3).^2-1;>>x=fminbnd(@myfun,0,5)x=3第31頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.2.2基于MATLAB的數(shù)值解法第32頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:>>f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2))','x');>>x0=[0;0];ff=optimset;ff.Display='iter';>>x=fminsearch(f,x0,ff)IterationFunc-countminf(x)Procedure13-0.000499937initial24-0.000499937reflect
72137-0.641424contractoutsideOptimizationterminatedsuccessfully:x=0.6111-0.3056第33頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月
>>x=fminunc(f,[0;.0],ff)DirectionalIterationFunc-countf(x)Step-sizederivative12-2e-0080.001-429-0.5846690.3043530.343316-0.6413970.9503220.00191422-0.6414240.984028-1.45e-008x=0.6110-0.3055比較可知fminunc()函數(shù)效率高于fminsearch()函數(shù),但當(dāng)所選函數(shù)高度不連續(xù)時(shí),使用fminsearch效果較好。故若安裝了最優(yōu)化工具箱則應(yīng)調(diào)用fminunc()函數(shù)。第34頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.2.3全局最優(yōu)解與局部最優(yōu)解例:>>f=inline('exp(-2*t).*cos(10*t)+exp(-3*(t+2)).*sin(2*t)','t');%目標(biāo)函數(shù)>>t0=1;[t1,f1]=fminsearch(f,t0);[t1f1]ans=0.9228-0.1547>>t0=0.1;[t2,f2]=fminsearch(f,t0);[t2f2]ans=0.2945-0.5436第35頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>symst;y=exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t);>>ezplot(y,[0,2.5]);set(gca,‘Ylim’,[-0.6,1])%在t[0,2.5]內(nèi)的曲線>>ezplot(y,[-0.5,2.5]);set(gca,‘Ylim’,[-2,1.2])%在[-0.5,2.5]曲線>>t0=-0.2;[t3,f3]=fminsearch(f,t0);[t3f3]ans=-0.3340-1.9163第36頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.2.4利用梯度求解最優(yōu)化問(wèn)題例:>>[x,y]=meshgrid…(0.5:0.01:1.5);…z=100*(y.^2-x).^2…+(1-x).^2;>>contour3(x,y,z,100),set(gca,'zlim',[0,310])%測(cè)試算法的函數(shù)第37頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>f=inline('100*(x(2)-x(1)^2)^2+(1-x(1))^2','x');>>ff=optimset;ff.TolX=1e-10;ff.TolFun=1e-20;ff.Display='iter';>>x=fminunc(f,[0;0],ff)Warning:Gradientmustbeprovidedfortrust-regionmethod;usingline-searchmethodinstead.DirectionalIterationFunc-countf(x)Step-sizederivative1210.5-4442023.01749e-0123.40397e-009-1.77e-013x=1.000001736959721.00000347608069第38頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月%求梯度向量(比較引入梯度的作用,但梯度的計(jì)算也費(fèi)時(shí)間)>>symsx1x2;f=100*(x2-x1^2)^2+(1-x1)^2;>>J=jacobian(f,[x1,x2])J=[-400*(x2-x1^2)*x1-2+2*x1,200*x2-200*x1^2]function[y,Gy]=c6fun3(x)%目標(biāo)函數(shù)編寫(xiě):y=100*(x(2)-x(1)^2)^2+(1-x(1))^2;%目標(biāo)函數(shù)Gy=[-400*(x(2)-x(1)^2)*x(1)-2+2*x(1);200*x(2)-200*x(1)^2];%梯度>>ff.GradObj='on';x=fminunc('c6fun3',[0;0],ff)NormofFirst-orderIterationf(x)stepoptimalityCG-iterations196.38977e-0292.12977e-0121.6e-0141x=0.999999999999990.99999999999998第39頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.2.5非線性最小二乘
函數(shù)
lsqnonlin格式x=lsqnonlin(fun,x0)x=lsqnonlin(fun,x0,lb,ub)x=lsqnonlin(fun,x0,lb,ub,options)%x0為初始解向量;fun為,i=1,2,…,m,
lb、ub定義x的下界和上界,options為指定優(yōu)化參數(shù),若x沒(méi)有界,則lb=[],ub=[]。第40頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求下面非線性最小二乘問(wèn)題初始解向量為x0=[0.3,0.4]。解:先建立函數(shù)文件,并保存為myfun.m.
由于lsqnonlin中的fun為向量形式而不是平方和形式,因此,myfun函數(shù)應(yīng)由建立:
k=1,2,…,10
第41頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月functionF=myfun10(x)k=1:10;F=2+2*k-exp(k*x(1))-exp(k*x(2));然后調(diào)用優(yōu)化程序:
>>x0=[0.30.4];>>[x,resnorm]=lsqnonlin(@myfun10,x0)Optimizationterminated:normofthecurrentstepislessthanOPTIONS.TolX.x=0.25780.2578resnorm=124.3622第42頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.3有約束最優(yōu)化問(wèn)題的計(jì)算機(jī)求解
7.3.1約束條件與可行解區(qū)域有約束最優(yōu)化問(wèn)題的一般描述:對(duì)于一般的一元問(wèn)題和二元問(wèn)題,可用圖解法直接得出問(wèn)題的最優(yōu)解。第43頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:用圖解方法求解:>>[x1,x2]=meshgrid(-3:.1:3);%生成網(wǎng)格型矩陣>>z=-x1.^2-x2;%計(jì)算出矩陣上各點(diǎn)的高度>>i=find(x1.^2+x2.^2>9);z(i)=NaN;%找出x1^2+x2^2>9的坐標(biāo),并置函數(shù)值為NaN>>i=find(x1+x2>1);z(i)=NaN;%找出x1+x2>1的坐標(biāo),置為NaN>>surf(x1,x2,z);shadinginterp;>>max(z(:)),view(0,90)ans=3第44頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.3.2線性規(guī)劃問(wèn)題的計(jì)算機(jī)求解第45頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解>>f=-[21431]';A=[02142;345-1-1];>>B=[54;62];Ae=[];Be=[];xm=[0,0,3.32,0.678,2.57];>>ff=optimset;ff.LargeScale='off';%不使用大規(guī)模問(wèn)題求解>>ff.TolX=1e-15;ff.TolFun=1e-20;ff.TolCon=1e-20;ff.Display='iter';>>[x,f_opt,key,c]=linprog(f,A,B,Ae,Be,xm,[],[],ff)第46頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月Optimizationterminatedsuccessfully.x=19.78500.00003.320011.38502.5700f_opt=-89.5750key=1%求解成功c=iterations:5algorithm:'medium-scale:activeset'cgiterations:[]第47頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解>>f=[-3/4,150,-1/50,6]';Aeq=[];Beq=[];>>A=[1/4,-60,-1/50,9;1/2,-90,-1/50,3];B=[0;0];>>xm=[-5;-5;-5;-5];xM=[Inf;Inf;1;Inf];ff=optimset;>>ff.TolX=1e-15;ff.TolFun=1e-20;ff.TolCon=1e-20;ff.Display='iter';>>[x,f_opt,key,c]=linprog(f,A,B,Aeq,Beq,xm,xM,[0;0;0;0],ff)第48頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月Residuals:PrimalDualUpperDualityTotalInfeasInfeasBoundsGapRelA*x-bA'*y+z-w-f{x}+s-ubx'*z+s'*wError-------------------------------------------------------------Iter0:9.39e+0031.43e+0021.94e+0026.03e+0042.77e+001Iter10:0.00e+0006.15e-0260.00e+0001.70e-0244.10e-028Optimizationterminatedsuccessfully.x=-5.0000-0.19471.0000-5.0000f_opt=-55.4700key=1c=iterations:10cgiterations:0algorithm:'lipsol'第49頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.3.3二次型規(guī)劃的求解(線性)第50頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解>>H=diag([2,2,2,2]);f=[-2,-4,-6,-8];>>OPT=optimset;OPT.LargeScale='off';%不使用大規(guī)模問(wèn)題算法>>A=[1,1,1,1;3,3,2,1];B=[5;10];Aeq=[];Beq=[];LB=zeros(4,1);>>[x,f_opt]=quadprog(H,f,A,B,Aeq,Beq,LB,[],[],OPT)Optimizationterminatedsuccessfully.x=0.00000.66671.66672.6667f_opt=-23.6667%(解的目標(biāo)值應(yīng)為30+(-23.6667)=6.3333)第51頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解下面二次規(guī)劃問(wèn)題解:則
第52頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>H=[1-1;-12];f=[-2;-6];>>A=[11;-12;21];b=[2;2;3];>>lb=zeros(2,1);>>[x,fval,exitflag,output,lambda]=quadprog(H,f,A,b,[],[],lb)x=%最優(yōu)解0.66671.3333fval=%最優(yōu)值-8.2222exitflag=%收斂1output=iterations:3algorithm:'medium-scale:active-set'firstorderopt:[]cgiterations:[]第53頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求二次規(guī)劃的最優(yōu)解maxf(x1,x2)=x1x2+3sub.tox1+x2-2=0解:化成標(biāo)準(zhǔn)形式:>>H=[0,-1;-1,0];f=[0;0];Aeq=[11];>>[x,fval,exitflag,output]=quadprog(H,f,[],[],Aeq)第54頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月6.3.4一般非線性規(guī)劃問(wèn)題的求解第55頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解目標(biāo)函數(shù):functiony=opt_fun1(x)y=1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);非線性約束函數(shù):function[c,ceq]=opt_con1(x)ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25;8*x(1)+14*x(2)+7*x(3)-56];c=[];第56頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>ff=optimset;ff.LargeScale='off';ff.Display='iter';>>ff.TolFun=1e-30;ff.TolX=1e-15;ff.TolCon=1e-20;>>x0=[1;1;1];xm=[0;0;0];xM=[];A=[];B=[];Aeq=[];Beq=[];>>[x,f_opt,c,d]=fmincon('opt_fun1',x0,A,B,Aeq,Beq,xm,xM,'opt_con1',ff);>>x,f_opt,kk=d.funcCountx=3.51210.21703.5522f_opt=961.7152kk=%目標(biāo)函數(shù)調(diào)用的次數(shù)108第57頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月簡(jiǎn)化非線約束函數(shù)function[c,ceq]=opt_con2(x)ceq=x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25;c=[];求解:>>x0=[1;1;1];Aeq=[8,14,7];Beq=56;>>[x,f_opt,c,d]=fmincon('opt_fun1',x0,A,B,Aeq,Beq,xm,xM,'opt_con2',ff);maxDirectionalFirst-orderIterF-countf(x)constraintStep-sizederivativeoptimalityProcedure111955.33622.90.25-29518.3infeasible21116961.71501-6.3e-0156.97e-005HessianmodifiedtwiceOptimizationterminatedsuccessfully:Searchdirectionlessthan2*options.TolXandmaximumconstraintviolationislessthanoptions.TolConActiveConstraints:12>>x,f_opt,kk=d.funcCount%從略(計(jì)算結(jié)果同上一樣)第58頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:利用梯度求解梯度函數(shù):>>symsx1x2x3;f=1000-x1*x1-2*x2*x2-x3*x3-x1*x2-x1*x3;>>J=jacobian(f,[x1,x2,x3])J=[-2*x1-x2-x3,-4*x2-x1,-2*x3-x1]改寫(xiě)目標(biāo)函數(shù):function[y,Gy]=opt_fun2(x)y=1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);Gy=-[2*x(1)+x(2)+x(3);4*x(2)+x(1);2*x(3)+x(1)];第59頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>x0=[1;1;1];xm=[0;0;0];xM=[];A=[];B=[];Aeq=[];Beq=[];>>ff=optimset;ff.GradObj=‘on’;%若知道梯度函數(shù)ff.Display='iter';ff.LargeScale='off';>>ff.TolFun=1e-30;ff.TolX=1e-15;ff.TolCon=1e-20;>>[x,f_opt,c,d]=fmincon('opt_fun2',x0,A,B,Aeq,Beq,xm,xM,'opt_con1',ff);>>x,f_opt,kk=d.funcCountx=3.51210.21703.5522f_opt=961.7152kk=95第60頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月6.3.5約束線性最小二乘
有約束線性最小二乘的標(biāo)準(zhǔn)形式為:其中:C、A、Aeq為矩陣;d、b、beq、lb、ub、x是向量。第61頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月函數(shù)lsqlin格式x=lsqlin(C,d,A,b)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)%求在約束條件下,方程Cx=d的最小二乘解x。Aeq、beq滿足等式約束,若沒(méi)有不等式約束,則設(shè)A=[],b=[]。lb、ub滿足,若沒(méi)有等式約束,則Aeq=[],beq=[]。x0為初始解向量,若x沒(méi)有界,則lb=[],ub=[]。options為指定優(yōu)化參數(shù)
[x,resnorm,residual,exitflag,output,lambda]=lsqlin(…)%resnorm=norm(C*x-d)^2,即2-范數(shù)。residual=C*x-d,即殘差。exitflag為終止迭代的條件output表示輸出優(yōu)化信息lambda為解x的Lagrange乘子第62頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:求解下面系統(tǒng)的最小二乘解系統(tǒng):Cx=d約束:先輸入系統(tǒng)系數(shù)和x的上下界:C=[0.95010.76200.61530.4057;…0.23110.45640.79190.9354;…0.60680.01850.92180.9169;…0.48590.82140.73820.4102;…0.89120.44470.17620.8936];d=[0.0578;0.3528;0.8131;0.0098;0.1388];A=[0.20270.27210.74670.4659;…0.19870.19880.44500.4186;…0.60370.01520.93180.8462];第63頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月b=[0.5251;0.2026;0.6721];lb=-0.1*ones(4,1);ub=2*ones(4,1);然后調(diào)用最小二乘命令:
>>[x,resnorm,residual,exitflag,output,lambda]=lsqlin(C,d,A,b,[],[],lb,ub)x=-0.1000-0.10000.21520.3502resnorm=0.1672第64頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月residual=0.04550.0764-0.35620.16200.0784exitflag=1%說(shuō)明解x是收斂的output=iterations:4algorithm:'medium-scale:active-set'firstorderopt:[]cgiterations:[]第65頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月lambda=lower:[4x1double]upper:[4x1double]eqlin:[0x1double]ineqlin:[3x1double]%通過(guò)lambda.ineqlin可查看不等式約束是否有效。>>lambda.ineqlinans=00.23920第66頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.4整數(shù)規(guī)劃問(wèn)題的計(jì)算機(jī)求解7.4.1整數(shù)線性規(guī)劃問(wèn)題的求解(matlab2009a有問(wèn)題)A、B線性等式和不等式約束,,約束式子由ctype變量控制,intlist為整數(shù)約束標(biāo)示,how=0表示結(jié)果最優(yōu),2為無(wú)可行解,其余失敗。第67頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:>>f=-[21431]';A=[02142;345-1-1];intlist=ones(5,1);>>B=[54;62];ctype=[-1;-1];xm=[0,0,3.32,0.678,2.57];xM=inf*ones(5,1);>>[res,b]=ipslv_mex(f,A,B,intlist,xM,xm,ctype)res=1904105b=%因?yàn)榉祷氐腷=0,表示優(yōu)化成功0第68頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>[x1,x2,x3,x4,x5]=ndgrid(1:20,0:20,4:20,1:20,3:20);>>i=find((2*x2+x3+4*x4+2*x5<=54)&(3*x1+4*x2+5*x3-x4-x5<=62));>>f=-2*x1(i)-x2(i)-4*x3(i)-3*x4(i)-x5(i);[fmin,ii]=sort(f);%標(biāo)號(hào)>>index=i(ii(1));x=[x1(index),x2(index),x3(index),x4(index),x5(index)]x=1904105%當(dāng)把20換為30,一般計(jì)算機(jī)配置下實(shí)現(xiàn)不了,故求解整數(shù)規(guī)劃時(shí)不適合采用窮舉算法。第69頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月次最優(yōu)解>>fmin(1:10)'ans=-89-88-88-88-88-88-88-88-87-87>>in=i(ii(1:4));x=[x1(in),x2(in),x3(in),x4(in),x5(in),fmin(1:4)]x=1904105-891804113-881705104-881506104-88>>intlist=[1,0,0,1,1];%混合整數(shù)規(guī)劃>>[res,b]=ipslv_mex(f,A,B,intlist,xM,xm,ctype)res=19.000003.800011.00003.0000b=0第70頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月7.4.2一般非線性整數(shù)規(guī)劃問(wèn)題與求解(matlab2009a有問(wèn)題)第71頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月err字符串為空,則返回最優(yōu)解。該函數(shù)尚有不完全之處,解往往不是精確整數(shù),可用下面語(yǔ)句將其化成整數(shù)。第72頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:functionf=c6miopt(x)f=-[21431]*x;>>A=[02142;345-1-1];intlist=ones(5,1);Aeq=[];Beq=[];>>B=[54;62];ctype=[-1;-1];>>xm=[0,0,4,1,3]';xM=20000*ones(5,1);x0=xm;>>[errmsg,f,X]=bnb20('c6miopt',x0,intlist,xm,xM,A,B,Aeq,Beq);X=X'X=19.000004.000010.00005.0000第73頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>intlist=[1,0,0,1,1]';>>xm=[0,0,3.32,1,3]';>>[errmsg,f,X]=bnb20('c6miopt',x0,intlist,xm,xM,A,B,Aeq,Beq);XX=19.000003.800011.00003.0000第74頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月例:編寫(xiě)函數(shù):functiony=c7fun1(x)y=100*(x(2)-x(1)^2)^2+(4.5543-x(1))^2;>>x0=[1;1];xm=-100*[1;1];xM=100*[1;1];>>A=[];B=[];Aeq=[];Beq=[];intlist=[1,1]';>>[errmsg,f,x]=bnb20('c6fun1',x0,intlist,xm,xM,A,B,Aeq,Beq);x'ans=5.0000000000000025.00000001055334第75頁(yè),課件共86頁(yè),創(chuàng)作于2023年2月>>iflength(errmsg)==0,x=round(x),end;x=x';x=525%縮小范圍。>>xm=-20*[1;1];
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45986-2025船舶自動(dòng)識(shí)別系統(tǒng)(AIS)術(shù)語(yǔ)
- 綜合實(shí)踐-參加歡樂(lè)購(gòu)物活動(dòng) 單元教學(xué)設(shè)計(jì)-2025北師大版二年級(jí)數(shù)學(xué)上冊(cè)
- 房屋裝修裝飾合同
- 小學(xué)一年級(jí)升二年級(jí)暑假數(shù)學(xué)作業(yè)-100以內(nèi)加減法口算天天練(3300道)
- 語(yǔ)言表達(dá)(解析版)-2026年中考語(yǔ)文復(fù)習(xí)試題(湖南專(zhuān)用)
- 2025年光伏工程師執(zhí)業(yè)資格考試試卷及答案
- 2025年保密知識(shí)測(cè)試題及答案
- 2025年安全考試題庫(kù)(附答案)
- 2025年“全國(guó)安全生產(chǎn)活動(dòng)月”《安全知識(shí)》考試題庫(kù)與答案
- 浙江省紹興市諸暨市2023-2024學(xué)年八年級(jí)下學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 重大危險(xiǎn)源(專(zhuān)項(xiàng))施工方案
- 2022年上海市各區(qū)高三語(yǔ)文二模卷【作文題目解析及例文】匯集練
- 營(yíng)養(yǎng)支持綜合進(jìn)修匯報(bào)
- 醫(yī)務(wù)人員服務(wù)禮儀和技巧課件
- 工廠倉(cāng)管職責(zé)培訓(xùn)課件
- 歲月-碎片作文800字
- 上海同濟(jì)大學(xué)附屬存志學(xué)校八年級(jí)上冊(cè)期末數(shù)學(xué)模擬試卷含詳細(xì)答案
- GB/T 27000-2023合格評(píng)定詞匯和通用原則
- 無(wú)人機(jī)能源系統(tǒng)課件
- HCIA-Security 華為認(rèn)證初級(jí)網(wǎng)絡(luò)安全工程師實(shí)驗(yàn)手冊(cè)
- 回彈法檢測(cè)混凝土強(qiáng)度小軟件
評(píng)論
0/150
提交評(píng)論