最优化方法实验报告(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最优化方法实验报告Numerical Linear Algebra And Its Applications
学生所在学院:理学院
学生所在班级:计算数学10-1
学生姓名:甘纯
指导教师:单锐
教务处
2013年5月
实验一
实验名称:熟悉matlab基本功能
实验时间: 2013年05月10日星期三实验成绩:
一、实验目的:
在本次实验中,通过亲临使用MATLAB,对该软件做一全面了解并掌握重点内容。
二、实验内容:
1. 全面了解MATLAB系统
2. 实验常用工具的具体操作和功能
实验二
实验名称:一维搜索方法的MATLAB实现
实验时间: 2013年05月10日星期三实验成绩:
一、实验目的:
通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。
二、实验背景:
(一)0.618法(黄金分割法),它是一种基于区间收缩的极小点搜索
算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。 1、算法原理
黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。 2、算法步骤
用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下: (1)选定初始区间11[,]a b 及精度0ε>,计算试探点:
11110.382*()a b a λ=+-
11110.618*()a b a μ=+-。
(2)若k k b a ε-<,则停止计算。否则当()()k k f f λμ>时转步骤(3)。 当()()k k f f λμ≤转步骤(4)。 (3)置
11111110.382*()k k
k k k k k k k k a b b a b a λλμμ+++++++=⎧⎪=⎪⎨
=⎪⎪=+-⎩转步骤(5)
(4)置
11111110.382*()k k k k k k k k k k a a b a b a μμλλ+++++++=⎧⎪=⎪⎨
=⎪⎪=+-⎩转步骤(5)
(5)令1k k =+,转步骤(2)。 (二)斐波那契法: 1、算法原理
斐波那契法也是一种区间收缩算法,但是和黄金分割法不同的是,黄金分割法每次收缩只改变搜索区间的一个端点,而斐波那契法同时改变搜索区间的两个端点,是一种双向收缩法。 2、算法步骤
(1)选取初始数据,确定单峰区间],[00b a ,给出搜索精度0>δ,由
δ≤-n
F a
b 确定搜索次数n 。 (2) 00,,1b b a a k ===,计算最初两个搜索点,按(3)计算1t 和2t 。 (3) while 1- )(),(2211t f f t f f == if 21f f < ) ()() 1(;;1122a b k n F k n F a t t t t a ----+ === else ) ()() 1(;;2211b a k n F k n F b t t t t b ----+ === end 1+=k k en (4) 当进行至1-=n k 时, )(21 21b a t t += = 这就无法借比较函数值)(1t f 和)(2t f 的大小确定最终区间,为此,取 ⎪⎪⎩⎪⎪⎨ ⎧ -++=+=))(21()(2112a b a t b a t ε 其中ε为任意小的数。在1t 和2t 这两点中,以函数值较小者为近似极小点,相应的函数值为近似极小值。并得最终区间],[1t a 或],[2b t 。 由上述分析可知,斐波那契法使用对称搜索的方法,逐步缩短所考察的区间,它能以尽量少的函数求值次数,达到预定的某一缩短率。 (三)三点二次插值法: 1、算法原理 该算法在搜索区间中不断用低次(通常不超过三次)插值多项式来近似目标函数,并逐步用插值多项式的极小点来逼近)(x ϕ的极小点,当函数具有比较好的解析性质时,插值方法比直接方法(如0.618或Fibonacci 法)效果更好。 2、算法步骤 (1)取初始点321ααα<<,计算3,2,1i i i ==),(αϕϕ并满足 )()()(321αϕαϕαϕ<>,置精度要求ε(迭代终止条件)。 (2 ) 计算[]0A 2A 213132321=-+-+-=,)()()(ααϕααϕααϕ ,则置22ϕαϕαα==)(, 停止计算 (3)计算 A 32 2212212312322ϕααϕααϕααα)()()(-+-+-= 若1αα<或)),((33ααααα∉>则置22,ϕϕαα== 停止计算 (4)计算)(αϕϕ=,若εαα<-2停止计算(α作为极小点) (5)如果),(32ααα∈ 则 若,2ϕϕ<则置:αϕααϕϕαα====222121,,,否则置ϕϕαα==33,; 否则),(21ααα∈则 若,2ϕϕ<则置:αϕααϕϕαα====222323,,,否则置ϕϕαα==11,。 (6)转(2) 三、实验内容: 1. 0.618法的MATLAB 实现 2. Fibonacci 法的MATLAB 实现 3.二次插值法的MATLAB 实现 四、实验过程: 1.0.618法的函数: function [x,minf] = minHJ(f,a,b,eps) if nargin == 3 eps = 1.0e-6; end 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;