function integ=simpson(h,y,ind_deb,ind_fin)
% calcule de façon simplifiée une intégrale en méthode de simpson
%
% variables d'entrée
% h est le demi-pas d'intégration au sens du cours;
% y est le vecteur des valeurs de la fonction à intégrer;
% ind_deb est l'indice de la borne basse de l'intervalle d'intégration;
% ind_fin est l'indice de la borne haute de l'intervalle d'intégration;
% Il est implicite que le nombre (ind_fin-ind_deb) est un entier pair
% c'est-à-dire que le nombre de points d'intégration est impair.
%
% variables de sortie
% integ est la valeur approchée par Simpson de l'intégrale cherchée
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                       Fonctions connexes appelées
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% Tests d'entrée
if nargin~=4
    error('Nombre de champs incorrect');
end
% controle de données
bool1=(h>0)*(mod(ind_fin-ind_deb,2)==0)*(ind_deb<ind_fin);
bool2=(floor(ind_deb)==ind_deb)*(floor(ind_fin)==ind_fin);
if (bool1*bool2==0)
    error('Problème de paramètres. Voir controle de données');
end
format long e;

% génération des coefficients de Simpson
lgr=ind_fin-ind_deb+1;
coef=2*ones(1,lgr-2);
impairs=1:2:lgr-2; % détermination des indices impairs dans coef
coef(impairs)=coef(impairs)+2;
coef=[1 coef 1]';

% calcul de l'intégrale proprement dite
integ=h/3*y(ind_deb:ind_fin)*coef;
