 # Max min function

Hi, all.
One of my equations is as follows: I linearized this equation: and wrote its dynare code in the same way.

The error that dynare pointed out to me was as follows:
WARNING: you have declared your model ‘linear’ but you are using a function (max, min, abs, sign) or an operator (<, >, <=, >=, ==, !=) which potentially makes it non-linear.

My first question is whether my linearization is correct? In fact, I did not consider the maximum in the linearization. I do not think this is correct !!!

My second question is, should I consider the model nonlinear?
Is there a similar model with dynare code available that I can use?

No, your linearization is not correct as you do not take into account the derivatives of max/min. According to the manual:

Note that these functions are differentiable everywhere except on a line of the 2-dimensional real plane defined by a=b. However for facilitating convergence of Newton-type methods, Dynare assumes that, at the points of non-differentiability, the partial derivative of these functions with respect to the first (resp. the second) argument is equal to 1 (resp. to 0) (i.e. the derivatives at the kink are equal to the derivatives observed on the half-plane where the function is equal to its first argument).

The error message you get is due to the fact that you have `model(linear)` in your mod file, which, as you are using max or min operators is not correct, because this introduces nonlinearity into your model.

Regarding examples on how to introduce max/min (or better using lmmcp tags), you can have a look at our mod files in our testsuite:

Hi, @wmutschl.

Just to ask you a quick follow up question: does max/min do the exact same as `mcp` tag when it comes to solving `lmmcp`?

In effect, yes. But the model needs to be set up with the appropriate complementarity condition for the algorithm to work.

1 Like

Thanks!