how to continue program with fzero error
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I am using fzero to solve a nonlinear univariate function. However, I am iterating over many parameter values. So, if fzero can't find a root for one set of parameters, that is fine, but I want it to continue to the next set. However, I keep getting the error
??? Error using ==> fzero at 293 The function values at the interval endpoints must differ in sign.
Can anyone tell me the proper way to handle this? Should I go into the function, comment out the error and put a default output, or is there a better way to do this. Thanks.
All the best, Bob
0 Kommentare
Akzeptierte Antwort
Matt Fig
am 24 Feb. 2011
Use a TRY-CATCH block. I'll assume you are looping over the parameter set and storing the roots in a variable S.
cnt = 1;
for ii = PARAMS
try
T = fzero(...);
cnt = cnt + 1;
S(cnt) = T; % If FZERO errors, this assignment won't happen.
catch
fprintf('No root found for parameter %f\n',ii); %optioinal
end
end
2 Kommentare
Weitere Antworten (1)
Walter Roberson
am 24 Feb. 2011
Try-catch will certainly work, but I wonder why you don't just do the two endpoint evaluations yourself and skip the fzero call if the signs are the same?
2 Kommentare
Siehe auch
Kategorien
Mehr zu Problem-Based Optimization Setup 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!