Я должен проверить, является ли функция выпуклой или нет в заданном интервале.
Я использую формулу с лямбда-выражением. Функция 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,1,.01))
Функция должна возвращать либо TRUE
, либо FALSE
в зависимости отна выпуклости функции, однако я получаю вектор TRUE
с и FALSE
с.
Например, isConvex(exp, 1, 3, seq(0,1,.01))
должен вернуть [1] TRUE
.
В соответствии с моей задачей, лямбда должна быть последовательностью.