Fast Calculation of Tinkerbell Map

99 Views Asked by At

I recently came across tinkerbell maps, and really wanted to do my own plotting. Specifically, plotting them as a video, where each frame has a slightly different constant (a, b, c, or d; below), but the same starting point. The issue I run into is the current process I am using takes too long to calculate, given how many points each frame needs in order to show the minor changes.

The current process is to just define the two functions, then iteratively calculate the next point like 100,000 times (per frame). One frame is not a problem, but if I'm trying to do 30 fps and a total 3 minute video, that gets to take too long.

While looking more at the topics behind tinkerbell maps, dynamical systems, I came across a post about solving discrete dynamical systems which sets the equations up as a matrix, then diagonalizes it (first example in the "Long-term Behavior" section) to make it super easy to calculate the points. However, their system doesn't have exponents - while the typical tinkerbell map does:
$x_{n+1} = f(x_n,y_n) = x^2_n - y^2_n + ax_n + by_n$
$y_{n+1} = f(x_n,y_n) = 2x_ny_n + cx_n + dy_n$

Note: I have watched some Khan Academy videos on vectoizing quadratic form equations, but I'm having difficulty applying that here.

My main question is how can I quickly calculate all the points of a tinkerbell map: $(x_0, y_0), ..., (x_n, y_n)$?
And a secondary question of if I can use matrices (and maybe diagonalizing them) to do so, how would I do that?

Edit: I did find a post on long term behavior of dynamical systems, but the answer doesn't include how they got there, and I don't understand what it's saying.