Borrar filtros
Borrar filtros

Getting 3 zeros from a function using fzero

4 visualizaciones (últimos 30 días)
D
D el 15 de Oct. de 2011
I'm trying to collect the 3 zeros over the interval [-5,5] for the function in my code below. I can't seem to figure out how to used the fzero function so I can collect all three zero values and store them.
my_function = @(x) (-x^2 - 5*x - 3 + e^x);
a = fzero(my_function,[-5 5]);

Respuesta aceptada

Ashikur
Ashikur el 16 de Oct. de 2011
Try this
my_function = @(x) (-x^2 - 5*x - 3 + exp(x));
for i = -5:.01:5
a = fzero(my_function,i)
ind = int8((5.01+i)*100)
b(ind) = a;
end
result = unique(b)
Note: fzero outputs only one value, and the limit must evaluate the function +Ve and -Ve in the limiting edges. So you have to try a loop.
  1 comentario
D
D el 16 de Oct. de 2011
Thanks, I was hoping to find a way without for loops, but if it works, it works. I went with the following to get the 3 zeros stored in a single array.
for i = -5:.02:5
a = fzero(my_function,i);
if (b(end) == 0) && (b(end) ~= a)
b(length(b)) = a;
elseif (b(end) ~= a) && (abs((b(end) - a)) > .1)
b(length(b) + 1) = a;
end
end

Iniciar sesión para comentar.

Más respuestas (1)

Fangjun Jiang
Fangjun Jiang el 16 de Oct. de 2011
Are there three zeros? I only get one. Use exp(x), instead of e^x
>> my_function = @(x) (-x^2 - 5*x - 3 + exp(x));
a = fzero(my_function,[-5 5])
a =
-4.306510588580705
  3 comentarios
Walter Roberson
Walter Roberson el 16 de Oct. de 2011
There are 3 zeros,
-.5426539024,
3.482467600,
-4.306510589
Remember, fzero stops when it finds a single zero.
Fangjun Jiang
Fangjun Jiang el 16 de Oct. de 2011
That is good to know. I didn't spend time on it. I thought the OP could get there after passing the e^x error.

Iniciar sesión para comentar.

Categorías

Más información sobre Function Handles 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!

Translated by