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.
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]