abs(x)*exp(-0.0856*x), x<=0; 0.00536*x, x>=0.
I want to know how to express it so that cvx can accept it?
This does appear to be convex.
If there were just the
negative x branch, this could be handled using gp mode, with the variable
negative_x being the negative of your
x, so you would have to make the appropriate adjustments elsewhere in your program and in interpreting the results.
cvx_begin gp variable negative_x % If your expression is the objective minimize(max(negative_x,0)*exp(0.0856*negative_x) % If your expression is the left-hand side of a constraint max(negative_x,0)*exp(0.0856*negative_x) <= valid_right_hand_side
Because all variables in gp mode are constrained to be nonnegative, In order to also handle the other branch, perhaps it can be done with Big M logic using binary variable9s). I leave the details to you as well as determining whether the Big M logic can be correctly implemented in gp mode,.
I don’t rule out that there is some clever approach which does not require introduction of binary variables. Nor am I saying for sure that it can be done even with binary variables.
My expression is the objective.But x is a expression,for example,