Function Repository Resource:

RungeKuttaOrderConditions

Source Notebook

List equations for Runge-Kutta methods

Contributed by: Wolfram Research

ResourceFunction["RungeKuttaOrderConditions"][p,s]

gives a list of the order conditions that any s-stage Runge-Kutta method of order p must satisfy.

ResourceFunction["RungeKuttaOrderConditions"][p]

gives the order conditions using stage-independent tensor notation.

Details and Options

The order conditions are grouped by order.
The following options can be given:
"ButcherRowSum"Falsewhether to include row-sum conditions for ci
"ButcherSimplify"Falsewhether to use Butcher's assumptions
"ContinuousExtension"Falsewhether to generate conditions for continuous extensions
"RungeKuttaMethod""Implicit"type of Runge-Kutta method
If the option "ButcherSimplify"True is selected, the number of stages must be a positive integer.
The s-stage Runge-Kutta method to advance from x to x+h is where , aij and bj are unknown coefficients and , i=1,2,,s.
Valid settings for "RungeKuttaMethod" are "DiagonallyImplicit", "Explicit" and "Implicit".

Examples

Basic Examples (1) 

Give the order conditions for any third-order method:

In[1]:=
ResourceFunction["RungeKuttaOrderConditions"][3]
Out[1]=

Scope (4) 

The number of order conditions goes up greatly from order to order:

In[2]:=
Length /@ ResourceFunction["RungeKuttaOrderConditions"][10]
Out[2]=

The order conditions that must be satisfied by any second-order, three-stage Runge-Kutta method:

In[3]:=
ResourceFunction["RungeKuttaOrderConditions"][2, 3]
Out[3]=

The order conditions that must be satisfied by any second-order, s-stage method:

In[4]:=
ResourceFunction["RungeKuttaOrderConditions"][2, s]
Out[4]=

Replacing s with 3 gives the same result as RungeKuttaOrderConditions[2,3]:

In[5]:=
% /. s -> 3
Out[5]=

Not all sets of border conditions can be satisfied. A fourth-order, one-stage Runge-Kutta method would need more stages to be solvable:

In[6]:=
ResourceFunction["RungeKuttaOrderConditions"][4, 1]
Out[6]=
In[7]:=
Solve[Join @@ %]
Out[7]=

Options (3) 

ButcherRowSum (1) 

The conditions that must be satisfied by any first-order, three-stage Runge-Kutta method, including the row-sum conditions:

In[8]:=
ResourceFunction["RungeKuttaOrderConditions"][1, 3, "ButcherRowSum" -> True]
Out[8]=

RungeKuttaMethod (2) 

The order conditions that must be satisfied by any third-order, two-stage, diagonally implicit Runge-Kutta method:

In[9]:=
ResourceFunction["RungeKuttaOrderConditions"][3, 2, "RungeKuttaMethod" -> "DiagonallyImplicit"]
Out[9]=

The contradiction in the order conditions for any third-order, two-stage, explicit Runge-Kutta method indicates that no such method is possible:

In[10]:=
ResourceFunction["RungeKuttaOrderConditions"][3, 2, "RungeKuttaMethod" -> "Explicit"]
Out[10]=

Properties and Relations (1) 

Th resource function ButcherPrincipalError can be used to determine the principal error coefficients:

In[11]:=
ResourceFunction["ButcherPrincipalError"][3]
Out[11]=

Version History

  • 1.0.0 – 06 November 2019

Related Resources

License Information