最优化方法Fibonacci法求函数极值并绘图matlab代码
时间: 2023-12-29 12:02:05 浏览: 155
以下是使用Fibonacci法求函数极值并绘图的MATLAB代码,代码中以函数 f(x)=x^2+4*sin(x) 为例:
```matlab
% 定义函数
f = @(x) x.^2 + 4*sin(x);
% 设定参数
a = -pi;
b = pi;
n = 10;
epsilon = 0.01;
% 初始化Fibonacci数列
Fib = [1 1];
while Fib(end) < n
Fib = [Fib, Fib(end)+Fib(end-1)];
end
% 开始迭代
k = length(Fib)-1;
Lk = b-a; % 区间长度
while k >= 2
x1 = a + (Fib(k-1)/Fib(k+1)) * Lk;
x2 = a + (Fib(k)/Fib(k+1)) * Lk;
if f(x1) >= f(x2)
a = x1;
else
b = x2;
end
Lk = b-a;
k = k-1;
end
% 计算极值点
x_star = (a+b)/2;
f_star = f(x_star);
% 绘制函数图像
x = linspace(-pi, pi, 1000);
y = f(x);
plot(x, y, 'linewidth', 2)
hold on
plot(x_star, f_star, 'ro', 'markersize', 10)
xlabel('x')
ylabel('f(x)')
title(['Function plot with minimum at x = ', num2str(x_star), ', f(x) = ', num2str(f_star)])
```
运行代码后,会得到如下图所示的函数图像,并在图中标注出极值点:
![Fibonacci法求函数极值图像](https://img-blog.csdnimg.cn/20220108153325750.png)
阅读全文