# The Azimuth Project Blog - The stochastic resonance program (part 1) (Rev #18, changes)

Showing changes from revision #17 to #18: Added | Removed | Changed

This page is a blog article in progress, written by David Tanzer. To see discussions of this article while it was being written, visit the Azimuth Forum. Please remember that blog articles need HTML, not Markdown.

guest post by David Tanzer</i>

Today we will look at one of the software models from the Azimuth code project, which aims to produce educational software that is relevant to the study of climate. The program, which was contributed by Allan Erskine and Glyn Adgie, demonstrates the concept of “stochastic resonance.” This is a widely studied phenomenon, which has an application to the theory of ice-age cycles. The Azimuth models are implemented as interactive web pages, which have a responsive behavior because they run right in the browser, as javascript.

### A test drive of the model

Start by opening the stochastic resonance model web page. It displays a sine wave, called the forcing signal, alongside an intricate, time-varying function, called the output signal. There are four sliders, labelled A, B, C and D.

• One of the sliders controls the frequency of the sine wave, and another controls its amplitude. Try them.

• The sine wave is input to a random process, which produces the output signal. Observe how the amplitude and frequency sliders affect, in a complex way, the generated output signal. Can you detect any patterns in the input-output relationship?

• The noise slider controls the randomness of the process. Set it to zero, and verify that the output is completely smooth. See that the output becomes increasingly chaotic as you increase it.

• Changing the Sample-Path parameter gives you different instances of the process.

### Inventory of the program

The program runs a discrete simulation for a “stochastic differential equation” (SDE), which specifies the derivative of a function in terms of time, the current value of the function, and a noise process.

The program contains:

1. A general simulator for SDE’s, based on the Euler method

2. A function which defines the derivative for a particular SDE. The “stochastic resonance” is a description of the behavior of the solutions to this particular equation.

3. Helper functions used by this derivative function

4. Interactive controls to set parameters

5. Plot of the forcing signal (the sine curve)

6. Plot of the output signal

### Going to the source

I would like everyone now to locate the source code, by the following method.

• Open the web page for the model. Since the code is running in your browser, you have already downloaded it!

• Now, The while code on is the now page, downloaded run and running in your browser’s browser. view-source function. For Firefox on the Mac, it’s Apple-U, for Firefox on the PC it’s (TODO: fill in)

• A Now, window while should viewing open up with some html stuff, in which you should clearly see the text page, of run your browser’s view-source function. For Firefox on the web Mac, page. it’s Apple-U, for Firefox on the PC it’s (TODO: fill in)

• The You code should is see loaded into the browser html by for these lines at the head web of page the itself. file, which reference javascript files at different locations on the web:

• Note these lines at the top of the file:

   <script src='http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jsxgraph/0.93/jsxgraphcore.js'></script>
<script src='./StochasticResonanceEuler.js'></script>
<script src='./normals.js'></script>


• The These line lines loads refer to javascript program files at various locations on the web. They direct the browser to fetch the code and load it into its internal javascript interpreter. First,MathJax is an open-source formula rendering engine. Second,JSXGraph*JSXGraph is a cross-platform library for interactive graphics, function plotting, and data visualization. Then Third, we StochasticResonanceEuler.js see is the main program, code StochasticResonanceEuler.js. for Finally, the model. Fourth, normals.js defines contains a table of random numbers numbers, that is used by in the calculation.

• Now click on the link for StochasticResonance.js – and you’re there!

Now that you’ve you’re reached at the code fileStochasticResonanceEuler.js , your next challenge is to scan through it and attempt try to make loose associations between code its fragments terms and clauses and the points items in of the program synopsis inventory given above. in the preceding section. Try to put a blur lens over any items that look obscure; obscure, since the goal here is only just to form rough hypotheses about what might be going on.

### Stochastic The concept of stochastic resonance

In the stochastic resonance model, formula, the deterministic component part of the derivative is equated set with to the sum of a sinusoidal function of t, called the forcing function, and plus a function of x that has two stable points of equilibrium:

DerivDeterministic(t, x) = SineWave(t, amplitude, frequency) + Bistable(x),

where Bistable(x) = x * (1 - x^2).

On We its consider own, now the sinusoidal effects forcing function will cause the value of X(t) each to of oscillate these sinusoidally. terms, both separately and in combination.

Consider Alone, the effect sinusoidal of forcing Bistable(x) function in would isolation. cause Bistable(x) has roots at -1, 0 and 1, which are the equilibrium output points signal for to X(t): vary -1 sinusoidally. and 1 are stable equilibria, and 0 is unstable. The basin of attraction for -1 is all the negative numbers, the basin for +1 is the positive numbers, and the unstable equilibrium is on the fence between the basins.

We Now regard let’s each analyze the effect of Bistable(x). The roots of Bistable(x) are -1, 0 and 1. This gives stable equilibrium points at -1 and 1, and an unstable equilibrium at 0. The basin as one of attraction for -1 is all the states negative of numbers, a the bistable basin system. for 1 is the positive numbers, and the unstable equilibrium point separates the basins.

Now consider the combination of the sine wave and the bistable polynomial. If the wave amplitude is below some threshold, then the system will remain in one basin, forever oscillating around its attractor. But if the amplitude is large enough, it will pull the system back and forth between the two basins, i.e., the system will oscillate between the two stable states, in resonance with the forcing sine wave.We will view each basin of attraction as one of the states of a bistable system.

Now let’s complete consider the picture combined by effect adding of noise… Now, suppose the sine wave were and large enough to periodically pull the system bistable close polynomial. to If zero, but not enough to cross over to the other wave side amplitude is so below it remains in a single threshold, state. If we add in some noise, then a well-timed random event may push the system over to the other side. So we will see remain random in transitions one between basin, states, forever with oscillating higher around probabilities its at attractor. certain But phases if of the sine wave. As the noise amplitude increases, is more large and enough, more it cycles of the sine wave will lead pull to the transitions, system back and forth between the frequency two of basins the flip-flopping it will approach resonate. that of the sine wave. The noise here hasamplified the effect of the input signal. As noise increases further, it will dominate the state transitions, which will themselves become noise.

### The role of stochastic resonance in the theory of the ice ages

Now let’s complete the picture by adding in the noise. Suppose the sine wave were large enough to periodically pull the system close to zero, but not enough to cross over to the other side – so it would still remain in a single state. If we add in some noise, then a well-timed random event could push the system over to the other side. The noise, then, will introduce some random transitions between states, with higher probabilities of this occurring at certain phases of the sine wave. As the noise amplitude increases, transitions will occur during more and more cycles of the sine wave will lead to transitions, and the frequency of the flip-flopping will approach that of the sine wave. As noise increases even further, it will dominate the state transitions, which will themselves become noise.

One Conclusion: of the leading theories for the timing of the ice ages is based on a stochastic resonance model. In Didier Paillard’s model, the climate of the Earth is modeled as a tristable system, and the forcing function is produced by certain astronomical variations called Milankovich cycles, which produce periodic variation in the amount of solar noise energy will received at the northern latitudes.amplify the effect of the input signal.

### Relevance of stochastic resonance to the theory of ice-age cycles

A major hypothesis for the timing of the ice ages is based on a stochastic resonance model. In Didier Paillard’s model, the climate of the Earth is modeled as a tristable system, and the forcing function is produced by certain astronomical variations called Milankovich cycles, which produce periodic variation in the amount of solar energy received at the northern latitudes.

In the most simplified model, the climate has two stable states: a cold, “snowball Earth,” and a hot Earth with no ice. The snowball Earth is stable: because it is white, it doesn’t absorb much solar energy, which keeps it cold and frozen. The hot Earth is stable: because it is dark, it absorbs a lot of solar energy, which keeps it hot and melted.

Now in order to bring the Milankovitch cycles into the picture, we bring into the picture the fact that the glaciers are concentrated up north, and it is the temperatures there that control the state of the system. If it gets warm enough up north, the glaciers melt, and the state goes to hot. If it gets cold enough, the glaciers form, and the state goes to cold.

There are three Milankovitch cycles that have been identified:

• Changing of the eccentricity (ovalness) of the Earth’s orbit, with a period of 100 kiloyears

• Changing of the obliquity (tilt) of the Earth’s axis, with a period of 41 kiloyears

• Precession of the Earth’s axis (rotation of the direction of the axis, like a wobbling top), with a period of 23 kiloyears

Now the amplitude of these temperature changes in not enough to move the climate from one state to another. But random temperature events may cause crossings if they occur at the right phase of a Milankovitch cycle.

Researchers have found correspondences (complex correlations) between the actual spacing of the ice ages and the timings of these three Milankovitch cycles.

For further information, see:

### Top-level code structure

The program for the stochastic resonance model consists of seven functions. The top level function is initCharts, which dispatches to two other functions, initControls and initSrBoard. (Key: sr = stochastic resonance, board = graphical gizmo.) The job of initControls is to build the sliders.

The main logic of the application is contained in this second function, initSrBoard. Two curve objects are constructed there, positionCurve and forcingCurve. The forcing curve is given by the locally defined forcingFunction, which defines the sine wave. This function reads its values from the amplitude and frequency sliders.

Now a crucial function “mkSrPlot” gets attached to the “update—” method of the positionCurve object. This function is responsible for redrawing the curve, whenever its defining parameters get changed. It returns an object with a list of time values, and a corresponding list of values for X(t).

### The SDE simulator

The main algorithm is spelled out by the function mkSrPlot. It first constructs a function that gives the deterministic part of the derivative:

deriv = Deriv(t,x) = SineCurve + BiStability,

Then a “stepper” function is constructed, by the call to Euler(deriv, tStep). A stepper function inputs the current point (t,x) and a noise sample, and outputs the next point (t’,x’). The Euler stepper maps (t,x) to (t + tStep, x + tStep * Deriv(t,x) + noiseSample).

The top level loop of the simulator is implemented by the function sdeLoop, which is passed the following arguments: (1) the stepper function, (2) the noise amplitude, or “dither”, (3) the initial point (t0,x0), (4) the randomization seed, and (5) the number of points to be generated. The loop initializes a currentPoint to (t0,x0), and then repeatedly applies the stepper to the current point and the next noise sample; the output returned is just this sequence of (t,x) values.

The noise samples are taken from a block of values from the (large) array normals(i), and scaling them by the dither value. The Sample-path variable controls which section of the array gets used.

How to post it.

### Problems and challenges

• Effect of frequency

• Design a study of the effectiveness of signal transmission, as a function of noise amplitude and signal frequency. How you define the effectiveness measure?

• How would you restructure the code for general, statistical studies of the output time series?

• When the sliders are moved, an event must be fired, which causes the recalculation to take place. How is this mechanism implemented in the javascript / JSXGraph application library?

• Modify to add an exponent slider

• Modify to show graph of expected value (add slider for nTrials) (Not enough random numbers.)

• Add a standard deviation plot

• If you are a climate scientist, let us know of next steps

• Begin to study this book —-, and think of how to write programs for some of the models. Simplify! The hierarchy of models. All models that you post here will be considered as candidates for the Azimuth Code Project page. This may be a way for programmers, ultimately, to give back to the Earth.

category: blog