A few months ago, I wrote about the Poincare conjecture, and the fact that it appeared to finally have been solved by a reclusive russian mathematician named Grisha Perelman. Now there’s news that *another* classic problem may have been solved. This time, it’s the Navier-Stokes equation, apparently solved by [Professor Penny Smith](http://comet.lehman.cuny.edu/sormani/others/smith.html) of Lehigh University. She’s published the steps leading up to her solution in top peer-reviewed journals, and a [preprint of the final paper is now available via arxiv](http://arxiv.org/abs/math/0609740). There’s also a pretty good detailed description of the solution on [Christina Sormani's website](http://comet.lehman.cuny.edu/sormani/others/SmithNavierStokes.html).
The Navier-Stokes equations form a classic problem that I actually know a bit more about, although I have to admit that the proof of the solution is beyond my ability to understand. Why should you care? Aside from the fact that it’s a famous problem with a million dollar reward posted by the Clay Institute for a solution, it’s *useful*. Unlike the Poincare conjecture, the reason why we care about solving the Navier-Stokes equations isn’t just theoretical. If Professor Smith’s solution and proof do turn out to be correct, it would be a really incredible accomplishment, with direct, immediate, practical implications.
Navier-Stokes isn’t really *an* equation, but a family of equations that’s used to solve fluid dynamics problems. The idea is to describe precisely the forces in a moving fluid. Suppose, for example, you want to design a wing for a new airplane. To figure out how air will flow around the wing, how much lift it will generate, and how much drag it will produce, you need to be able to precisely model the behavior of air flowing around it. That’s a very typical example of what the Navier-Stokes equations are used for.
The equations themselves are in some sense sort of straightforward. In all physical interactions, there are a collection of fundamental conserved properties: mass, momentum, angular momentum, energy. You can express the velocity and pressure in terms of *how* the fluid motion preserves those conserved properties. The equations themselves, when all of the dimensions of all of the variables are worked out, turn incredibly messy. But the basic concept is just conserving the fundamentals.
The problem with Navier-Stokes is that they’re a group of extremely difficult differential equations. They don’t actually tell us *what* the values of the variables are; they talk about the relationships between rates of change. But until now, we haven’t been able to actually *solve* that differential equation in a way that gives us a useful closed-form equation.
Since we don’t have that closed-form solution, there’s been a huge amount of work in a field called computational fluid dynamics (CFD) at computing simulations of fluid flow using a very complicated iterative approach to finding an answer to the differential equations. (That’s why I know a little bit about them: in grad school, most of my advisors other students were working on automatic parallelization of scientific code, most of which was CFD.) To simplify to an almost ridiculous degree, the way that we do CFD is roughly equivalent to the “rectangle approximation” approach to computing the area under a curve.
As a refresher: suppose you want to find the area under the curve y=x2
from 1 to 3. If you don’t know the integral of x2dx, then one way of
doing it is to take the section of the curve from 1 to 3, and break the x over that range into a bunch of segments. For each segment, draw a vertical line from the x-axis to the curve, and then a horizontal line from the intersection with the curve over to the vertical line from the next segment. So you end up with a collection of rectangles like the following:
Calculating the sum of the areas of those rectangles gives an approximation of the area under the curve. If you reduce the size of the segments of the x-axis, thus *increasing* the number of rectangles, you’ll get a *better* approximation. The smaller the segment size gets, the more rectangles you fit under the curve, the better the approximation becomes; the limit as the width of the rectangles approaches zero is the precise area of the curve.
The way that CFD algorithms compute solutions for the Navier-Stokes equations is similar to this – except that instead of dividing the x axis into small segments, we divide just about *everything* into small segments. We divide space into tiny little cubes; we divide time into tiny little intervals; and then we use the differential equations to figure out an *approximation* of the change in each tiny little patch of space over each tiny little interval of time, and add those up.
The iterative CFD approach is very complex, and it requires a huge amount of computation to get a good approximation. This means that computing things like weather, or airflow around a prototype wing is *hugely* expensive, and takes quite a bit of time. If we didn’t have to do the massive iterative process, we’d be able to compute better results much faster.
That’s the real implication of this. Everything from weather prediction to the design of cooling fans for computers can be improved using the better CFD algorithms we’ll be able to develop using the solution to the Navier-Stokes equations.
It’s a big deal, and extremely exciting. I really hope she got it right; and all signs so far are that she did.