3

我正在寻找一种通过以下方式将任何数字转换为百分比的方法:

  1. 1.00 是 50%

  2. 低于 1.00 的数字以对数方式接近 0%

  3. 高于 1.00 的数字以对数方式接近 100%。

    x > 0。所以 y 需要接近 0,因为 x 在正侧变得无限小。

我确信这很容易做到,但我不记得该怎么做。

4

4 回答 4

15

尝试1 / (1 + e^(1-x))

这是逻辑函数移动了 1 个单位

图形

如果您希望它更快地接近,您可以将 e 更改为更高的值

编辑:

让 f(0) = 0 你可以使用1 - 2^(-x)

图形

于 2009-11-28T18:38:05.877 回答
4

当您说对数时,您的意思是渐近吗?如果是这样,那么“y 需要接近 0,因为 x 在正侧变得无限小”仅表示 f(0)=0 如果 f 是连续的。在这种情况下 x/(x+1) 将起作用:http ://www.wolframalpha.com/input/?i=x%2F%28x%2B1%29

于 2009-11-28T19:05:13.703 回答
2

怎么样y = f(t) = 1 - exp(-t/tau)

对于接近 0 的 t,y 约为 t/tau。对于接近无穷大的 t,y 渐近接近 1。

至于 f(1)=0.5 的方法,这可以用来求解 tau = 1/log(2)。

于 2009-11-28T19:00:27.627 回答
2

根据您的描述,我听到了 x 立方图 - 非常基本,并且在大多数语言中应该是有效的。

图 http://jedsmith.org/static/S01813305.png

y=(x-1)^3+1这是用(转换为(1,1)原点)绘制的。当然,您可以通过简单地缩放 50 来将结果设为百分比。

归根结底,您是在尝试找到一种有效的解决方案,以在编程语言而不是 Mathematica 中为您提供粗略的百分比行为,对吗?

于 2009-11-28T19:05:57.007 回答