Full Normal Forms
The normal module provides full normal form computations for complete dynamical reduction.
_lie_transform()
The _lie_transform()
function performs full Lie series normalization of polynomial Hamiltonian.
- hiten.algorithms.hamiltonian.normal._lie._lie_transform()[source]
Perform full Lie series normalization of polynomial Hamiltonian.
Eliminates all non-resonant terms using the complete resonance condition (k, omega) = 0, producing the maximally simplified canonical form.
- Parameters:
point (object) – Linear dynamics object with linear_modes attribute containing (lambda, omega1, omega2) frequency values.
poly_init (List[ndarray]) – Initial polynomial Hamiltonian coefficients by degree.
psi (ndarray) – Combinatorial lookup table from polynomial indexing.
clmo (ndarray) – Coefficient layout mapping objects.
degree (int) – Maximum polynomial degree to include.
tol (float, optional) – Tolerance for cleaning small coefficients. Default is 1e-30.
resonance_tol (float, optional) – Tolerance for identifying resonant terms. Default is 1e-14.
- Returns:
poly_trans (List[ndarray]) – Fully normalized Hamiltonian containing only resonant terms.
poly_G_total (List[ndarray]) – Complete generating function for the normalization.
poly_elim_total (List[ndarray]) – Eliminated terms at each degree.
- Return type:
Notes
Uses the full resonance condition (k, omega) = 0 where k is the multi-index and omega = [lambda, -lambda, i*omega1, -i*omega1, i*omega2, -i*omega2].
Differs from partial normal form by eliminating all non-resonant terms rather than just those with k[0] != k[3]. May encounter small divisor problems for nearly resonant terms.
See also
_select_nonresonant_terms()
Term selection
_lie_transform()
Partial version
_select_nonresonant_terms()
The _select_nonresonant_terms()
function identifies non-resonant terms using full resonance condition.
- hiten.algorithms.hamiltonian.normal._lie._select_nonresonant_terms()[source]
Identify non-resonant terms using full resonance condition.
JIT-compiled function that selects terms for elimination based on the complete frequency analysis (k, omega) = 0.
- Parameters:
p_n (ndarray) – Coefficient array for homogeneous terms of degree n.
n (int) – Degree of the homogeneous terms.
omega (ndarray, shape (6,)) – Frequency vector [lambda, -lambda, i*omega1, -i*omega1, i*omega2, -i*omega2].
clmo (ndarray) – Coefficient layout mapping objects.
resonance_tol (float, optional) – Tolerance for identifying resonant terms. Default is 1e-14.
- Returns:
Coefficient array with only non-resonant terms.
- Return type:
ndarray
Notes
A term with multi-index k = [k0, k1, k2, k3, k4, k5] is resonant if:
(k, omega) = (k3-k0)*lambda + (k4-k1)*i*omega1 + (k5-k2)*i*omega2 ~ 0
Unlike partial normalization (k[0] = k[3]), this considers all frequency combinations for more complete term elimination.
See also
_decode_multiindex()
Multi-index decoding
_select_terms_for_elimination()
Partial version