When using cvx, I noticed that when certain parameter values are set to be very small or very large, cvx fails to obtain the correct solution. Specifically, in the code provided below, the optimization variable ‘a’ should be set to 0 in order to maximize the objective function, but the result shows that ‘a’ is a number close to 1. However, if the parameter ‘kn’ is changed from 10^-27 to 10^-9 or a larger value, the correct solution is obtained. I would like to know why this happens. If cvx has specific requirements for the data value during computation, what is the specific range? How can I avoid this issue?

Here is my code:

N = 8;

kn = 10^-27;

cvx_begin

variable a

maximize (((1-a)/kn)^(1/3));

subject to

a>=0

a<=1

cvx_end