Intervalos diferentes para a quadratura de Gauss-Legendre em numpy

Como podemos usar o pacote NumPynumpy.polynomial.legendre.leggauss em intervalos diferentes de[-1, 1]?

O exemplo a seguir comparascipy.integrate.quad ao método Gauss-Legendre no intervalo[-1, 1].

import numpy as np
from scipy import integrate

# Define function and interval
a = -1.
b =  1.
f = lambda x: np.cos(x)

# Gauss-Legendre (default interval is [-1, 1])
deg = 6
x, w = np.polynomial.legendre.leggauss(deg)
gauss = sum(w * f(x))

# For comparison
quad, quad_err = integrate.quad(f, a, b)

print 'The QUADPACK solution: {0:.12} with error: {1:.12}'.format(quad, quad_err)
print 'Gauss-Legendre solution: {0:.12}'.format(gauss)
print 'Difference between QUADPACK and Gauss-Legendre: ', abs(gauss - quad)

Resultado:

The QUADPACK solution: 1.68294196962 with error: 1.86844092378e-14
Gauss-Legendre solution: 1.68294196961
Difference between QUADPACK and Gauss-Legendre:  1.51301193796e-12

questionAnswers(2)

yourAnswerToTheQuestion