工程数学实验1

发布时间 2023-05-04 11:22:38作者: wrf12

代码: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