Predictor-corrector for FDEs

Solves an initial value problem for a non-linear differential equation of fractional order (FDE) by the predictor-corre
7K Downloads
Updated 2 May 2025

View License

Solves an initial value problem for a non-linear differential equation of fractional order (FDE) by the predictor-corrector PECE method of Adams-Bashforth-Moulton type described in [1].
[T,Y] = FDE12(ALPHA,FDEFUN,T0,TFINAL,Y0,H) integrates the initial value problem for the FDE, or the system of FDEs, of order ALPHA > 0
where m is the smallest integer grater than ALPHA and D^ALPHA is the fractional derivative according to the Caputo's definition. FDEFUN is a function handle corresponding to the vector field of the FDE and, for a scalar T and a vector Y, FDEFUN(T,Y) must return a column vector. The set of initial conditions Y0 is a column vector when 0<ALPHA<1 and a matrix with a number of rows equal to the size of the problem (hence equal to the number of rows of the output of FDEFUN) and a number of columns that depends on ALPHA and given by m. The step-size H>0 is constant throughout the integration.
[T,Y] = FDE12(ALPHA,FDEFUN,T0,TFINAL,Y0,H,PARAM) solves as above with a possible additional set of parameters of the FDEFUN as FDEFUN(T,Y,PARAM).
[T,Y] = FDE12(ALPHA,FDEFUN,T0,TFINAL,Y0,H,PARAM,MU) solves the FDE with the selected number MU of multiple corrector iterations. The following values for MU are admissible:
MU = 0 : corrector is not evaluated and the solution is provided by the predictor method (first order rectangular rule);
MU > 0 : corrector is evaluated by the selected number MU of times; the classical PECE method is obtained with MU=1 (default);
MU = Inf : corrector is evaluated for a certain number of times until convergence of the iterations is reached (for convergence the difference between two consecutive iterates is tested).
[T,Y] = FDE12(ALPHA,FDEFUN,T0,TFINAL,Y0,H,PARAM,MU,MU_TOL) allows to specify the tolerance for testing convergence when MU = Inf. If not specified, the default value MU_TOL = 1.E-6 is used.
FDE12 is an implementation of the predictor-corrector method of Adams-Bashforth-Moulton studied in [1]. Convergence and accuracy of the method are studied in [2]. The implementation with multiple corrector iterations has been proposed and discussed for multiterm FDEs in [3]. In this implementation the discrete convolutions are evaluated by means of the FFT algorithm described in [4] allowing to keep the computational cost proportional to N*log(N)^2 instead of N^2 as in the classical implementation; N is the number of time-point in which the solution is evaluated, i.e. N = (TFINAL-T)/H. Stability properties of the method are studied in [5].
[1] K. Diethelm, A.D. Freed, The Frac PECE subroutine for the numerical solution of differential equations of fractional order, in: S. Heinzel, T. Plesser (Eds.), Forschung und Wissenschaftliches Rechnen 1998, Gessellschaft fur Wissenschaftliche Datenverarbeitung, Gottingen, 1999, pp. 57-71.
[2] K. Diethelm, N.J. Ford, A.D. Freed, Detailed error analysis for a fractional Adams method, Numer. Algorithms 36 (1) (2004) 31-52.
[3] K. Diethelm, Efficient solution of multi-term fractional differential equations using P(EC)mE methods, Computing 71 (2003), pp. 305-319.
[4] E. Hairer, C. Lubich, M. Schlichte, Fast numerical solution of nonlinear Volterra convolution equations, SIAM J. Sci. Statist. Comput. 6 (3) (1985) 532-541.
[5] R. Garrappa, On linear stability of predictor-corrector algorithms for fractional differential equations, Internat. J. Comput. Math. 87 (10) (2010) 2281-2290.

Cite As

Roberto Garrappa (2025). Predictor-corrector for FDEs (https://www.mathworks.com/matlabcentral/fileexchange/32918-predictor-corrector-for-fdes), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Partial Differential Equation Toolbox in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
2.0

The code now solves complex-valued problems

1.4.0.0

A bug has been corrected (many thanks to prof. S. Ramanathan for his feedback).

1.0.0.0