Skip to content

Methods

We offer several methods for solving the nonlinear algebraic equations that arise from the harmonic balance procedure. Each method has different tradeoffs between speed, robustness, and completeness.

Total Degree Method

HarmonicBalance.TotalDegree Type
julia
TotalDegree

The Total Degree homotopy method performs a homotopy H(x,t)=γtG(x)+(1t)F(x) from the trivial polynomial system F(x)=xd+a with the maximal degree d determined by the Bezout bound. The method guarantees to find all solutions, however, it comes with a high computational cost. See HomotopyContinuation.jl for more information.

Fields

  • gamma::Complex: Complex multiplying factor of the start system G(x) for the homotopy

  • thread::Bool: Boolean indicating if threading is enabled.

  • tracker_options::HomotopyContinuation.TrackerOptions: Options for the tracker.

  • endgame_options::HomotopyContinuation.EndgameOptions: Options for the endgame.

  • compile::Union{Bool, Symbol}: Compilation options.

  • seed::UInt32: Seed for random number generation.

source

Polyhedral Method

HarmonicBalance.Polyhedral Type
julia
Polyhedral

The Polyhedral homotopy method constructs a homotopy based on the polyhedral structure of the polynomial system. It is more efficient than the Total Degree method for sparse systems, meaning most of the coefficients are zero. It can be especially useful if you don't need to find the zero solutions (only_non_zero = true), resulting in a speed up. See HomotopyContinuation.jl for more information.

Fields

  • only_non_zero::Bool: Boolean indicating if only non-zero solutions are considered.

  • thread::Bool: Boolean indicating if threading is enabled.

  • tracker_options::HomotopyContinuation.TrackerOptions: Options for the tracker.

  • endgame_options::HomotopyContinuation.EndgameOptions: Options for the endgame.

  • compile::Union{Bool, Symbol}: Compilation options.

  • seed::UInt32: Seed for random number generation.

source

Warm Up Method

HarmonicBalance.WarmUp Type
julia
WarmUp

The Warm Up method prepares a warmup system with the Total Degree method using the parameter at index perturbed by perturbation_size. The warmup system is used to perform a homotopy using all other systems in the parameter sweep. It is very efficient for systems with minimal bifurcation in the parameter sweep. The Warm Up method does not guarantee to find all solutions. See HomotopyContinuation.jl for more information.

Fields

  • warm_up_method::Union{Polyhedral, TotalDegree}: Method used for the warmup system.

  • start_parameters::Union{Nothing, Vector{ComplexF64}}: Start parameters.

  • thread::Bool: Boolean indicating if threading is enabled.

  • tracker_options::HomotopyContinuation.TrackerOptions: Options for the tracker.

  • endgame_options::HomotopyContinuation.EndgameOptions: Options for the endgame.

  • compile::Union{Bool, Symbol}: Compilation options.

  • seed::UInt32: Seed for random number generation.

source