⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fabo.m

📁 我学着用matlab编写的用来解最优化问题的fabonacci程序
💻 M
字号:
%p,q是区间fun为函数名delta为最终区间长度
%以下是用fabunacci法求使函数的最小值的x
function p=fabo(p,q,fun,delta)
a(1)=p;
b(1)=q;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%首先计算出迭代次数n的值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f(1)=1;
f(2)=1;
n=2;
while(f(n)<(q-p)/delta)
    n=n+1;
    f(n)=f(n-1)+f(n-2);
end
n
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:n-2
    lamda(k)=a(k)+(f(n-k-1)/f(n-k+1))*(b(k)-a(k));
    miu(k)  =a(k)+(f(n-k)/f(n-k+1))*(b(k)-a(k));
    fylamda=feval(fun,lamda(k));
    fymiu  =feval(fun,miu(k));
    if fylamda>fymiu
        a(k+1)=lamda(k);
        b(k+1)=b(k);
    else
        a(k+1)=a(k);
        b(k+1)=miu(k);
    end
end
if fylamda>fymiu
    p=miu(n-2);
    fmin=fymiu
else
    p=lamda(n-2);
    fmin=fylamda
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -