欢迎来到天天文库
浏览记录
ID:53965793
大小:693.00 KB
页数:32页
时间:2020-04-11
《机械优化设计实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《机械优化设计》实验报告目录1.进退法确定初始区间31.1进退法基本思路31.2进退法程序框图31.3题目41.4源程序代码及运行结果42.黄金分割法52.2黄金分割法流程图52.3题目52.4源程序代码及结果53.牛顿型法63.1牛顿型法基本思路63.2阻尼牛顿法的流程图63.3题目73.4源程序代码及结果74.鲍威尔法84.1鲍威尔法基本思路84.2鲍威尔法流程图84.3题目94.4源程序代码及结果95.复合形法165.1复合行法基本思想165.3源程序代码及结果166.外点惩罚函数法246.1解题思路:246.2流程框图246
2、.3题目246.4源程序代码及结果247.机械设计实际问题分析307.2计算过程如下307.3源程序编写328.报告总结331.进退法确定初始区间1.1进退法基本思路:按照一定的规则试算若干个点,比较其函数值的大小,直至找到函数值按“高-低-高”变化的单峰区间。1.2进退法程序框图1.3题目:用进退法求解函数的搜索区间1.4源程序代码及运行结果#include#includemain(){floath,h0,y1,y2,y3,a1=0,a2,a3,fa2,fa3;scanf("h0=%f,y1=%f
3、",&h0,&y1);h=h0;a2=h;y2=a2*a2-7*a2+10;if(y2>y1){h=-h;a3=a1;y3=y1;loop:a1=a2;y1=y2;a2=a3;y2=y3;}a3=a2+2*h;y3=a3*a3-7*a3+10;if(y34、()缩小比较大小确定取舍区间。2.2黄金分割法流程图2.3题目:对函数,给定搜索区间时,试用黄金分割法求极小点2.4源程序代码及结果:f=inline('x^2-7*x+9')a=0;b=8;eps=0.001;a1=b-0.618*(b-a);y1=f(a1);a2=a+0.618*(b-a);y2=f(a2);while(abs(b-a)>eps)if(y1>=y2)a=a1;a1=a2;y1=y2;a2=a+0.618*(b-a);y2=f(a2);elseb=a2;a2=a1;y2=y1;a1=b-0.618*(b-a);y5、1=f(a1);endendxxx=0.5*(a+b)f=Inlinefunction:f(x)=x^2-7*x+9xxx=3.49973.牛顿型法3.1牛顿型法基本思路:在邻域内用一个二次函数来近似代替原目标函数,并将的极小点作为对目标函数求优的下一个迭代点。经多次迭代,使之逼近目标函数的极小点。3.2阻尼牛顿法的流程图:3.3题目:用牛顿阻尼法求函数的极小点3.4源程序代码及结果:k=0;ptol=1.0e-5;xk=input('inputx0:')itcl=[1;1];whilenorm(itcl)>=ptolf1=[4*x6、k(1,1)^3-24*xk(1,1)^2+50*xk(1,1)-4*xk(2,1)-32;-4*xk(1,1)+8*xk(2,1)];G=[12*xk(1,1)^2-48*xk(1,1)+50,-4;-4,8];dk=-inv(G)*f1;a=-(dk'*f1)/(dk'*G*dk);xk=xk+a*dk;itcl=a*dk;k=k+1;endf=(xk(1,1)-2)^4+(xk(1,1)-2*xk(2,1))^2;fprintf('ÓÃ×èÄáÅ£¶Ù·¨µü´ú%d´ÎºóµÃµ½¼«Ð¡µãx*¼°¼«Ð¡ÖµfΪ:7、',k);disp(xk);disp(f);结果显示:inputx0:[1;1]用阻尼牛顿法迭代27次后得到极小点x*及极小值f为:2.00001.00001.3270e-0194.鲍威尔法4.1鲍威尔法基本思路:在不用导数的前提下,在迭代中逐次构造G的共轭方向。4.2鲍威尔法流程图:4.3题目:求函数f(x)=x[0]*x[0]+x[1]*x[1]-x[0]*x[1]-10*x[0]-4*x[1]+60的最优点,收敛精度ε=0.0014.4源程序代码及结果:#include"stdio.h"#include"stdlib.h"8、#include"math.h"doubleobjf(doublex[]){doubleff;ff=x[0]*x[0]+x[1]*x[1]-x[0]*x[1]-10*x[0]-4*x[1]+60;return(ff);}voidjtf
4、()缩小比较大小确定取舍区间。2.2黄金分割法流程图2.3题目:对函数,给定搜索区间时,试用黄金分割法求极小点2.4源程序代码及结果:f=inline('x^2-7*x+9')a=0;b=8;eps=0.001;a1=b-0.618*(b-a);y1=f(a1);a2=a+0.618*(b-a);y2=f(a2);while(abs(b-a)>eps)if(y1>=y2)a=a1;a1=a2;y1=y2;a2=a+0.618*(b-a);y2=f(a2);elseb=a2;a2=a1;y2=y1;a1=b-0.618*(b-a);y
5、1=f(a1);endendxxx=0.5*(a+b)f=Inlinefunction:f(x)=x^2-7*x+9xxx=3.49973.牛顿型法3.1牛顿型法基本思路:在邻域内用一个二次函数来近似代替原目标函数,并将的极小点作为对目标函数求优的下一个迭代点。经多次迭代,使之逼近目标函数的极小点。3.2阻尼牛顿法的流程图:3.3题目:用牛顿阻尼法求函数的极小点3.4源程序代码及结果:k=0;ptol=1.0e-5;xk=input('inputx0:')itcl=[1;1];whilenorm(itcl)>=ptolf1=[4*x
6、k(1,1)^3-24*xk(1,1)^2+50*xk(1,1)-4*xk(2,1)-32;-4*xk(1,1)+8*xk(2,1)];G=[12*xk(1,1)^2-48*xk(1,1)+50,-4;-4,8];dk=-inv(G)*f1;a=-(dk'*f1)/(dk'*G*dk);xk=xk+a*dk;itcl=a*dk;k=k+1;endf=(xk(1,1)-2)^4+(xk(1,1)-2*xk(2,1))^2;fprintf('ÓÃ×èÄáÅ£¶Ù·¨µü´ú%d´ÎºóµÃµ½¼«Ð¡µãx*¼°¼«Ð¡ÖµfΪ:
7、',k);disp(xk);disp(f);结果显示:inputx0:[1;1]用阻尼牛顿法迭代27次后得到极小点x*及极小值f为:2.00001.00001.3270e-0194.鲍威尔法4.1鲍威尔法基本思路:在不用导数的前提下,在迭代中逐次构造G的共轭方向。4.2鲍威尔法流程图:4.3题目:求函数f(x)=x[0]*x[0]+x[1]*x[1]-x[0]*x[1]-10*x[0]-4*x[1]+60的最优点,收敛精度ε=0.0014.4源程序代码及结果:#include"stdio.h"#include"stdlib.h"
8、#include"math.h"doubleobjf(doublex[]){doubleff;ff=x[0]*x[0]+x[1]*x[1]-x[0]*x[1]-10*x[0]-4*x[1]+60;return(ff);}voidjtf
此文档下载收益归作者所有