23 lines
812 B
Matlab
23 lines
812 B
Matlab
function dy=caputosym(f,alpha,t0,t)
|
|
%caputosym evaluates symbolically Caputo derivatives
|
|
%
|
|
% dy=caputosym(f,alpha,t0,t)
|
|
%
|
|
% f - symbolic expression or symbolic function
|
|
% alpha - fractional order, must be a symbolic number
|
|
% t0 - initial time, default of 0
|
|
% t - final time, woth default of symbolic t
|
|
|
|
% Copyright (c) Dingyu Xue, Northeastern University, China
|
|
% Last Modified 18 May, 2022
|
|
arguments, f(1,1), alpha(1,1), t0(1,1)=0, t(1,1)=symvar(f), end
|
|
if alpha<=0, dy=riemannsym(f,alpha,t0,t); return; end
|
|
syms tau; alpha=sym(alpha); m=ceil(alpha); gam=m-alpha;
|
|
switch class(f)
|
|
case 'sym', F=diff(subs(f,t,tau),m);
|
|
case 'symfun', F=diff(f(tau),m);
|
|
otherwise, error('f must be a symbolic expression')
|
|
end
|
|
dy=1/gamma(gam)*int(F/(t-tau)^(1-gam),tau,t0,t);
|
|
end
|