| two-oscillators | |
| web | |
| .gitignore | |
| README.md |
chaos-toy-examples#
Simple systems for studying the kind of chaos found in the struck plate of cymbal-elastodynamics/flat-plate-2, where it is entangled with everything else a plate does.
The phenomenon#
In the plate, a weak strike gives regular, quasi-periodic vibration: two runs that differ by a tiny perturbation stay a tiny distance apart. Above a threshold in strike strength the motion becomes chaotic: such differences grow exponentially (e-folding in a few milliseconds at the strongest strike), energy cascades to high frequencies, and after a few tenths of a second two runs have unrelated waveforms. As damping drains the energy the plate returns to the regular regime, and the energy distribution among the modes that the chaotic phase left behind is frozen in: each strong strike rings out with its own pattern of partial levels, which is audible.
Structurally the plate in modal form is a set of oscillators coupled through a quartic potential (the stretching energy), lightly damped and started by an impulse. The toys here keep that structure and nothing else.
Toys#
| Directory | System | Purpose |
|---|---|---|
two-oscillators/ |
two oscillators with a quartic coupling, | the mechanism: how regular motion breaks up as the energy grows (Poincare sections, Lyapunov exponent vs energy), and why damping freezes a random outcome |
../fput-chain (separate project) |
the Fermi-Pasta-Ulam-Tsingou beta chain, struck, with frequency-dependent damping | the many-mode phenomena: energy cascade or not, threshold, the frozen spectrum, listening; web app at https://claude.ai/artifact/C6oaNiG2zCRX9VR7Wn4Wfx |
With fixed, rescaling the variables by shows that the two-oscillator dynamics depends on only, the analogue of the plate's strike strength (or peak deflection over thickness).
Web application#
web/index.html is a single-page app (no build step) that simulates the two oscillators in the browser and plays them: strike energy, frequency ratio, strike direction, ring time, pitch and the difference between strikes A and B are adjustable; it shows the path in the (x, y) plane, the Poincare section of the undamped system at the strike energy, the energy share of 12 nearby strikes over time, the local Lyapunov exponent with the energy, and a spectrogram of any of the 12 strikes (a selector, or the arrow keys, flips between strikes on a shared color scale, draws the chosen strike's path in the bowl and highlights it in the energy-share plot, and plays it), with a playhead while a strike plays. Time is scaled so that the x oscillator sounds at the chosen pitch (220 Hz by default), and the sound is the pickup . Published as a private artifact: https://claude.ai/artifact/BNxuYsQoFwNavTWnF7EHXg. Locally: cd web && python -m http.server.
Running#
Experiments run on the office workstation (~/work/chaos-toy-examples, Python 3.9 with numpy), plots locally:
cd two-oscillators
WORKERS=24 python experiments.py all # results/*.npz
python plots.py # results/*.png