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