25 lines
847 B
Matlab
25 lines
847 B
Matlab
function [dy,t]=rlfdiff(y,t,r)
|
|
% rlfdiff - computation of RL derivatives, not recommended
|
|
%
|
|
% [dy,t]=rlfdiff(y,t,r)
|
|
%
|
|
% y, t - the samples of the function at time vector t
|
|
% r - the fractional order, can be nagative for integrals
|
|
% dy - the Riemann-Liouville derivative of y
|
|
|
|
% Copyright (c) Dingyu Xue, Northeastern University, China
|
|
% Last modified 28 March, 2017
|
|
% Last modified 18 May, 2022
|
|
arguments, y(:,1), t(:,1) double, r(1,1) double, end
|
|
[y,h,n]=fdiffcom(y,t); dy1=zeros(1,n);
|
|
if r>-1, m=ceil(r)+1; p=m-r; y3=t.^(p-1);
|
|
elseif r==-1
|
|
yy=0.5*(y(1:n-1)+y(2:n)).*diff(t);
|
|
for i=2:n, dy(i)=dy(i-1)+yy(i-1); end, return
|
|
else, m=-r; y3=t.^(m-1); end
|
|
for i=1:n, dy1(i)=y(i:-1:1).'*(y3(1:i)); end
|
|
if r>-1, dy=diff(dy1,m)/(h^(m-1))/gamma(p); t=t(1:n-m);
|
|
else, dy=dy1*h/gamma(m); end, dy=dy(:);
|
|
end
|
|
|