Computation has become indispensable in the sciences and other technical fields. Sometimes the computation is so light we don't even think about it — using a graphing calculator to plot 1D functions or find roots. For instance, in the finite square well problem in quantum mechanics, the following equation must be solved for $z$:$$\tan(z) = \sqrt{(z_0/z)^2 - 1}.$$Such transcendental equations lack closed-form solutions and must be solved graphically or numerically. Pre-digital-age, this would have required tabulated values or a slide rule!

High-performance computing is typically used in conjunction with theoretical and experimental lines of investigation. On occasion, computational results are surprising, and can lead researchers to reformulate their thinking. The Fermi-Pasta-Ulam-Tsingou (FPUT) problem was an early computational experiment in nonlinear dynamics. It was conducted in 1953 at LANL on a vacuum tube computer and involved simulating the motion of a 1D chain of $N$ identical masses coupled by springs of force response:$$F(x) = -kx - \beta x^3.$$For the linear case (Hookean springs, $\beta = 0$), the results were as expected: each of the $N$ normal modes retained its initial share of the total energy. With significant amounts of nonlinearity ($\beta/k > 1$), the system displayed the expected ergodic behavior, with energy eventually spreading to all modes. For small amounts of nonlinearity ($\beta/k \sim 0.1$), the system was expected to thermalize, but instead displayed quasi-periodic behavior, with energy cycling among a few select modes.

For systems where randomness plays a role, analytic results can be verified with computation using pseudo-random number generators. Stochasticity is common in biological systems, one example being genetic drift in populations — alleles from one generation are randomly sampled to form the next. Such processes can easily be simulated using MCMC methods. Taking suitable averages over independent realizations of the stochastic process then enables comparison with theory values.

One of my roles in our work, Khromov et al., 2018, was to write and run a parallel simulation code to facilitate such comparisons. Implementing the population genetics algorithm was straightforward, but sampling required some care — the theory depends on a mutation-selection-drift steady state allele frequency distribution. Samples could only be taken once the steady state was reached and with adequate time in between (if replacing ensemble average with time average). Of course, both of these times were dependent on parameter values and other factors.