Documentation Center

  • Trial Software
  • Product Updates

psi

Digamma/polygamma function

Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

Syntax

psi(x)
psi(x, n)

Description

psi(x) represents the digamma function, i.e., the logarithmic derivative of the gamma function.

psi(x, n) represents the n-th polygamma function, i.e., the n-th derivative .

psi(x, 0) is equivalent to psi(x).

The digamma/polygamma function is defined for all complex arguments x apart from the singular points 0, - 1, - 2, ….

If x is a floating-point value, then a floating point value is returned.

Simplifications are implemented for rational numbers x. In particular, if x = numer(x)/k with denominators k = 1, 2, 3, 4 or 6, explicit results expressed in terms of EULER, PI, and ln are returned. In general, for any rational x with |x| (n + 1) ≤ 6 Pref::autoExpansionLimit() = 6000 (see Pref::autoExpansionLimit), the functional equation

,

is used to obtain a result with an argument x from the interval . Use expand(psi(x, n)) to obtain such a shift of the argument for larger values of x.

Some explicit formulas are implemented including

,

,

,

.

The special values ψ(∞) = ∞ and for n > 0 are implemented.

For all other arguments, a symbolic function call of psi is returned.

The float attribute of the digamma function psi(x) is a kernel function, i.e., floating-point evaluation is fast. The float attribute of the polygamma function psi(x, n) with n > 0 is a library function. Note that psi(float(x)) and psi(float(x), n) rather than float(psi(x)) and float(psi(x, n)) should be used for float evaluation because, for rational values of x, the computation of the symbolic result psi(x), psi(x, n) may be costly. Further, the float evaluation of the symbolic result may be numerically unstable.

The expand attribute uses the functional equation

,

the nth derivative of the reflection formula

,

and the Gauß multiplication formula for when k is a positive integer, to rewrite psi(x, n). For numerical x, the functional equation is used to shift the argument to the range 0 < x < 1. Cf. examples Example 3 and  Example 4.

Environment Interactions

When called with a floating-point value x, the function is sensitive to the environment variable DIGITS which determines the numerical working precision.

Examples

Example 1

We demonstrate some calls with exact and symbolic input data:

psi(-3/2), psi(4, 1), psi(3/2, 2)

psi(x + sqrt(2), 4), psi(infinity, 5)

Floating point values are computed for floating-point arguments:

psi(-5.2), psi(1.0, 3), psi(2.0 + 3.0*I, 10)

Example 2

psi is singular for nonpositive integers:

psi(-2)
Error: Singularity. [psi]

Example 3

For positive integers and rational numbers x with denominators 2, 3, 4 and 6, respectively, the result is expressed in terms of EULER, PI, ln, and zeta if |x| (n + 1) ≤ 6 Pref::autoExpansionLimit() = 6000:

Pref::autoExpansionLimit()

psi(-5/2), psi(-3/2, 1), psi(13/3, 2), psi(11/6, 4)

For larger arguments, use expand to obtain such expressions:

psi(1001, 5)

expand(%)
     6 8 PI ----- -   63 1335333889555788339877568.../1093808256898006113132296...

Example 4

The functions diff, expand, float, limit, and series handle expressions involving psi:

diff(psi(x^2 + 1, 3), x), float(ln(3 + psi(sqrt(PI))))

expand(psi(2*x + 3, 2))

limit(x*psi(x), x = 0), limit(psi(x, 3), x = infinity)

series(psi(x), x = 0), series(psi(x, 3), x = infinity, 3)

Parameters

x

An arithmetical expression

n

A nonnegative integer

Return Values

Arithmetical expression.

Overloaded By

x

See Also

MuPAD Functions

Was this topic helpful?