function [eta1,eta2]=verifie_nullite_gauss(c,n)


%	verifie_nullite_gauss : calcul de l'orthogonalité et de la normalisation des polynômes calculés numériquement
%
% *********************************************************
%
%	[eta1,eta2]=verifie_nullite_gauss(c,n) : 
%        vérifie numériquement que les polynômes de Gauss P_0, ..., P_n
%        sont orthogonaux avec la condition de normalité :
%            P_r(1)=1 pour Legendre et Tchebytchev
%            P_r(0)=1 pour Laguerre
%            le coefficient domimant de P_r est 2^{r} pour Hermite
%
%	variables d'entrées : 
%    *  n : entier naturel.
%     * c définit la méthode : 
%            c=1 : Gauss-Legendre,
%            c=2 : Gauss-Tchebytchev,
%            c=3 : Gauss-Hermite,
%            c=4 : Gauss-Laguerre.
%	variables de sortie
%   *   eta1= max_{0<=r<=n} |P_r(1)-1| pour Legendre et Tchebychev
%       eta1= max_{0<=r<=n} |P_r(0)-1| pour Laguerre
%       eta1= max_{0<=r<=n} |2^r-coefficient dominant(P_r)|=0 pour Hermite
%          et 
%       eta2=max_{0<=r,s<=n, r~=s}|<P_r,P_s>|
%              (calculé par intégration en symbolique)
%
%   eta1 et eta2 doivent être nuls.
%
% 
% ************ Fonctions auxiliaires utilisées ************
%
%    calcul_poly_gauss
%
% *********************************************************


% Contrôles d'entrée
% nombre d'arguments
if nargin~=2
   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
if ~((c==1) | (c==2) | (c==3) | (c==4))
   error('c doit être un entier égal à 1, 2, 3 ou 4');
end

% Corps d'algorithme.
P=calcul_poly_gauss(c,n);
ermax=0;
if (c==1) | (c==2)
   for r=0:n
      er=abs(polyval(P(r+1,1:r+1),1)-1);
      ermax=max(er,ermax);
   end
end
if (c==3)
   for r=0:n
      er=abs(P(r+1,1)-2^r);
      ermax=max(er,ermax);
   end
end
if (c==4) 
   for r=0:n
      er=abs(polyval(P(r+1,1:r+1),0)-1);
      ermax=max(er,ermax);
   end
end
eta1=ermax;
syms x a b;
switch c
   case 1
      a=sym(-1);
      b=sym(1);
      w=sym(1);      
   case 2
      a=sym(-1);
      b=sym(1);
      w=1/sqrt(1-x^2);      
   case 3
      a=-sym(inf);
      b=sym(inf);
      w=exp(-x^2);
   case 4
      a=sym(0);
      b=sym(+inf);
      w=exp(-x);
end     
ermax=0;
for r=0:n
   for s=0:r-1
      R=conv(P(r+1,1:r+1),P(s+1,1:s+1));
      f=poly2sym(R);
      er=double(abs(simplify(int(f*w,a,b))));
      ermax=max(er,ermax);
   end
end
eta2=ermax;
