我应该检查给定时间间隔内函数是否为凸函数。
我正在用lambda公式。如果满足以下条件,则函数f是凸的:
这是我写的功能:
isConvex <- function(FUN,x1,x2,lambda) {
if (!is.function(FUN))
return(errorCondition("Argument FUN is not a function."))
if (x1 > x2 )
return(errorCondition("Argument x1 needs to be smaller than x2."))
if (!(max(lambda) == 1 && min(lambda) == 0))
return(errorCondition("Argument lambda needs to be a sequence from 0 to 1."))
return (FUN( lambda*x1 + (1-lambda) * x2 ) - lambda*FUN(x1) + (1-lambda)*FUN(x2) <= 0)
}
isConvex(somefunction,-1,1,seq(0,.01))
根据函数的凸性,该函数应该返回TRUE
或FALSE
,但是我得到了TRUE
s和FALSE
s的向量。
例如,isConvex(exp,3,.01))
应该返回[1] TRUE
。
根据我的任务,lambda应该是一个序列。