Butcher Order Conditions

The order conditions for an RK scheme can be generated automatically.

<<NumericalDifferentialEquationAnalysis`
order=3;
stages=3;
RungeKuttaOrderConditions[order]
RungeKuttaOrderConditions[order,stages]

The first of these is in "vector" notation because we did not tell it the number of stages.   By Default it does not include the Row Sum conditions which are always the same.

RungeKuttaOrderConditions[order,stages,
ButcherRowSum->True
]
RungeKuttaOrderConditions[order,stages,
ButcherRowSum->True,
RungeKuttaMethod->Explicit]
RungeKuttaOrderConditions[order,stages,
ButcherRowSum->True,
RungeKuttaMethod->DiagonallyImplicit]
RungeKuttaOrderConditions[order,stages,
ButcherRowSum->True,
RungeKuttaMethod->Implicit]

The left over coefficients are

ButcherPrincipalError[order,stages,
RungeKuttaMethod->DiagonallyImplicit]

The terms they multiply match the Butcher Trees of one higher order

TreeData=ButcherTrees[order+1]

Looking only at the last ones we can visualize them using the Tree stuff as follows

ButcherPlot[TreeData[[order+1]]]

Mathematica can solve small problems analytically. For example

{order,stages}={3,3};
Eqs=RungeKuttaOrderConditions[order,stages,
ButcherRowSum->True,
RungeKuttaMethod->Explicit]
Solve[Flatten[Eqs]]

There are 4 types of solutions:  Two special ones and two parameterized families.