Powell法求多元函数极小值(要求目标函数有连续二阶导数).docVIP

Powell法求多元函数极小值(要求目标函数有连续二阶导数).doc

  1. 1、本文档共16页,可阅读全部内容。
  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文档。上传文档
查看更多
Powell法求多元函数极小值(要求目标函数有连续二阶导数)

Powell法求多元函数极小值(要求目标函数有连续二阶导数) #include conio.h #include math.h #include stdio.h #include stdlib.h #define XuYimin_Debug_1 #define N 3??/*N维空间*/ double xq[N]={0,0,0}; double fun(double x[N]) { ??double y; /*目标函数f(X)= (x1-4)^2+(x2-3)^2+1.5*x3^2+(x1-x2+x3-1)^2+sin(x1+x2+x3-7)*sin(x1+x2+x3-7) 可根据需要修改,但需要同时修改维数N值*/ ??y=pow((x[0]-4),2)+pow((x[1]-3),2)+1.5*x[2]*x[2] ??? +pow(x[0]-x[1]+x[2]-1,2)+pow(sin(x[0]+x[1]+x[2]-7),2); ??return y; } double fd(double x[N],double d[N],double alf) { ??int i; ??double y,t[N]; ??for(i=0;iN;i++) ??? t[i]=x[i]+alf*d[i]; ??y=fun(t); ??return y; } double alf(double x[N],double d[N]) { ??double h0=0.1,a0=0.0,ep1; ??double a1,a2,a3,y1,y2,y3,c1,c2,ap,yp,ax,yx,h; ??ep1=pow(0.1,12); ??a1=a0,h=h0;a2=h,y1=fd(x,d,a1),y2=fd(x,d,a2); ??if(y2y1) ??? { ??????h=-1*h,a3=a1,y3=y1; ??????loop1:a1=a2,y1=y2,a2=a3,y2=y3; ??????loop2:a3=a2+h,y3=fd(x,d,a3); if(y3y2) {h=2*h;goto loop1;} ??? } ??else??goto loop2; ??if( fabs(y2)ep1 )??goto loop5; ??loop3: ??? c1=(y3-y1)/(a3-a1); ??? c2=((y2-y1)/(a2-a1)-c1)/(a2-a3); ??? if(c2==0) goto loop4; ??? ap=0.5*(a1+a3-c1/c2); ??? yp=fd(x,d,ap); ??while(!fabs((y2-yp)/y2)ep1) ??? { ??????if((ap-a2)*h0) ????????{ ????????? if(y2=yp)??a1=a2,y1=y2,a2=ap,y2=yp; ????????? else????????a3=ap,y3=yp; ????????} ??????else ????????{ ????????? if(y2=yp)??a3=a2,y3=y2,a2=ap,y2=yp; ????????? else????????a1=ap,y1=yp; ????????} ??????goto loop3; ??? } ??if(y2yp)??ax=a2,yx=y2; ??else?????? ax=ap,yx=yp; ??return ax; ??loop4:return a2; ??loop5:return 0; } double maxt(double del[N+1]) { ??int i; ??double y=del[0]; ??for (i=1;iN+1;i++) ??? if(del[i]y) ??????y=del[i]; ??return y; } void powell() { ??int i,j,id,pd[3],xym=1,m; ??double al,esp,ALF[N+1],x[2],pa[N+1],X[N][N+1],del[N+1],d[N][N+1], ??????F[3],fu[N+1],te[N],tem[N],dk[N],xk[N],delm; ??esp=pow(0.1,10);x[0]=xq[0];x[1]=xq[1]; ??for(i=0;iN;i++) ??? for(j=0;jN+1;j++) ??????d[i][j]=0; ??for(i=0;iN;i++)??d[i][i+1]=1; ??loop: ??#ifdef XuYimin_Debug_1 ??? printf(fangxiang juzhen:d=\n); ??? for(

文档评论(0)

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

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

1亿VIP精品文档

相关文档