function [e,ret]=estim2(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) alors ret=0 et e=0
%            Si sigma > max(satac(:,2) alors on interpole 
%            avec les deux derniers points de données

%---- 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
    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;
%-----------------
if sigm==sigmamin
    % vérifie que la position est bien la dernière valeur
    e=Datac(1,1)% on affecte la première valeur
    ret=1
end;
%-----------------    
if (sigm<sigmamin)% pour les valeurs < sigmanim, on ne fait pas de calcul
    ret=0;
    e=0;
end
%-----------------
if (sigm>sigmamax)% pour sigm > sigmanmax , interpolation avec les derniers points
    ret=1;
    Deltasfin=Datac(end,2)-Datac(end-1,2); % pour calcul de pente
    Deltaepsfin=Datac(end,1)-Datac(end-1,1);
    e=Datac(end,1)+(Deltaepsfin/Deltasfin)*(sigm-Datac(end,2))
end
%-----------------


    
    