Source code for chaospy.expansion.legendre

import numpy
import chaospy


[docs]def legendre( order, lower=-1, upper=1, physicist=False, normed=False, retall=False, ): """ Examples: >>> polynomials, norms = chaospy.expansion.legendre(3, retall=True) >>> polynomials.round(5) polynomial([1.0, q0, q0**2-0.33333, q0**3-0.6*q0]) >>> norms array([1. , 0.33333333, 0.08888889, 0.02285714]) >>> chaospy.expansion.legendre(3, physicist=True).round(3) polynomial([1.0, 1.5*q0, 2.5*q0**2-0.556, 4.375*q0**3-1.672*q0]) >>> chaospy.expansion.legendre(3, lower=0, upper=1, normed=True).round(3) polynomial([1.0, 3.464*q0-1.732, 13.416*q0**2-13.416*q0+2.236, 52.915*q0**3-79.373*q0**2+31.749*q0-2.646]) """ multiplier = 1.0 if physicist: multiplier = numpy.arange(1, order + 1) multiplier = (2 * multiplier + 1) / (multiplier + 1) _, [polynomials], [norms] = chaospy.recurrence.analytical_stieltjes( order, chaospy.Uniform(lower, upper), multiplier=multiplier ) if normed: polynomials = chaospy.true_divide(polynomials, numpy.sqrt(norms)) norms[:] = 1.0 return (polynomials, norms) if retall else polynomials