how to continue program with fzero error
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Matt Fig
il 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 Commenti
Più risposte (1)
Walter Roberson
il 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 Commenti
Vedere anche
Categorie
Scopri di più su Problem-Based Optimization Setup in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!