Skip to content

How to handle re-normalization of B-series #129

@ranocha

Description

@ranocha

Internally, B-series store the coefficients without division by symmetry(t). Sometimes, it can be useful to perform this division explicitly and just use the re-normalized series. However, there are some issues with this since all interfaces assume the default normalization. Some options could be

  1. Just renomalize! and tell everyone that they need to be careful.
  2. Return an array of normalized coefficients - but we lose the direct association with trees in this case.
  3. Add another field to the existing implementation(s) of B-series like normalized::Bool defaulting to true. Check this field whenever we perform operations on the B-series and throw an error if required. Change this field to false when renormalize! is called. The function renormalize! could switch between both modes.
  4. Tell people that they need to renormalize the coefficients themselves. That's essentially what we are doing right now, e.g., in

BSeries.jl/src/BSeries.jl

Lines 361 to 366 in 04b2f99

!!! note "Normalization by elementary differentials"
The coefficients of the B-series returned by this method need to be
multiplied by a power of the time step divided by the `symmetry` of the
rooted tree and multiplied by the corresponding elementary differential
of the input vector field ``f``.
See also [`evaluate`](@ref).

See #117 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions