已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最优化课程设计题目:共轭梯度法姓 名: 田鑫 指导老师: 智红英 学 号: 201118030216 班 级: 信息与计算科学111802班 共轭梯度法(Conjugate Gradient)是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。设我们要求解下列线性系统其中n-n矩阵A是对称的(也即,AT = A),正定的(也即,xTAx 0对于所有非0向量x属于Rn),并且是实系数的。将系统的唯一解记作x*。最后算法经过一些简化,可以得到下列求解Ax = b的算法,其中A是实对称正定矩阵。x0 := 0k := 0r0 := brepeat until rk is sufficiently small:k := k + 1if k = 1p1 := r0elseend ifxk := xk-1 + k pkrk := rk-1 - k A pkend repeat结果为xk共轭梯度法程序源代码#include#include#define N 10#define eps pow(10,-6)double f(double x,double p,double t)double s;s=pow(x0+t*p0,2)+25*pow(x1+t*p1,2);return s;/*以下是进退法搜索区间源程序*/void sb(double *a,double *b,double x,double p)double t0,t1,t,h,alpha,f0,f1;int k=0;t0=2.5; /*初始值*/h=1; /*初始步长*/alpha=2; /*加步系数*/f0=f(x,p,t0);t1=t0+h;f1=f(x,p,t1);while(1) 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; break; t1=t0+h; f1=f(x,p,t1);/*以下是黄金分割法程序源代码*/double hjfg(double x,double p)double beta,t1,t2,t;double f1,f2;double a=0,b=0;double *c,*d;c=&a,d=&b;sb(c,d,x,p);/*调用进退法搜索区间*/printf(nx1=%f,x2=%f,p1=%f,p2=%f,x0,x1,p0,p1);printf(na,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(f1f2) t=(t1+t2)/2; b=t2; 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;return t;/*以下是共轭梯度法程序源代码*/void gtd()double xN,gN,pN,t=0,f0,mod1=0,mod2=0,nanda=0;int i,k,n;printf(请输入函数的元数值n=2);scanf(%d,&n);printf(n请输入初始值:2,2);for(i=0;i0) p0=-g0; p1=-g1; k=0; while(1) t=hjfg(x,p);/*调用黄金分割法求t的值*/ printf(np1=%f,p2=%f,t=%f,p0,p1,t); x0=x0+t*p0; x1=x1+t*p1; g0=2*x0; g1=50*x1; /*printf(nx1=%f,x2=%f,g1=%f,g2=%f,x0,x1,g0,g1);*/ mod2=sqrt(pow(g0,2)+pow(g1,2); /*求梯度的长度*/ if(mod2=0) break; else if(k+1=n) g0=2*x0; g1=50*x1; p0=-g0; p1=-g1; k=0; else nanda=pow(mod2,2)/pow(mod1,2); printf(nnanda=%f,mod=%f,nanda,mod2); p0=-g0+nanda*p0; p1=-g1+nanda*p1; mod1=mod2; k+; printf(n-); printf(n最优解为x1=%f,x2=%f,x0,x1);printf(n最终的函数值为%f,f(x,g,t);main()gtd();运行结果如下:请输入函数的元数值n=2请输入初始值:2 2x1=2.000000,x2=2.000000,p1=-4.000000,p2=-100.000000a,b=-4.500000,1.500000p1=-4.000000,p2=-100.000000,t=0.020030nanda=0.001474,mod=3.842730-x1=1.919879,x2=-0.003022,p1=-3.845655,p2=0.003665a,b=-4.500000,1.500000p1=-3.845655,p2=0.003665,t=0.499240-x1=-0.000026,x2=-0.001192,p1=0.000052,p2=0.059610a,b=-4.500000,1.500000p1=0.000052,p2=0.059610,t=0.020000nanda=0.000000,mod=0.000050-x1=-0.000025,x2=-0.000000,p1=0.000050,p2=0.000001a,b=-4.500000,1.500000p1=0.000050,p2=0.000001,t=0.495505-x1=-0.00000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽主持人从业考试及答案解析
- 护理第四版外科题库及答案解析
- 2025车贷网借款合同示范文本
- 矿山安全国家题库及答案解析
- 2025-2030绿色建筑行业环保政策及市场投资价值预测报告
- 2025-2030绿色化工技术创新趋势与可持续投资回报周期分析报告
- 2025-2030绿氢制备成本下降曲线与基础设施投资窗口期预测
- 上海危险品从业人员考试及答案解析
- 2025-2030纳米材料在医疗诊断中的应用趋势与产业化发展报告
- 2025-2030纳米复合材料在智能窗户领域的应用场景探索报告
- 检测机构质量控制计划
- 皮肤感染护理查房
- 充电桩公司客户投诉处理办法
- 检测公司销售部管理制度
- 公司物料丢失管理办法
- kimi制作教学课件
- 外聘审计人员管理办法
- 校外培训机构安全管理规章制度
- 幼儿关于警察职业的课件
- 医院信息公开培训
- 变压器发生火灾应急预案(3篇)
评论
0/150
提交评论