你如何创造一个收益递减的公式?

时间:2010-05-11 18:59:01

标签: math function

我想这是一个数学问题,而不是一个编程问题,但是什么是创建收益递减的公式的好方法?

以下是我希望曲线看起来如何的一些示例点。

f(1) = 1
f(1.5)= .98
f(2) = .95
f(2.5) = .9
f(3) = .8
f(4) = .7
f(5) = .6
f(10) = .5
f(20) = .25 

请注意,随着输入变高,百分比会迅速下降。有没有办法对具有非常平滑和准确的曲线的函数进行建模,并说明这一点?

另一种说法是使用一个真实的例子。你知道在暗黑破坏神II中他们有魔法发现吗?魔法发现的回报越来越少。如果你得到100%,真正的魔法发现仍然是100%。但是得到的越多,你的实际魔法发现就会下降。这么多说如果你有1200,你真正的魔法发现可能是450%。所以他们有这样的功能:

actualMagicFind(magicFind) = // some way to reduced magic find

3 个答案:

答案 0 :(得分:16)

f(x)= f(0)e -rx


其中r是复合递减收益率

这只是指数衰减

答案 1 :(得分:4)

  

f(1)= 1
  f(1.5)= .98
  f(2)= .95
  f(2.5)=。9
  f(3)=。8
  f(4)=。7
  f(5)= .6
  f(10)= .5
  f(20)=。25

这没有意义:对于3-5,每次添加一个减去.1。使用实曲线,输出不会在任何均匀间隔的输入之间均匀分布。换句话说,曲线不是曲线,如图所示:https://docs.google.com/spreadsheets/d/1EEbRxTyYalPSyQ93rcIbKiIvmYRX1lhRvkRh_HyofJc/edit?usp=sharing

所以,让我们忽略你的曲线&#34 ;;有几种方法可以创造递减收益。我最喜欢的一个是:

f(x) = (x*a) / (x+b) + c

您可以根据需要设置abc。使用此格式a + c *基本上*成为您的最大可能输出,c是您的最小值,b控制输出值缩放的速度及其有效性相对于{{1 }}。当输入增加时,此曲线当然会增加输出,而您的示例希望在输入增加时减小输出。要解决此问题,您可以交换分子和分母:

a

这使得最小输出值等于f(x) = (x+b) / (x*a) + c,当输入值接近0时,最大输出值接近无穷大。1/a + c再次控制输出的缩放速度及其相对于价值b

另一种方法是使用类似@Pierreten所提到的内容,但我不确定为什么他明确使用a

e

a^(-bx)a都会对曲线的缩放速度产生深远的影响。如果b大于0且小于1,则输出将随着输入的增加而增加,但也会产生相反的效果,这意味着它将具有增加的回报,而不是减少。如果a大于1,那么当输入随着收益递减而增加时,您将看到输出的预期效果降低。以下是我发现的最接近您描述的数字的内容:

  

f(x)= 1.01 ^( - 6.96607x)
  f(0)= 1
  f(1)= 0.933
  f(3)= 0.812
  f(10)= 0.5
  f(20)= 0.25

还有其他一些选项,但这已足够长了。

答案 2 :(得分:1)

任何反指数函数,例如f(x) = 1/(x2)。修改指数以调整曲线的陡度。