freealg.AlgebraicForm.branch_points#

AlgebraicForm.branch_points(tol=1e-15, real_tol=None, plot=False, latex=False, save=False, return_info=False)#

Compute global branch points.

Parameters:
tolfloat, default=1e-15

Tolerance of convergence

real_tolfloat, default=None

Tolerance for treating a complex root as real. If None, uses 1e3*tol.

plotbool, default=False

If True, the branch points together with spectral edges and atoms will be plotted.

latexbool, default=False

If True, the plot is rendered using LaTeX. This option is relevant only if plot=True.

savebool, default=False

If not False, the plot is saved. If a string is given, it is assumed to the save filename (with the file extension). This option is relevant only if plot=True.

return_infobool, default=False

If True, debugging info is also returned.

See also

support
atoms

Notes

This function solves the discriminant equation to obtain branch points \(z_{\ast}\). The discriminant \(\Delta(P)\) is solved by

\[P(z_{\ast}, m_{\ast}) = 0, \qquad \partial_m P(z_{\ast}, m_{\ast}) = 0.\]

Examples

>>> # Create a distribution with two bulks
>>> from freealg.distributions import CompoundFreePoisson
>>> cfp = CompoundFreePoisson(t=[2.0,  5.5], w=[0.75, 0.25],
...                           lam=0.1)

>>> # Create AlgebraicForm and fit the distribution
>>> from freealg import AlgebraicForm
>>> af = AlgebraicForm(cfp)
>>> af.fit(deg_m=3, deg_z=1)

>>> # Estimate the branch points (using the fitted polynomial)
>>> bp = af.branch_points()
>>> print(bp)
[6.93519593e+00 3.83043179e+00 3.11397655e+00 1.00372907e+00
 4.39730918e-15]