samedi 12 novembre 2016

méthode de fibonacci en matlab

Introudiction

Le codage de Fibonacci est un codage entropique utilisé essentiellement en compression de données. Il utilise les nombres de la suite de Fibonacci, dont chaque terme est la somme des deux termes consécutifs précédents, ce qui lui confère une robustesse aux erreurs.
Le code de Fibonacci produit est un code préfixe et universel. Dans ce code, la séquence « 11 » apparaît uniquement en fin de chaque nombre encodé, et sert ainsi de délimiteur.

Programmer en matlab 


clear all ;
close all ;
clc ;
f=inline('sqrt(exp((x-0.5).^2))-x');
n=15;
a=-2;
d=3;
F=zeros(1,n); F(1)=1; F(2)=1;
for i=3:n
    F(i)=F(i-1)+F(i-2);
end

for i=1:1:n-1
 d1=abs(d-a);
 d2=d1*F(n-i)/F(n-i+1);
 c=a+d2;
 b=d-d2;
    f1=f(a); f2=f(b); f3=f(c); f4=f(d);
   if f1 < f2 && f2 < f3 && f3 < f4
     a=a; d=b;
    end
    if f1 > f2 && f2 < f3 && f3 < f4
        a=a ; d=c ;
    end
    if f1 > f2 && f2 > f3 && f3 < f4
        a=b ; d=d ;
       
       end
    if f1 > f2 && f2 > f3 && f3 > f4
        a=c ; d=d ;
       
        end
  
   x=[a,  d];
    disp(x);
    % affichage de l'optimisation
    fplot(f,[-2 3]);
    hold all;
    plot(a,f(a),'r+'); plot(d,f(d),'ro');
    xlabel('x'), ylabel('f');
    title(['iteration N°=',int2str(i),', xmin=',num2str(d),', f(xmin)=',num2str(f(d))]);
        hold off;
        grid on;
        pause (1)
        % fin d'afichage
        end
        fprintf( 'le min de la fonction f=%2.4f\n',f(c));

résultat :
-0.0902    3.0000

   -0.0902    1.8197

    0.6393    1.8197

    1.0902    1.8197

    1.0902    1.5410

    1.0902    1.3689

    1.1967    1.3689

    1.1967    1.3033

    1.2377    1.3033

    1.2377    1.2787

    1.2377    1.2623

    1.2459    1.2623

    1.2459    1.2623

    1.2459    1.2623

le min de la fonction f=0.0749