FractionOrderSystem/FOTF Toolbox/riemannsym.m

21 lines
674 B
Matlab

function dy=riemannsym(f,alpha,t0,t)
% riemannsym Symbolic computing of Roemann-Liouville derivatives
% 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
syms tau; alpha=sym(alpha);
switch class(f)
case 'sym', F=subs(f,t,tau);
case 'symfun', F=f(tau);
otherwise, error('f must be a symbolic expression')
end
if alpha<0, alpha=-alpha;
dy=1/gamma(alpha)*int(F/(t-tau)^(1-alpha),tau,t0,t);
elseif alpha==0, dy=f;
else, n=ceil(alpha);
f1=int(F/(t-tau)^(1+alpha-n),tau,t0,t);
dy=diff(f1,t,n)/gamma(n-alpha);
end
end