📄 fabo.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 + -