21 lines
674 B
Matlab
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
|