FractionOrderSystem/FOTF Toolbox/caputosym.m

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