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