黄金分割法matlab带图
时间: 2023-11-02 15:04:09 浏览: 134
黄金分割法的matlab实现
以下是使用MATLAB编写黄金分割法的代码,以求解函数f(x)=xx 2x在区间[-3,5]上的最小值:
% 定义目标函数
fun = @(x) x.^2 - 2.*x;
% 定义黄金分割法的参数
a = -3; % 区间左端点
b = 5; % 区间右端点
tol = 1e-6; % 精度要求
tau = (sqrt(5)-1)/2; % 黄金分割比例
% 迭代计算
x1 = a + (1 - tau) * (b - a);
x2 = a + tau * (b - a);
while abs(b-a) > tol
if fun(x1) > fun(x2)
a = x1;
x1 = x2;
x2 = a + tau * (b - a);
else
b = x2;
x2 = x1;
x1 = a + (1 - tau) * (b - a);
end
end
% 输出最小值和最优解
fprintf('最小值:%f\n',fun((a + b)/2));
fprintf('最优解:%f\n',(a + b)/2);
% 绘制优化过程
x = linspace(-3,5,100);
y = fun(x);
figure;
plot(x,y,'LineWidth',1.5);
hold on;
scatter((a + b)/2,fun((a + b)/2),'Filled');
title('黄金分割法优化过程');
xlabel('x');
ylabel('f(x)');
<引用> 为了更好地理解优化过程,请参考下方的图片链接[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aEvsbss4-1681119931216)(null)]。
阅读全文