Second time derivative of function?
22 views (last 30 days)
Show older comments
Christian Aranas
on 25 Jul 2018
Commented: Beau Olafson
on 30 May 2019
I have defined a model of displacement 'x' and represented its first derivative with 'v' using the code below. However, when I want to differentiate 'v' using the same function it does not work. Is there a different approach to differentiating derivatives in MATLAB? here is the code:
h = 60 ;
b =130 ;
r = 28 ;
w = 2*pi; % angular velocity
t =0:(1/36):1 ;
x = b*(r*sin(w*t))./(h-r*cos(w*t));
v = diff(x)./diff(t) ; % derivative of x w.r.t t
a = diff(v)./diff(t) ; % derivative of v w.r.t t
0 Comments
Accepted Answer
Aquatris
on 25 Jul 2018
It does not work, because the length of diff(x) and diff(t) are not the same. diff function takes the difference between each element. However returns 1 element less than the original vector since there is no way to find the difference for the last element.
Since you have fixed step size you can use
v = diff(x)./(1/36);
td = t(1:end-1); % time vector for plotting first derivative
a = diff(v)./(1/36) ;tdd = t(1:end-2)
tdd = t(1:end-2); % time vector for plotting second derivative
Alternatively you might try symbolic toolbox to derive the derivative of the expression symbolicly and then plug in numbers.
More Answers (1)
KSSV
on 25 Jul 2018
diff reduces the dimension of vector by one. You may use gradient
h = 60 ;
b =130 ;
r = 28 ;
w = 2*pi; % angular velocity
t =0:(1/36):1 ;
x = b*(r*sin(w*t))./(h-r*cos(w*t));
v = gradient(x)./gradient(t) ; % derivative of x w.r.t t
a = gradient(v)./gradient(t) ; % derivative of v w.r.t t
Or, reduce the time step by one and use _diff_
h = 60 ;
b =130 ;
r = 28 ;
w = 2*pi; % angular velocity
t =0:(1/36):1 ;
x = b*(r*sin(w*t))./(h-r*cos(w*t));
v = diff(x)./diff(t) ; % derivative of x w.r.t t
a = diff(v)./diff(t(1:end-1)) ; % derivative of v w.r.t t
1 Comment
Beau Olafson
on 30 May 2019
That gradient code 'literally' saved my life. I was so dang lost until then!
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!