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

📄 fibonacci.m

📁 化学计量学中利用信息上进行分辨的程序!用到了pso优化算法!可以得到很真实的光谱!
💻 M
字号:
% 斐波那契法求极小值

 %  功能:用斐波那契法求f(x)在区间[a,b]上的近似极小值。当且仅当f(x)在[a,b]上为单峰时次方法适用

%----------------------------------------------------------------------

function X=fibonacci(a,b,tol,e)

% input  - f is the object function input as a string 'f'

%        - a and b are the end points of the interval

%        - tol : length of uncertainy

%        - e :distinguishability of constant

% output - X : x and y coordinates of minimum

%   note : this function calls the m-file fib.m while had been edited 


i=1;

F=1;

while F<=(b-a)/tol

      F=fib(i);

      i=i+1;

end

n=i-1;

A=zeros(1,n-2);B=zeros(1,n-2);

A(1)=a;

B(1)=b;

c=A(1)+(fib(n-2)/fib(n))*(B(1)-A(1));

d=A(1)+(fib(n-1)/fib(n))*(B(1)-A(1));

k=1;

while k==n-3
    
      yc=orient(c);
      yd=orient(d);
      if yc>yd

         A(k+1)=c;

         B(k+1)=B(k);

         c=d;

         d=A(k+1)+(fib(n-k-1)/fib(n-k))*(B(k+1)-A(k+1));

      else

         A(k+1)=A(k);

         B(k+1)=d;

         d=c;

         c=A(k+1)+(fib(n-k-2)/fib(n-k))*(B(k+1)-A(k+1));

      end

      k=k+1;

end
 yc=orient(c);
 yd=orient(d);
if yc>yd

   A(n-2)=c;

   B(n-2)=B(n-3);

   c=d;

   d=A(n-2)+(0.5+e)*(B(n-2)-A(n-2));

else 

   A(n-2)=A(n-3);

   B(n-2)=d;

   d=c;

   c=A(n-2)+(0.5+e)*(B(n-2)-A(n-2));

end

yc=orient(c);
yd=orient(d);
if yc>yd

   a=c;

   b=B(n-2);

else

   a=A(n-2);

   b=d;

end
y=orient((a+b)/2);
X=[(a+b)/2 y];


⌨️ 快捷键说明

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