Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ranocha opened this issue Jun 13, 2023 · 0 comments
Open

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

ranocha opened this issue Jun 13, 2023 · 0 comments

Comments

@ranocha
Copy link
Owner

ranocha commented Jun 13, 2023

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant