freealg.distributions.FussCatalan#

class freealg.distributions.FussCatalan(p=2)#

Fuss-Catalan (a.k.a. free Bessel / Raney) distribution.

This is the law of squared singular values of a product of \(p\) independent (square) Ginibre matrices in the large-n limit. For \(p=1\) this reduces to the Marchenko–Pastur law with \(c = 1\).

Parameters:
pint, default=2

Order of the Fuss-Catalan distribution. \(p = 1\) is MP (\(c=1\)).

Notes

Let \(p \geq 1\) be an integer. The Stieltjes transform \(m(z)\) of the \(p\)-th Fuss-Catalan distribution solves the algebraic equation

..math:

(-1)^p z^p m(z)^{p+1} - z m(z) - 1 = 0,

where the physical branch is selected by the Herglotz condition Im m(z) > 0 for Im z > 0.

Equivalently, in terms of w(z) = -m(z):

\[z = (1 + w)^{p+1} / w^p.\]

The support is a single interval [0, x_max] with

\[x_max = (p+1)^{p+1} / p^p.\]

(All in the standard normalization where the mean is 1.)

Application:

This law might be applicable to the Jacobian of neural networks.

Methods

density([x, eta, plot, latex, save, eig])

Density of distribution.

roots(z)

Return all algebraic branches at scalar z.

stieltjes(z[, max_iter, tol])

Stieltjes transform

support()

Return the single support interval [0, x_max].

sample(size[, x_min, x_max, method, seed, ...])

Sample from distribution.

matrix(size[, seed])

Generate a PSD random matrix whose ESD approximates Fuss-Catalan(p).

poly()

Return coeffs for the exact polynomial P(z,m)=0.