Source code for chaospy.expansion.gegenbauer

import numpy
import chaospy


[docs]def gegenbauer( order, alpha, lower=-1, upper=1, physicist=False, normed=False, retall=False, ): """ Gegenbauer polynomials. Args: order (int): The polynomial order. alpha (float): Gegenbauer shape parameter. lower (float): Lower bound for the integration interval. upper (float): Upper bound for the integration interval. physicist (bool): Use physicist weights instead of probabilist. Examples: >>> polynomials, norms = chaospy.expansion.gegenbauer(4, 1, retall=True) >>> polynomials polynomial([1.0, q0, q0**2-0.25, q0**3-0.5*q0, q0**4-0.75*q0**2+0.0625]) >>> norms array([1. , 0.25 , 0.0625 , 0.015625 , 0.00390625]) >>> chaospy.expansion.gegenbauer(3, 1, physicist=True) polynomial([1.0, 2.0*q0, 4.0*q0**2-0.5, 8.0*q0**3-2.0*q0]) >>> chaospy.expansion.gegenbauer(3, 1, lower=0.5, upper=1.5, normed=True).round(3) polynomial([1.0, 4.0*q0-4.0, 16.0*q0**2-32.0*q0+15.0, 64.0*q0**3-192.0*q0**2+184.0*q0-56.0]) """ multiplier = 1 if physicist: multiplier = numpy.arange(1, order + 1) multiplier = 2 * (multiplier + alpha - 1) / multiplier _, [polynomials], [norms] = chaospy.recurrence.analytical_stieltjes( order, chaospy.Beta(alpha + 0.5, alpha + 0.5, lower, upper), multiplier=multiplier, ) if normed: polynomials = chaospy.true_divide(polynomials, numpy.sqrt(norms)) norms[:] = 1.0 return (polynomials, norms) if retall else polynomials