大连民族学院
数 学 实 验 报 告
课程: 最优化方法 实验题目: 线性搜索与信赖域方法0.618法 系别: 理学院 专业: 信息与计算科学 姓名: 班级: 信息101班 指导教师:葛仁东 完成学期: 2013 年 10 月 15 日
1
实验目的: 1. 熟悉使用0.618法求解区间上个点的函数值与极小值的关系; 2. 在掌握0.618法原理的基础上熟练运用此方法解决问题; 3. 学习了解一维搜索方法的MATLAB实现; 4. 熟练掌握0.618法的应用。 实验内容:(问题、数学模型、要求、关键词) 0.618法的MATLAB实现,并用0.618法求解问题。 用0.618法求解下面函数的极小值: f(t)??t4?t2?2t?5,其中t?[?10,10] 实验方法和步骤(包括数值公式、算法步骤、程序): 算法步骤 2
用0.618法求无约束问题minf(x),x?R的基本步骤如下: (1)选定初始区间[a1,b1]及精度??0,计算试探点:
?1?a1?0.382*(b1?a1)
?1?a1?0.618*(b1?a1)。
(2)若bk?ak??,则停止计算。否则当f??k??f??k?时转步骤(3)。 当
f??k??f??k?转步骤(4)。
(3)置
?ak?1??k?b?b?k?1k???k?1??k???k?1?ak?1?0.382*(bk?1?ak?1)转步骤(5)
(4)置
?ak?1?ak?b???k?1k???k?1??k???k?1?ak?1?0.382*(bk?1?ak?1)转步骤(5)
(5)令k?k?1,转步骤(2)。 程序:
function [x,minf] = minHJ(f,a,b,eps)
if nargin == 3 eps = 1.0e-6; end
3
l = a + 0.382*(b-a); u = a + 0.618*(b-a); k=1; tol = b-a; while tol>eps && k<100000 fl = subs(f , findsym(f), l); fu = subs(f , findsym(f), u); if fl > fu a = l; l = u; u = a + 0.618*(b - a); else b = u; u = l; l = a + 0.382*(b-a); end k = k+1; tol = abs(b - a); end if k == 100000 disp('找不到最小值!'); x = NaN; minf = NaN; return; end x = (a+b)/2; minf = subs(f, findsym(f),x); 实验数据和分析: 实验数据: 在command window中输入: >>syms t; f=t^4-t^2-2*t+5; [x,fx]=minHJ(f,-10,10) 实验结果:
4
x= 1.0000 fx= 3.0000 实验的启示: 熟悉使用0.618法求解区间上个点的函数值与极小值的关系,在掌握0.618法原理的基础上熟练运用此方法解决问题。0.618法仅需计算函数值,不涉及导数,用途很广泛,尤其适用于非光滑及导数表达式复杂或表达式写不出的种种情形。 5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库0.618法在线全文阅读。
相关推荐: