MATLAB Answers

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

14 views (last 30 days)
Aleem Andrew
Aleem Andrew on 27 Oct 2020 at 16:59
Commented: Star Strider on 27 Oct 2020 at 19:18
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?

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 27 Oct 2020 at 17:14
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.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by