Find the derivative of a piecewise function and plot the result

5 次查看(过去 30 天)
Hi, I have the following code which includes a piecewise function "s" of theta and I would like to differentiate this function with respect to theta and plot the result after.
L = 2.5;
betha1 = 50*pi/180;
betha2 = 260*pi/180;
curv_arm = @(theta) L/2*(1-cos((pi*(theta-betha1))/betha1));
curv_par = @(theta) L*(1-(theta-(100*pi/180))/(betha2)+((1)/(2*pi))*(sin(2*pi*(theta-(100*pi/180))/(betha2))));
syms theta
s = @(theta) [0*((0<theta) & (theta<50*pi)) + curv_arm(theta).*((50*pi/180<theta) & (theta<100*pi/180)) +
curv_par(theta).*((100*pi/180<theta) & (theta<2*pi))];
fplot(s, [0,6], 'b')
I have managed to plot the current function but I can't differentiate with the command diff for some reason

采纳的回答

Star Strider
Star Strider 2017-12-6
The Symbolic Math Toolbox diff function will not differentiate it because of the discontinuities, either using my function or your original symbolic function for ‘s’. (The derivative does not exist at the discontinuities.)
The best you can do is to evaluate it numerically over a suitably fine vector for ‘theta’ (use the linspace function) and then use the gradient function to calculate the numerical derivative.
Then you can plot both the function and its numerical derivative as functions of ‘theta’.
  10 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Calculus 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by