Help! Equation solved, inaccuracy possible

Hi, everyone. I have a question and I hope someone can please answer me. Thanks!
When I run my mod, I get good results, but I receive the information below:

Equation solved, inaccuracy possible.
The vector of function values is near zero, as measured by the selected value
of the function tolerance. However, the last step was ineffective.

I wonder if this means something wrong and how should I do? PS: I use model_diagnostics and it shows “No obvious problems with this mod-file were detected”.

1 Like

Hi. Are you using a numeric solver in the steady state file, or it’s from Dynare itself?

You are right! I have used a numeric solver to deliver steady states to dynare. The fsolve give me fvals near zeros and the exitflag is 3.

Allow me to be more specified. I firstly solve the steady states with a m file, and then use

load param;
set_param_value(‘beta’,beta);

to deliver ss into dynare. So, is this where the problem comes from?

For what I can understand, this means that the solution found satisfies the specified tolerances, nonetheless some of the numeric characteristics of the last step may indicate that this is not an actual solution (check this topic in Matlab’s forum). In summary, it means what it says, that the solution found to that static equation might be inaccurate.

Though, I don’t actually know which potential consequences this could have in the computation of the dynamic model’s solution. It will run most of the times fine (as you experienced), but I don’t know if a potential not-actually-a-solution solution of the steady state would harm the dynamic solution.

No, the problem does not come from that part of the code, but from the equation you’re trying to solve itself. I mean, maybe that equation does not have a solution that is near the initial guess you provided, and thus the solver is not able to do so, for example. To be more clear it’s not a code problem, it’s a (potential) numeric problem.

Thanks for your answer! I can understand what you mean, while when I follow your topic, I also see someone say it’s not a mistake
https://www.mathworks.com/matlabcentral/answers/429764-how-to-solve-error-message-in-fsolve-stating-the-vector-of-function-values-is-near-zero-as-measur#answer_347174

Now I am confused. Can you tell me how to get rid of this problem? thanks :joy:

That’s correct! It’s not “a mistake” is more a potential numeric issue. And also, as I said, I’m not sure how a non-exact steady state might affect dynamic solution computation (maybe someone might elaborate more on that). Anyways, also I don’t know which tolerance level is accepted to be a good solution, but if it passed the Dynare’s default tolerance for ss (which is eps^(1/3), which is ~6E-6) I think it’s good enough.

And regarding “how to get rid of it”, I’m not an expert but I think providing a better initial guess value would work, but again, since “finding a good initial guess” could sometimes be hard, I think that what you have is good enough (probably even better than that).

Your suggestion is very helpful! Thanks a lot!