第一范文网 - 专业文章范例文档资料分享平台

最速下降法求最优解西安电子科技大学matlab结课大作业

来源:用户分享 时间:2025/8/11 21:29:43 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

07112016、最速下降法求最优解

六、 结果评价

本次测试分别从两组不同的初始搜索位置,两组不同 a,b,c,d 值出发, 两两比较可得结论:测试用例 abcd 为某些特定值时,不同初始搜索位置可 以得到相同的最优解;测试用例当初搜索位置相同时,abcd 分别取两组数时 得到的最优解是不同的。从结果上来看本例函数始终取到相同最优值,达到 了题目要求,只是在最优点位置有略微差异,这个问题产生原因是与最优值 点间的误差阈值自定义值有关,精度越高最优值越准确。

七、 程序评价

1. 最速下降法算法简单,初始点可以任意选,每次迭代计算量小,即使从

一个不好的初始点出发,往往也能收敛到局部极小点。

2. 由于在远离极小点的地方每次迭代可以使目标函数值有较大的下降,但

是在接近极小点的地方,由于锯齿现象,会导致每次行进距离缩短,从 而使收敛速度不快。即全局收敛,线性收敛,易产生扭摆现象而造成早 停。

3. 最速下降法是一种理想的极小化方法。必须指出的是,某点的负梯度方

向,通常只是在该店附近才具有这种最速下降的性质。

4. 在实用中常将最速下降法和其他方法联合应用,在前期使用最速下降法,

而在接近极小点时,可改用收敛较快的其他方法,这样能使计算速度更 快,结果更准确。

八、 心得体会

通过这次结课大作业,加深了我对 MATLAB 记忆和理解,真正做到了理论 和实践相结合,锻炼了自己分析,处理实际问题的能力,也认识到了自己的 不足。编程存在问题很大,主要细节错误找不出,M 文件的编写后调用运用 的不好,也让我认识到编写好 M 文件的重要性。在以后的学习中,要注重细 节和改错,多上机操作,切实提高编程能力。

九、 附录

fun.m 文件

function [xo,fo]=fun(f,grad,x0)%f:函数名; %grad:梯度函数; %x0:搜索初始值;

%TolX:最优值点间的误差阈值; %TolFun:函数的误差阈值; %dist0:初始步长;

%MaxIter:最大的迭代次数; %xo:最优化点值; %fo:函数在点 xo 处的函数值。

%%%%%% 判断输入的变量数,设定一些变量为默认值 TolX=1e-4; TolFun=1e-9;

第 8 页

07112016、最速下降法求最优解

MaxIter=100; dist0=1; if nargin<7

MaxIter=100; %最大的迭代次数默认为 10 end

if nargin<6

dist0=10; %初始步长默认为 10 end

if nargin<5 TolFun=1e-8; %函数值误差为 1e-8

end

if nargin<4

TolX=1e-6; %自变量距离误差 end x=x0; fx0=feval(f,x0); fx=fx0; dist=dist0; kmax1=25; %线性搜索法确定步长的最大搜索次数 warning=0;

%%%%%迭代计算求最优解 for k=1:MaxIter g=feval(grad,x);

g=g/norm(g); %求点 x 处的梯度 %%线性搜索方法确定步长 dist=dist*2;

fx1=feval(f,x-dist*2*g); for k1=1:kmax1 fx2=fx1; fx1=feval(f,x-dist*g);

if fx0>fx1+TolFun && fx1fx1

dist=dist/2; end end

if k1>=kmax1 warning=warning+1;%无法确定最优步长 else

warning=0; end

第 9 页

%确定下一点

07112016、最速下降法求最优解

if warning>=2||(norm(x-x0)

break; end x0=x; fx0=fx; end

xo=x;fo=fx; if k==MaxIter

fprintf('Just best in %d iteration',MaxIter); end

命令窗口输入:以测试结果一为例 >> syms x y

>> x0=[2,4];%初始搜索位置

>> f=inline('[(x(1)-4).^2+3*(x(2)-3).^2+2*x(1)*x(2)+1]','x'); >> %位置(x,y)用一元二维 x=(x(1),x(2))来表示 >> grad= inline('[2*x(1)+3*x(2)-2,3*x(1)+6*x(2)-12]','x'); >> %函数 f 在位置 x 的梯度 >> [xo,fo]=fun(f,grad,x0)

第 10

最速下降法求最优解西安电子科技大学matlab结课大作业.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c72wdx493679x6b7430yd_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top