Bonjour,
Je ne sais pas si c'est le bon forum, j'ai hésité entre chimie et informatique. Voici un programme Java sur les taches des léopards.
J'ai essayé de le traduire en Matlab en extrayant les lignes essentielle, afin de bien le comprendre:
****************************** *************
hauteur=100;largeur=100;
Ao=rand(hauteur,largeur)*20;Bo =rand(hauteur,largeur)*20;
An=zeros(hauteur,largeur);Bn=z eros(hauteur,largeur);
attend = waitbar(0,'Please wait...');
niter=2000;
for n=1:niter;
for h=1:hauteur
% on relie les bords pour contruire un tore
hplus1 = h+1;hminus1 = h-1;
if( h == 1 ); hminus1 = hauteur;end;
if( h == hauteur ); hplus1 = 1;end;
for L=1:largeur
Lplus1 = L+1;Lminus1 = L-1;
if( L == 1 ); Lminus1 = largeur;end;
if(L == largeur); Lplus1 = 1;end;
%composant A
CA=2.6;CB=24;
DiA = CA * ( Ao(hplus1,L) - 2.0 * Ao(h,L) + Ao(hminus1,L) ...
+ Ao(h,Lplus1) - 2.0 * Ao(h,L) + Ao(h,Lminus1) );
ReA = Ao(h,L) * Bo(h,L) - Ao(h,L) - 12.0;
An(h,L) = Ao(h,L) + 0.01 * (ReA + DiA);
if( An(h,L) < 0.0 ); An(h,L) = 0.0;end;
% composant B
DiB = CB * ( Bo(hplus1,L) - 2.0 * Bo(h,L) + Bo(hminus1,L)...
+ Bo(h,Lplus1) - 2.0 * Bo(h,L) + Bo(h,Lminus1) );
ReB = 16.0 - Ao(h,L) * Bo(h,L);
Bn(h,L) = Bo(h,L) + 0.01 * (ReB + DiB);
if( Bn(h,L) < 0.0 ); Bn(h,L)=0.0;end;
end;
end;
waitbar(n/niter,attend);
end;
close(attend);
pcolor(An+Bn);shading interp;
****************************** ***********
mais il ne fonctionne pas.
Je ne connais pas le Java et je ne sais pas ce qui m'échappe.
Une idée?
Merci
-----