function [x,w]=lgwt(N,a,b)
% Calcula los N nodos y pesos de Gauss-Legendre en el intervalo [a,b]
%   para el cálculo de integrales definidas.
% Si se quiere calcular la integral de f(x) es ese intervalo
%    calcular el valor de f(x) en todos los puntos del vector x.
%    La integral es sum(f.*w);
 N=N-1; N1=N+1; N2=N+2; xu=linspace(-1,1,N1)';
 y =cos((2*(0:N)'+1)*pi/(2*N+2))+(0.27/N1)*sin(pi*xu*N/N2);
 L =zeros(N1,N2);               % Legendre-Gauss Vandermonde Matrix
 Lp=zeros(N1,N2);               % Derivative of LGVM
 % Calcular ceros del Polinomio de Legendre de orden N+1 
 %  mediate Newton-Raphson
 y0=2;                      
 while max(abs(y-y0))>eps   % Tolerancia de nuevos puntos: eps    
    L(:,1) =1; Lp(:,1)=0;
    L(:,2) =y; Lp(:,2)=1;
    for k=2:N1
       L(:,k+1)=((2*k-1)*y.*L(:,k)-(k-1)*L(:,k-1))/k;
    end
    Lp = (N2)*( L(:,N1)-y.*L(:,N2) )./(1-y.^2);   
    y0 = y; y  = y0-L(:,N2)./Lp;
 end
 x=(a*(1-y)+b*(1+y))/2;                 % Pasar de [-1,1] to [a,b]  
 w=(b-a)./((1-y.^2).*Lp.^2)*(N2/N1)^2;  % Calculos de pesos
end