RK_44 := proc(c2, c3)::Matrix; local a,d; if c2=1/2 then ERROR(`RK_44: c2=1/2`); end if; if c2=c3 then ERROR(`RK_44: c2=c3`); end if; if c2=1 then ERROR(`RK_44: c2=1`); end if; if c3=1 then ERROR(`RK_44: c3=1`); end if; d := factor(3-4*(c2+c3)+6*c2*c3); if d=0 then ERROR(`RK_set44: 3-4*(c2+c3)+6*c2*c3=0`); end if; a := Matrix(5,5); a[2,1] := c2; a[3,2] := c3*(c3-c2)/(2*c2*(1-2*c2)); a[3,1] := c3-a[3,2]; a[4,2] := (c2-1)*(2-c2-5*c3+4*c3*c3)/(2*c2*(c3-c2)*d); a[4,3] := (1-2*c2)*(c3-1)*(c2-1)/(c3*(c3-c2)*d); a[4,1] := 1 - a[4,3] - a[4,2]; a[5,2] := (1-2*c3)/(12*c2*(c2-1)*(c3-c2)); a[5,3] := (2*c2-1)/(12*c3*(c3-1)*(c3-c2)); a[5,4] := (3-4*c2-4*c3+6*c2*c3)/(12*(c2-1)*(c3-1)); a[5,1] := 1 - a[5,4] - a[5,3] - a[5,2]; simplify(a); end proc;
Maple-file | Feature |
---|---|
rk_methods.txt | Most of the methods are here, |
ex_rk_56a.txt | 17 examles of rk_56a methods with b2!=0 and small coefficients. |
ex_rk_67.txt | Examles of rk_67 methods with small coefficients. |
rk_79.txt | Maple-script with 9 stage Runge-Kutta methods of order 7, |
rk_79e.txt | RK_79e(c2, c4, c5, c7, c8), with b2=b3=0, |
rk_8.txt | 11 stage RK methods of order 8. |
List of methods:
Name | p | s | Reference | Feature |
---|---|---|---|---|
Order 4 | ||||
RK_44(c2,c3) | 4 | 4 | [B1] | Classical |
RK_44a(b3) | 4 | 4 | [B1] | c2=c3=1/2 |
RK_44b(b4) | 4 | 4 | [B1] | c2=1, c3=1/2 |
RK_45(c2, c3, c4, c5, b2, a32, a42) | 4 | 5 | ? | dim = 7 |
Order 5 | ||||
RK_56 (c2, c3, c4, c5, a43) | 5 | 6 | [B1] | Butcher, b2=0 |
RK_56a(c2, c3, c4, c5, b2, a43) | 5 | 6 | ? | dim=6 |
Rational poins on RK_56a | ||||
RK_56b(c2, c3, c4, a43, e5) | 5 | 6 | ? | dim=5, b2!=0, c5=c3, c6=1 |
Order 6 | ||||
RK_67(c2, c3, c5, c6) | 6 | 7 | [B1] | Butcher, b2=0 |
RK_67a(c3, c5, c6) | 6 | 7 | ? | b2<>0, b1=b7=1/12 |
RK_67b(c2, a32, b3) | 6 | 7 | ? | b2<>0, c2=c3=c6 |
Order 7 | ||||
RK_79(c4, c5) | 7 | 9 | [B1] | Butcher, b2=b3=0 |
RK_79e(c2,c4,c5,c7,c8) | 7 | 9 | - | S.Khashin, b2=b3=0, five parametes |
RK_79d(c2,c3,c4,c5,a52,c7,ind) | 7 | 9 | - | S.Khashin, b2=0, b3≠0 |
Order 8 | ||||
RK_8_11(a105, b8) | 8 | 11 | [Seka] | Assui Kouassi Richard, Seka Hippolyte |
RK_8_11(c5,c6,c7,c9,c10) | 8 | 11 | - | S.Khashin, b2=b3=b4=0, |
The matrix created by this function satisfies the conditions:
c2=1/2, c3=1/2, c4=1.
Restrictions: b3!=0
Remark. There are no additional methods for which 3-4(c2+c3)+6 c2 c3=0.
In general, the coefficients of the matrix will contain quadratic irrationalities:
Be carefull! After
we obtain
And Butcher matrices in a text file
Exapmple:
But there is another family of methods. It does not satisfy the second simplifying assumption.
Their characteristic features: b1=b7=1/12 and b2!=0.
They can be constructed using the function RK_67a(c3, c5, c6).
Let A be the extended matrix of the 7-stage RK-method of order
6, A is a lowertrianle matrix of size 8*8 with zero diagonal:
You can even leave one of the parameters undefined:
In addition to the two families of methods mentioned above, it is possible to build another one.
Their characteristic features: c2=c3=c6,
c4 = c2/(15*c2^2 - 10*c2 + 2);
c5 = (9*c2-4)/(3*(5*c2-2));
They can be constructed using the function RK_67b(c3, c5, c6).
Example:
You can even leave one of the parameters undefined:
These methods can be built using the function RK_79(c4, c5).
You may also use:
or even:
,
but be careful!
In separate Maple-text-file rk_79e.txt, function RK_79e.
5-dimensional family of 9-step RK methods of order 7.
If parameters c2,c4,c5,c7,c8 are rational, then all matrix coefficients will also be rational.
Example:
,
,
with free c2:
,
You can take other pameters free, but be ready for a long formulas and a large amount of memory.
For example, command
>A := RK_79e(c2, c4, 4/7, c7, c8):
need 204M of memory! And
> length(A);
In separate Maple-text-file rk_79.txt, function RK_79d.
6-dimensional family of 9-step RK methods of order 7.
All parameters must be rational.
Arguments c2,c3,c4,c5,a52,c7 are obvious.
When finding the matrix, you have to solve the quadratic equation.
We need to choose one of its two roots:
ind = 1: 1st root
ind = 2: 2nd root
All the coefficients of the result matrix are quadratic irrationalities.
Example:
,
Usually, all the coefficients of the result matrix are quadratic irrationalities. But it is possible to find a matrix with rational coefficients.
> read `\\w\\RUNGE_KU\\MAPLE\\rk_79.txt`: > c3:=1/3: c4:=2/3: c5:=3/4: a52:=1: # Rational points on elliptic curve: > eq17 := RK79_c7c8(c3,c4,c5,a52); > P2:=ratPoints(eq17,10): > for k from 1 to nops(P2) do > print(k, ` P2~=`, evalf(P2[k]), ` len=`, length(P2[k]), ` eq17=`, eq17(P2[k][1], P2[k][2]) ); > end do: > c7 := P2[1][1]; c8 := P2[1][2]; > A := RK_79a(c3,c4,c5,a52,c7,c8); > evalf(A);The point is that eq17 is a bi-quadratic function:
[ 1836169365208 590253357997083915732956147028 ] P1 = [ -------------, -------------------------------] [14375031772353 1006076034939621277811626968047] [191413646630639454100269817605058328881625109 590253357997083915732956147028 ] P2 = [---------------------------------------------, -------------------------------] [158225722728039129214784412615341412861584569 1006076034939621277811626968047] ...However, all the coefficients of the matrix are rational.
This method was developed by Seka Hippolyte & Assui Kouassi Richard
[Seka]
For b8 = 49/180 and a105 = 1/9, the Cooper-Verner obtained.
We will not consider these methods in more detail,
since they are a special case of the following, more general function.
RK_8_11(c5,c6,c7,c9,c10)
In separate Maple-text-file rk_8.txt, we have a
function RK_8_11.
It's main feature is b2=b3=b4=0.
res_8.txt - the last two matrices in the text file.
But be carefull! Random selection of parameters may not be very convinient!