fzero function calculating all zeros within interval
    53 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Rick
      
 el 28 de Jul. de 2014
  
Hello,
I was thinking about the function fzero. If you have a function that has multiple roots within an interval of your choice, is there a way to show all the roots as an array, instead of only one root closest to the guess?
0 comentarios
Respuesta aceptada
  Star Strider
      
      
 el 28 de Jul. de 2014
        You can first get an estimate of the zeros (if any) in your interval-of-interest by calculating it in that interval, then multiplying the function by circshift of the function to detect any zero-crossings that might be present. After that, use those estimates as your initial guesses for fzero
To illustrate:
x = linspace(0,50,200);
y = @(x) sin(x);
zx = x(y(x).*circshift(y(x),[0 -1]) <= 0);  % Estimate zero crossings
zx = zx(1:end-1);                           % Eliminate any due to ‘wrap-around’ effect
for k1 = 1:length(zx)
    fz(k1) = fzero(y, zx(k1));
end
1 comentario
  mostafa
 el 17 de Ag. de 2019
				
      Editada: mostafa
 el 17 de Ag. de 2019
  
			It should be corrected to this.
x = linspace(0,50,200);
y = @(x) sin(x);
zx = y(x).*circshift(y(x),[-1]) <= 0;  % Estimate zero crossings
zx = zx(1:end-1);                      % Eliminate any due to ‘wrap-around’ effect
zx = x(zx);
for k1 = 1:length(zx)
    fz(k1) = fzero(y, zx(k1));
end
fz
Más respuestas (2)
  Matt J
      
      
 el 28 de Jul. de 2014
        
      Editada: Matt J
      
      
 el 31 de Oct. de 2018
  
      Not for general functions. Certain functions, for example, have infinite roots in a finite interval, e.g., f(x)=0 or f(x)=sin(1/x). So of course the routine won't find all of them for you.
You can't reliably find multiple roots without exploiting some specific apriori known thing about the structure of the function, e.g., that it's a polynomial.
0 comentarios
Ver también
Categorías
				Más información sobre Polynomials 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!




