François Tassin / Guillaume Dutertre
BE 2 – Mouvement
%on limite à 50 itérations, on peut ainsi mettre eps=0 sans risque de durer
indéfiniment
for i=1:M
for j=1:N
if i==1
if j==1
u=0.5*(U(1,2)+U(2,1));
v=0.5*(V(1,2)+V(2,1));
elseif j==N
u=0.5*(U(1,N-1)+U(2,N));
v=0.5*(V(1,N-1)+V(2,N));
else
u=0.33*(U(1,j-1)+U(1,j+1)+U(2,j));
v=0.33*(V(1,j-1)+V(1,j+1)+V(2,j));
end
elseif i==M
if j==1
u=0.5*(U(M,2)+U(M-1,1));
v=0.5*(V(M,2)+V(M-1,1));
elseif j==N
u=0.5*(U(M,N-1)+U(M-1,N));
v=0.5*(V(M,N-1)+V(M-1,N));
else
u=0.33*(U(M,j-1)+U(M,j+1)+U(M-1,j));
v=0.33*(V(M,j-1)+V(M,j+1)+V(M-1,j));
end
elseif j==1
u=0.33*(U(i+1,1)+U(i-1,1)+U(i,2));
v=0.33*(V(i+1,1)+V(i-1,1)+V(i,2));
elseif j==N
u=0.33*(U(i+1,N)+U(i-1,N)+U(i,N-1));
v=0.33*(V(i+1,N)+V(i-1,N)+V(i,N-1));
else
u=0.25*(U(i-1,j)+U(i+1,j)+U(i,j-1)+U(i,j+1));
v=0.25*(V(i-1,j)+V(i+1,j)+V(i,j-1)+V(i,j+1));
%on calcule l'approximation du champ de vecteur à partir de l'itération
précédente
end
alpha=((Ix(i,j)*u+Iy(i,j)*v+It(i,j))/(1+lambda*(Ix(i,j)^2+Iy(i,j)^2)))*lamb
da;
U2(i,j)=u-alpha*Ix(i,j);
V2(i,j)=v-alpha*Iy(i,j);
%calcul des nouvelles valeurs de U et V à partir de l'approximation
calculée, corrigée par le terme alpha
end
end
norme=norm([U2 V2]-[U V]);
%calcul de la différence avec l'itération précédente
U=U2;
V=V2;
%affectation des nouvelles valeurs à U et V
k=k+1;
%le compteur d'itération augmente de 1.
end
for i=1:M
for j=1:N
if (rem(i,8)==0)&(rem(j,8)==0)
ua(i/8,j/8)=U(i,j);
va(i/8,j/8)=V(i,j);