THE ROTATION NUMBER the average turn per step of a circle map — unchanged by any smooth re-coordinate
Iterate a map of the circle to itself — step, step, step — and ask: on average, how far around do you advance per step? That average is the rotation number, and it is an invariant of the map: it does not depend on where you start, and it survives any smooth change of coordinates on the circle. When it is rationalp/q, the orbit is periodic (it closes up after q steps, having wound p times); when irrational, the orbit never repeats and fills the circle densely. Poincaré introduced it to classify the long-term behavior of a dynamical system by a single number that the details of the map cannot disturb.
THE TECHNIQUE average advance per step; rational p/q ⇒ period-q orbit
A rigid rotation by 1/3 of the circle. The demo iterates it, watches the orbit close after 3 steps, and reads off the rotation number: live demo
HISTORY & CREDIT Henri Poincaré, 1885
“Where you start changes how fast you go around.” — the rotation number is the same from every starting point, and the same in every smooth coordinate. It is a property of the map's dynamics, not of the orbit you happened to pick. cited
1885 · Henri Poincaré — the rotation number of a circle homeomorphism, classifying its dynamics. 1932 · Arnaud Denjoy — a C² circle map with irrational rotation number is topologically conjugate (via a homeomorphism) to the rigid rotation; smooth conjugacy is far deeper (Arnold's conjecture; Herman 1979, Yoccoz 1984, under Diophantine conditions). now · mode-locking, Arnold tongues, KAM theory — wherever a system's average frequency matters.
One number summarizes the whole future of the map, and neither the starting point nor a change of coordinates can shift it. The rotation number is what the dynamics preserve about themselves. Poincaré 1885
RECOMMEND FOR I-13 rotation number of a period-3 map, computed
On the canonical compiler, the rotation by 1/3 returns to its start after 3 steps, giving rotation number 1/3 ≈ 0.3333:
$ i13 run inv_rotation.i13 # rotate by 1/3, iterate
returns_to_start = 0 -- orbit closes after 3 steps
period = 3
rotation_number = 0.3333333333333333
Recommend: the rotation number is an invariant of a dynamical system i13 can iterate directly. Modelling the rotation by 1/3 as an integer step mod 3, i13 watches the orbit close after exactly 3 iterations and reads the rotation number as 1/3 — a number independent of the starting point and of any smooth re-coordinate. It is the batch's dynamical invariant: where the cross-ratio was fixed by the projective group and the genus by deformation, this one is fixed by the passage of the dynamics itself. i13's recursion supplies the iteration; the invariance is Poincaré's.