0
$\begingroup$

I am trying to find long periodic orbits for the logistic map $f(x) = a*x(1-x)$ [i.e. which parameter values cause the map to have long periodic orbits]. My task is to change the parameter and find the longest possible orbit I can find by using computational means.

I have a program which first iterates the map $10^9$ times for a user-input parameter value and a random $x$ value in the range $(0,1)$ and then looks for period $2^N$ orbits starting with $N = 1$ and increasing. It does this by looking at the last iterate and comparing it to the iterate $2^N$ before. If it is within a tolerance amount (say $10^{-10}$) then the program outputs "we have a period, $2^N$, orbit" and terminates.

My issue is that when I think I've found a long orbit say $2^{10}$, and I print out the value $2^4$ before the last, it looks really close and may possibly be a $2^4$ orbit instead. How do I determine what the tolerance should be for determining an orbit? Is there a better way to do this?

  • 0
    I'm going to guess that you should be looking for long, *attractive*, periodic orbits. Those tend to be much easier to find that repelling orbits because one can always just iterate, as you seem to be doing. It makes sense to start at the critical point $x=0.5$, though, rather than a random point. Once you've found a couple of orbits of length $2^n-1$ and $2^n$, you can use [Feigenbaum's constant](https://en.wikipedia.org/wiki/Feigenbaum_constants#The_first_constant) to increase the parameter a bit to search for an orbit of length $2^{n+1}$.2017-01-30
  • 0
    Yes, I am looking for attractive periodic orbits only. I considered using Feigenbaum's constant, but I don't see how you could seeing it is a limit as n approaches infinity. While I'm looking for "long" orbits, I don't expect to reach much past n = 10 with my computer. By solving for the next parameter using Feigenbaum's constant I would be introducing a lot of error, would I not?2017-01-30

1 Answers 1

0

My issue is that when I think I've found a long orbit say $2^{10}$, and I print out the value $2^4$ before the last, it looks really close and may possibly be a $2^4$ orbit instead. How do I determine what the tolerance should be for determining an orbit?

The only numerical errors when iterating the logistic map are due to floating point arithmetics. As you are doing nothing that would blow up these errors (such as cancellation), your numerical errors will be within the order of magnitude of your numerical precision. Furthermore, your method only works for attracting orbits anyway (which is reasonable), and thus any errors due to initial condition will vanish over time. Therefore, if you have a periodic orbit, it will actually be exact except for a possible small jitter of the order of magnitude of your numerical precision. Therefore the latter will be a reasonable choice for your tolerance.

Is there a better way to do this?

As already mentioned, if you know Feigenbaum’s constant, you can predict where the period doublings (bifurcations) happen based on the position of previous period doublings. As it is easy to calculate the exact positions of the first period doublings, the main limiting factor is the precision to which you know Feigenbaum’s constant. However, you might consider this approach cheating, as Feigenbaum’s constant was determined with computational means by others (doing something similar than you are tasked to do).

You can also go by finding stable fixed points of $f^{2^N}$ – no idea whether this is easier.

Finally, I would wager that it’s easy to find periods longer than $2^{10}$. If numerical precision fails you, you can always increase it (using respective libraries) since iterating the logistic map is cheap.

  • 0
    See : http://arblib.org/examples.html#logistic-c2017-02-20