Dynamic-Calibration/utils/YALMIP-master/@sdpvar/isconvex.m

32 lines
875 B
Mathematica
Raw Permalink Normal View History

2019-12-18 11:25:45 +00:00
function YESNONA = isconvex(p)
%ISCONVEX Tries to determine if a scalar expression is convex
%
% T = isconvex(p)
%
% p: scalar SDPVAR object
% T: The result (1: convex, 0: concave, NaN: cannot be determined)
%
% NOTE : Under development. Do not trust if you have monomials in your model
%
% Example
% sdpvar x y
% isconvex(x+y) will return 1
% isconvex(x+y^2) will return 1
% isconvex(exp(x+y)) will return 1
% isconvex(-exp(x+y)) will return 0
% isconvex(max(x,exp(x+y))) will return 1
% isconvex(-max(x,exp(x+y))) will return 0
% isconvex(max(x,min(x,-x))) will return NaN
YESNONA = NaN;
[F,failure,cause] = expandmodel([],p,sdpsettings('allownonconvex',0,'allowmilp',0));
if failure == 0
YESNONA = true;
else
[F,failure,cause] = expandmodel([],-p,sdpsettings('allownonconvex',0));
if failure == 0
% p is nonconvex
YESNONA = false;
end
end