《抛物线法和最速下降法优化程序.docx》由会员分享,可在线阅读,更多相关《抛物线法和最速下降法优化程序.docx(5页珍藏版)》请在三一办公上搜索。
1、最优化方法编程通过matlab编程,对老师上课讲的几种方法进行程序实现,并对算法的原理进行简要 的描述。(二)抛物线法例3:求函数f (x) = x3 3x + 2的最小值,初始搜索区间为0,3,终止误差为5 =0.05抛物线法的mat lab程序为:functionE,n=pao(F_1,a,b,l)xa(1)=a;xc(1)=b;n=1;xb(1) = (xa(1)+xc(1)/2;Xa(1)=feval(F_1,xa(1);Xb(1)=feval(F_1,xb(1);Xc=feval(F_1,xc(1);x(1) = (det(1 Xa(1) xa(1)2;1 Xb(1) xb(1)2;
2、1 Xc(1) xc(1)”2)/det(1xa(1) xa(1)”2;1 xb(1) xb(1)”2;1 xc(1) xc(1)”2)/(-2*(det(1 xa(1) Xa(1);1 xb(1) Xb(1);1 xc(1) Xc(1)/det(1 xa(1) xa(1)”2;1 xb(1) xb(1)”2;1 xc(1) xc(1)”2);X(1)=feval(F_1,x(1);Y(1)=abs(x(1)-xb(1);while(Y(n)l)if Xc(n)Xa(n)k2=sort(xa(n) xb(n) x(n);xa(n+1)=k2(1);xb(n+1)=k2(2);xc(n+1)=k
3、2(3);elsek2=sort(xb(n) xc(n) x(n);xa(n+1)=k2(1);xb(n+1)=k2(2);xc(n+1)=k2(3);endn=n+1;Xa(n)=feval(F_1,xa(n);Xb(n)=feval(F_1,xb(n);Xc(n)=feval(F_1,xc(n);x(n) = (det(1 Xa(n) xa(n)”2;1 Xb(n) xb(n)”2;1 Xc(n) xc(n)”2)/det(1 xa(n) xa(n)”2;1 xb(n) xb(n)”2;1 xc(n) xc(n)”2)/(-2*(det(1 xa(n) Xa(n);1 xb(n) Xb(n
4、);1 xc(n) Xc(n)/det(1 xa(n) xa(n)2;1 xb(n) xb(n)2;1 xc(n) xc(n)”2);X(n)=feval(F_1,x(n);Y(n)=abs(x(n)-xb(n);endE=xa xb xc x Xa Xb Xc X Y;disp( xa xbxcx f(xa) f(xb) f(xc)f(x) !x-xb!)function y=F_1(x)y=x3-3*x+2;运行语句:E,n=pao(F_1,0,3,0.05)运行结果:xaxbxcKt gj (sb)t (kc)士3iK-sb!E =01. 50003. 00000. 83332. 000
5、00. 875020.00000. 07870. 666700. 83331. 50000. 91072. 00000. 07870. 87500. 02320.07740. 83330.91071. 50000. 98260. 07870. 02320. 87500. 00090. 07190. 83330.91070. 98261. 00350. 07870. 02320. 00090. 00000. 09280. 91070. 98261. 00351. 00020. 02320. 00090. 00000. 00000. 0176n 二I5当运算5次后|x-xb|=0.01760.1)
6、xs(1)=x(1)+lmda*d(1);xs(2)=x(2)+lmda*d(2);h1=compose(h,xs(1);h2=compose(h1,xs(2);dh2=diff(h2,lmda);lm=solve(dh2);lm=double(lm);x(1)=x(1)+lm*d(1);x(2)=x(2)+lm*d(2);plot(x(1),x(2),*);fx,df=f_df(x);d=-df;end disp(x)子程序:functionf,df=f_df(x)f=2*x(1)”2+x(2)”2;df(1)=4*x(1);df(2)=2*x(2);直接运行运行结果:给程序第14行加百分号可得函数图像:函数立体图去掉程序13,14行百分号可得函数立体图,等高线图,及寻优点的轨迹:函数的等高线图及找寻最优点的轨迹最优点的坐标为:-0.00820.0329可见当函数执行4次以后得到的最优点(-0.0082,0.0329)已经于(0,0)点非常的接近, 满足精度要求。