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;
Name | p | s | Reference | Feature |
---|---|---|---|---|
Order 4 | ||||
RK_44(c2,c3) | 4 | 4 | [1] | Classical |
RK_44a(b3) | 4 | 4 | [1] | c2=c3=1/2 |
RK_44b(b4) | 4 | 4 | [1] | 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 | [1] | Butcher, b2=0 |
RK_56a(c2, c3, c4, c5, b2, a43) | 5 | 6 | ? | dim=6 |
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 | [1] | 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 | [1] | Butcher, b2=b3=0 |
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 | [2] | Assui Kouassi Richard, Seka Hippolyte |
Be carefull! After
we obtain
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.