Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am looking for a function f(x) with a value range of [0,1].

f(x) should increase from 0 to 1 while its parameter x increases from 0 to +infinity.

f(x) increases very fast when x is small, and then very slow and eventually approach 1 when x is infinity.

Here is a figure. The green curve is what I am looking for:

enter image description here


It would be great if I can adjust the slope of the increase. Although this is not a compulsory requirement.

share|cite|improve this question
Do you want it to actually take on the values 0 and 1? – Mike Miller Jul 16 '14 at 17:20
@MikeMiller value 0 yes. value 1 no. f(x)=0 when x=0, =1 when x=infinity, and = a value between 0 and 1 otherwise. – Changwang Zhang Jul 16 '14 at 17:22
Consider $f(x)=1-\frac1{x+1}$ – abiessu Jul 16 '14 at 17:22
@Leo do you want this $f$ to be $\mathcal{C}^0$? or something more strict perhaps? – DanZimm Jul 16 '14 at 19:20
It is always going to be relative fast when $x$ is small, a simple consequence of the fact that you require it to be bounded and monotone. – Gina Jul 16 '14 at 19:21
up vote 42 down vote accepted

I think this should work well for your purposes: $$ f(x) = \frac{x}{x + a} $$ Where $a$ can be any number bigger than $0$. The smaller $a$ is, the sharper the increase will be.

ADDENDUM: if you want to extend this to an odd (and continuously differentiable) function, simply take $$ f(x) = \frac{x}{|x| + a} $$

share|cite|improve this answer
I love this function so much. So simple, elegant, and nice.... – Changwang Zhang Jul 16 '14 at 17:30
And in particular, the slope at $x=0$ is $\dfrac{1}{a}$. – Théophile Jul 16 '14 at 17:35
I like this, but it would be great to be able to parameterise the rate of convergence to the asymptote as well as the slope at the origin. – Keith Jul 17 '14 at 3:15
@Keith in what sense do you mean? Would something like $f(x) = \frac{x^n}{x^n + a}$ be sufficient for those purposes? – Omnomnomnom Jul 17 '14 at 10:56
@Omnomnomnom That $f(x)$ does not have the right gradient at $x=0$. $$g(x) = f(x)^{1+bf(x)}$$ would do, but seems a bit ugly. – Keith Jul 17 '14 at 23:31

Here are two simple functions with slope $k$ at $x=0$, for some $k>0$:

$$f(x) = 1-e^{-kx}$$


$$g(x) = \frac{2}{\pi}\arctan(\frac{\pi}{2}kx)$$

The first of these approaches $1$ more quickly than the second.

share|cite|improve this answer
One nice thing about the arctan version: it also approaches -1 as x approaches -infinity. – Brilliand Jul 16 '14 at 21:00

One I use very often is : $$ \tanh x = \frac{\sinh x}{\cosh x} = \frac {e^x - e^{-x}} {e^x + e^{-x}} = \frac{e^{2x} - 1} {e^{2x} + 1} = \frac{1 - e^{-2x}} {1 + e^{-2x}}$$

The increase at the begining around 0 is "only" linear but can do the work. and you can choose the slope at $x \mapsto 0$ Hyperbolic tangent

share|cite|improve this answer
Use $f(x) = \tanh mx$ if you want slope $m$ at $x = 0$. – David K Jul 17 '14 at 20:18

I'm surprised no one has mentioned erf(x) aka the "Error Function", defined roughly as the normalized area under the bell curve as a function of the upper limit of integration. For x > 1, it satisfies your requirement and also has a slope that is easily controlled (and made arbitrarily large at 0) by the width of your Gaussian.

share|cite|improve this answer
Why is this answer downvoted so much? The error function is in fact a sigmoid curve with limit $1$ as $x\to\infty$ and is different from the other suggestions. Perhaps the fact that it isn't an elementary function makes it less appealing, but it certainly meets the criteria in the OP. – Mario Carneiro Jul 17 '14 at 3:27

$f(x) = 1 - \exp(-x/\epsilon)$ for $\epsilon > 0$ small will do.

share|cite|improve this answer

Some time ago I had an interest in such a function, but with the added requirement that it should map negative values of $x$ onto the range $(-1,0)$, asymptotically approaching $-1$ as $x$ goes to $-\infty$. In fact, I wanted $f(-x) = -f(x)$.

I came up with something like this:

$$ f(x) = \frac{x}{\sqrt{a^2 + x^2}} .$$

This has slope $\frac{1}{|a|\,}$ at $x = 0$.

share|cite|improve this answer

Simple version: $$f(x)=1-\mathrm e^{-a\sqrt{x}}\qquad (a\gt0)$$

Slightly more elaborate version:$$f(x)=1-\mathrm e^{-a\sqrt{x}-bx}\qquad (a\gt0,\ b\geqslant0)$$ Every such function fits every requisite in the question, including the infinite slope at $0$. The parameter $a$ can help to tune the increase near $0$. The parameter $b$ can help to tune the increase near $+\infty$. To get even quicker convergence to $1$ when $x\to+\infty$, one can replace $-bx$ in the exponent by $-bx^n$ for some $b\gt0$ and $n\gt1$.

Once one understands the principle, a host of other solutions springs to mind.

share|cite|improve this answer

Try $f(x) = 1-e^{-x^2}$ , which will be 0 for x = 0 and approach 1 rapidly for big x.

share|cite|improve this answer
But doesn't increase very fast when $x$ is small. – Henning Makholm Jul 16 '14 at 17:27
Judging from the scale of his sketch, i thought it would be very sufficiently fast. – ChocolateBar Jul 16 '14 at 17:28
Look at the derivative of the function at $x = 0$. It seems the OP wants something with initially a large positive slope that gradually flattens out, not a slope that starts flat, increases, then decreases. – David K Jul 16 '14 at 17:35

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.