matlab2012a vs matlab20111b. Why does the latter produces an error message?
2 views (last 30 days)
I use matlab 2012a and matlab 2011b
I have constructed a code and whenever I run it in matlab 2012a everything runs normal Yet, whenever I run it in matlab2011b I obtain the following error which is related to the fminunc function
??? Error using ==> roots at 28
Input to ROOTS must not contain NaN or
Error in ==>
stationaryPoint = roots([3*coeff(1)
Error in ==>
lineSearch>pickAlphaWithinInterval at 279
Error in ==> lineSearch>sectioningPhase at
Error in ==> lineSearch at 55
= sectioningPhase(funfcn, ...
Error in ==> fminusub at 208
Error in ==> fminunc at 376
Error in ==> testxa2 at 252
Why is this happening? Do I neeed to update this function within matlab2011b?
Seth DeLand on 22 Aug 2012
I think the cause here is that fminunc was updated in R2012a to attempt to recover when the objective function returns NaN or Inf: http://www.mathworks.com/help/toolbox/optim/rn/bs86_xz.html#bs87ab0
My guess is that at some point your objective function 'CES_mode7cutDCsvk' is returning a value of Inf or NaN. In 12a fminunc attempts to recover from this, but in 11b it just causes an error.
If you need to use 11b, check out this thread for some things you could try: http://www.mathworks.com/matlabcentral/newsreader/view_thread/270387
Of course, if you can use 12a that would be best since the solver has been enhanced.