Getting 3 zeros from a function using fzero
    12 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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]);
0 comentarios
Respuesta aceptada
  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.
Más respuestas (1)
  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
      
      
 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
      
      
 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.
Ver también
Categorías
				Más información sobre Surrogate Optimization 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!