This .zip file contains 3 mfiles for computing the nodes and weights for Legendre Laguerre and Hermite - Gauss Quadrature of any order n.

Contrary to most of the files in use, the included files are all based on a symmetrical companion matrix, the eigenvalues of which are always real and correspond to the roots of the respective polynomials.

Hence, there is a 100% certainty of avoiding complex roots at high orders. It is known that the latter issue often causes huge numerical troubles.

I added this on the end to refine the eigenvalues via newtons method

if mod(n,2)==1
x(ceil(n/2))=0;
end

z=x(x>=0);
success = false;
for its=1:50 %maxit=50, usually will take 2
p1 = pi^(-1/4);
p2=0;
for j=1:n %make hermite we need
p3=p2;
p2=p1;
p1=z.*sqrt(2/j).*p2-sqrt((j-1)/j).*p3;
end
pp = sqrt(2*n).*p2;
z1=z;
z=z1-p1./pp;
if all(abs(z-z1)< 20*eps)
success = true;
break
end
end
if ~success
warning('failed to converge to desired accuracy')
end
w(x>=0) = 2./pp.^2;
w(x<=0) = flipud(w(x>=0));
x(x>=0) = z;
x(x<=0) = -flipud(z);

How can I calculate the GaussLegendre in the [0 1] space?

Updates

19 Feb 2010

No updates were made. Only the description was changed: it should read "the eigenvalues of the companion matrix" instead of "the roots of the companion matrix". Obviously, a matrix has no roots.