how to continue program with fzero error

조회 수: 5 (최근 30일)
Bob Johnson
Bob Johnson 2011년 2월 24일
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

채택된 답변

Matt Fig
Matt Fig 2011년 2월 24일
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
Jan
Jan 2011년 2월 24일
Voted: Catching an error is more general than avoiding it.
Bob Johnson
Bob Johnson 2011년 2월 24일
Great! This is what I was looking for. Thanks a lot.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2011년 2월 24일
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
Jan
Jan 2011년 2월 24일
Voted. Avoiding an error is superior to catching it.
Bob Johnson
Bob Johnson 2011년 2월 24일
True. Thanks. I will do this as well. Much appreciated

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Problem-Based Optimization Setup에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by