Finding the multiple zeros within a prescribed interval

8 Ansichten (letzte 30 Tage)
Matthew Hunt
Matthew Hunt am 13 Nov. 2018
Kommentiert: Torsten am 14 Nov. 2018
I wish to solve the nonlinar function:
=0
within a prescribed interval, say (0,100] say, I'm aware of using an annonymous function and using fzero or fsolve, but how do I get say multiple solutions?

Antworten (1)

Torsten
Torsten am 13 Nov. 2018
Bearbeitet: Torsten am 13 Nov. 2018
deltax = 1e-4;
xright = 100;
n = floor(xright/pi);
fun = @(x)tan(x)-x;
for i=1:n
left = (2*i-1)*pi/2.0 + deltax;
right = (2*i+1)*pi/2.0 - deltax;
sol(i) = fzero(fun,[left right]);
end
sol
fun(sol)
  7 Kommentare
Matt J
Matt J am 13 Nov. 2018
Bearbeitet: Matt J am 13 Nov. 2018
No, the strategy to find all zeros of a function in a specified interval will always depend on the behaviour of the function itself. So no general guideline can be given.
Imagine, for example, that you were instead trying to find all roots of contained in the interval [0,a]. No matter what you choose, there would always be infinite roots in the interval.
Torsten
Torsten am 14 Nov. 2018
@Matthew Hunt:
You know that tan(x) -x -> -Inf for x->2*(k-1)*pi/2 from the right and tan(x) - x -> +Inf for x->2*(k+1)*pi/2 from the left. So there must be a root in the interval 2*(k-1)*pi/2 : 2*(k+1)*pi/2. Plotting the function tan(x) - x you can see that there is exactly one root in this interval. This explains my code and the fact that it captures all roots in a specified interval.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by