12
$\begingroup$

I need a function similar to Log but it should produce numbers between 0 and 1 Something like:

 f(0)=0 f(1)=0.1 f(2)=0.15 f(3)=0.17 f(100)=0.8 f(1000)=0.95 f(1000000000)=0.99999999 

I need this in my program that I am programming and I can use only standard functions like log, exp, etc... Any help would be appreciated.

  • 0
    Similar to log in what way?2011-08-14

3 Answers 3

15

Sasha's suggestion of $f(x) = 1-\exp(-x)$ is good, but doesn't fit your example values too well, even if you scale $x$ appropriately. However, some other similar function, such as $f(x) = 1-1/(1+x)$, might work even better.

  • 13
    In case you're using this, you can generalize the example to $f(x) = x/(a+x)$; this way, you can adjust $a$ to have a slower or faster growing curve.2011-08-14
5

I like the hyperbolic tan (and it likes me) $f(x) = \tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} = \frac{e^{2x}-1}{e^{2x}+1} = 1 - \frac{2}{e^{2x}+1}$

$f$ is strictly increasing and satisfies f'(0) = 1, $f(0) = 0$, $f(\infty) = 1$.

If you want to map $(-\infty, \infty)$ into $[0, 1)$ (instead of $[0, \infty)$), use $f(x) = \frac{\tanh(x)+1}{2} = 1 - \frac{1}{e^{2x}+1}.$

I have seen this called the "logistic" curve, or "s-shaped" curve.

4

If you want it to involve log, try $f(x) = 1 - \log(a)/\log(a+bx)$ for suitable positive numbers $a$ and $b$.

  • 0
    The beauty of this answer is that you can interpret $\log$ here as either the common or natural one... :D2011-08-14