Wednesday, March 13, 2013

Computation and theory are now better defined

I've written several times in an attempt to find the reasoning that leads many authors in optics to present computations (a.k.a. simulations, or numerics) as arguments for the validity of an analytical model for a set of observations. Usually, the computations merely "print the results" of some theory, which I think necessarily eliminates its ability to independently confirm the theory. I have argued in the past that the computations usually add nothing new to the paper but merely fill it with trivial content. However, I know this isn't always the case and haven't found a good reason for why some computations just don't add much to a paper.

This time I will try to tackle this problem by starting with a question: what is the difference between computation and theory? If I feel that presenting both as arguments in a paper is redundant, then finding the differences (or lack-there-of) between them ought to highlight exactly why this is so.

Let's start by considering that computation is only as good as the assumptions that go into it. For example, many-body solvers may use a set of approximations about the microscopic entities in a system, such as assuming that molecules are hard spheres. For this reason, any phenomenon that requires the molecules to interact in a manner other than as hard spheres cannot be simulated with this assumption [1].

Assumptions like these, however, are also central to deriving many physical theories. If theory and computation are based on the same assumptions, then there's probably little difference between the two, but experience still tells us that there is some difference.

To probe deeper, consider the difference between function and procedure as described in Structure and Interpretation of Computer Programs:
The contrast between function and procedure is a reflection of the general distinction between describing properties of things and describing how to do things, or, as it is sometimes referred to, the distinction between declarative knowledge and imperative knowledge. In mathematics we are usually concerned with declarative (what is) descriptions, whereas in computer science we are usually concerned with imperative (how to) descriptions.
SICP, Section 1.1.7
Based on this quote, I think that a theory is a declaration about how some variables or parameters relate to one another [2]. It is no different than the idea of "function" described above. On the other hand,a computation typically takes some input parameters and produces an output, like reading a URL in a web browser and displaying the content of that webpage onto the computer screen. A computation, in this sense, also relates different parameters to one another. Again, there is little difference between the two.

However--and I think this is the key point--the means by which a computation obtains the outputs is through a series of steps, not through some statement or equation.

Let's recap so far. Computations and theories are very much alike. They relate parameters to one another and are many times based on the same assumptions. As arguments for an explanation for some set of observations they are both tools. The means by which they relate parameters, though, are different.

With this I think I've finally arrived at what bothers me about the use of computation in so many journal articles. The difference between theory and computation lies in the "means" or the "how-to." But  as arguments, they are merely communicating the exact same "end," and are therefore redundant as arguments.

The choice between presenting an analytical theory or a simulation often comes down to which is simpler and produces results that are easier to understand. Additionally, some problems are simply better-suited to one approach or the other.

A colleague of mine suggested that both may be included in a journal article because some types of people better understand theory while others better understand a computation.

Finally, I admit that I started writing this thinking there was some deeply hidden distinction between theory and computation. The problem was in how I defined theory and computation. I better defined them in footnote 1, which I wrote after writing the bulk of this entry. Computation and analytical theories are two ways of exploring the results of a model. In this case, models, computations, and analytic theories form a hierarchy with models located above the other two. In other words, computations and analytical theories are both types of models.

[1] Admittedly, one could argue here that a computation is just one way to arrive at the results of a theory, which would therefore make computation a subset of theories. In this case, a better distinction would be drawn by contrasting analytical theories, which are those expressed by equations and derived from mathematical principles, and computational models. Both of these are subsets of just "models." When I use the word "theory" in this essay, I usually mean analytical theory.

[2] The question as to what is a variable or a parameter is also important, since not all the parameters in a theory are necessarily measurable. I think this point is subtle, yet completely obvious given some thought. For example, typically voltages and currents are measured in electromagnetism, not electric or magnetic fields. For the time being, I think that a parameter is some quantity that either a) is measurable, or b) is not measurable but aids in the construction of a theory.