Runge-Kutta Elementary Weights #
This file defines Runge-Kutta tableaux and their elementary weights on rooted trees. The recursive stage weights are first defined for planar trees, then shown invariant under child permutations so that they descend to non-planar rooted trees.
Main definitions #
RungeKutta- a Butcher tableau without a fixed stage orderingRungeKutta.stageWeight- recursive stage weight of a planar treeRungeKutta.weight- elementary weight of a planar treeRungeKutta.series- the B-series coefficient family induced by a tableau
References #
- John C. Butcher, Introduction to Runge-Kutta methods
- John C. Butcher, Numerical Methods for Ordinary Differential Equations
A Runge-Kutta tableau with stage type ι and coefficients in R.
- A : ι → ι → R
- b : ι → R
Instances For
A one-stage Runge-Kutta tableau with stage matrix entry a and weight 1.
Equations
- BSeries.RungeKutta.oneStage R a = { A := fun (x x_1 : PUnit.{?u.1 + 1}) => a, b := fun (x : PUnit.{?u.1 + 1}) => 1 }
Instances For
Forward Euler as a one-stage Runge-Kutta tableau.
Equations
Instances For
Backward Euler as a one-stage Runge-Kutta tableau.
Equations
Instances For
A two-stage explicit Runge-Kutta tableau.
Equations
Instances For
A three-stage explicit Runge-Kutta tableau.
Equations
Instances For
Row sum cᵢ = ∑ⱼ aᵢⱼ of the tableau.
Instances For
Recursive stage weight of a planar tree.
Equations
- rk.stageWeight (HopfAlgebras.PTree.node ts) x✝ = rk.stageWeightList ts x✝
Instances For
Product of child contributions in the recursive stage weight.
Equations
- rk.stageWeightList [] x✝ = 1
- rk.stageWeightList (t :: ts) x✝ = (∑ j : ι, rk.A x✝ j * rk.stageWeight t j) * rk.stageWeightList ts x✝
Instances For
Elementary weight of a planar rooted tree.
Equations
- rk.weight t = ∑ i : ι, rk.b i * rk.stageWeight t i
Instances For
Elementary weight of the one-node tree.
Equations
- rk.weightBullet = ∑ i : ι, rk.b i
Instances For
Multiplicative elementary weight of a planar rooted forest.
Equations
- rk.weightList ts = (List.map rk.weight ts).prod
Instances For
Stage weights are invariant under the non-planar tree relation.
Stage-weight products are invariant under elementwise equivalent child lists.
Elementary weights are invariant under the non-planar tree relation.
Recursive stage weight of a non-planar rooted tree.
Equations
- rk.treeStageWeight τ i = Quotient.lift (fun (t : HopfAlgebras.PTree) => rk.stageWeight t i) ⋯ τ
Instances For
Product of child stage contributions over a non-planar rooted forest.
Equations
- rk.forestStageWeight φ i = (Multiset.map (fun (τ : HopfAlgebras.RootedTree) => ∑ j : ι, rk.A i j * rk.treeStageWeight τ j) φ).prod
Instances For
Elementary weight of a non-planar rooted tree.
Equations
- rk.treeWeight = Quotient.lift rk.weight ⋯
Instances For
Multiplicative elementary weight of a non-planar rooted forest.
Equations
- rk.forestWeight φ = (Multiset.map rk.treeWeight φ).prod
Instances For
B-series coefficient family induced by a Runge-Kutta tableau.
Equations
- rk.series HopfAlgebras.TreeIndex.empty = 1
- rk.series (HopfAlgebras.TreeIndex.tree τ) = rk.treeWeight τ
Instances For
Two Runge-Kutta tableaux have matching B-series coefficients through order n.
Equations
- rk.AgreeUpToOrder rk' n = rk.series.AgreeUpToOrder rk'.series n
Instances For
First order condition for a Runge-Kutta tableau.
Equations
- rk.HasOrderOne = (rk.weightBullet = 1)
Instances For
The explicit midpoint tableau.
Equations
Instances For
Heun's explicit trapezoidal tableau.
Equations
Instances For
Kutta's classical three-stage third-order tableau.
Equations
- BSeries.RungeKutta.kuttaThirdOrder R = BSeries.RungeKutta.threeStageExplicit R 2⁻¹ (-1) 2 6⁻¹ (2 * 3⁻¹) 6⁻¹
Instances For
The one-stage implicit midpoint tableau.