查找受约束的函数的最大自变量

时间:2019-04-30 09:55:02

标签: r optimization

正如标题所示,我想解决以下问题。设f表示某个函数,设f0表示给定常数。有找到max{x:f(x) <= f0}的经济方法吗?

这是一个示例:

f = function(x) (x-2)^2
f0 = 0.4

,在这种情况下,正确答案约为2.5。预先谢谢你。

2 个答案:

答案 0 :(得分:1)

使用约束进行优化的一种可能性是定义函数f的版本,如果不满足约束,则返回Inf

f <- function(x) (x-2)^2
f0 <- 0.4
f_optim <- function(x, a = f0) ifelse(f(x) <= a, f(x), Inf)

optimize(f_optim, c(-10, 10), a = f0, maximum = T, tol = .Machine$double.eps)
$maximum
[1] 2.632456

$objective
[1] 0.4

答案 1 :(得分:0)

f0 = 0.04
f = function(x) (x - 2)^2

g = function(x, f0) {
  delta = f0 - f(x)
  abs(delta)
}
optimize(g, c(0, 10), f0 = f0, maximum=F, tol= .Machine$double.eps)
相关问题