Skip to main content
`Ctrl`+`K`
scipy.special.

# sh_jacobi

scipy.special.sh_jacobi(n, p, q, monic=False)

  Shifted Jacobi polynomial.

  Defined by

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

  where \(P_n^{(\cdot, \cdot)}\) is the nth Jacobi polynomial.

  Parameters:
    n int

      Degree of the polynomial.

    p float

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

    q float

      Parameter, must be greater than 0.

    monic bool, optional

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

  Returns:
    G orthopoly1d

      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}\).

  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()