共轭梯度法程序源代码

共轭梯度法程序源代码

ID:13178072

大小:36.00 KB

页数:4页

时间:2018-07-21

共轭梯度法程序源代码_第1页
共轭梯度法程序源代码_第2页
共轭梯度法程序源代码_第3页
共轭梯度法程序源代码_第4页
资源描述:

《共轭梯度法程序源代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、共轭梯度法程序源代码#include#include#defineN10#defineepspow(10,-6)doublef(doublex[],doublep[],doublet){doubles;s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2);returns;}/*以下是进退法搜索区间源程序*/voidsb(double*a,double*b,doublex[],doublep[]){doublet0,t1,t,h,alpha,f0,f1;intk=0;t

2、0=2.5;/*初始值*/h=1;/*初始步长*/alpha=2;/*加步系数*/f0=f(x,p,t0);t1=t0+h;f1=f(x,p,t1);while(1){if(f1t1?t:t1;break;}}t1=t0+h;f1=f(x,p,t1);}}/*以下是黄金分割法程序源代码*/doublehjfg(doublex[],doublep[]){doubleb

3、eta,t1,t2,t;doublef1,f2;doublea=0,b=0;double*c,*d;c=&a,d=&b;sb(c,d,x,p);/*调用进退法搜索区间*/printf("x1=%lf,x2=%lf,p1=%lf,p2=%lf",x[0],x[1],p[0],p[1]);printf("[a,b]=[%lf,%lf]",a,b);beta=(sqrt(5)-1.0)/2;t2=a+beta*(b-a);f2=f(x,p,t2);t1=a+b-t2;f1=f(x,p,t1);while(1){if(fabs(t1

4、-t2)

5、nf("%d",&n);printf("请输入初始值:");for(i=0;ieps){p[0]=-g[0];p[1]=-g[1];k=0;while(1){t=hjfg(x,p);/*调用黄金分割法求t的值*/printf("p1=%lf,p2=%lf,t=%lf",p[0],p[1],t)

6、;x[0]=x[0]+t*p[0];x[1]=x[1]+t*p[1];g[0]=2*x[0];g[1]=50*x[1];/*printf("x1=%lf,x2=%lf,g1=%lf,g2=%lf",x[0],x[1],g[0],g[1]);*/mod2=sqrt(pow(g[0],2)+pow(g[1],2));/*求梯度的长度*/if(mod2<=eps)break;else{if(k+1==n){g[0]=2*x[0];g[1]=50*x[1];p[0]=-g[0];p[1]=-g[1];k=0;}else{nanda=po

7、w(mod2,2)/pow(mod1,2);printf("nanda=%lf,mod=%lf",nanda,mod2);p[0]=-g[0]+nanda*p[0];p[1]=-g[1]+nanda*p[1];mod1=mod2;k++;}}printf("--------------------------");}}printf("最优解为x1=%lf,x2=%lf",x[0],x[1]);printf("最终的函数值为%lf",f(x,g,t));}main(){gtd();}运行结果如下:请输入函数的元数值n=

8、2请输入初始值:22x1=2.000000,x2=2.000000,p1=-4.000000,p2=-100.000000[a,b]=[-4.500000,1.500000]p1=-4.000000,p2=-100.000000,t=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。