一维黄金分割法程序.docVIP

  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文档。上传文档
查看更多
一维黄金分割法程序

#includestdio.h #includemath.h #define f(t) (8*pow(t,3)-2*pow(t,2)-7*t+3) #define eps pow(10,-6) void sb(double *a,double *b) { double t0,t1,t,h,alpha,f0,f1; int k=0; printf(请输入初始点t0=); scanf(%lf,t0); printf(\n请输入初始 步长h=); scanf(%lf,h); printf(\n请输入加步系数alpha(需大于1)=); scanf(%lf,alpha); f0=f(t0); t1=t0+h; f1=f(t1); while(1) { ?? printf(\nf1=%lf,f2=%lf,t0=%lf,t=%lf,h=%lf,k=%d,f0,f1,t0,t1,h,k); ?? if(f1f0) ?? { ??? h=alpha*h; ??? t=t0; ??? t0=t1; ??? f0=f1; ??? k++; ?? } ?? else ?? { ??? if(k==0) ??? {h=-h;t=t1;} ??? else ??? {?? ???? *a=tt1?t:t1; ???? *b=tt1?t:t1; ???? break; ??? } ?? } ?? t1=t0+h; ?? f1=f(t1); } } double hjfg() { double beta,t1,t2,t; double f1,f2; double a=0,b=0; double *c,*d; int k=0; c=a,d=b; sb(c,d); printf(\n[a,b]=[%lf,%lf],a,b); beta=(sqrt(5)-1.0)/2; t2=a+beta*(b-a); f2=f(t2); t1=a+b-t2; f1=f(t1); while(1) { ?? printf(\n第%d次迭代的过程如下:,k+1); ?? printf(\n[t1,t2]=[%lf,%lf],t1,t2); ?? if(fabs(t1-t2)eps) ?? break; ?? else ?? { ??? if(f1f2) ??? { ???? t=(t1+t2)/2; ???? b=t2; ?????? t2=t1; ?????? f2=f1; ?????? t1=a+b-t2; ???????????? f1=f(t1); ??? } ????? else ????? { ????? a=t1; ?????? t1=t2; ?????? f1=f2; ?????? t2=a+beta*(b-a); ?????? f2=f(t2); ????? } ?? } ?? k++; } t=(t1+t2)/2; printf(\nt=%lf,t); return t; } main() { double t; t=hjfg(); printf(\n 函数的最优值为f(%lf)=%lf,t,f(t)); } 运行结果如下: 请输入初始点t0=0 请 输入初始步长h=1 请输入加步系数alpha(需大于1)=2 f1=3.000000,f2=2.000000,t0=0.000000,t=1.000000,h=1.000000,k=0 f1=2.000000,f2=180.000000,t0=1.000000,t=3.000000,h=2.000000,k=1 [a,b]=[0.000000,3.000000] 第 1次迭代的过程如下: [t1,t2]=[1.145898,1.854102] 第2次迭代的过程如下: [t1,t2]=[0.708204,1.145898] 第 3次迭代的过程如下: [t1,t2]=[0.437694,0.708204] 第4次迭代的过程如下: [t1,t2]=[0.708204,0.875388] 第 5次迭代的过程如下: [t1,t2]=[0.604878,0.708204] 第6次迭代的过程如下: [t1,t2]=[0.541020,0.604878] 第 7次迭代的过程如下: [t1,t2]=[0.604878,0.644345] 第8次迭代的过程如下: [t1,t2]=[0.644345,0.668737] 第 9次迭代的过程如下: [t1,t2]=[0.629270,0.644345] 第10次迭代的过程如下: [t1,t2]=[0.619953,0.629270] 第 11次迭代的过程如下: [t1,t2]=[0.629270,0.635028] 第12次迭代的过程如下: [t1,t2]=[0.62

文档评论(0)

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

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

1亿VIP精品文档

相关文档