function Iapp=int_gauss(n,points,poids,rcn)

% int_gauss : calcul de l'intégrale par méthode de Gauss à n+1 points
%
% *********************************************************
%
% Iapp=int_gauss(n,points,poids,fcn) : valeur approchée de l'intégrale
%   de la fonction rcn=r=f/w (w poids poids)  sur l'intervalle sous la forme conventionnelle (a,b) avec  
%   l'une des quatre méthodes à n+1 points: 
%   Legendre, Tchebytchev, Hermite ou Laguerre, éventuellement en formel  
%
%
%	variables d'entrées : 
%    *  n : entier naturel.
%     * points : tableau de taille (q+1)*(q+1) (avec n<=q) tel que 
%                pour tout l dans {0,...,q}, points(l+1,1:l+1) contient
%                les l+1 points x_i de la formule (à l+1 points)
%     * poids  : tableau de taille (n+1)*(n+1) tel que 
%                pour tout l dans {0,...,n}, poids(l+1,1:l+1) contient
%                les l+1 poids D_i de la formule (à l+1 points)
%     * rcn est une chaîne de caractère représentant la fonction r=f/w
%                (de type inline, builtin ou par fichier M-file);
%	variables de sortie
%     * Iapp : valeur approchée de l'intégrale de f sur un intervalle conventionnel.
% 
% 
% 
% ************ Fonctions auxiliaires utilisées ************
%
%       aucune
%
% *********************************************************


% Contrôles d'entrée
% nombre d'arguments
if nargin~=4
   error('nombre d''arguments de la fonction incorrect');
end
% autres tests éventuels 
if (fix(n)~=n) | (n<0)
   error('l''entier n doit être un entier naturel');
end
[q1,q2]=size(points);
[q3,q4]=size(poids);
if (q1~=q2)
   error('attention, le troisième argument doit être une matrice carrée');
end
if (q3~=q4)
   error('attention, le quatrième argument doit être une matrice carrée');
end
if (q1~=q3)
   error('attention, le troisième et le quatrième argument doivent avoir la même taille');
end
if (n>q1-1) 
   error('attention, n est trop grand');
end

% Corps d'algorithme.
Iapp=sum(feval(rcn,(points(n+1,1:n+1))).*poids(n+1,1:n+1));
