- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最优化课程设计--共轭梯度法算法分析和实现
最优化方法课程设计
(设计程序)
题目 共轭梯度法算法分析与实现
班级 / 学号 2011041401011
学 生 姓 名 黄中武
指 导 教 师 王吉波 王微微
课 程 设 计 任 务 书
课 程 名 称 最优化方法课程设计
院(系) 理学院 专业 信息与计算科学
课程设计题目 共轭梯度法算法分析与实现
课程设计时间: 2014 年 6月 16日至 2014 年 6月 27日
课程设计的要求及内容:
[要求]
学习态度要认真,要积极参与课程设计,锻炼独立思考能力;
严格遵守上机时间安排;
按照MATLAB编程训练的任务要求来编写程序;
根据任务书来完成课程设计论文;
报告书写格式要求按照沈阳航空航天大学“课程设计撰写规范MATLAB程序;
4)利用编写文件求解某无约束最优化问题;
5)给出程序注释。
指导教师 年 月 日
负责教师 年 月 日
学生签字 年 月 日
沈阳航空航天大学
课 程 设 计 成 绩 评 定 单
课 程 名 称 最优化理论与算法课程设计
院(系) 理学院 专业 信息与计算科学
课程设计题目 共轭梯度法算法分析与实现
学号 2011041401011 姓名 黄中武
指导教师评语:
课程设计成绩
指导教师签字
年 月 日
目 录
一、正文 1
二、总结 2
参考文献 3
附 录 4
一、正文
一 无约束最优化问题的共轭梯度法
共轭梯度法最初是由Hesteness和Stiefel于1952年为求解线形方程组而提出的。后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。
下面,重点介绍Fletcher-Reeves共轭梯度法,简称FR法。
共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭梯度方向的基本性质,这种方法具有二次终止性。首先讨论对于二次函数的共轭梯度法,然后再把这种方法推广到极小化一般函数的情形。考虑问题
其中A是对称正定矩阵,c是常数。
具体求解方法如下:
首先,任意给定一个初始点,计算出目变函数在这点的梯度,若=0,则停止计算,否则,令
沿方向搜索,得到点,计算在处的梯度,若,则利用和构造第二个搜索方向,再沿搜索。
一般地,若已知点和搜索方向,则从出发,沿进行搜索,得到
其中步长满足
此时可求出的显式表达。令
求得极小点,令
根据二次函数的梯度表达式,即
(10.3.16)
由(10.3.16)式得到
(10.3.17)
计算在处的梯度,若,则停止计算;否则,用和构造下一个搜索方向,并使和关于共轭。按此设想,令
(10.3.18)
上式两端左乘,并令
由此得到
(10.3.19)
再从出发,沿方向搜索
综上分析,在第一个搜索方向取负梯度的前提下,重复使用公式(10.3.14),(10.3.17),(10.3.18)和(10.3.19),就能伴随计算点的增加,构造出一组搜索方向。
二 程序流程图
N
Y
图一 共轭梯度法程序流程图
三 共轭梯度法的MATLAB程序
function [x,val,k]=frcg(fun,gfun,x0)
maxk=5000;
rho=0.6;sigma=0.4;
k=0;epsilon=1e-7;
n=length(x0);
while (kmaxk)
g=feval(gfun,x0);
itern=k-(n+1)*floor(k/(n+1));
itern=itern+1;
if(itern==1)
d=-g;
else
文档评论(0)