题目;
上机实验一:黄金分割法(0.618法)程序设计
1、基本要求
通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。
2、主要内容
(1)请用0.618法求解优化问题:
的极小点和极小值(进退法确定初始区间),精度为10-6;
(2)根据0.618法算法步骤编写Matlab的程序实现0.618搜索法;
(3)要求输出内容包括:极小点、极小值、每次迭代的a、b、al、ak的值;
(4)按照模板撰写实验报告,要求规范整洁。
3、操作要点
(1)学习MATLAB基础编程知识;
(2)认真学习0.618法算法步骤,编写MATLAB程序golds函数;
(3)调用golds函数,输入题目参数;
(4)撰写实验报告。
4、主要仪器设备
微机及Matlab软件。
代码:
function [xmin, ymin] = golds(f, a, b, tol)
goldenRatio = (sqrt(5) - 1) / 2;
if f(a) > f(b) % È·±£a´¦º¯ÊýֵСÓÚb´¦£¬±ãÓÚºóÐøÅжÏ
temp = a;
a = b;
b = temp;
end
c = b - goldenRatio * (b - a);
d = a + goldenRatio * (b - a);
while abs(b - a) > tol
if f(c) < f(d)
b = d;
d = c;
c = b - goldenRatio * (b - a);
else
a = c;
c = d;
d = a + goldenRatio * (b - a);
end
end
xmin = (a + b) / 2;
ymin = f(xmin);
end
3. 结果
>> f = @(x) x^2 - 4*x + 3; % 定义目标函数
a = -10; b = 10; % 初始搜索区间
tol = 1e-6; % 精度要求
[xmin, ymin] = golds(f, a, b, tol);
fprintf('极小点 = %f, 极小值 = %f\n', xmin, ymin);
极小点 = 2.000000, 极小值 = -1.000000
标签:5.1,0.618,golds,tol,goldenRatio,xmin,ymin From: https://www.cnblogs.com/szm123/p/18256999