This post will tie together many things I’ve blogged about before. The previous post **justified** separation of variables. This post will **illustrate** separation of variables.

Also, this post will show why you might care about **Bessel functions** and their zeros. I’ve written about Bessel functions before, and said that Bessel functions are to polar coordinates what sines and cosines are to rectangular coordinates. This post will make this analogy more concrete.

## Separation of variables

The separation of variables technique is typically presented in three contexts in introductory courses on differential equations:

- One-dimensional heat equation
- One-dimensional wave equation
- Two-dimensional (rectangular) Laplace equation

My initial motivation for writing this post was to illustrate separation of variables outside the most common examples. Separation of variables requires PDEs to have a special form, but not *as* special as the examples above might imply. A secondary motivation was to show Bessel functions in action.

## Radially symmetric wave equation

Suppose you have a thin membrane, like a drum head, and you want to model its vibrations. By “thin” I mean that the membrane is sufficiently thin that we can adequately model it as a two-dimensional surface bobbing up and down in three dimensions. It’s not so thick that we need to model the material in more detail.

Let *u*(*x*, *y*, *t*) be the height of the membrane at location (*x*, *y*) and time *t*. The wave equation is a PDE modeling the motion of the membrane by

where Δ is the Laplacian operator. In rectangular coordinates the Laplacian is given by

We’re interested in a circular membrane, and so things will be much easier if we work in polar coordinates. In polar coordinates the Laplacian is given by

We will assume that our boundary conditions and initial conditions are radially symmetric, and so our solution will be radially symmetric, i.e. derivatives with respect to θ are zero. And in our case the wave equation simplifies to

## Boundary and initial conditions

Let *a* be the radius of our membrane. We will assume our membrane is clamped down on its boundary, like a drum head, which means we have the boundary condition

for all *t* ≥ 0. We assume the initial displacement and initial velocity of the membrane are given by

for all *r* between 0 and *a*.

## Separating variables

Now we get down to separation of variables. Because we’re assuming radial symmetry, we’re down to a function of two variables: *r* for the distance from the center and *t* for time. We assume

and stick it into the wave equation. A little calculation shows that

The left side is a function of *t* alone, and the right side is a function of *r* alone. The only way this can be true for all *t* and all *r* is for both sides to be constant. Call this constant -λ². Why? Because looking ahead a little we find that this will make things easier shortly.

Separation of variables allowed us to reduce our PDE to the following pair of ODEs.

The solutions to the equation for *R* are linear combinations of the Bessel functions *J*_{0}(λ*r*) and *Y*_{0}(λ*r*) [1].

And the solutions to the equation for *T* are linear combinations of the trig functions cos(*c*λ*t*) and sin(*c*λ*t*).

The boundary condition *u*(*a*, *t*) = 0 implies the boundary condition *R*(*a*) = 0. This implies that λ*a* must be a zero of our Bessel function, and that all the *Y*_{0} terms drop out. This means that our solution is

where

Here α_{n} are the zeros of of the Bessel function *J*_{0}.

The coefficients *A*_{n} and *B*_{n} are determined by the initial conditions. Specifically, you can show that

The function *J*_{1} in the expression for the coefficients is another Bessel function.

The functions *J*_{0} and *J*_{1} are so important in applications that even the otherwise minimalist Unix calculator `bc`

includes these functions. (As much as I appreciate Bessel functions, this still seems strange to me.) And you can find functions for zeros of Bessel functions in many libraries, such as `scipy.special.jn_zeros`

in Python.

## Related posts

[1] This is why introductory courses are unlikely to include an example in polar coordinates. Separation of variables itself is no harder in polar coordinates than in rectangular coordinates, and it shows the versatility of the method to apply it in a different setting.

But the resulting ODEs have Bessel functions for solutions, and it’s understandable that an introductory course might not want to go down this rabbit trail, especially since PDEs are usually introduced at the end of a differential equation class when professors are rushed and students are tired.

[2] Snare drum image above “Snare drum” by YannickWhee is licensed under CC BY 2.0

I think the 1/r^2 term in the simplified wave equation might be a typo.

Yes. Thanks.

I’ve never seen Y_0 excluded based on the zero boundary condition at the radius, but rather the requirement of finite response at r = 0. Y_0 does have zeros at non-zero values of r, so doesn’t it meet all the other requirements?