function X=mc_svd(A,B)

[U,S,V] = svd(A,0); %la diagonale de S décroît
r = sum(diag(S) > max(size(A))*max(diag(S))*eps); %r=rank(A) "rang numérique de A"
s=diag(1 ./diag(S(1:r,1:r)));
psinv=V(:,1:r)*s*U(:,1:r)';
X=psinv*B;