专业课程实践论文DFP法.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专业课程实践论文DFP法

2011-2012(1)专业课程实践论文 DFP法 张成,,数学07.1 一、算法理论 设校正矩阵的形式为 , (1) 其中、为待定参数,,为待定向量。这种形式显然是对称的,于是再利用拟牛顿方程来确定,,,。把(1)代入拟牛顿方程有 。 (2) 简单的做法是取 , , (3) 就能使(2)式成立。注意到和为数,因此为使(3)成立的简单做法是取 , , ,, 因此DFP算法中的公式为 。 (4) DFP算法的步骤为 1.任取和(一般取),,; 2.若,则停;否则令 , 由线有哪些信誉好的足球投注网站求得; 3.计算,, , ; 4.,回2。 二、算法框图 三、算法程序 给定一个函数,提取其函数系数,写入main函数系数矩阵中。即可求出最优解与最优值。本题函数为 #includemath.h #includestdio.h # define eps 0.1 double f (double coe[], double x[])//返回函数值待求函数的函数值 { return coe[0]*pow(x[0],2)+coe[1]*pow(x[1],2)+coe[2]*x[0]*x[1]+coe[3]*x[0]+coe[4]*x[1]+coe[5]; } void grads (double coe[], double x[],double grads_x[]) //二维函数梯度函数定义 { grads_x[0] = 2*coe[0]*x[0]+coe[2]*x[1]+coe[3]; grads_x[1] = 2*coe[1]*x[1]+coe[2]*x[0]+coe[4]; } void SD(double h[],double grads_x[],double s[])//定义有哪些信誉好的足球投注网站方向向量函数 { s[0]=-(h[0]*grads_x[0]+h[1]*grads_x[1]); s[1]=-(h[2]*grads_x[0]+h[3]*grads_x[1]); } double findlambda (double coe[], double x[], double s[]) //求解lambda { return(-(2*coe[0]*x[0]*s[0]+2*coe[1]*x[1]*s[1]+coe[2]*x[0]*s[1]+coe[2]*x[1]*s[0]+coe[3]*s[0]+coe[4]*s[1])/(2*coe[0]*s[0]*s[0]+2*coe[1]*s[1]*s[1]+2*coe[2]*s[0]*s[1])); } void H (double h[],double x[],double temp_x[],double grads_x[],double temp_g[] )//求解变化矩阵H { double Dg[2],Dx[2],temp[2],temp_h[4]; Dg[0] = temp_g[0] - grads_x[0];//求解delta g的值 Dg[1] = temp_g[1] - grads_x[1]; Dx[0] = temp_x[0] - x[0];//求解delta x的值 Dx[1] = temp_x[1] - x[1]; temp_h[0] = h[0];//将H的初值赋予辅助矩阵 temp_h[1] = h[1]; temp_h[2] = h[2]; temp_h[3] = h[3]; temp[0] = Dx[0] * Dg[0] + Dx[1] * Dg[1]; temp[1] = (Dg[0] * h[0] + Dg[1] * h[2]) * Dg[0]+ (Dg[0] * h[1] + Dg[1] * h[3]) * Dg[1]; h[0] =temp_h[0] + pow(Dx[0],2) / temp[0]- pow((temp_h[0] * Dg[0] + temp_h[1] * Dg[1]),2) / temp[1]; h[1] =temp_h[1] + (Dx[0] * Dx[1]) / temp[0]- (temp_h[0] * Dg[0] + temp_h[1] * Dg[1]) * (temp_h[2] * Dg[0]+ temp_h[3] * Dg[1]) / temp[1]; h[2] =temp_h[2] + (Dx[0] * Dx[1]) / temp[0]

文档评论(0)

2017meng + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档