Skip to main content

Cool Math Tricks: Deriving the Divergence, (Del or Nabla) into New (Cylindrical) Coordinate Systems

Now available as a Kindle ebook for 99 cents! Get a spiffy ebook, and fund more physics

The following is a pretty lengthy procedure, but converting the divergence, (nabla, del) operator between coordinate systems comes up pretty often. While there are tables for converting between common coordinate systems, there seem to be fewer explanations of the procedure for deriving the conversion, so here goes!

What do we actually want?

To convert the Cartesian nabla

to the nabla for another coordinate system, say… cylindrical coordinates.

What we’ll need:

1. The Cartesian Nabla:

2. A set of equations relating the Cartesian coordinates to cylindrical coordinates:

3. A set of equations relating the Cartesian basis vectors to the basis vectors of the new coordinate system:

How to do it:

Use the chain rule for differentiation to convert the derivatives with respect to the Cartesian variables to derivatives with respect to the cylindrical variables.

The chain rule can be used to convert a differential operator in terms of one variable into a series of differential operators in terms of other variables that the first variable depends on. This is exactly what we need because we want to start out with a differential operator in terms of x,

in our Cartesian to cylindrical example and convert it to differential operators in terms of the cylindrical variables, . For x, the chain rule gives us:

NOTE: More generally, if you’re given a differential operator in terms of a variable, u, that can be expressed in terms of n other variables, v, then to convert the differential operator in terms of u to differential operators in terms of the v’s the chain rule gives:

This is explained very nicely and in more detail here and here.

OK, so let’s get to work converting the three differential operators of the Cartesian nabla into differential operators in terms of cylindrical coordinates. We start with x,


We can construct the first differential term above as:

but, we really need to get all the x’s and y’s out of the mix and just have cylindrical coordinates remaining. So, using a few substitutions we get:

Now, follow the same procedure for the next differential term in the chain rule.

Remember though that r depends on x and y, so when we differentiate, we need to expand r and use the simple one-variable chain rule. Using a table of derivates for the arccosine, we get:

The final derivative is taken using the quotient rule:

We already know from our work above that


Now, we start the lengthy process of simplifying:

Because z is the same z as in the Cartesian system, it doesn’t depend on x, (exactly as in the Cartesian system), so we have

and our complete conversion for the x derivative term is:

Now use the same techniques to convert the differential for y:

Starting in a similar manner:

Then, evaluating the second term of the chain rule we get:

Remember again that r depends on x and y, so when we differentiate, we need to expand r and use the one variable chain rule.

The final derivative is taken using the quotient rule:

We already know from our work above that


Now, we simplify again:


Finally, since z is not transformed between coordinate systems:

Now that we have each differential converted, we can write the nabla operator as

Which is kind of a mess! We know that when we’re finished we expect to see nicely grouped cylindrical differential terms with cylindrical unit vectors, so let’s group on the cylindrical differentials

Now remembering our original definition of cylindrical unit vectors,

We can make two more substitutions and arrive at the final result for nabla in cylindrical coordinates!


Anonymous said…
Hi Hamilton,

very nice tutorial. Following your reasoning I was able to derive the Nabla from Cartesian coordinate system to my own defined non-standard spherical coordinate system. And it worked perfectly!

Thanks again.

Anonymous said…
Thank you....

great help!

John F. said…
Good article. I noticed a shortcut for d phi / dx and d phi / dy. If you use phi = arctan(y/x),
d phi / dx = 1/(1+(y/x)^2).d/dx(y/x)
similar for d phi/dy, and avoids a lot of messy algebra.
Anonymous said…
Found your tutorial on google. Very nicely done. Thank you!
Anonymous said…
Firstly, thanks for this, I've been trying in vain to derive something similar and I've finally noticed that I've been using the wrong transformation of unit vectors!

Similarly to previous comments, this particular result falls out fairly quickly when you note that r_x = cos(phi); r_y = sin(phi); phi_x = -sin(phi)/r and phi_y=cos(phi)/r. Otherwise a good exercise in the chain rule!
mani said…
i'm from india and i found your explanation extremely helpful.i was able to derive expressions for divergence and curl on my own by following a method similar to yours.
it was enlightening.
Doughboy said…
Your derivation is great, but it's too lengthy. You can actually derive it starting with the definition of divergence, which is the limit as the volume of a closed surface approaches zero of the flux through that surface. Taking the surface as the standard differential volume unit in cylindrical coordinates, you can directly derive it much more quickly than going through the chain rule and coordinate transformations.
antigrav_kids said…
Thank you Doughboy! That's an awesome pointer! It took me awhile to work through all the details of what you said, but in the end it's far easier and left me with a physical understanding of the derivation instead of just a mechanical list of steps. Expect to see a post on deriving the spherical laplacian in this way soon. Thanks again!
antigrav_kids said…
This comment has been removed by the author.
antigrav_kids said…
Hi Doughboy,
Is the following for spherical coordinates about what you had in mind?

Thanks again! You made my homework this week a lot easier and much more of a learning experience, (in a good way).
Unknown said…
Thanks a lot. I was searching for this material and I found great your explanation !!

Unknown said…
Thanks a lot. I was searching for this material and I found great your explanation !!

Anonymous said…
Awesome stuff man!
Your work saved me a lot of time
Thanks a lot
Anonymous said…
thanxs bro.. great help
Anonymous said…
Thank you a lot man!!!

Popular posts from this blog

Division: Distributing the Work

Our unschooling math comes in bits and pieces.  The oldest kid here, seven year-old No. 1 loves math problems, so math moves along pretty fast for her.  Here’s how she arrived at the distributive property recently.  Tldr; it came about only because she needed it.
“Give me a math problem!” No. 1 asked Mom-person.

“OK, what’s 18 divided by 2?  But, you’re going to have to do it as you walk.  You and Dad need to head out.”

And so, No. 1 and I found ourselves headed out on our mini-adventure with a new math problem to discuss.

One looked at the ceiling of the library lost in thought as we walked.  She glanced down at her fingers for a moment.  “Is it six?”

“I don’t know, let’s see,” I hedged.  “What’s two times six?  Is it eighteen?”

One looked at me hopefully heading back into her mental math.

I needed to visit the restroom before we left, so I hurried her calculation along.  “What’s two times five?”

I got a grin, and another look indicating she was thinking about that one.

I flashed eac…

The Javascript Google URL Shortener Client API

I was working with the Google API Javascript Client this week to shorten the URLs of Google static maps generated by my ham radio QSL mapper. The client interface provided by Google is very useful. It took me a while to work through some of the less clear documentation, so I thought I'd add a few notes that would have helped me here. First, you only need to authenticate your application to the url shortener application if you want to track statistics on your shortened urls. If you just want the shortened URL, you don't need to worry about this. The worst part for me was that the smaple code only showed how to get a long url from an already shortened rul. If you follow the doucmentaiotn on the insert method, (the method for getting a shortened url from a long one), there is a reference to a rather nebulous Url resource required argument. It's not at all clear how to create one of these in Javascript. The following example code shows how:
var request = gapi.clie…