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