## coupled oscillators

it’s time for a long post on coupled oscillators. i love teaching this in dynamical systems class. it all starts with a pair of identical or near-identical systems expressing periodic behavior. let’s say we have two pendula, and we let them go. what happens?

well, they just do their thing. same mass; same length; but because of the different initial conditions, their motions are distinct. now here’s the idea (going back at least to huygens): if we allow each to slightly influence the other — say through small oscillations transmitted through the rod by which they hang — then the pendula become synchronized, even though they have different energies to begin with. let’s take a look.

this is cool! i wonder if it works in more generality? the way i teach it in class is through a spinner — an abstract agent with configuration space a circle and whose dynamics are simple, linear escalation of angle. if you start with two such spinners having the same natural frequency but different phase, then, like the uncoupled pendula above, they will remain out of phase. however, if you let each influence the other very slightly, then, over time, they converge to synchronized evolution, like so:

that’s simple enough, and easy to analyze. you can even say what the rate of convergence is, based on linearization of the dynamical system about the equilibrium of phase zero. but then come all the questions… what happens if you have more than two spinners? does it matter how you network their influences? well…

nine identical spinners are given the same initial conditions. the system on the right has all-to-all coupling: everyone influences everyone. on the left is a ring topology, with nearest-neighbor coupling. the all-to-all network topology converges rapidly to a synchronized state. the ring topology converges too, but more slowly, and it is “off phase” a little bit from the all-to-all, even though they all started at the same place.

so, that’s fun. but that’s not all that can happen. in the all-to-all case, it seems as though it will always converge to a synchronized state. (is that so? hmmmm…). this is not the case in the ring topology; with a bit of luck, you can happen upon an initial condition that gives non-synchronized behavior. what is it?

ah, it’s the wave. the reason this is possible is because of the topology of the network — like, literally. the circular topology means that the angular data over the base has a cohomology class in H^1(S^1)=Z — otherwise known as a winding number. this is why you don’t get this phenomena in the all-to-all topology — no holes (upon completion to a flag complex). i’ve used the cohomology class of a networked S^1-valued dynamical system to automate sleep-wake cycles for sensor networks in building interiors, for example: very useful stuff.

well, that escalated quickly.

let’s go back to thinking about synchronization. what happens if you have a larger, less homogeneous network? here’s an example:

you can almost see the different eigenvalues of the graph laplacian. in plainer terms, the higher the local connectivity, the faster the network synchronizes.

but what happens if the network changes over time, as it does for flocks of birds, schools of fish, & crowds of people? ah, that is where a lot of modern research comes in to play.

## visualizing 1-d flows

visualization is so central to dynamical systems. one great place to get started is with 1-d continuous-time autonomous systems: ODEs of the form dx/dt=f(x). there are a lot of ways to illustrate such systems. one is to plot the solution x(t) for an initial condition x(0). that’s ok, but it’s even better to look at the flow, where you look at all initial conditions at once and let them evolve. but it does not end there. i like to supress time altogether, and plot x versus dx/dt. this makes it possible to visualize the dynamics as that of a vector field on the x-axis. you can see all of these perspectives illustrated below: