Program Listing for File Verner65.m

Return to documentation for file (+Indigo/+Tableau/Verner65.m)

%
%> Class container for Verner's 6(5) method.
%
classdef Verner65 < Indigo.RungeKutta
  %
  methods
    %
    % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    %
    %> Verner's 6(5) method.
    %>
    % https://www.sfu.ca/~jverner/
    %>
    %> \f[
    %> \begin{array}{c|ccccccc}
    %>      0 &           0 &       0 &            0 &         0 &           0 & 0 &          0 & 0 \\
    %>    1/6 &         1/6 &       0 &            0 &         0 &           0 & 0 &          0 & 0 \\
    %>    4/5 &        4/75 &   16/75 &            0 &         0 &           0 & 0 &          0 & 0 \\
    %>    2/3 &         5/6 &    -8/3 &          5/2 &         0 &           0 & 0 &          0 & 0 \\
    %>    5/6 &     -165/64 &    55/6 &      -425/64 &     85/96 &           0 & 0 &          0 & 0 \\
    %>      1 &        12/5 &      -8 &     4015/612 &    -11/36 &      88/255 & 0 &          0 & 0 \\
    %>   1/15 & -8263/15000 &  124/75 &     -643/680 &   -81/250 &  2484/10625 & 0 &          0 & 0 \\
    %>      1 &   3501/1720 & -300/43 & 297275/52632 & -319/2322 & 24068/84065 & 0 & 3850/26703 & 0 \\
    %>     \hline
    %>        &   3/40 & 0 &  875/2244 & 23/72 & 264/1955 &    0 & 125/11592 & 43/616 \\
    %>        & 13/160 & 0 & 2375/5984 &  5/16 &    12/85 & 3/44 &         0 &      0 \\
    %> \end{array}
    %> \f]
    %
    function this = Verner65()
      tbl.A   = zeros(9,9);
      tbl.b   = zeros(1,9);
      tbl.b_e = zeros(1,9);
      tbl.c   = zeros(9,1);

      tbl.A(2,1) =  9/50;
      tbl.A(3,1) =  29/324;
      tbl.A(3,2) =  25/324;
      tbl.A(4,1) =  1/16;
      tbl.A(4,3) =  3/16;
      tbl.A(5,1) =  79129/250000;
      tbl.A(5,3) = -261237/250000;
      tbl.A(5,4) =  19663/15625;
      tbl.A(6,1) =  1336883/4909125;
      tbl.A(6,3) = -25476/30875;
      tbl.A(6,4) =  194159/185250;
      tbl.A(6,5) =  8225/78546;
      tbl.A(7,1) = -2459386/14727375;
      tbl.A(7,3) =  19504/30875;
      tbl.A(7,4) =  2377474/13615875;
      tbl.A(7,5) = -6157250/5773131;
      tbl.A(7,6) =  902/735;
      tbl.A(8,1) =  2699/7410;
      tbl.A(8,3) = -252/1235;
      tbl.A(8,4) = -1393253/3993990;
      tbl.A(8,5) =  236875/72618;
      tbl.A(8,6) = -135/49;
      tbl.A(8,7) =  15/22;
      tbl.A(9,1) =  11/144;
      tbl.A(9,4) =  256/693;
      tbl.A(9,6) =  125/504;
      tbl.A(9,7) =  125/528;
      tbl.A(9,8) =  5/72;

      tbl.b(1) =  11/144;
      tbl.b(4) =  256/693;
      tbl.b(6) =  125/504;
      tbl.b(7) =  125/528;
      tbl.b(8) =  5/72;

      tbl.b_e(1) = 28/477;
      tbl.b_e(4) = 212/441;
      tbl.b_e(5) = -312500/366177;
      tbl.b_e(6) = 2125/1764;
      tbl.b_e(8) = -2105/35532;
      tbl.b_e(9) =  2995/17766;

      tbl.c(2) =  9/50;
      tbl.c(3) =  1/6;
      tbl.c(4) =  1/4;
      tbl.c(5) =  53/100;
      tbl.c(6) =  3/5;
      tbl.c(7) =  4/5;
      tbl.c(8) =  1;
      tbl.c(9) =  1;
      this@Indigo.RungeKutta('Verner65', 6, tbl);
    end
    %
    % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    %
  end
  %
end