matlab编程实现求解最优解

matlab编程实现求解最优解

ID:38127378

大小:56.50 KB

页数:4页

时间:2019-05-27

matlab编程实现求解最优解_第1页
matlab编程实现求解最优解_第2页
matlab编程实现求解最优解_第3页
matlab编程实现求解最优解_第4页
资源描述:

《matlab编程实现求解最优解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《现代设计方法》课程关于黄金分割法和二次插值法的Matlab语言实现在《现代设计方法》的第二章优化设计方法中有关一维搜索的最优化方法的一节里,我们学习了黄金非分割法和二次插值法。它们都是建立在搜索区间的优先确定基础上实现的。为了便于方便执行和比较,我将两种方法都写进了一个程序之内,以选择的方式实现执行其中一个。下面以《现代设计方法》课后习题为例。见课本70页,第2—7题。原题如下:求函数f(x)=3*x^2+6*x+4的最优点,已知单谷区间为[-3,4],一维搜索精度为0.4。1、先建立函数f(x),f(x

2、)=3*x^2+6*x+4。函数文件保存为:lee.m源代码为:functiony=lee(x)y=3*x^2+6*x+4;2、程序主代码如下,该函数文件保存为:ll.mclear;a=input('请输入初始点');b=input('请输入初始步长');Y1=lee(a);Y2=lee(a+b);ifY1>Y2%Y1>Y2的情况k=2;Y3=lee(a+2*b);whileY2>=Y3%直到满足“大,小,大”为止k=k+1;Y3=lee(a+k*b);endA=a+b;B=a+k*b;elseifY1

3、2%Y1=Y3%直到满足“大,小,大”为止k=k+1;Y3=lee(a-k*b);endA=a-k*b;B=a;elseA=a;B=a+b;%Y1=Y2的情况enddisp(['初始搜索区间为',num2str([A,B])])%输出符合的区间xuanze=input('二次插值法输入0,黄金分割法输入1');%选择搜索方式T=input('选定一维搜索精度');ifxuanze==1whileB-A>T%一维搜索法使精度符合要求C=A+0.3

4、82*(B-A);D=A+0.618*(B-A);%黄金分割法选点iflee(C)>=lee(D);%缩小区间A=C;elseB=D;endendelsewhileB-A>T%二次插值法是精度符合要求C=(A+B)/2;W=[1,A,A^2;1,B,B^2;1,C,C^2];w=[lee(A);lee(B);lee(C)];x=Ww;%求线性方程组解,求拟合曲线xx=perms(x)';forn=1:(factorial(3));%使解得值与a0,a1,a2一一对应t=1+(n-1)*3;a0=xx(t)

5、;a1=xx(t+1);a2=xx(t+2);ifa0+a1*A+a2*A^2~=lee(A)

6、

7、a0+a1*B+a2*B^2~=lee(B)...

8、

9、a0+a1*C+a2*C^2~=lee(C);continueendbreakendxp=-a1/(2*a2);%拟合直线的最低点iflee(C)>=lee(xp);%缩小区间ifC>=xp;%xp与C大小不定,导致缩小方式不同B=C;elseA=C;endelseifC>=xp;A=xp;elseB=xp;endendendendX=(A+B)/2;Y=l

10、ee(X);disp(['极小值点为',num2str(X),'极值为',num2str(Y)]);%输出结果3、由于我编的程序,其搜索区间是自定的。不需要它提供的范围,只需要给出初始点,步长,搜索精度并确定方法即可。因此假设初始值为-5,步长为0.01,已知搜索精度为0.4。执行过程中遇到方法选择时二次插值法输入0,一维搜索法输入1,输入其它无效。运行结果:(1)先用二次插值法,则输入0(2)再次用黄金分割法(即“一维搜索法”),此时输入14.感想(1)黄金分割法比二维插值法来得简单,运算快捷,至少是在在

11、针对以议案二次函数的时候。我执行二维插值法程序时,当步长取0.01或0.1时5分钟内没有算出来,特别是一开始步长取0.01时,等了30分钟没结果,而CPU占用率却达到了50%左右,有时会跳到近100%附近。真受不了啊!应该是程序还有问题。黄金分割法在步长为0.01时之行也很快,不超过1s.截图如下:(2)黄金分割法从结果来看也比二维插值法精确些。(3)调整搜索精度比较当搜索精度分别为:0.40.10.010.001二维插值法结果:极小值点为-1.1016极值为1.0309极小值点为-1.0137极值为1.0

12、006极小值点为-1.0027极值为1极小值点为-1.0004极值为1黄金分割法结果:极小值点为-0.9286极值为1.0153极小值点为-1.0342极值为1.0035极小值点为-1.0802极值为1.0193极小值点为-1.0001极值为1通过上述比较可知,就收敛性而言,二维插值法比换进分割法好,准确性也更好。(1)还有就是主程序以函数调用的形式执行后,总会提示错误。如图:真不知是哪儿错了?望老师指正。如果在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。