最优化方法实验报告(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档