【问题标题】:Finding the largest argument of a function subject to a bound查找受限制的函数的最大参数
【发布时间】:2019-05-03 15:31:34
【问题描述】:

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

下面是一个示例:

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

在这种情况下,正确答案大约是 2.5。提前谢谢你。

【问题讨论】:

  • 发布您尝试过的内容。 SO 不是编码写作服务。
  • 不,但它是一个问答系统,有很多像我这样的新用户不太擅长处理这些问题。我不会强迫任何人帮忙。
  • 我不确定我是否理解您用于约束的表示法,但也许?constrOptim 函数可以帮助您?
  • @MrFlick 感谢您的评论。我知道 constrOptim 但这在这里无济于事,因为我正在寻找最大值 $x$ 而不是函数的最大值及其最大化器。
  • 类似optimize(function(x) {f(x) - f0}, interval = c(-2, 4))?注意:我首先绘制了curve(f(x) - f0, from = -2, to = 4)

标签: r optimization


【解决方案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

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-24
      • 2020-12-10
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2014-05-09
      相关资源
      最近更新 更多