实验一 一维搜索算法的程序设计
一、实验目的
1、熟悉一维无约束优化问题的二分法、 算法和牛顿法。
2、培养 matlab 编程与上机调试能力。
二、实验课时:2个课时
三、实验准备
1、预习一维无约束优化问题的二分法实验一 一维搜索算法的程序设计
一、实验目的
1、熟悉一维无约束优化问题的二分法、 算法和牛顿法。
2、培养 matlab 编程与上机调试能力。
二、实验课时:2个课时
三、实验准备
1、预习一维无约束优化问题的二分法、 算法和牛顿法的计算步骤。
2、熟悉 matlab 软件的基本操作。
四、实验内容
课堂实验演示
1、根据二分法算法编写程序,求函数
f (x) = x 2 + 2 x + 2
在区间[-2,1]上的极小值。
二分法如下:
给定区间[a, b ](要求满足f'(a) < 0, f'(b) > 0 )以及精度§ > 0 ;
若b — a < §,则停,输出 x* = (a + b)/2 ;
计算c = (a + b)/2 ;
若 f'(c) < 0,令a = c,返回(2);否则若f'(c) > 0,令b = c ;否则若 f'(c) = 0 ,
则停输出x* = (a + b)/2 ;
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 = xA2+2*x+2;
dy = 2*x+2;
>> delta = -6;
[val,x,iter] = bisection_method(-2,1,delta) val = 1
x = -1
iter = 21
2、根据 算法编写程序,求函数
f (x ) = (sin x )6 tan(1 - x ) e30 x
在区间[0, 1] 上的极大值。
令 g (x) = 一 f (x) = -(sin x)6 tan (1 - x)e30x,则原问题转化为求 min g (x)
x e[g,1 ]
算法如下:
给定区间[a,b],及精度 eps > 0 ;
计算试探点 r = a + ( b 一 a), u = a + 0・618( b 一 a).令k = 1 ;
⑶若b - a < eps,则停止计算,输出x * = (b + a )/2, f * = f (x *);否则,
若 f(r)> f (u)'转⑷;若 f (r) < f (u)'转(5);
令a = r, r =
实验1 一维搜索算法的程序设计 来自淘豆网m.daumloan.com转载请标明出处.