Runge–Kutta–Nyström Pairs of Orders 8(6) for Use in Quadruple Precision Computations
Abstract
:1. Introduction
2. Runge–Kutta–Nyström Methods of Eighth Order
- BEGIN ALGORITHM
- END OF ALGORITHM
3. Producing a RKN Pair of Orders 8 and 6
Listing 1.Mathematica Module implementing the new pair. |
RKNT86[f_List, vars_List, initialvalues_List, dinitialvalues_List, finalx_, errorTolerance_] := Block[{x = SetAccuracy[First[initialvalues], 33], y = SetAccuracy[Rest[initialvalues], 33], dy = SetAccuracy[dinitialvalues, 33], xend = SetAccuracy[finalx, 33], h, err, hnew, y7, y8, dy7, dy8, solution, hmax, ireject, k = Table[i + j, {i, 9}, {j, Length[vars] - 1}], b=SetAccuracy[{46704396222138759/1124501888012545693,0, 84069894477030747/424535379079037893,60269691739898297/328032958547368465, 2009963068113133/27794099874007722,162341471393132/140140455957185117, 6086576956589044/1882413506280312633,0,0},33], bb=SetAccuracy[{10769958754260247/261191895425614637,0, 104933541030533329/527807735255158343,8187542127950603/44863180380403502, 50493885750265423/674323734860213804,-396215365808089/252398506959352750, 5468871271464350/1319483122963052413,0,0},33], db=SetAccuracy[{46704396222138759/1124501888012545693,0, 90371972523959954/390135632629351589,118990880894033457/367654647557162744, 180830119624415039/624884373647391279,16628088200566168/1643600751401035359, 1524820183138666476/417332398303375801,-942444174868320016/265473221553563103, 0},33], dbb=SetAccuracy[{10769958754260247/261191895425614637,0, 58861559987617091/253105545276009947,142913350550568712/444546485690175277, 8398007711885933/28026591338889651,-8440103966850896/615634893567208211, 1592393294195924241/339999309740023022, -6699802037196600096/1421037300124099357,3/20},33], c=SetAccuracy[{0,8065253268/111157879849,16130506536/111157879849,99/229, 1855/2473,116/131,1129/1130,1,1},33], a=SetAccuracy[{{0},{502615833312847/190946037812928939}, {1601030787675953/456179150746555700,1601030787675953/228089575373277850}, {47478115875661981/518814108724307373,-64883723802385428/357040639400014459, 25666007926449694/139746227660637731}, {-328112826298039228/251912779790891183,969895830706346953/297412056373654755, -958305119264262743/492487831928632961,151603443293999467/564549369158251216}, {44079989458325648760/345626831710945999,-267609305840442666747/859338149021870938, 130442442641184422881/655209191357439877,-7381158156698807543/475346800759815547, 594932629852457670/835908452635682287}, {-10802627635977292643/544607328597417370,22047268993379696720/454307750813938153, -9705881798108421635/315306127829247354,1078781161885226048/413453123878982063, -8616008188673363/388077019471353686,365346507915481/466435620062528214}, {-13306779498890004275/660225117657805349,22208114914951831801/450387553598953907, -6398475501845852180/204556450443208783,1412284034546646006/533270054097053815, -19179472816466775/820785347597843378,14435103384615/18331075303513484, -364401779978/904202609357507829}, {46704396222138759/1124501888012545693,0,84069894477030747/424535379079037893, 60269691739898297/328032958547368465,2009963068113133/27794099874007722, 162341471393132/140140455957185117,6086576956589044/1882413506280312633,0}},33], half = SetAccuracy[1/2, 33], two = SetAccuracy[2, 33], ninetenth = SetAccuracy[9/10, 33], ode = Function[Release[vars], Release[f]]}, hmax = SetAccuracy[xend - x, 33]; h = SetAccuracy[errorTolerance^(1/8), 33]; ireject = 0; solution = SetAccuracy[{Flatten[{x, y, dy}]}, 33]; k[[9]] = SetAccuracy[Apply[ode, Flatten[{x, y}]], 33]; While[x < xend, If[x + h == x, Break[]]; If[x + h - xend > 0, h = SetAccuracy[xend - x, 33]]; k[[1]] = k[[9]]; k[[2]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[2]] h, y + c[[2]] h*dy + h^2*a[[2, 1]] k[[1]]}]], 33]; k[[3]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[3]] h, y + c[[3]] h*dy + h^2*a[[3]].Take[k, 2]}]], 33]; k[[4]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[4]] h, y + c[[4]] h*dy + h^2*a[[4]].Take[k, 3]}]], 33]; k[[5]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[5]] h, y + c[[5]] h*dy + h^2*a[[5]].Take[k, 4]}]], 33]; k[[6]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[6]] h, y + c[[6]] h*dy + h^2*a[[6]].Take[k, 5]}]], 33]; k[[7]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[7]] h, y + c[[7]] h*dy + h^2*a[[7]].Take[k, 6]}]], 33]; k[[8]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[8]] h, y + c[[8]] h*dy + h^2*a[[8]].Take[k, 7]}]], 33]; k[[9]] = SetAccuracy[ Apply[ode, Flatten[{x + c[[9]] h, y + c[[9]] h*dy + h^2*a[[9]].Take[k, 8]}]], 33]; y8 = SetAccuracy[y + h*dy + h^2 b.k, 33]; y7 = SetAccuracy[y + h*dy + h^2 bb.k, 33]; dy8 = SetAccuracy[dy + h db.k, 33]; dy7 = SetAccuracy[dy + h dbb.k, 33]; err = SetAccuracy[Max[{Max[Abs[y8 - y7]/10], Max[Abs[dy8 - dy7]/10]}], 33]; hnew = SetAccuracy[ Min[SetAccuracy[hmax, 33],SetAccuracy[ h/Max[half, Min[two, SetAccuracy[(Rationalize[err/errorTolerance, 10^-33]^(1/7))/ninetenth, 33]]], 33]], 33]; If[err <= errorTolerance, x += h; y = y8; dy = dy8; AppendTo[solution, SetAccuracy[Flatten[{x, y8, dy8}], 33]], hnew = SetAccuracy[Min[hnew, h], 33]; ireject = ireject + 1; k[[9]] = k[[1]]];h = hnew]; Return[{solution,ireject}]] |
- f: A list with function , i.e., in the form
- vars: A list with variables, i.e., in the form
- initial values: A list with initial values, i.e., in the form
- dinitialvalues: A list with initial values for , i.e., in the form
- finalx: The final value of x
- errorTolerance: The tolerance
4. Numerical Results
4.1. The Methods
4.2. The Problems
4.2.1. Inhomogeneous Equation
4.2.2. Inhomogeneous Linear System
In[1]:={solution, ireject} = RKNT86[{1/100*z1-1/10*z2,-1/10*z1+1/100*z2+Sin[x]}, {x,z1,z2}, {0,1,1},{-1000/10101,-(10100/10101)},10*Pi,10^-22]; In[2]={Length[solution] + ireject - 1, Max[Abs[Last[solution][[2 ;; 5]] - {-1, -1, -1000/10101, -10100/10101}]]} Out[2]={6957,2.419274*10^-26} |
4.2.3. Problem F
4.2.4. Kepler Problem
4.2.5. Coupled Non-Linear Pendulum
4.3. Discussion on the Results
5. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Hairer, E. Méthodes de Nyström pour l’équation différentielle y″ = f(x,y). Numer. Math. 1976, 2, 283–300. [Google Scholar] [CrossRef]
- Hairer, E.; Nørsett, S.P.; Wanner, G. Solving Ordinary Differential Equations I: Nonstiff Problems; Springer: Berlin/Heidelberg, Germany, 1993. [Google Scholar]
- Fehlberg, E. Eine Runge-Kutta-Nyström-Formel g-ter Ordnung rnit Schrittweitenkontrolle fur Differentialgleichungen . ZAMM 1981, 6, 477–485. [Google Scholar] [CrossRef]
- Dormand, J.R.; El-Mikkawy, M.E.A.; Prince, P.J. Families of Runge-Kutta-Nyström formulae. IMA J. Numer. Anal. 1987, 7, 235–250. [Google Scholar] [CrossRef]
- Dormand, J.R.; El-Mikkawy, M.E.A.; Prince, P.J. High-Order Runge-Kutta-Nyström formulae. IMA J. Numer. Anal. 1987, 7, 423–430. [Google Scholar] [CrossRef]
- El-Mikkawy, M.E.A.; Rahmo, E. A new optimized non-FSAL embedded RungeKuttaNyström algorithm of orders 6 and 4 in six stages. Appl. Math. Comput. 2003, 145, 33–43. [Google Scholar]
- Papakostas, S.N.; Tsitouras, C. High phase-lag order Runge–Kutta and Nyström pairs. SIAM J. Sci. Comput. 1999, 21, 747–763. [Google Scholar] [CrossRef]
- Simos, T.E.; Tsitouras, C. On high order Runge–Kutta– Nyström pairs. J. Comput. Appl. Maths. 2022, 400, 113753. [Google Scholar] [CrossRef]
- Jerbi, H.; Omri, M.; Kchaou, M.; Simos, T.E.; Tsitouras, C. Runge-Kutta-Nyström Pairs of Orders 8(6) with Coefficients Trained to Perform Best on Classical Orbits. Mathematics 2022, 10, 654. [Google Scholar] [CrossRef]
- Yoshida, H. Construction of higher order symplectic integrators. Phys. Lett. A 1990, 150, 262–268. [Google Scholar] [CrossRef]
- Calvo, M.P.; Sanz-Serna, J.M. High order symplectic Runge-Kutta-Nyström methods. SIAM J. Sci. Comput. 1993, 14, 1237–1252. [Google Scholar] [CrossRef]
- Brankin, R.W.; Gladwell, I.; Dormand, J.R.; Prince, P.J.; Seward, W.L. ALGORITHM 670: A Runge-Kutta-Nyström Code. ACM Trans. Math. Softw. 1989, 15, 31–40. [Google Scholar] [CrossRef]
- Butcher, J.C. On Runge-Kutta processes of high order. J. Austral. Math. Soc. 1964, 4, 179–194. [Google Scholar] [CrossRef]
- Kovalnogov, V.N.; Fedorov, R.V.; Karpukhina, M.T.; Kornilova, M.I.; Simos, T.E.; Tsitouras, C. Runge-Kutta-Nystrom methods of eighth order for addressing Linear Inhomogeneous problems. J. Comput. Appl. Maths. 2023, 419, 114778. [Google Scholar] [CrossRef]
- Tsitouras, C.; Famelis, I.T. Symbolic derivation of Runge-Kutta-Nyström order conditions. J. Math. Chem. 2009, 46, 896–912. [Google Scholar] [CrossRef]
- Price, K.V.; Storn, R.M.; Lampinen, J.A. Differential Evolution, A Practical Approach to Global Optimization; Springer: Berlin/Heidelberg, Germany, 2005. [Google Scholar]
- Storn, R.M.; Price, K.V. Differential evolution—A simple and efficient heuristic for global optimization over continuous spaces. J. Glob. Optim. 1997, 11, 341–359. [Google Scholar] [CrossRef]
- Storn, R.M.; Price, K.V.; Neumaier, A.; Zandt, J.V. DeMat. Available online: https://github.com/mikeagn/DeMatDEnrand (accessed on 18 August 2022).
- Matlab. MATLAB Version 7.10.0; The MathWorks Inc.: Natick, MA, USA, 2010. [Google Scholar]
- Wolfram Research, Inc. Mathematica, Version 11.3.0; Wolfram Research, Inc.: Champaign, IL, USA, 2018.
- Kovalnogov, V.N.; Kornilova, M.I.; Khakhalev, Y.A.; Generalov, D.A.; Simos, T.E.; Tsitouras, C. Fitted modifications of Runge–Kutta–Nyström pairs of orders 7(5) for addressing oscillatory problems. Math. Meth. Appl. Sci. 2023, 46, 273–282. [Google Scholar] [CrossRef]
- Enright, W.; Pryce, J.D. Two FORTRAN packages for assessing initial value methods. ACM Trans. Math. Softw. 1987, 13, 1–27. [Google Scholar] [CrossRef]
0 | 0 | ||||||||
8th-order | 0 | 0 | 0 | ||||||
6th-order | 0 | 0 | 0 | ||||||
8th-order | 0 | ||||||||
6th-order | 0 |
Order | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
- order→ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
RKN | order conditions for | 0 | 1 | 1 | 2 | 3 | 6 | 10 | 20 | 36 | 72 |
order conditions for | 1 | 1 | 2 | 3 | 6 | 10 | 20 | 36 | 72 | 137 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2023 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Kovalnogov, V.N.; Matveev, A.F.; Generalov, D.A.; Karpukhina, T.V.; Simos, T.E.; Tsitouras, C. Runge–Kutta–Nyström Pairs of Orders 8(6) for Use in Quadruple Precision Computations. Mathematics 2023, 11, 891. https://doi.org/10.3390/math11040891
Kovalnogov VN, Matveev AF, Generalov DA, Karpukhina TV, Simos TE, Tsitouras C. Runge–Kutta–Nyström Pairs of Orders 8(6) for Use in Quadruple Precision Computations. Mathematics. 2023; 11(4):891. https://doi.org/10.3390/math11040891
Chicago/Turabian StyleKovalnogov, Vladislav N., Alexander F. Matveev, Dmitry A. Generalov, Tamara V. Karpukhina, Theodore E. Simos, and Charalampos Tsitouras. 2023. "Runge–Kutta–Nyström Pairs of Orders 8(6) for Use in Quadruple Precision Computations" Mathematics 11, no. 4: 891. https://doi.org/10.3390/math11040891
APA StyleKovalnogov, V. N., Matveev, A. F., Generalov, D. A., Karpukhina, T. V., Simos, T. E., & Tsitouras, C. (2023). Runge–Kutta–Nyström Pairs of Orders 8(6) for Use in Quadruple Precision Computations. Mathematics, 11(4), 891. https://doi.org/10.3390/math11040891