How not to display error message from fzero

8 visualizaciones (últimos 30 días)
Roberto Gargiulo
Roberto Gargiulo el 9 de Mzo. de 2021
Comentada: Roberto Gargiulo el 9 de Mzo. de 2021
I've defined the function:
function zeros = findzeros(myf,n_points,min,max)
x = ones(n_points,1);
starting_points=linspace(min,max,n_points);
% warning('off')
for i=1:n_points
try
x(i) = fzero(myf, starting_points(i));
catch
fprintf('No root found');
end
end
x = x(x>=min);
zeros = [x(diff(x)>1e-12); x(1)];
end
In the while looping if often happens that there's an error. I tried using trycatch as suggested elsewhere, but it still results in error messages such as:
Exiting fzero: aborting search for an interval containing a sign change
because no sign change is detected during search.
Function may not have a root.
And there's no messa 'No root found' printed. How can I fix this?

Respuesta aceptada

Walter Roberson
Walter Roberson el 9 de Mzo. de 2021
function zeros = findzeros(myf, n_points, xmin, xmax)
x = ones(n_points,1);
starting_points = linspace(xmin, xmax, n_points);
opts = optimset('display', 'none');
for i=1:n_points
x(i) = fzero(myf, starting_points(i), opts);
end
x = x(x >= xmin);
zeros = [x(diff(x)>1e-12); x(1)];
end
  1 comentario
Roberto Gargiulo
Roberto Gargiulo el 9 de Mzo. de 2021
Thanks a lot! Now it works perfectly (and the code has a better format)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Startup and Shutdown 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