# Analogue Computing

What a dismal and predictable start to the Ashes. Turn your back on the computer screen for five minutes and suddenly England have lost three wickets.

Anyway, yesterday I was in Auckland, talking about research progress with a group that we’ve had strong links with in the past. (By ‘we’ I mean the Waikato cortical modelling group). One of the talks we heard was a very enthusiastic affair on re-invigourating analogue computing.

The word ‘analogue’ has relatively recently come to mean ‘not digital’ but we were reminded of just where the use came from. An analogue computer is an electrical analogue of another system. For example, we can create an electrical system whose underlying physics is entirely analogous to a physical system (e.g. a mechanical system) that we wish to study. Therefore, building the electrical system and seeing how its voltages change with time will tell us exactly how the mechanical system will change with time. So we have ‘solved’ the behaviour of a mechanical system just by building an electrical circuit.

The operational amplifier allows us to make small circuit elements that add, take logs, and, very importantly, integrate or differentiate. This means we can put these elements together to make a system that obeys a set of differential equations. For example, if you wish to study the trajectory of a projectile in three dimensions (with air resistance) you can write the underlying physics in six coupled first-order differential equations (two for each of the x, y and z components). You can then make up a circuit with six operational-amplifiers whose voltages obey the same equations. If you want to change, say, the coefficient of air resistance, we can do this by changing a few resistor values.

Let the circuit run, and, hey-presto, you have the solution to your problem.  There is a degree of elegance here that is lost with a digital interpretation of the same problem. In the digital method, we would have to break down the problem into a series of small time steps, and ask ourselves the question – if my system is in state X now, what state will it be in at a small time  in the future? Then, knowing what state it is in a small time in the future, we can ask the same question again – what state will it be in at another small step into the future? And so forth.

Of course, the real world doesn’t work in discrete time steps, but we have to introduce them to get a digital computation to work. We then try to balance accuracy with run-time – to get the most accurate solution we need small time steps, but if you have small time steps you need more of them, which takes longer to compute. In the analogue method there is no such problem. Your circuit just does its stuff in continuous time, just like a real system. Much more elegant.