工程优化目标函数的几种极值求解方法c编程.docVIP

工程优化目标函数的几种极值求解方法c编程.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文档。上传文档
查看更多
工程优化目标函数的几种极值求解方法c编程

目标函数极值求解的几种方法 题目:分别用最速下降法,牛顿法,共轭梯度法,拟牛顿法求函数的最小值,初始点自拟。 一维搜索法: 迭代下降算法大都具有一个共同点,这就是得到点后需要按某种规则确定一个方向,再从出发,沿方向在直线(或射线)上求目标函数的极小点,从而得到的后继点,重复以上做法,直至求得问题的解,这里所谓求目标函数在直线上的极小点,称为一维搜索。 一维搜索的方法很多,归纳起来大体可以分为两类,一类是试探法:采用这类方法,需要按某种方式找试探点,通过一系列的试探点来确定极小点。另一类是函数逼近法或插值法:这类方法是用某种较简单的曲线逼近本来的函数曲线,通过求逼近函数的极小点来估计目标函数的极小点。这里采用的是第一类试探法中的黄金分割法。实现过程如下: ⑴ 置初始区间[]及精度要求L0,计算试探点和,计算函数值和,计算公式是:,。令k=1。 ⑵ 若则停止计算。否则,当时,转步骤⑶;当时,转步骤⑷ 。 ⑶ 置,,,,计算函数值,转⑸。 ⑷ 置,,,,计算函数值,转⑸。 最速下降法 实现原理描述:在求目标函数极小值问题时,总希望从一点出发,选择一个目标函数值下降最快的方向,以利于尽快达到极小点,正是基于这样一种愿望提出的最速下降法,并且经过一系列理论推导研究可知,负梯度方向为最速下降方向。 最速下降法的迭代公式是,其中是从出发的搜索方向,这里取在点处最速下降方向,即。是从出发沿方向进行的一维搜索步长,满足。 实现步骤如下: ⑴ 给定初点 ,允许误差,置k=1。 ⑵ 计算搜索方向, 若,则停止计算;否则,从出发,沿方向进行的一维搜索,求,使。 ⑶ ,置k=k+1返回步骤 ⑵。 牛顿法 牛顿法迭代公式:,是在点处的牛顿方向,,是从出发沿牛顿方向进行搜索的最优步长。 ⑴ 给定初点 ,允许误差,置k=1。 ⑵ 计算, 若,则停止计算;否则,转⑶。 ⑶ 计算,从出发,沿方向进行的一维搜索,求,使,,置k=k+1返回步骤 ⑵。 共轭梯度法 若是中k个方向,它们两两关于A共轭,即满足 ,称这组方向为A的k个共轭方向。共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点,根据共轭方向的基本性质这种方法具有二次终止性。 实现步骤如下: ⑴ 给定初点 ,允许误差; ⑵ 若,则停止计算;否则,转⑶; ⑶ 置,k=1。 ⑷ 作一维搜索,求,满足; ⑸ 令,求。 ⑹ 若,则停止计算;否则,转⑺; ⑺ 若k=n,则令,转⑶;否则,转8); ⑻ 令,其中,置k=k+1,转⑷。 程序 #includestdio.h #includemath.h #includeiostream.h #define N 100 double F(double x[],double p[],double xi[],double ba[],int n,double t) { double f=0; int i; for(i=0;in;i++) f=f+xi[i]*(x[i]+t*p[i]-ba[i])*(x[i]+t*p[i]-ba[i]); return f; } double HJFC(double x[],double p[],double xi[],double ba[],int n) { double a=0,b=10,x1,x2,f1,f2,e=0.0001,y; x2=a+0.618*(b-a); f2=F(x,p,xi,ba,n,x2); x1=a+0.382*(b-a); f1=F(x,p,xi,ba,n,x1); while(fabs(b-a)e) { if(f1f2) { b=x2;x2=x1;f2=f1; x1=a+0.382*(b-a); f1=F(x,p,xi,ba,n,x1); } else if(f1==f2) { a=x1;b=x2; x2=a+0.618*(b-a); f2=F(x,p,xi,ba,n,x2); x1=a+0.382*(b-a); f1=F(x,p,xi,ba,n,x1); } else { a=x1;x1=x2;f1=f2; x2=a+0.618*(b-a); f2=F(x,p,xi,ba,n,x2); } } y=0.5*(b+a); return y; } void zuisu(double x[],double xi[],double ba[],int n) { int i,k=1; double sum,eps

文档评论(0)

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

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

1亿VIP精品文档

相关文档