Filter löschen
Filter löschen

How not to display error message from fzero

13 Ansichten (letzte 30 Tage)
Roberto Gargiulo
Roberto Gargiulo am 9 Mär. 2021
Kommentiert: Roberto Gargiulo am 9 Mär. 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?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 9 Mär. 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 Kommentar
Roberto Gargiulo
Roberto Gargiulo am 9 Mär. 2021
Thanks a lot! Now it works perfectly (and the code has a better format)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming Utilities finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by