【问题标题】:How to maximize the area under -log(x) curve?如何最大化-log(x)曲线下的面积?
【发布时间】:2017-05-15 10:58:30
【问题描述】:

我正在尝试获取 xy 曲线下面积最大的坐标:y=-15.7log(x)+154.94。我想用 R 或 Python 计算它。有人可以帮我找到吗?


背景:我有销售 (y) 与价格 (x) 的数据点。我尝试在 R 中拟合对数曲线:lm(formula = y ~ log(x)),它给了我上面的等式。我正在努力增加收入,这是销售和价格的产物。因此曲线下的矩形区域应该最大化。

【问题讨论】:

  • 一点的面积无限小。你能更清楚地解释你的目标吗?向我们展示反映您预期行为的数学(或伪代码)。
  • 这是一个优化问题。您可以最小化卡方、进行曲线拟合、最大化对数似然等,以生成 x、y 的优化值。查找 scipy 文档“scipy.optimize”。
  • @aryamccarthy 我有销售与价格的数据点。我尝试拟合对数曲线。为此,我采用了 lm(formula = y ~ log(x)) 这给了我截距。这给了我等式:y=-15.7log(x)+154.94。这里 y 是销售额,x 是价格。我正在努力增加收入,这是销售和价格的产物。因此曲线下的矩形面积应该是最大的,我想找到 x 和 y 的那些点,这些点在这个方程下的面积是最大的。

标签: python r python-2.7 equation logarithm


【解决方案1】:

R 解决方案

# objective function should be minimized
NegArea <- function (x) x * (15.7 * log(x) - 154.94)
# sketch this function: there is a minimum
curve(NegArea, from = 0, to = 10000)
# use optimize()
optimize(NegArea, c(4000, 8000))

解析解

一阶导数是:

15.7 + 15.7 * log(x) - 154.94

将其设置为零并解决它:

x = 7106.675

这与 R 结果一致。

【讨论】:

  • 为什么要最小化目标函数?我需要找到矩形在函数下的 x 和 y 坐标应该是最大值。
  • 因此,我得到的最小输出为 7106。那么方程y=-15.7log(x)+154.94下矩形面积为7106的X值呢?
【解决方案2】:

这不是编程问题,而是数学问题,如果我在你的问题中得到正确的函数,答案是“无论图形在哪里碰到 x 轴”。
但我认为那不是你想要的。也许您想要 O(0,0) 和 P(x, y) 之间的矩形?
比你仍然应该简单地使用 cas 和 a-level 数学: A = x*(-15.7log(x)+154.94)

【讨论】:

  • 等式是正确的,我想找到 O(0,0) 和 P(x, y) 之间的矩形区域最大的点。你能详细说明一下吗?
  • 是递减函数。
  • 不是单调的。它从 0 开始上升,因为 log(x) 永远增加,它在 x=e^(7747/785) 或 19317.94641538007 A(e^(7747/785)) = 1693225.98something 再次达到 y=0 你真的会想用数学来解决这个问题,而不是通过计算从 0 到 19317 的每个 x 的 A 值。
  • 请不要是-log(x)。因此它是一个递减函数。
  • 我注意到了,这就是为什么它不会从 0 增加到 inf 而是在一段时间后变为 -inf 的原因。你真的应该在数学论坛上问这个问题。它在每个 CAS 中实现了数百次,您既不需要 R 也不需要 Python。
猜你喜欢
  • 2017-05-26
  • 2021-01-02
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多