Finding all the zeroes of a discontinuous function in a particular range

3 vues (au cours des 30 derniers jours)
I am trying to find the zeroes of the following symbolic function.
syms x
moment =20*heaviside(x - 8)*(x - 8) - (3*x^2*heaviside(x))/4 + 5*heaviside(x - 20)*(x - 20) +...
(3*heaviside(x - 20)*(x - 20)^2)/4;
fplot(diff(moment,1),[-2 20])
solve(diff(moment,1) == 0, x, 'MaxDegree', 4);
extrema = vpa(ans, 6)
subs(moment,extrema)
Matlabs outputs
extrema =
-1.0
ans =
0.0
However, the first derivative of the above moment function has a number of zeroes located at points other than -1, for example at approximately x = 13. Could someone please explain how all the zeroes or the zeroes in a particular range can be found?

Réponse acceptée

Star Strider
Star Strider le 27 Oct 2020
It may be version-dependent.
In R2020b (Update 1), I get:
extrema =
13.3333
-1.0
ans =
-26.666666666666666666666666670975
0
Plotting the function as well as the derivative:
figure
fplot(diff(moment,1),[-2 20])
hold on
fplot(moment,[-2 20])
hold off
supports those.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by