变尺度法课程设计.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
变尺度法课程设计

变尺度法课程设计 班级:数学与应用数学07-2班 姓名:李彬彬 学号合肥工业大学 2011年4月3日 一:设计题目: 变尺度法求函数的极值计算机实现及其比较研究。 二:软件环境: Turbo C,Turbo C++,VC,VC++,Win-TC等能运行C语言的软件。 三:算法设计思路: 1:变尺度法的由来:尺度:指空间中对于点与点之间距离的一种度量,而对于正定矩阵A,若满足||x||j=?,称其为尺度矩阵,若f()为一般非线性函数,设其Hessen矩阵为正定阵,则拟牛顿条件为:(1):(2):;如果若以它为尺度矩阵,取最速下降方向为 , 在保持阻尼Newton法全局,快速收敛的同时,为了避免求逆矩阵,而通过边迭代边构造另外一个矩阵去近似,即令,由于尺度矩阵随迭代次数的变化而变化,故称此类算法为变尺度法 2:DFP法: a:基本思想:取初始矩阵(一般取为单位矩阵),用递推关系,满足拟牛顿条件确定,即第I次修正函数矩阵 b:DFP的一些性质:对于函数:具有二次终止性质,即,为Hessen逆阵;当A=E时产生共轭方向和共轭梯度。对与一般的函数:校正保持正定性,迭代下降的性质成立;具有超线性的收敛速度;且如果是凸函数,该方法具有总体收敛性。 四:程序流程图 五:演示运行结果 (1)当输入初值为5,7,精度为0时; (2)当输入的初值为2,12,精度为0时: 其他演示: 六:设计总结和体会。 总结:本程序的缺点,面向用户的功能比较差,无法让用户通过可执行文件直接输入要求的函数,而必须改动源程序,我很想弥补这个缺点,但由于水平和时间的有限,无法完成这部分工作,但我想这并不影响课程设计,因为这个课程设计的目的是实现常用的变尺度算法,而不是追求程序的完美性。 体会:通过这次《最优化理论》关于变尺度法的课程设计,强化了自己对C语言的掌握,同时更加深入的理解了变尺度法的算法原理,与计算过程。 附:算法源代码: 用变尺度法求函数+的最小值 #includestdio.h void dpfmethod(float a,float b,float m) { static float H[2][2]={1,0,0,1}; float x[2]; x[0]=a,x[1]=b; float c; c=4*(x[0]-5)*(x[0]-5)+(x[1]-6)*(x[1]-6); float df[2]; df[0]=8*(x[0]-5); df[1]=2*(x[1]-6); float hdf[2]; hdf[0]=(H[0][0]*df[0]+H[0][1]*df[1]); hdf[1]=(H[1][0]*df[0]+H[1][1]*df[1]); float namu=(-8*x[0]*hdf[0]+40*hdf[0]-2*hdf[1]*x[1]+12*hdf[1])/(8*hdf[0]*hdf[0]+2*hdf[1]*hdf[1]); float G[2]; G[0]=(-8*namu*hdf[0]); G[1]=(-2*namu*hdf[1]); float k=m; if(df[0]*df[0]+df[1]*df[1]=k){printf(最小值点是x1=%f,x2=%f\n,x[0],x[1]); printf(此时原函数的值为%f\n,c); getchar();} else { x[0]+=namu*hdf[0]; x[1]+=namu*hdf[1]; H[0][0]+=namu*hdf[0]*namu*hdf[0]/(G[0]*namu*hdf[0]+G[1]*namu*hdf[1])-((H[0][0]*G[0]+H[0][1]*G[1])*G[0]*H[0][0]+(H[0][0]*G[0]+H[0][1]*G[1])*G[1]*H[1][0])/(G[0]*(G[0]*H[0][0]+G[1]*H[1][0])+G[1]*(G[0]*H[0][1]+G[1]*H[1][1])); H[0][1]+=namu*hdf[0]*namu*hdf[1]/(G[0]*namu*hdf[0]+G[1]*namu*hdf[1])-((H[0][0]*G[0]+H[0][1]*G[1])*G[0]*H[0][1]+(H[0][0]*G[0]+H[0][1]*G[1])*G[1]*H[1][1])/(G[0]*(G[0]*H[0][0]+G[1]*H[1][0])+G[1]*(G[0]*H[0][1]+

文档评论(0)

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

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

1亿VIP精品文档

相关文档