freealg.AlgebraicForm.atoms#
- AlgebraicForm.atoms(eta=1e-06, tol=1e-12, real_tol=None, w_tol=1e-10, merge_tol=1e-08)#
Detect atom locations and weights of distribution
This routine uses the necessary condition for a finite pole: a_s(z0)=0, where a_s(z) is the leading coefficient of P in powers of m. Candidate atom locations are the (nearly) real roots of a_s(z). The atom weight is estimated numerically from the Stieltjes transform as
w ~= eta * Im(m(z0 + i*eta)),
which follows from m(z) ~ -w/(z - z0) near an atom at z0.
- Parameters:
- etafloat, default=1e-6
Small imaginary part used to probe the pole strength.
- tolfloat, default=1e-12
Tolerance for trimming polynomial coefficients.
- real_tolfloat or None, default=None
Tolerance for treating a complex root as real. If None, uses
1e3*tol.- w_tolfloat, default=1e-10
Minimum atom weight to report.
- merge_tolfloat, default=1e-8
Merge roots whose real parts differ by at most this tolerance.
- Returns:
- atomslist of (float, float)
List of
(atom_loc, atom_w). Locations are real numbers and weights are nonnegative.
See also