- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最优化方法实验报告
最优化方法实验报告
Numerical Linear Algebra And Its Applications
学生所在学院:理 学 院
学生所在班级:计算数学10-1
学 生 姓 名:甘 纯
指 导 教 师:单 锐
教 务 处
2013年 5月
实验三
实验名称: 无约束最优化方法的MATLAB实现
实验时间: 2013年05月10日 星期三 实验成绩:
一、实验目的:
通过本次实验的学习,进一步熟悉掌握使用MATLAB软件,并能利用该软件进行无约束最优化方法的计算。
二、实验背景:
(一)最速下降法
1、算法原理
最速下降法的搜索方向是目标函数的负梯度方向,最速下降法从目标函数的负梯度方向一直前进,直到到达目标函数的最低点。
2、算法步骤
用最速下降法求无约束问题的算法步骤如下:
a)给定初始点,精度,并令k=0;
b)计算搜索方向,其中表示函数在点处的梯度;
c)若,则停止计算;否则,从出发,沿进行一维搜索,即求,使得;
d)令,转b)。
(二)牛顿法
1、算法原理
牛顿法是基于多元函数的泰勒展开而来的,它将作为搜索方向,因此它的迭代公式可直接写出来:
2、算法步骤
用牛顿法求无约束问题的算法步骤如下:
a)给定初始点,精度,并令k=0;
b)若,停止,极小点为,否则转c);
c)计算;
d)令,转b)。
(三)共轭梯度法
1、算法原理
共轭梯度法是利用目标函数梯度逐步产生共轭方向作为线搜索方向的方法,每次搜索方向都是在目标函数梯度的共轭方向,搜索步长通过一维极值算法确定。
2、算法步骤
a)给定初始点,精度;
b)若,停止,极小点为,否则转c);
c);
d)用一维搜索方法求,使得
令,转e);
e)若,停止,极小值为,否则转f);
f)若转c),否则转g);
g)令,
三、实验内容:
1.最速下降法的MATLAB实现
2.牛顿法的MATLAB实现
3.共轭梯度法的MATLAB实现
四、实验过程:
1.最速下降法的函数:
function [x,minf] = minFD(f,x0,var,eps)
%最速下降法主函数
if nargin == 3
eps = 1.0e-6;
end
syms l;
tol = 1;
gradf = - jacobian(f,var);
while toleps
v = Funval(gradf,var,x0);
tol = norm(v);
y = x0 + l*v;
yf = Funval(f,var,y);
[a,b] = minJT(yf,0,0.1);%进退法求区间
xm = minHJ(yf,a,b);%黄金分割法
x1 = x0 + xm*v;
x0 = x1;
end
x = x1;
minf = Funval(f,var,x);
%进退法函数
function [minx,maxx] = minJT(f,x0,h0,eps)
if nargin == 3
eps = 1.0e-6;
end
x1 = x0;
k = 0;
h = h0;
while 1
x4 = x1 + h;
k = k+1;
f4 = subs(f, findsym(f),x4);
f1 = subs(f, findsym(f),x1);
if f4 f1
x2 = x1;
x1 = x4;
f2 = f1;
f1 = f4;
h = 2*h;
else
if k==1
h = -h;
x2 = x4;
f2 = f4;
else
x3 = x2;
x2 = x1;
x1 = x4;
break;
end
end
end
minx = min(x1,x3);
maxx = x1+x3 - minx;
%黄金分割法函数
function [x,minf] = minHJ(f,a,b,eps)
if n
文档评论(0)