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
- Just
renomalize! and tell everyone that they need to be careful.
- Return an array of normalized coefficients - but we lose the direct association with trees in this case.
- 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.
- Tell people that they need to renormalize the coefficients themselves. That's essentially what we are doing right now, e.g., in
|
!!! 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)
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 berenomalize!and tell everyone that they need to be careful.normalized::Booldefaulting totrue. Check this field whenever we perform operations on the B-series and throw an error if required. Change this field tofalsewhenrenormalize!is called. The functionrenormalize!could switch between both modes.BSeries.jl/src/BSeries.jl
Lines 361 to 366 in 04b2f99
See #117 (comment)