您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > MATLAB用斐波那契求函数极值代码
function[x,minf]=minFBNQ(f,a,b,delta,eps)formatlong;ifnargin==4eps=1.0e-6;endF=ones(2,1);N=(b-a)/eps;c=F(2)-N;n=2;whilec0%求出nn=n+1;F(n)=F(n-1)+F(n-2);c=F(n)-N;endl=a+F(n-2)*(b-a)/F(n);%试探点u=a+F(n-1)*(b-a)/F(n);%试探点k=1;while1fl=subs(f,findsym(f),l);%试探点的函数值fu=subs(f,findsym(f),u);%试探点的函数值ifflfua=l;l=u;u=a+F(n-k-1)*(b-a)/F(n-k);%缩短搜索区间if(k==n-3)break;elsek=k+1;endelseb=u;%改变区间右端点u=l;l=a+F(n-k-2)*(b-a)/F(n-k);%缩短搜索区间if(k==n-3)break;elsek=k+1;endendendifk==100000disp('找不到最小值');x=NaN;minf=NaN;return;endu=l+delta;fl=subs(f,findsym(f),l);fu=subs(f,findsym(f),u);ifflfua=l;elseb=l;endx=(a+b)/2;minf=subs(f,findsym(f),x);formatshort;end
本文标题:MATLAB用斐波那契求函数极值代码
链接地址:https://www.777doc.com/doc-1610077 .html