, 21 min read
Stability Regions for Donelson and Hansen Formulas
In the seminal paper Cyclic Composite Multistep Predictor-Corrector Methods the two authors Donelson and Hansen derive cyclic multistep methods of high order and break the first Dahlquist barrier.
Their formulas have the following properties.
Method | stages ℓ | steps k | order p |
---|---|---|---|
1 | 3 | 3 | 5 |
2 | 3 | 3 | 6 |
3 | 3 | 3 | 6 |
4 | 2 | 3 | 5 |
5 | 4 | 4 | 7 |
6 | 4 | 4 | 8 |
typedef struct {
const char *name;
const int p; // order (for information only)
const int k; // number of start steps, 2*(k+l) = number of rows of a[]
const int l; // cycle length, i.e., column count of a[]
double *a; // transpose of A_i and B_i matrices in a single matrix
} formula_t;
formula_t F[] = {
. . .
{
"DonelsonHansen1", 5, 3, 3, // name, p, k, l
(double[]){
0, 0, 0,
-57, 1083, 0,
24, -456, 0,
33, -1347, -57,
0, 720, 24,
0, 0, 33,
// --------
-1, 0, 0,
24, -350, 0,
57, -1347, -1,
10, 456, 24,
0, 251, 57,
0, 0, 10 }
},
{
"DonelsonHansen2", 6, 3, 3, // name, p, k, l
(double[]){
-11, 0, 0,
-27, 188, 0,
27, -36, 25,
11, -252, -63,
0, 100, -9,
0, 0, 47,
// --------
3, 0, 0,
27, -60, 0,
27, -252, -9,
3, 36, -9,
0, 36, 63,
0, 0, 15 }
},
{
"DonelsonHansen3", 6, 3, 3, // name, p, k, l
(double[]){
0, 0, 0,
-57, 136, 0,
24, -117, -283,
33, -144, -306,
0, 125, 531,
0, 0, 58,
// --------
-1, 0, 0,
24, -45, 0,
57, -144, 84,
10, 117, 531,
0, 42, 306,
0, 0, 9 }
},
{
"DonelsonHansen4", 5, 3, 2, // name, p, k, l
(double[]){
0, 0,
-57, 31,
24, -12,
33, -39,
0, 20,
// --------
-1, 0,
24, -10,
57, -39,
10, 12,
0, 7 }
},
{
"DonelsonHansen5", 7, 4, 4, // name, p, k, l
(double[]){
0, 0, 0, 0,
-1360, 13409, 0, 0,
-1350, 30384, 3653, 0,
2160, -55026, -22752, 4550,
550, 2224, -45792, 14160,
0, 9009, 49888, -14850,
0, 0, 15003, -5360,
0, 0, 0, 1500,
// ---------------------------
-9, 0, 0, 0,
456, -3585, 0, 0,
2376, -32904, -1182, 0,
1656, -19008, 1440, -1191,
141, 16008, 49032, -12456,
0, 2529, 42144, -13176,
0, 0, 3906, 744,
0, 0, 0, 459 }
},
{
"DonelsonHansen6", 8, 4, 4, // name, p, k, l
(double[]){
0, 0, 0, 0,
-1360, 4603, 0, 0,
-1350, 1008, -3455657, 0,
2160, -28242, -28102272, 59160,
550, 15728, -5942052, 175440,
0, 6903, 31623488, -201690,
0, 0, 5876493, -55920,
0, 0, 0, 23010,
// ---------------------------------
-9, 0, 0, 0,
456, -1293, 0, 0,
2376, -8136, 789744, 0,
1656, 9936, 15276816, -15543,
141, 16968, 40314888, -159048,
0, 1845, 20558640, -156168,
0, 0, 1449972, 20232,
0, 0, 0, 6867 }
}
}
1. Stability regions. None of the formulas is A(α)-stable or A-stable. In particular, the graph for p=2 looks weird.
2. Error constants per stage.
The C program stabregion
performs a check on the order of each stage.
Below are the results of these checks for the Donelson & Hansen methods.
DonelsonHansen1, p=5, k=3, l=3
0.0000 0.0000 0.0000
-57.0000 1083.0000 0.0000
24.0000 -456.0000 0.0000
33.0000 -1347.0000 -57.0000
0.0000 720.0000 24.0000
0.0000 0.0000 33.0000
-1.0000 0.0000 0.0000
24.0000 -350.0000 0.0000
57.0000 -1347.0000 -1.0000
10.0000 456.0000 24.0000
0.0000 251.0000 57.0000
0.0000 0.0000 10.0000
rho_0 0.000000000 0.000000000 0.000000000
rho_1 0.000000000 0.000000000 0.000000000
rho_2 0.000000000 0.000000000 0.000000000
rho_3 0.000000000 0.000000000 0.000000000
rho_4 0.000000000 0.000000000 0.000000000
rho_5 0.000000000 0.000000000 0.000000000
rho_6 -132.000000000 -7212.000000000 -132.000000000 <-----
DonelsonHansen2, p=6, k=3, l=3
-11.0000 0.0000 0.0000
-27.0000 188.0000 0.0000
27.0000 -36.0000 25.0000
11.0000 -252.0000 -63.0000
0.0000 100.0000 -9.0000
0.0000 0.0000 47.0000
3.0000 0.0000 0.0000
27.0000 -60.0000 0.0000
27.0000 -252.0000 -9.0000
3.0000 36.0000 -9.0000
0.0000 36.0000 63.0000
0.0000 0.0000 15.0000
rho_0 0.000000000 0.000000000 0.000000000
rho_1 0.000000000 0.000000000 0.000000000
rho_2 0.000000000 0.000000000 0.000000000
rho_3 0.000000000 0.000000000 0.000000000
rho_4 0.000000000 0.000000000 0.000000000
rho_5 0.000000000 0.000000000 0.000000000
rho_6 0.000000000 -1152.000000000 -288.000000000 <-----
rho_7 -108.000000000 -19728.000000000 -7164.000000000 <-----
DonelsonHansen3, p=6, k=3, l=3
0.0000 0.0000 0.0000
-57.0000 136.0000 0.0000
24.0000 -117.0000 -283.0000
33.0000 -144.0000 -306.0000
0.0000 125.0000 531.0000
0.0000 0.0000 58.0000
-1.0000 0.0000 0.0000
24.0000 -45.0000 0.0000
57.0000 -144.0000 84.0000
10.0000 117.0000 531.0000
0.0000 42.0000 306.0000
0.0000 0.0000 9.0000
rho_0 0.000000000 0.000000000 0.000000000
rho_1 0.000000000 0.000000000 0.000000000
rho_2 0.000000000 0.000000000 0.000000000
rho_3 0.000000000 0.000000000 0.000000000
rho_4 0.000000000 0.000000000 0.000000000
rho_5 0.000000000 0.000000000 0.000000000
rho_6 -132.000000000 -1044.000000000 900.000000000 <-----
rho_7 -1548.000000000 -18216.000000000 20376.000000000 <-----
DonelsonHansen4, p=5, k=3, l=2
0.0000 0.0000
-57.0000 31.0000
24.0000 -12.0000
33.0000 -39.0000
0.0000 20.0000
-1.0000 0.0000
24.0000 -10.0000
57.0000 -39.0000
10.0000 12.0000
0.0000 7.0000
rho_0 0.000000000 0.000000000
rho_1 0.000000000 0.000000000
rho_2 0.000000000 0.000000000
rho_3 0.000000000 0.000000000
rho_4 0.000000000 0.000000000
rho_5 0.000000000 0.000000000
rho_6 -132.000000000 -204.000000000 <-----
DonelsonHansen5, p=7, k=4, l=4
0.0000 0.0000 0.0000 0.0000
-1360.0000 13409.0000 0.0000 0.0000
-1350.0000 30384.0000 3653.0000 0.0000
2160.0000 -55026.0000 -22752.0000 4550.0000
550.0000 2224.0000 -45792.0000 14160.0000
0.0000 9009.0000 49888.0000 -14850.0000
0.0000 0.0000 15003.0000 -5360.0000
0.0000 0.0000 0.0000 1500.0000
-9.0000 0.0000 0.0000 0.0000
456.0000 -3585.0000 0.0000 0.0000
2376.0000 -32904.0000 -1182.0000 0.0000
1656.0000 -19008.0000 1440.0000 -1191.0000
141.0000 16008.0000 49032.0000 -12456.0000
0.0000 2529.0000 42144.0000 -13176.0000
0.0000 0.0000 3906.0000 744.0000
0.0000 0.0000 0.0000 459.0000
rho_0 0.000000000 0.000000000 0.000000000 0.000000000
rho_1 0.000000000 0.000000000 0.000000000 0.000000000
rho_2 0.000000000 0.000000000 0.000000000 0.000000000
rho_3 0.000000000 0.000000000 0.000000000 0.000000000
rho_4 0.000000000 0.000000000 0.000000000 0.000000000
rho_5 0.000000000 0.000000000 0.000000000 0.000000000
rho_6 0.000000000 0.000000000 0.000000000 0.000000000
rho_7 0.000000000 0.000000000 0.000000000 0.000000000
rho_8 -21600.000000000 -880416.000000000 -732672.000000000 -237600.000000000 <-----
DonelsonHansen6, p=8, k=4, l=4
0.0000 0.0000 0.0000 0.0000
-1360.0000 4603.0000 0.0000 0.0000
-1350.0000 1008.0000-3455657.0000 0.0000
2160.0000 -28242.0000-28102272.0000 59160.0000
550.0000 15728.0000-5942052.0000 175440.0000
0.0000 6903.000031623488.0000 -201690.0000
0.0000 0.0000 5876493.0000 -55920.0000
0.0000 0.0000 0.0000 23010.0000
-9.0000 0.0000 0.0000 0.0000
456.0000 -1293.0000 0.0000 0.0000
2376.0000 -8136.0000 789744.0000 0.0000
1656.0000 9936.000015276816.0000 -15543.0000
141.0000 16968.000040314888.0000 -159048.0000
0.0000 1845.000020558640.0000 -156168.0000
0.0000 0.0000 1449972.0000 20232.0000
0.0000 0.0000 0.0000 6867.0000
rho_0 0.000000000 0.000000000 0.000000000 0.000000000
rho_1 0.000000000 0.000000000 0.000000000 0.000000000
rho_2 0.000000000 0.000000000 0.000000000 0.000000000
rho_3 0.000000000 0.000000000 0.000000000 0.000000000
rho_4 0.000000000 0.000000000 0.000000000 0.000000000
rho_5 0.000000000 0.000000000 0.000000000 0.000000000
rho_6 0.000000000 0.000000000 0.000000000 0.000000000
rho_7 0.000000000 0.000000000 0.000000000 0.000000000
rho_8 -21600.000000000 -451872.000000000 -95072832.000000000 -3227040.000000000 <-----
rho_9 -426816.000000000 -12359520.000000000 -4067660160.000000000 -142718112.000000000 <-----