function [e,ret]=estim1(Datac,sigm)

% retourne la valeur de epsilon correspondante 
% à une valeur de sigm par interpolation linéaire 
% des données contenues dans datac 
% (2 colonnes : epsilon <tab> sigma).
%
%----------------------
% Paramètres de sortie
%----------------------
% e: valeur de epsilon estimée par interpolation linéaire
% ret: 0 si on ne peut pas faire l'interpolation, 1 si OK
%----------------------
% Paramètres d'entrée
%----------------------
% Datac: tableau 2 colonnes: 
%       Datac(:,1) déformation, 
%       Datac(:,2) contrainte
% sigm: contrainte pour laquelle on souhaite estimer la déformation.
%-------------------------------------------------------------------
% Remarque: Si sigma < min(datac(:,2)) ou Si sigma > max(Datac(:,2))alors ret=0 et e=0
%             
%---- Implémentation------------------------------------------------
e=0;n=-1;ret=0;

%Recherche du minimum et du maximum des valeurs de datac
sigmamax=max(Datac(:,2))
sigmamin=min(Datac(:,2));

%-----------------
if (sigm>sigmamin) & (sigm<sigmamax)  
    n=-1;  % recherche de la position de sigm dans le tableau Datac, entre n et n+1
    for i=[1:length(Datac(:,2))-1]
        if (Datac(i,2)<sigm) 
            n=i;
        end
    end
    ret=1;
    % interpolation linéaire entre n et n+1
    Deltasigma=Datac(n+1,2)-Datac(n,2);
    Deltaepsilon=Datac(n+1,1)-Datac(n,1);
    e=Datac(n,1)+(Deltaepsilon/Deltasigma)*(sigm-Datac(n,2));
end
%-----------------
if (sigm>sigmamax) | (sigm<sigmamin)
    ret=0;
    e=0;
end


if sigm==sigmamax
    n=-1;  % vérifie que la position est bien la dernière valeur
    n=find(Datac(:,2)==sigmamax)
    if n==length(Datac(:,2)) 
        e=Datac(n,1);% on affecte la dernière valeur
        ret=1;
    else
        e=0;
        ret=0;
    end;
end;
