- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合肥工业大学
《机械优化设计》课程实践
研究报告
班 级: 机械设计制造及其自动化12-3班
学 号:
姓 名:
授课教师: 王 卫 荣
日 期: 2015年 11 月 14 日
目 录
一维搜索程序作业 .......................................3
1.λ=0.618的证明............................................3
2.编写0.618法程序并计算.....................................4
二、 单位矩阵程序作业 ......................................6
三、连杆机构问题和自选工程优化问题..........................7
1.连杆机构问题............................................. 7
2.自选工程优化问题......................................... 14
四、课程实践心得体会........................................18
一、 一维搜索程序作业
1.λ=0.618的证明
黄金分割法,又称作0.618法,适用于 [a,b] 区间上的任何单谷函数求极小值问题。黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间 [a,b] 内适当插入两点 α1、α2 ,并计算其函数值。α1、α2 将区间分成三段。应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间得以缩短。然后再在保留下来的区间上做同样的位置,如此迭代下去,使搜索区间无限缩小,从而得到极小点的数值近似值。
黄金分割法要求插入点α1、α2 的位置相对于区间 [a,b] 两端点具有对称性,即
图 1-1 黄金分割法
α1 = b – λ ( b – a )
α2 = a + λ ( b – a ) (3-1)
其中,λ为待定常数。
下面证明λ = 0.618。
除对称性要求外,黄金分割法还要求保留下来的区间内再插入一点所形成的区间新三段,与原来区间的三段具有相同的比例分布。设原有区间 [a,b] 长度为1如图 1-1 所示,保留下来的区间 [a,b] 长度为λ ,区间缩短率为λ 。为了保持相同的比例分布,新插入点α3 应在λ ( 1 – λ ) 位置上,α1 在元区间的1 – λ 位置应相当于在保留区间的λ2 位置。故有
1 – λ = λ2
即
λ2 + λ – 1 = 0
取方程正数解得
若保留下来的区间为 [α1,b] ,根据插入点的对称性,也能推得同样的λ的值。
2.编写0.618法程序并计算
(1)0.618法程序:
#include stdio.h
#include math.h
float m=0.618;
float fun(float t)
{float y;
y=cos(t);
return y;
}
main()
{ float a,b,eps;
printf(\min=);
scanf(%f,a); %输入函数下限%
printf(\max=);
scanf(%f,b); %输入函数上限%
float t1,t2,t,f1,f2,min;
printf(eps=);
scanf(%f,eps); %输入精度%
while((b-a)/b=eps)
{ t1=a+(1-m)*(b-a);
t2=a+m*(b-a);
f1=fun(t1);
f2=fun(t2);
if(f1=f2)
{ a=t1;
t1=t2;
文档评论(0)