Package: extensisq
extensisqThis package extends scipy.integrate with various methods (OdeSolver classes) for the solve_ivp function.InstallationYou can install extensisq fromPyPI:pip install extensisqOr, if you'd rather useconda:conda install -c conda-forge extensisqExampleBorrowed from the the scipy documentation:from scipy.integrate import solve_ivp
from extensisq import BS5

def exponential_decay(t, y): return -0.5 * y
sol = solve_ivp(exponential_decay, [0, 10], [2, 4, 8], method=BS5)

print(sol.t)
print(sol.y)Notice that the classBS5is passed tosolve_ivp, not the string"BS5". The other methods (SWAG,CK5,Ts5,Pr7,Pr8,Pr9,CKdisc,CFMR7oscandSSV2stab) can be used in a similar way.More examples are available as notebooks (update needed):Integration with Scipy'ssolve_ivpfunctionAboutBS5and its interpolantsHigher order Prince methodsPr7,Pr8andPr9Special methodCKdiscfor non-smooth problemsSpecial methodCFMR7oscfor oscillatory problemsSpecial methodSSV2stabfor large, mildly stiff problemsFifth order methods comparedVan der Pol's equation, Shampine Gordon Watts methodSensitivity analysisMethodsCurrently, several explicit methods (for non-stiff problems) are provided.One multistep method is implemented:SWAG: the variable order Adams-Bashforth-Moulton predictor-corrector method of Shampine, Gordon and Watts [5-7]. This is a translation of the Fortran codeDDEABM. Matlab's methodode113is related.Three explicit Runge Kutta methods of order 5 are implemented:BS5: efficient fifth order method by Bogacki and Shampine [1,A]. Three interpolants are included: the original accurate fifth order interpolant, a lower cost fifth order one, and a 'free' fourth order one.CK5: fifth order method with the coefficients from [2], for general use.Ts5: relatively new solver (2011) by Tsitouras, optimized with fewer simplifying assumptions [3].One fourth order method:Me4: Merson's method, the first embedded RK method [14]. The embedded method for error estimation is 5th order for linear problems and 3rd order for general problems. A 3rd order interpolant is added. This method has a large stability region. It may be useful as alternative to 'RK23' for solving problems to lower accuracy.Three higher order explicit Runge Kutta methods by Prince [4] are implemented:Pr7: a seventh order discrete method with fifth order error estimate, derived from a sixth order continuous method.Pr8: an eighth order discrete method with sixth order error estimate, derived from a seventh order continuous method.Pr9: a ninth order discrete method with seventh order error estimate, derived from an eighth order continuous method.The numbers in the names refer to the discrete methods, while the orders in [4] refer to the continuous methods. These  methods are relatively efficient when dense output is needed, because the interpolants are free. (Other high-order methods typically need several additional function evaluations for dense output.)Three methods for specific types of problems are available:CKdisc: variable order solver by Cash and Karp, tailored to solve non-smooth problems efficiently [2].CFMR7osc: explicit Runge Kutta method, with algebraic order 7, dispersion order 10 and dissipation order 9, to efficiently and accurately solve problems with oscillating solutions [12]. A free 5th order interpolant for dense output is added.SSV2stab: second order stabilized Runge Kutta Chebyshev method [13,C], to explicity and efficiently solve large systems of mildly stiff ordinary differential equations up to low to moderate accuracy. Equations arising from semi-discretization of parabolic PDEs are a typical use case.Sensitivity analysisThree methods for sensitiviy analysis are available; see [15] and Example 9 above. These can be used with any of the solvers.sens_forward: to calculate the sensitivity of all solution components to (a few) parameters.sens_adjoint_end: to calculate the sensitivity of a scalar function of the solution to (many) parameters.sens_adjoint_int: to calculate the sensitivity of a scalar integral of the solution to (many) parameters.Other featuresThe initial step size, when not supplied by you, is estimated using the method of Watts [7,B]. This method analyzes your problem with a few (3 to 4) evaluations and carefully estimates a safe stepsize to start the integration with.Most of extensisq's Runge Kutta methods have stiffness detection. If many steps fail, or if the integration needs a lot of steps, the power iteration method of Shampine [8,A] is used to test your problem for stiffness. You will get a warning if your problem is diagnosed as stiff. The kind of roots (real, complex or nearly imaginary) is also reported, such that you can select a stiff solver that better suits your problem.Second order stepsize controllers [9-11] can be enabled for most of extensisq's Runge Kutta methods. You can set your own coefficients, or select one of the default values.References[1] P. Bogacki, L.F. Shampine, "An efficient Runge-Kutta (4,5) pair", Computers & Mathematics with Applications, Vol. 32, No. 6, 1996, pp. 15-28.https://doi.org/10.1016/0898-1221(96)00141-1[2] J. R. Cash, A. H. Karp, "A Variable Order Runge-Kutta Method for Initial Value Problems with Rapidly Varying Right-Hand Sides", ACM Trans. Math. Softw., Vol. 16, No. 3, 1990, pp. 201-222.https://doi.org/10.1145/79505.79507[3] Ch. Tsitouras, "Runge-Kutta pairs of order 5(4) satisfying only the first column simplifying assumption", Computers & Mathematics with Applications, Vol. 62, No. 2, 2011, pp. 770 - 775.https://doi.org/10.1016/j.camwa.2011.06.002[4] P.J. Prince, "Parallel Derivation of Efficient Continuous/Discrete Explicit Runge-Kutta Methods", Guisborough TS14 6NP U.K., September 6 2018.http://www.peteprince.co.uk/parallel.pdf[5] L.F. Shampine and M.K. Gordon, "Computer solution of ordinary differential equations: The initial value problem", San Francisco, W.H. Freeman, 1975.[6] H.A. Watts and L.F. Shampine, "Smoother Interpolants for Adams Codes",  SIAM Journal on Scientific and Statistical Computing, Vol. 7, No. 1, 1986, pp. 334-345.https://doi.org/10.1137/0907022[7] H.A. Watts, "Starting step size for an ODE solver", Journal of Computational and Applied Mathematics, Vol. 9, No. 2, 1983, pp. 177-191.https://doi.org/10.1016/0377-0427(83)90040-7[8] L.F. Shampine, "Diagnosing Stiffness for Rungeâ€“Kutta Methods", SIAM Journal on Scientific and Statistical Computing, Vol. 12, No. 2, 1991, pp. 260-272.https://doi.org/10.1137/0912015[9] K. Gustafsson, "Control Theoretic Techniques for Stepsize Selection in Explicit Runge-Kutta Methods", ACM Trans. Math. Softw., Vol. 17, No. 4, 1991, pp. 533â€“554.https://doi.org/10.1145/210232.210242[10] G.SÃ¶derlind, "Automatic Control and Adaptive Time-Stepping", Numerical Algorithms, Vol. 31, No. 1, 2002, pp. 281-310.https://doi.org/10.1023/A:1021160023092[11] G. SÃ¶derlind, "Digital Filters in Adaptive Time-Stepping", ACM Trans. Math. Softw., Vol. 29, No. 1, 2003, pp. 1â€“26.https://doi.org/10.1145/641876.641877[12] M. Calvo, J.M. Franco, J.I. Montijano, L. RÃ¡ndez, "Explicit Runge-Kutta methods for initial value problems with oscillating solutions", Journal of Computational and Applied Mathematics, Vol. 76, No. 1â€“2, 1996, pp. 195-212.https://doi.org/10.1016/S0377-0427(96)00103-3[13] B.P. Sommeijer, L.F. Shampine, J.G. Verwer, "RKC: An explicit solver for parabolic PDEs", Journal of Computational and Applied Mathematics, Vol. 88, No. 2, 1998, pp. 315-326.https://doi.org/10.1016/S0377-0427(97)00219-7[14] E. Hairer, G. Wanner, S.P. Norsett, "Solving Ordinary Differential Equations I", Springer Berlin, Heidelberg, 1993,https://doi.org/10.1007/978-3-540-78862-1[15] R.Serban, A.C. Hindmarsh, "CVODES: The Sensitivity-Enabled ODE Solver in SUNDIALS", 5th International Conference on Multibody Systems Nonlinear Dynamics and Control, Vol. 6, 2005,https://doi.org/10.1115/DETC2005-85597Original source codes (Fortran)[A] RKSuite, R.W. Brankin,  I. Gladwell,  L.F. Shampine.https://www.netlib.org/ode/rksuite/[B] DDEABM, L.F. Shampine, H.A. Watts, M.K. Gordon.https://www.netlib.org/slatec/src/[C] RKC, B.P. Sommeijer, L.F. Shampine, J.G. Verwer.https://www.netlib.org/ode/