Although coal and steam launched the industrial revolution, gasoline and controlled explosions have sustained it for over a century. After early precursors, the internal combustion engine that we recognize today came to life in 1876 from the German engineers Otto and Daimler with later variations by Benz and Diesel. In the early 20th century, the gasoline engine was replacing coal and oil in virtually all mobile conveyances and had become a major industry attracting the top mechanical engineering talent. One of those talents was the German engineer Georg Duffing (1861 – 1944) whose unlikely side interest in the quantum mechanics revolution brought him to Berlin to hear lectures by Max Planck, where he launched his own revolution in nonlinear oscillators.
The publication of this highly academic book by a nonacademic would establish Duffing as the originator of one of the most iconic oscillators in modern dynamics.
An Academic Non-Academic
Georg Duffing was born in 1861 in the German town of Waldshut on the border with Switzerland north of Zurich. Within a year the family moved to Mannheim near Heidelberg where Georg received a good education in mathematics as well as music. His mathematical interests attracted him to engineering, and he built a reputation that led to an invitation to work at Westinghouse in the United States in 1910. When he returned to Germany he set himself up as a consultant and inventor with the freedom to move where he wished. In early 1913 he wished to move to Berlin where Max Planck was lecturing on the new quantum mechanics at the University. He was always searching for new knowledge, and sitting in on Planck’s lectures must have made him feel like he was witnessing the beginnings of a new era.
At that time Duffing was interested in problems related to brakes, gears and engines. In particular, he had become fascinated by vibrations that often were the limiting factors in engine performance. He stripped the problem of engine vibration down to its simplest form, and he began a careful and systematic study of nonlinear oscillations. While in Berlin, he had became acquainted with Prof. Meyer at the University who had a mechanical engineering laboratory. Meyer let Duffing perform his experiments in the lab on the weekends, sometime accompanied by his eldest daughter. By 1917 he had compiled a systematic investigation of various nonlinear effects in oscillators and had written a manuscript that collected all of this theoretical and experimental work. He extended this into a small book that he published with Vieweg & Sohn in 1918 to be purchased for a price of 5 Deutsch Marks [1]. The publication of this highly academic book by a nonacademic would establish Duffing as the originator of one of the most iconic oscillators in modern dynamics.

Duffing’s Nonlinear Oscillator
The mathematical and technical focus of Duffing’s book was low-order nonlinear corrections to the linear harmonic oscillator. In one case, he considered a spring that either became stiffer or softer as it stretched. This happens when a cubic term is added to the usual linear Hooke’s law. In another case, he considered a spring that was stiffer in one direction than another, making the stiffness asymmetric. This happens when a quadratic term is added. These terms are shown in Fig. 2 from Duffing’s book. The top equation is a free oscillation, and the bottom equation has a harmonic forcing function. These were the central equations that Duffing explored, plus the addition of damping that he considered in a later chapter as shown in Fig. 3. The book lays out systematically, chapter by chapter, approximate and series solutions to the nonlinear equations, and in special cases described analytically exact solutions (such as for the nonlinear pendulum).


Duffing was a practical engineer as well as a mathematical one, and he built experimental systems to test his solutions. An engineering drawing of his experimental test apparatus is shown in Fig. 4. The small test pendulum is at S in the figure. The large pendulum at B is the drive pendulum, chosen to be much heavier than the test pendulum so that it can deliver a steady harmonic force through spring F1 to the test system. The cubic nonlinearity of the test system was controlled through the choice of the length of the test pendulum, and the quadratic nonlinearity (the asymmetry) was controlled by allowing the equilibrium angle to be shifted from vertical. The relative strength of the quadratic and cubic terms was adjusted by changing the position of the mass at G. Duffing derived expressions for all the coefficients of the equations in Fig. 1 in terms of experimentally-controlled variables. Using this apparatus, Duffing verified to good accuracy his solutions for various special cases.

Duffing’s book is a masterpiece of careful systematic investigation, beginning in general terms, and then breaking the problem down into its special cases, finding solutions for each one with accurate experimental verifications. These attributes established the importance of this little booklet in the history of science and technology, but because it was written in German, most of the early citations were by German scientists. The first use of Duffing’s name associated to the nonlinear oscillator problem occurred in 1928 [2], as was the first reference to him in a work in English in a book by Timoshenko [3]. The first use of the phrase “Duffing Equation” specifically to describe an oscillator with a linear and cubic restoring force was in 1942 in a series of lectures presented at Brown University [4], and this nomenclature had become established by the end of that decade [5]. Although Duffing had spent considerable attention in his book to the quadratic term for an asymmetric oscillator, the term “Duffing Equation” now refers to the stiffening and softening problem rather than to the asymmetric problem.

Duffing Rediscovered
Nonlinear oscillations remained mainly in the realm of engineering for nearly half a century, until a broad spectrum of physical scientists began to discover deep secrets hiding behind the simple equations. In 1963 Edward Lorenz (1917 – 2008) of MIT published a paper that showed how simple nonlinearities in three equations describing the atmosphere could produce a deterministic behavior that appeared to be completely chaotic. News of this paper spread as researchers in many seemingly unrelated fields began to see similar signatures in chemical reactions, turbulence, electric circuits and mechanical oscillators. By 1972 when Lorenz was invited to give a talk on the “Butterfly Effect” the science of chaos was emerging as new frontier in physics, and in 1975 it was given its name “chaos theory” by James Yorke (1941 – ). By 1976 it had become one of the hottest new areas of science.
Through the period of the emergence of chaos theory, the Duffing oscillator was known to be one of the archetypical nonlinear oscillators. A particularly attractive aspect of the general Duffing equations is the possibility of studying a “double-well” potential. This happens when the “alpha” in the equation in Fig. 5 is negative and the “beta” is positive. The double-well potential has a long history in physics, both classical and modern, because it represents a “two-state” system that exhibits bistability, bifurcations, and hysteresis. For a fixed “beta” the potential energy as a function of “alpha” is shown in Fig. 6. The bifurcation cascades of the double-well Duffing equation was investigated by Phillip Holmes (1945 – ) in 1976 [6], and the properties of the strange attractor were demonstrated in 1978 [7] by Yoshisuke Ueda (1936 – ). Holmes, and others, continued to do detailed work on the chaotic properties of the Duffing oscillator, helping to make it one of the most iconic systems of chaos theory.

Python Code for the Duffing Oscillator: Duffing.py
This Python code uses the simple ODE solver on the driven-damped Duffing double-well oscillator to display the configuration-space trajectories and the Poincaré map of the strange attractor. (Python code on GitHub.)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Duffing.py
Created on Wed May 21 06:03:32 2018
@author: nolte
D. D. Nolte, Introduction to Modern Dynamics: Chaos, Networks, Space and Time, 2nd ed. (Oxford,2019)
"""
import numpy as np
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
from scipy import integrate
from matplotlib import pyplot as plt
from matplotlib import cm
import time
import os
plt.close('all')
# model_case 1 = Pendulum
# model_case 2 = Double Well
print(' ')
print('Duffing.py')
alpha = -1 # -1
beta = 1 # 1
delta = 0.3 # 0.3
gam = 0.15 # 0.15
w = 1
def flow_deriv(x_y_z,tspan):
x, y, z = x_y_z
a = y
b = delta*np.cos(w*tspan) - alpha*x - beta*x**3 - gam*y
c = w
return[a,b,c]
T = 2*np.pi/w
px1 = np.random.rand(1)
xp1 = np.random.rand(1)
w1 = 0
x_y_z = [xp1, px1, w1]
# Settle-down Solve for the trajectories
t = np.linspace(0, 2000, 40000)
x_t = integrate.odeint(flow_deriv, x_y_z, t)
x0 = x_t[39999,0:3]
tspan = np.linspace(1,20000,400000)
x_t = integrate.odeint(flow_deriv, x0, tspan)
siztmp = np.shape(x_t)
siz = siztmp[0]
y1 = x_t[:,0]
y2 = x_t[:,1]
y3 = x_t[:,2]
plt.figure(2)
lines = plt.plot(y1[1:2000],y2[1:2000],'ko',ms=1)
plt.setp(lines, linewidth=0.5)
plt.show()
for cloop in range(0,3):
#phase = np.random.rand(1)*np.pi;
phase = np.pi*cloop/3
repnum = 5000
px = np.zeros(shape=(2*repnum,))
xvar = np.zeros(shape=(2*repnum,))
cnt = -1
testwt = np.mod(tspan-phase,T)-0.5*T;
last = testwt[1]
for loop in range(2,siz):
if (last < 0)and(testwt[loop] > 0):
cnt = cnt+1
del1 = -testwt[loop-1]/(testwt[loop] - testwt[loop-1])
px[cnt] = (y2[loop]-y2[loop-1])*del1 + y2[loop-1]
xvar[cnt] = (y1[loop]-y1[loop-1])*del1 + y1[loop-1]
last = testwt[loop]
else:
last = testwt[loop]
plt.figure(3)
if cloop == 0:
lines = plt.plot(xvar,px,'bo',ms=1)
elif cloop == 1:
lines = plt.plot(xvar,px,'go',ms=1)
else:
lines = plt.plot(xvar,px,'ro',ms=1)
plt.show()
plt.savefig('Duffing')

Read all the stories behind the history of chaos theory, in Galileo Unbound from Oxford Press:
References
[1] G. Duffing, Erzwungene Schwingungen bei veranderlicher Eigenfrequenz und ihre technische Bedeutung, Vieweg & Sohn, Braunschweig, 1918.
[2] Lachmann, K. “Duffing’s vibration problem.” Mathematische Annalen 99: 479-492. (1928)
[3] S. Timoshenko, Vibration Problems in Engineering, D. Van Nostrand Company, Inc.,New York, 1928.
[4] K.O. Friedrichs, P. Le Corbeiller, N. Levinson, J.J. Stoker, Lectures on Non-Linear Mechanics delivered at Brown University, New York, 1942.
[5] Kovacic, I. and M. J. Brennan, Eds. The Duffing Equation: Nonlinear Oscillators and their Behavior. Chichester, United Kingdom, Wiley. (2011)
[6] Holmes, P. J. and D. A. Rand. “Bifurcations of Duffings Equation – Application of Catastrophe Theory.” Journal of Sound and Vibration 44(2): 237-253. (1976)
[7] Ueda, Y. “Randomly Transitional Phenomena in the System Governed by Duffings Equation.” Journal of Statistical Physics 20(2): 181-196. (1979)