MATLAB之斐波那契
之前在网上看到过很多关于斐波那契算法的文章,我从中吸收了一些知识,觉得对初学者来说很容易理解,再此分享给大家。
一、算法原理
1、引入 我的上一篇博客讲解了黄金分割法,我们以此为突破点,来了解它。 假设函数f(x)的极值坐在区间为(a,b),利用黄金分割点 在区间(a,b)内插入两点: x1=a+0.382*(b-a); x2=a+0.618*(b-a); 其中0.382=3/8,0.618=5/8。这两个数就是斐波那契数列中的数。 2、概念 对于这样的一个数列: 1 1 2 3 5 8…,我们可以发现,2=1+1,3=1+2,5=2+3,8=3+5… 后一个数的值总是前两个数值的和。这样一个数列,我们就称它为斐波那契数列。 3.斐波那契算法 那什么时斐波那契算法呢,我们还是用黄金分割法这个例子来分析, 1、假设函数f(x)的极值坐在区间为(a,b),利用黄金分割点 在区间(a,b)内插入两点: x1=a+0.382*(b-a); x2=a+0.618*(b-a); 2、x1、x2将搜索区间分为三段: 比较f(x1)f(x2)的大小, 若 f(x1) f(x2)
n=n-1; %执行一次,斐波那契数列向前推一个数
x0=x1;
x1=x2;
x2=x0+F(n-1)/F(n)*(x3-x0);
else
n=n-1;
x3=x2;
x2=x1;
x1=x0+F(n-2)/F(n)*(x3-x0);
end
end
x=(x0+x3)/2;
result=f(x);
end
|