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

📄 fibonacci.m

📁 可以用黄金分割和斐波那契算法实现优化
💻 M
字号:
function yiweishousuo=fibonacci(e)
%a is the left port of area
%b is the right port of area
%e is the precision
tic     %程序运行时间
[a,b]=areafind(0,1,2);

%creat the fabonacci 数列

c=(b-a)/e;            %c为fibonacci数列最大值的下界
f=[];
f(1)=1;
f(2)=1;
inum=3;
while max(f)<c
    f(inum)=f(inum-1)+f(inum-2);
    inum=inum+1;
end
n=inum-2;           %n为应取试点个数

%初始化基本变量
k=0;
x1=a+f(n-1)/f(n+1)*(b-a);
x2=a+f(n)/f(n+1)*(b-a);
g1=g(x1);
g2=g(x2);
xx1=[];
xx1(1,:)=[a b x1 x2 g1 g2];

%迭代求解极值
while k<n-2  
     k=k+1;
     
   if   g1<g2
       
      b=x2;
      x2=x1;
      g2=g1;
      x1=a+f(n-1-k)/f(n+1-k)*(b-a);
      g1=g(x1);
      
   else
       
      a=x1;
      x1=x2;
      g1=g2;
      x2=a+f(n-k)/f(n+1-k)*(b-a);
      g2=g(x2);
      
   end
   
 xx1(k,:)=[a b x1 x2 g1 g2];
 
end

%最后结果 
       x1=x2-0.1*(b-a);
       g1=g(x1);
     switch g1-g2
         case g1>g2
             x0=(x1+b)/2;
         case {0}
             x0=(x1+x2)/2;
         otherwise
             x0=(a+x2)/2;
     end


  xx1(k+1,:)=[a b x1 x2 g1 g2];
  xx1
  x0
  g(x0)
  
  
  %画出函数图像进行对比
  fplot('x^4-2*x+4',[0,2,2.5,4]);
  hold on
  scatter(x0,g(x0),8,'r');
toc
   

⌨️ 快捷键说明

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