Find the derivative of a piecewise function and plot the result
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Edgar Dominguez Ugalde
el 6 de Dic. de 2017
Comentada: Star Strider
el 7 de Dic. de 2017
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
0 comentarios
Respuesta aceptada
Star Strider
el 6 de Dic. de 2017
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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Calculus en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!