13
$\begingroup$

Please have a look at the function: $$f(x) = \left(x + \frac{1}{x^x}\right)^x - x^x$$

You may see the plot on Wolfram Alpha.

Why does it have such a weird behaviour from $x = 13$? It starts swinging up and down so weirdly!

$\endgroup$
8
  • 11
    $\begingroup$ My guess is floating point error. When using floating point numbers, significant digits start to become a big factor. $x^{-x}$ vs $x^x$ would be a source of concern. My guess is it is bouncing between large positive and negative numbers because it is having trouble manipulating these numbers on these growing disparate scales $\endgroup$
    – cnick
    Jun 10, 2014 at 17:00
  • $\begingroup$ Closer inspection suggest things start to squiggle in an unstable fashion between $x=7$ and $8$ $\endgroup$
    – cnick
    Jun 10, 2014 at 17:04
  • 3
    $\begingroup$ The machine epsilon for number in IEEE double precision is about $2.2\times 10^{-16}$ (i.e 53 bit of precision). At $x = 13$, the relative error between the two terms $x$ and $x + \frac{1}{x^x}$ is $1/(13^{14}) \sim 2.539\times 10^{-16}$. That's why the number start to become really crazy at $x \sim 13$. $\endgroup$ Jun 10, 2014 at 17:22
  • $\begingroup$ Why does this function start swinging up and down so weirdly? - Because it's a ninja function ! :-) Or maybe a ninja disguised as a function ! $\endgroup$
    – Lucian
    Jun 10, 2014 at 17:57
  • $\begingroup$ @achille-hui, but why does it start squiggling in an unstable fashion on x ∈ (7, 8)? Why is the bouncing doesn't start abruptly, but increases so mildly? $\endgroup$
    – soshial
    Jun 10, 2014 at 17:59

3 Answers 3

7
$\begingroup$

Using the binomial theorem, we get $$ \begin{align} \left(x+\frac1{x^x}\right)^x-x^x &=x^x\left[\left(1+\frac1{x^{x+1}}\right)^x-1\right]\\ &=x^x\left[\frac1{x^x}+\frac{x-1}2\frac1{x^{2x+1}}+O\left(\frac1{x^{3x}}\right)\right]\\ &=1+\frac1{2x^x}+O\left(\frac1{x^{x+1}}\right) \end{align} $$ If you are getting wild oscillations or quantized output, it is probably due to truncation error.

The bottleneck actually seems to be in the computation of $x+\frac1{x^x}$ since IEEE double precision arithmetic only has a $53$ bit mantissa. $13$ has $4$ bits and $13^{-13}$ has $48$ zeros after the binary point before the first non-zero bit. So there is just barely enough precision to note that there is a difference between $x+\frac1{x^x}$ and $x$. Any imprecision in the computation would completely overwhelm this difference and cause extreme problems in the final computation.

$\endgroup$
2
  • $\begingroup$ Interesting. In $[12,13]$ GeoGebra goes crazy, and returns $0$ after $x=14$. $\endgroup$
    – Pedro
    Jun 11, 2014 at 0:57
  • $\begingroup$ Actually, at $x \sim 13.037$, $1/x^x$ is already about $2.22\times 10^{-16} \times x$, the IEEE 754 double precision numbers no longer have enough bits to distinguish between $x + \frac{1}{x^x}$ and $x$. $\endgroup$ Jun 11, 2014 at 1:08
4
$\begingroup$

As others have said this is a floating point error. If I plot it in mathematica I find:

enter image description here

Which clearly resembles the output by WolframAlpha (although they are not the same). If I increase the precision of the calculations and replot the same equation I find the following:

enter image description here

Note the change in scale.

Even with this increased precision you will still find erroneous weird behavior after some time and you will have to increase the working precision again (ad infinitum).

$\endgroup$
3
$\begingroup$

Yes, almost certainly floating point error.

$$f(x)= x^x\left(\left(1+\frac{1}{x^{x+1}}\right)^x-1\right)$$

For $x$ large, $\left(1+\frac{1}{x^{x+1}}\right)^x = 1+\frac{1}{x^x}+O(x^{-2x})$

So $f(x)=1+ O(x^{-x})$.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .