This is really just for me so that I won’t forget. I mean, I will forget—but then I can look back at this post and remember stuff. Here’s to you Future Rhett.

What is a chaotic system? Really, that’s the question—isn’t it? There is the classic example of the double pendulum. Here is some code for a double pendulum. And this is what it looks like.

But this isn’t the best system. The problem is that there are two coordinates—the angle for the top bar and the angle for the bottom bar. Sure, it’s cool—but what if you want to plot angle vs. time or something. You have to plot both angles vs. time and that’s a bummer.

OK, how about a model of bounded population growth? That’s just one dimensional, right? Actually, it doesn’t even have to be population, it’s just an equation—something like this.

In this expression, r is some parameter—it really doesn’t matter what. Let’s just model this expression for different values of r. I’ll use a starting x value of 0.1 and r values of 0.7 and 0.9. Here is the code.

Notice that when r = 0.7, the population reaches some stable value—but this is not true for r = 0.9.

**Bifurcation Diagram**

Now for another way to look at a chaotic systems—the bifurcation diagram. Honestly, I didn’t really understand these things until I made one. Here’s what we are going to do.

- Start with some initial value of x (just pick something—I’m going to use 0.5). Pick a value for r also. Let’s just start at 0.1.
- Run the model for 200 iterations and throw out that data. This should allow us to look at the long term behavior for that particular value of r (throws out the transient behavior).
- Now run the model for 100 additional iterations and save these.
- Create a plot of these final x values vs. r.
- Next increase the r value a little bit (I will increase it by 0.001)
- Repeat until you get bored.

So if the model is stable after the initial stuff, then it will just keep plotting the same value of x after the first 200 iterations and you will just get a dot. If it’s not stable after the first stuff, then you will get a bunch of dots with different x values.

OK, let’s do it. Here is the code. Oh, I made a function to iterate the model. I probably should put more comments in there.

This is what it looks like.

Up to an r value of about 0.75, you only get one final x value. After that, you get two different values . With r over 0.9, it gets crazy.

OK, that’s enough for now. I just want to make sure future Rhett knows how to make a bifurcation diagram.