机械优化设计实验报告(浙江理工大学).docVIP

机械优化设计实验报告(浙江理工大学).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机械优化设计实验报告 班级:XXXX 姓名:XX 学号:XXXXXXXXXXX 外推法 实验原理 常用的一维优化方法都是通过逐步缩小极值点所在的搜索区间来求最优解的。一般情况下,我们并不知道一元函数f(X)极大值点所处的大概位置,所以也就不知道极值点所在的具体区域。由于搜索区间范围的确定及大小直接影响着优化方法的收敛速度及计算精度。因此,一维优化的第一步应首先确定一个初始搜索区间,并且在该区间内函数有唯一的极小值存在。该区间越小越好,并且仅存在唯一极小值点。 所确定的单股区间应具有如下性质:如果在[α1,α3]区间内任取一点α2,,α1α2α3或α3α2α1,则必有f(α1)f(α2)f(α3)。由此可知,单股区间有一个共同特点:函数值的变化规律呈现“大---小---大”或“高---低---高”的趋势,在极小值点的左侧,函数值呈严格下降趋势,在极小值点右侧,函数值呈严格上升趋势,这正是单股区间依据。 实验工具 C-Free3.5软件 程序调试 #includestdio.h #includemath.h #define f(x) 3*x*x-8*x+9 //定义函数 int main() { double a0,a1,a2,a3,f1,f2,f3,h; printf(“a0=”,a0); //单谷区间起始点 scanf(“%lf”,a0); printf(“h=”,h); //起始的步长 scanf(“%lf”,h); a1=a0; a2=a1+h; f1=f(a0); f2=f(a2); if(f1f2) //判断函数值的大小,确定下降方向 { a3=a2+h; f3=f(a3); } else { h=-h; a3=a1; f3=f1; a1=a2; f1=f2; a2=a3; f2=f3; a3=a2+h; f3=f(a3); } while(f3=f2) //当不满足上述比较时,说明下降方向反向,继续进行判断 { h=2*h; a1=a2; f1=f2; a2=a3; f2=f3; a3=a2+h; f3=f(a3); } printf(“a1=%lf,a3=%lf\n”,a1,a3); printf(“[a1,a3]=[%lf,%lf]\n”,a1,a3); //输出区间 } 调试结果 总结与讨论 当写成void main时会出现如下警告 改成int main警告消失。 黄金分割法 实验原理 在外推法确定了单股区间[α1,α3]的基础上去其中对称两点α2,α4,且满足 α α 式中,λ位0~1的缩小系数。 计算点α2,α4的函数值,记f2=f(α2),f4=f(α4),并比较他们的大小,可能存在如下三种情况: (1)f2f4:此时必有极小值点α∈[α1,α4],应舍去区间[α4,α3],保留的区间长度为λl,缩小后的新区间为[α1,α4]; (2)f2f4:此时必有极小值点α∈[α2,α3],应舍去区间[α1,α2],保留的区间长度为λl,缩小后的新区间为[α2,α3]; (3)f2=f4:此时必有极小值点α∈[α2,α4],应舍去区间[α1,α2]或[α4,α3]。 经过比较取舍后,缩小后所得的新区建长度均为λl,将区间端点重新命名为[α1,α3],就可以进行新一轮的比较,如此循环。 实验工具 C-Free 3.5软件 程序调试 #includestdio.h #includemath.h #define f(x) 3*x*x-8*x+9 #define v 0.618 //黄金分割点 int main() { float a0,a1,a2,a3,a4,f0,f1,f2,f3,f4,b; //b收敛精度 puts(单谷区间 a1=); scanf(%f,a1); puts(单谷区间 a3=); scanf(%f,a3); puts(收敛精度 b=); scanf(%.4f,b); a2=a3-v*(a3-a1); f2=f(a2); a4=a1+v*(a3-a1); f4=f(a4); do //do-while循环,知道满足条件退出循环 { if(f2f4)

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档