%
% Simulation de la rage : 20.12 p 661 de Murray (Springer)
% on voit apparaître des ondes progressives qui se deplacent vers
% les zones encore non infectées 
%

%
% Définition du pas spatial.
% 

Nombremaille = 100
dt = 0.5
Longueur = 50
dx=Longueur/Nombremaille
lambda=0.5;

%
% Initialisation des valeurs de S et R : on prend S=1 et R=0, 
% sauf pour un petite zone au milieu ou l'on introduit quelques malades.
% Pour avoir quelquechose de continu, on introduit une fonction "tente".
%

for I=1:Nombremaille,
        S(I)=1;
        R(I)=0;
end

for I=(Nombremaille-10)/2:(Nombremaille+10)/2,
        R(I)=0.1*abs(1 - abs(I-Nombremaille/2)/5);
end

%
% Matrice du laplacien
% (diffusion traitee de facon implicite)
%

A='';
for I=2:Nombremaille-1,
        A(I,I)=-2;
        A(I-1,I)=1;
        A(I+1,I)=1;
end

A(1,1)=-1;
A(2,1)=1;
A(Nombremaille,Nombremaille)=-1;
A(Nombremaille-1,Nombremaille)=1;

AA = eye(Nombremaille) - A*(dt/(dx^2));

B = inv(AA);

%
% Boucle de calcul
%

for J=1:100000,

%
% Etape reaction (équation différentielle ordinaire), 
% traitée par la méthode d'Euler explicite. 
%

for I=1:Nombremaille,
        dS=-S(I)*R(I);
        S(I)=S(I)+dt*dS;
        R(I)=R(I)-dt*dS-dt*lambda*R(I);
end

%
% Etape de diffusion
%

R= (B*R')';

%
% Affichage de S et de R
%

clf
plot(S);
axis([0 100 0 1]);
hold on
plot(R,'green');
drawnow

end


