scipy.special.

sh_jacobi#

scipy.special.sh_jacobi(n, p, q, monic=False)[source]#

Shifted Jacobi polynomial.

Defined by

\[G_n^{(p, q)}(x) = \frac{n!\Gamma(n+p)}{\Gamma(2n+p)} P_n^{(p - q, q - 1)}(2x - 1),\]

where \(P_n^{(\cdot, \cdot)}\) is the n-th Jacobi polynomial. Note that here, in contrast to sh_legendre, sh_chebyt, and sh_chebyu, more than just the argument is shifted. See 22.2.2 in [AS] for details.

Parameters:
nint

Degree of the polynomial.

pfloat

Parameter, must satisfy \(p - q > -1\).

qfloat

Parameter, must be greater than 0.

monicbool, optional

If True, scale the leading coefficient to be 1. Default is False.

Returns:
Gorthopoly1d

Shifted Jacobi polynomial.

Notes

For fixed \(p, q\), the polynomials \(G_n^{(p, q)}\) are orthogonal over \([0, 1]\) with weight function \((1 - x)^{p - q}x^{q - 1}\).

References

[AS]

Milton Abramowitz and Irene A. Stegun, eds. Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. New York: Dover, 1972.

Examples

Evaluate the shifted Jacobi polynomial \(G_3^{(2, 1)}\) at \(x = 0.5\):

>>> import numpy as np
>>> from scipy.special import binom, jacobi, sh_jacobi
>>> np.isclose(sh_jacobi(3, 2, 1)(0.5), -3/280)
True

The polynomial is related to the Jacobi polynomial \(P_n^{(p - q, q - 1)}\):

>>> x = np.linspace(0, 1, 5)
>>> n, p, q = 3, 2, 1
>>> scale = 1 / binom(2*n + p - 1, n)
>>> np.allclose(sh_jacobi(n, p, q)(x),
...             scale * jacobi(n, p - q, q - 1)(2*x - 1))
True

Plot \(G_3^{(p, 1)}\) for several values of \(p\):

>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 1, 400)
>>> fig, ax = plt.subplots()
>>> for p in [1, 2, 3]:
...     ax.plot(x, sh_jacobi(3, p, 1)(x), label=rf"$p={p}$")
>>> ax.set_title(r"Shifted Jacobi polynomials $G_3^{(p, 1)}$")
>>> ax.set_xlabel("x")
>>> ax.legend(loc="best")
>>> plt.show()
../../_images/scipy-special-sh_jacobi-1.png