共轭梯度法c++程序

共轭梯度法c++程序

ID:14995796

大小:40.00 KB

页数:7页

时间:2018-07-31

共轭梯度法c++程序_第1页
共轭梯度法c++程序_第2页
共轭梯度法c++程序_第3页
共轭梯度法c++程序_第4页
共轭梯度法c++程序_第5页
资源描述:

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

1、最优化课程设计题目:共轭梯度法姓名:田鑫指导老师:智红英学号:201118030216班级:信息与计算科学111802班共轭梯度法(ConjugateGradient)是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。设我们要求解下列线性系统其中n-×-n矩阵A是对称的

2、(也即,AT=A),正定的(也即,xTAx>0对于所有非0向量x属于Rn),并且是实系数的。将系统的唯一解记作x*。最后算法经过一些简化,可以得到下列求解Ax=b的算法,其中A是实对称正定矩阵。x0:=0k:=0r0:=brepeatuntilrkis"sufficientlysmall":k:=k+1ifk=1p1:=r0elseendifxk:=xk-1+αkpkrk:=rk-1-αkApkendrepeat结果为xk共轭梯度法程序源代码#include#include#defineN10#defineepspow(10,-6)doub

3、lef(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;t0=2.5;     /*初始值*/h=1;       /*初始步长*/alpha=2;  /*加步系数*/f0=f(x,p,t0);t1=t0+h;f1=f(x,p,t1);while(1){

4、  if(f1t1?t:t1;    break;   }  }  t1=t0+h;  f1=f(x,p,t1);}}/*以下是黄金分割法程序源代码*/doublehjfg(doublex[],doublep[]){doublebeta,t1,t2,t;doublef1,f2;doublea=0,b=0;double*c,*

5、d;c=&a,d=&b;sb(c,d,x,p);/*调用进退法搜索区间*/printf("x1=%f,x2=%f,p1=%f,p2=%f",x[0],x[1],p[0],p[1]);printf("[a,b]=[%f,%f]",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-t2)<0)  break;  else   {   if(f1

6、  t2=t1;      f2=f1;    t1=a+b-t2;            f1=f(x,p,t1);    }     else     {     a=t1;    t1=t2;      f1=f2;      t2=a+beta*(b-a);      f2=f(x,p,t2);     }  }}t=(t1+t2)/2;returnt;}/*以下是共轭梯度法程序源代码*/voidgtd(){doublex[N],g[N],p[N],t=0,f0,mod1=0,mod2=0,nanda=0;inti,k,n;printf("请输入函数的元数值n=2"

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

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

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

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