Documentation

# psi

Digamma function

## Syntax

``psi(x)``
``psi(k,x)``

## Description

example

````psi(x)` computes the digamma function of `x`.```

example

````psi(k,x)` computes the polygamma function of `x`, which is the `k`th derivative of the digamma function at `x`.```

## Examples

### Compute Digamma and Polygamma for Numeric Inputs

Compute the digamma and polygamma functions for these numbers. Because these numbers are not symbolic objects, you get the floating-point results.

`[psi(1/2) psi(2, 1/2) psi(1.34) psi(1, sin(pi/3))]`
```ans = -1.9635 -16.8288 -0.1248 2.0372```

### Compute Digamma and Polygamma for Symbolic Inputs

Compute the digamma and polygamma functions for the numbers converted to symbolic objects.

`[psi(sym(1/2)), psi(1, sym(1/2)), psi(sym(1/4))]`
```ans = [ - eulergamma - 2*log(2), pi^2/2, - eulergamma - pi/2 - 3*log(2)]```

For some symbolic (exact) numbers, `psi` returns unresolved symbolic calls.

`psi(sym(sqrt(2)))`
```ans = psi(2^(1/2))```

### Compute Derivatives of Digamma and Polygamma Functions

Compute the derivatives of these expressions containing the digamma and polygamma functions.

```syms x diff(psi(1, x^3 + 1), x) diff(psi(sin(x)), x)```
```ans = 3*x^2*psi(2, x^3 + 1) ans = cos(x)*psi(1, sin(x))```

### Expand Digamma and Polygamma Functions

Expand the expressions containing the digamma functions.

```syms x expand(psi(2*x + 3)) expand(psi(x + 2)*psi(x))```
```ans = psi(x + 1/2)/2 + log(2) + psi(x)/2 +... 1/(2*x + 1) + 1/(2*x + 2) + 1/(2*x) ans = psi(x)/x + psi(x)^2 + psi(x)/(x + 1)```

### Limit of Digamma and Polygamma Functions

Compute the limits for expressions containing the digamma and polygamma functions.

```syms x limit(x*psi(x), x, 0) limit(psi(3, x), x, inf)```
```ans = -1 ans = 0```

### Compute Digamma for Matrix Input

Compute the digamma function for elements of matrix `M` and vector `V`.

```M = sym([0 inf; 1/3 1/2]); V = sym([1, inf]); psi(M) psi(V)```
```ans = [ Inf, Inf] [ - eulergamma - (3*log(3))/2 - (pi*3^(1/2))/6, - eulergamma - 2*log(2)] ans = [ -eulergamma, Inf]```

### Compute Polygamma for Matrix Input

Compute the polygamma function for elements of matrix `M` and vector `V`. The `psi` function acts elementwise on nonscalar inputs.

```M = sym([0 inf; 1/3 1/2]); polyGammaM = [1 3; 2 2]; V = sym([1, inf]); polyGammaV = [6 6]; psi(polyGammaM,M) psi(polyGammaV,V)```
```ans = [ Inf, 0] [ - 26*zeta(3) - (4*3^(1/2)*pi^3)/9, -14*zeta(3)] ans = [ -720*zeta(7), 0]```

Because all elements of `polyGammaV` have the same value, you can replace `polyGammaV` by a scalar of that value. `psi` expands the scalar into a nonscalar of the same size as `V` and computes the result.

```V = sym([1, inf]); psi(6,V)```
```ans = [ -720*zeta(7), 0]```

## Input Arguments

collapse all

Input, specified as a symbolic number, variable, expression, or array, or expression.

Input, specified as a nonnegative integer or vector, matrix or multidimensional array of nonnegative integers. If `x` is nonscalar and `k` is scalar, then `k` is expanded into a nonscalar of the same dimensions as `x` with each element being equal to `k`. If both `x` and `k` are nonscalars, they must have the same dimensions.

collapse all

### Digamma Function

The digamma function is the first derivative of the logarithm of the gamma function:

`$\psi \left(x\right)=\frac{d}{dx}\mathrm{ln}\Gamma \left(x\right)=\frac{{\Gamma }^{\prime }\left(x\right)}{\Gamma \left(x\right)}$`

### Polygamma Function

The polygamma function of the order k is the (k + 1)th derivative of the logarithm of the gamma function:

`${\psi }^{\left(k\right)}\left(x\right)=\frac{{d}^{k+1}}{d{x}^{k+1}}\mathrm{ln}\Gamma \left(x\right)=\frac{{d}^{k}}{d{x}^{k}}\psi \left(x\right)$`

## Tips

• Calling `psi` for a number that is not a symbolic object invokes the MATLAB® `psi` function. This function accepts real nonnegative arguments `x`. If you want to compute the polygamma function for a complex number, use `sym` to convert that number to a symbolic object, and then call `psi` for that symbolic object.

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