# Simplify Jacobi Polynomials

How can I force Mathematica to use the identities satisfied by Jacobi polynomials $$(1-\cdot)P_n^{(\alpha+1,\beta)} = \frac{2}{2n+\alpha+\beta+2}\left((n+\alpha+1)P_n^{(\alpha,\beta)}-(n+1)P_{n+1}^{(\alpha,\beta)}\right)$$ $$(1+\cdot)P_n^{(\alpha,\beta+1)} = \frac{2}{2n+\alpha+\beta+2}\left((n+\beta+1)P_n^{(\alpha,\beta)}+(n+1)P_{n+1}^{(\alpha,\beta)}\right)$$ to simplify expressions involving this polynomials in the sense that it is more preferable to have many Jacobi Polynomials multiplied by constants than a few multiplied by explicit monomials.

By using FullSimplify with Assumptions to tell Mathematica that both $$\alpha$$ and $$\beta$$ are greater than $$-1$$ I still obtain expressions containing products of Jacobi polynomials with $$(1-t)$$ or $$(1+t)$$

Simple example

When I input

FullSimplify[(1 - x) JacobiP[n, \[Alpha]+1, \[Beta], x], Assumptions ->   n \[Element] Integers && n > 0 && \[Alpha] > -1 && \[Beta] > -1 && x \[Element] Reals]


Mathematica just returns

-(-1 + x) JacobiP[n, \[Alpha]+1, \[Beta], x]


whereas I would like to get

2/(2 n + \[Alpha] + \[Beta] + 2) ((n + \[Alpha] + 1) JacobiP[n, \[Alpha], \[Beta], x] - (n + 1) JacobiP[n + 1, \[Alpha], \[Beta], x])

• Please edit your question to include a few simple examples of expressions that you believe should simplify by using this information. – Bob Hanlon May 31 '20 at 0:08
• Thanks for your comment, I added the desired example – Gonzalo Benavides May 31 '20 at 0:23
• It is not clear to me what "simpler" expression you are expecting for the example (i.e., a single Jacobi polynomial) and how it relates to the identities given. – Bob Hanlon May 31 '20 at 0:38
• Mathematica knows this identity, e.g. evaluating FullSimplify[(1 - x) JacobiP[n, a+1, b, x]-2/(2n+a+b+2) ((n+a+1)JacobiP[n, a, b, x]-(n+1)JacobiP[n+1, a, b, x])] yields 0. – Artes May 31 '20 at 0:59
• @BobHanlon I added more detail – Gonzalo Benavides May 31 '20 at 1:03

If you want to put an expression into a specific form, particularly if the desired form is not simpler in the normal sense (i.e., using the default complexity function), it may be easier using replacement rules along with ReplaceAll

Clear["Global*"]


The given identities are equivalent to these rules.

repl = {(1 - t_)*JacobiP[n_, α_, β_, t_] :>
2/(2 n + α + β + 1)*
((n + α)*JacobiP[n, α - 1, β, t] -
(n + 1)*JacobiP[n + 1, α - 1, β, t]),
(1 + t_)*JacobiP[n_, α_, β_, t_] :>
2/(2 n + α + β + 1)*
((n + β)*JacobiP[n, α, β - 1, t] +
(n + 1)*JacobiP[n + 1, α, β - 1, t])};

expr1 = (1 - x) JacobiP[n, α, β, x];

expr2 = expr1 /. repl

(* (1/(1 + 2 n + α + β))2 ((n + α) JacobiP[
n, -1 + α, β, x] - (1 + n) JacobiP[
1 + n, -1 + α, β, x]) *)


Verifying,

expr1 == expr2 // FullSimplify

(* True *)


Similarly,

expr3 = (1 + x) JacobiP[n, α, β, x];

expr4 = expr3 /. repl

(* (1/(1 + 2 n + α + β))2 ((n + β) JacobiP[
n, α, -1 + β, x] + (1 + n) JacobiP[
1 + n, α, -1 + β, x]) *)


Verifying,

expr3 == expr4 // FullSimplify

(* True *)

• Thanks for your detailed and fast answer, I'll give it a try and let you know. – Gonzalo Benavides May 31 '20 at 1:26
• In which order are the rules in 'repl' applied? – Gonzalo Benavides May 31 '20 at 1:27
• A rule is applied only if its LHS (pattern) matches a subexpression. In the examples given, only one rule applies. In more complex expressions they could both apply, they would then be applied sequentially in the order given. For more complex expressions you might also want to look at ReplaceRepeated` – Bob Hanlon May 31 '20 at 1:53