代码:a = 0;b = 1;
f = @(x) x*x -sin(x);
eps = 0.08; %区间精度 可以修改
while((b - a) >= eps)
x1 = a + 0.382 * (b - a);
x2 = a + 0.618 * (b - a);
disp(['x1 = ',num2str(x1)]);
disp(['x2 = ',num2str(x2)]);
if f(x1) < f(x2)
b = x2;
else
a = x1;
disp(['a = ',num2str(a)]);
disp(['b = ',num2str(b)]);
end
end
x = (a + b) / 2;
disp(['最优解: x = ',num2str(x)]);
disp(['此时: f(x) = ',num2str(f(x))]);
输出结果:x1 = 0.382
x2 = 0.618
x1 = 0.23608
x2 = 0.38192
a = 0.23608
b = 0.618
x1 = 0.38197
x2 = 0.47211
a = 0.38197
b = 0.618
x1 = 0.47213
x2 = 0.52784
x1 = 0.43769
x2 = 0.47212
x1 = 0.41641
x2 = 0.43768
a = 0.41641
b = 0.47212
最优解: x = 0.44426
此时: f(x) = -0.23242