实验1 一维搜索算法的程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 一维搜索算法的程序设计
一、实验目的
1、熟悉一维无约束优化问题的二分法、0.618算法和牛顿法。
2、培养matlab 编程与上机调试能力。
二、实验课时:2个课时
三、实验准备
1、预习一维无约束优化问题的二分法、0.618算法和牛顿法的计算步骤。
2、熟悉matlab 软件的基本操作。
四、实验内容
课堂实验演示
1、根据二分法算法编写程序,求函数
2()22f x x x =++
在区间[2,1]-上的极小值。
二分法如下:
(1)给定区间[,]a b (要求满足0)(',0)('>δ;
(2)若δ≤-a b ,则停,输出*()/2x a b =+;
(3)计算()/2c a b =+;
(4)若0)('
function [val,x,iter] = bisection_method(a,b,delta)
iter = 0;
while abs(b-a)>delta
iter = iter+1;
[y,dy] = fun((a+b)/2);
if abs(dy)<= delta
x = (a+b)/2;
val = y;
return;
elseif dy<0
a = (a+b)/2;
else
b = (a+b)/2;
end
end
x = (a+b)/2;
[val,dval] = fun(x);
%%%%%%%%%%%%%%%%%%%%%%% obj function %%%%%%%%%%%%%%%%%%%%%%%%% function [y,dy] = fun(x)
y = x^2+2*x+2;
dy = 2*x+2;
>> delta = 1.0e-6;
[val,x,iter] = bisection_method(-2,1,delta)
val = 1
x = -1
iter = 21
2、根据0.618算法编写程序,求函数
()()()630sin tan 1x f x x x e =-
在区间[0,1]上的极大值。
令()()()()630sin tan 1x g x f x x x e
=-=--,则原问题转化为求[]
()0,1min x g x ∈
0.618算法如下:
(1)给定区间[,]a b ,及精度0eps >;
(2)计算试探点0.382(),0.618()r a b a u a b a =+-=+-. 令1=k ;
(3)若eps a b <-,则停止计算,输出)(,2/)(***x f f a b x =+=;否则,
若()()f r f u >,转(4);若)()(u f r f <,转(5);
(4)令a r =,r u =,计算0.618()u a b a =+-,转(6);
(5)令b u =,u r =,计算0.382()r a b a =+-,转(6);
(6)令1+=k k ,回 (3).
运行结果,如下:
>> a=0,b=1,eps=10^(-5);
[optx,opty,iter]=gold_section_method(a,b,eps) iter =
26
optx =
0.9707
opty =
-4.1086e+010
则[]
()0,1max x f x ∈为 4.1086e+010
其程序如下:
function [optx,opty,iter]=gold_section_method(a,b,eps)
r = a + 0.382*(b-a);
u = a + 0.618*(b-a);
iter = 1;
while (b-a) > eps
if f(r)>= f(u)
a = r;
r = u;
u = a + 0.618*(b-a);
else
b = u;
u = r;
r = a + 0.382*(b-a);
end
iter = iter + 1;
end
optx = ( a + b )/2;
opty = f(optx);
%%%%%%%%%%%%%%%%%%%%%%%obj function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=f(x)
y=-(sin(x))^6*tan(1-x)*exp(30*x);
%%%%%%%%%%%%%%%%%%%%%%%obj function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3、牛顿法的计算步骤为:
(1) 给出初始近似根 0x 及精度ε,令0=k
; (2) 计算 )
(")('0001x f x f x x -=,1+=k k ; (3) 若ε<-01x x ,则转(4);否则 1x 赋予0x ,转向(2);
(4) 输出满足精度的根1x ,结束.
课堂实验任务
1. 编写函数文件,实现二分法,0.618 法,并求解下列问题
1) 求函数2
341243)(x x x x f --=在[]0,1内的极大值 2) 求函数()t t
t e e ψ-=+在[]1,1-内的极小值