View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Predictor-corrector PECE method for fractional differential equations

5.0 | 3 ratings Rate this file 26 Downloads (last 30 days) File Size: 5.28 KB File ID: #32918 Version: 1.4

Predictor-corrector PECE method for fractional differential equations



16 Sep 2011 (Updated )

Solves initial value problems for fractional differential equations

| Watch this File

File Information

FDE12 solves an initial value problem for a non-linear differential equation of fractional order (FDE).

This is an implementation of the predictor-corrector method of Adams-Bashforth-Moulton described 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. The stability properties of the method implemented by FDE12 have been studied in [5].


[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
      D^ALPHA Y(t) = FDEFUN(T,Y(T))
      Y^(k)(T0) = Y0(:,k+1), k=0,...,m-1
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 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 depending on ALPHA and given by m. The step-size H>0 is assumed constant throughout the integration.

[T,Y] = FDE12(ALPHA,FDEFUN,T0,TFINAL,Y0,H,PARAM) solves as above with the additional set of parameters for 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 : the corrector is not evaluated and the solution is provided just by the predictor method (the first order rectangular rule);
MU > 0 : the corrector is evaluated by the selected number MU of times; the classical PECE method is obtained for MU=1;
MU = Inf : the 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).
The defalut value for MU is 1

[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.


[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.

Required Products MATLAB
MATLAB release MATLAB 7.9 (R2009b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (11)
14 Feb 2017 fuchang wang

a = 1 ; mu = 4 ;
fdefun = @(t,y) [ a-(mu+1)*y(1)+y(1)^2*y(2) ; mu*y(1)-y(1)^2*y(2) ] ;
Jfdefun = @(t,y) [ -(mu+1)+2*y(1)*y(2) , y(1)^2 ; mu-2*y(1)*y(2) , -y(1)^2 ] ;
alpha = 0.8 ;
t0 = 0 ; tfinal = 100 ; y0 = [ 0.2 ; 0.03] ;
h = 2^(-6) ;
[t, y_flmm2] = flmm2(alpha,fdefun,Jfdefun,t0,tfinal,y0,h) ;
[t, y_fde12] = fde12(alpha,fdefun,t0,tfinal,y0,h) ;
subplot(1,2,1),plot(t,y_flmm2(1,:),t,y_flmm2(2,:)) ;
xlabel('t') ; ylabel('y(t)') ;
legend('y_1(t)','y_2(t)') ;
title('FDE solved by the FLMM2.m code');
subplot(1,2,2),plot(y_flmm2(1,:),y_flmm2(2,:)) ;
xlabel('y1(t)') ; ylabel('y2(t)') ;
title('FDE solved by the FLMM2.m code');
subplot(1,2,1),plot(t,y_fde12(1,:),t,y_fde12(2,:)) ;
xlabel('t') ; ylabel('y(t)') ;
legend('y_1(t)','y_2(t)') ;
title('FDE solved by the FDE12.m code');
subplot(1,2,2),plot(y_fde12(1,:),y_fde12(2,:)) ;
xlabel('y1(t)') ; ylabel('y2(t)') ;
title('FDE solved by the FDE12.m code');

10 Jun 2016 Mohamed Aburakhis

When alpha <1, it is easy to use but when alpha >1 and i have more that one state equations, how can i use it

Comment only
25 May 2016 MVOGO Alain

Could you please provide an example how to use this code in the case of the fractional Lorentz system for example

Comment only
13 May 2016 James506

Hi. I was interested how/if you could use this to solve a system of mixed-order FDEs? For example, if I had an FDE which also had standard first and second order derivatives in it. Only a single value can be prescribed for the equation order (alpha). Thanks

Comment only
16 Apr 2016 Roberto Garrappa

Dear Sasan Attar, the usage of this code is very similar to those of other Matlab codes for ODEs (for instance, ode15s or ode45). Anyway, on the software page of my website you can find a short tutorial to the use of this code and to the use of other codes for FDEs. Thank you for your interest.

Comment only
15 Apr 2016 sasan attar

Could you please provide an example how to use this code

13 Feb 2015 Manashita Borah

very helpful

30 Jun 2014 Roberto Garrappa

On the software section of my home page I have uploaded a short tutorial on the use of this code for solving FDEs

Comment only
27 May 2014 qiq

qiq (view profile)

how to solve fde system with 2 or more equations?

Comment only
19 Jan 2014 amaal

amaal (view profile)

how i can write the input fdefun?

Comment only
09 Sep 2013 Mirza

Mirza (view profile)

Could you please provide an example how to use this code.

Comment only
06 Jul 2012 1.4

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

Contact us