Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

It is known that if a vector field $\vec{B} \;\;\;$is divergence free, and defined on $ R^3 $ then it can be shown as $\vec{B}=\nabla\times\vec{A} \;\;$ for some vector field A.

Is there a way to find A that would satisfy this equation (I know there are many possibilities for A)? Note: I want to find it without using the explicit formula for $B_x(x,y,z), B_y(x,y,z), B_z(x,y,z)$, but maybe with a formula involving surface/curve integrals.

For example, i've found that in the 2D case (if $B_z=0$ and $\vec{B}=\vec{B}(x,y)\;\;$) A can be shown as: $$\vec{A}(x,y)=\hat{z}\int_{\vec{R_0}}^{\vec{r}} (\hat{z}\times\vec{B})\cdot\vec{dl}$$ I'm looking for something similar in the general case.

share|cite|improve this question

This is called Poincare's Lemma. I will write the standard version, in a neighborhood around the origin. The usual phrasing is to say that a closed form is locally exact, the fact that this is not globally true is the stuff of cohomology. This is from pages 94-96 of Calculus on Manifolds by Michael Spivak.

Given your divergence-free vector field $(F_1(x,y,z), \; F_2(x,y,z), \; F_3(x,y,z)),$ the $x$-coordinate of the new vector field $G$ is $$ G_1(x,y,z) = \int_0^1 \; \left( \; t z F_2(tx, ty,tz) - t y F_3(tx, ty,tz) \; \right) \; dt, $$ the $y$-coordinate is $$ G_2(x,y,z) = \int_0^1 \; \left( \; t x F_3(tx, ty,tz) - t z F_1(tx, ty,tz) \; \right) \; dt, $$
with $z$-coordinate $$ G_3(x,y,z) = \int_0^1 \; \left( \; t y F_1(tx, ty,tz) - t x F_2(tx, ty,tz) \; \right) \; dt. $$

Note that fractions tend to show up if you have any exponents. I did a test run with a random field, $$ H = (xyz, \; x y^2 z^3, \; x y^3 z^5).$$ I then took the curl to get $$ F = \nabla \times H = ( 3 x y^2 z^5 - 3 x y^2 z^2, \; x y - y^3 z^5, \; y^2 z^3 - x z).$$ The three components are what I am calling $F_1,F_2,F_3.$ We know that $F$ is a curl, by construction, and we know it is divergence free (check!). Going through Poincare's recipe, after fixing a few of my bookkeeping errors, gave instead $$ G_1 = \frac{1}{2} x y z - \frac{1}{10} y^3 z^6 - \frac{1}{7} y^3 z^3,$$ $$ G_2 = \frac{4}{7} x y^2 z^3 - \frac{1}{4} x^2 z - \frac{3}{10} x y^2 z^6,$$ $$ G_3 = \frac{4}{10} x y^3 z^5 - \frac{1}{4} x^2 y - \frac{3}{7} x y^3 z^2.$$ This has a bit of a different appearance from $H.$ That is fine. As $H,G$ have the same curl, it follows merely that $(G-H)$ is the gradient of some function.

On that note, if you have a curl-free field $W = (W_1, W_2, W_3),$ it is the gradient of a function $f$ given by $$ f(x,y,z) = \int_0^1 \; \left( \; x W_1(tx, ty,tz) + y W_2(tx, ty,tz) + z W_3(tx, ty,tz) \; \right) dt.$$

share|cite|improve this answer
Thanks for the answer Will Jagy, but thats not what I was looking for. You gave me an algorithm to find A using the explicit formula for $B_x, B_y, B_z$. This algorithm may have problems if my function is defined on a subset of $R^3$ and not on the whole $R^3$ (for example, on an open domain but maybe not simply connected) – Max Nov 13 '11 at 11:53
@Max: simple connectedness is crucial for this idea. If the domain on which $\mathbf{B}$ is defined isn't simply connected, then you don't have the implication $\nabla \cdot \mathbf{B} = 0 \Rightarrow \mathbf{B} = \nabla \times \mathbf{A}$ for some $\mathbf{A}.$ – Gerben Nov 13 '11 at 12:05
@Max: the 'de Rham cohomology' is a general way of studing whether, given some space $M$, the implication $df = 0 \rightarrow f = d a$ for some $a$ holds. Here, $d$ is some generalized derivative operator - the notion includes grad, div and curl. In particular, the curl corresponds to the first cohomology group, so the mathematician's way of stating your question is 'is $H^1(M)$ trivial'? For $\mathbb{R}^n$ it's true, but for spaces like $\mathbb{S}^1$ or $\mathbb{R}^2 - \{p\}$ for some point $p$, it's not. – Gerben Nov 13 '11 at 21:15
@Max: that doesn't change much, but you should be careful about what you mean by a 'closed surface'. If $D$ is a manifold with boundary $S$, then $$\oint_S \vec{B}\cdot\vec{ds}= \int_D \nabla \cdot \vec{B}$$ (through Stokes' theorem), so that doesn't help you much. – Gerben Nov 13 '11 at 21:19
@Gerben: Not exactly. Stoke's theorem can be applied in a simply connected domain (when D is inside the domain). The fact that $\oint_S \vec{B}\cdot\vec{ds}=0$ for every closed surface S, insures that $div(B)=0$, but not vice versa. Its like the fact that $\nabla\times\vec{E}=0$ doesnt insure you that $\vec{E}=-\nabla\Phi$, but if you say that $\oint_L \vec{E}\cdot\vec{dl}=0$ for every closed curve in the domain, then $\vec{E}=-\nabla\Phi$ does hold, even if you arn't in a simply connected domain. – Max Nov 13 '11 at 22:27

I'm not sure if this is what you meant by excluding the 'explicit formula', but such a vector field is constructed in the proof of Helmholtz' theorem; $\mathbf{A}(\mathbf{r})$ is given by

$$\mathbf{A}(\mathbf{r}) = \frac{1}{4\pi} \int_{\mathbb{R}^3} \frac{\nabla \times \mathbf{B}(\mathbf{r}')}{\mathbf{|r - r'|}}$$

where $\mathbf{r'}$ is the variable you're integrating over.

To see why this works, you need to take the curl of the above equation; however, you'll need some delta function identities, especially

$$\nabla^2(1/\mathbf{|r - r'|}) = -4 \pi \delta(\mathbf{r - r'}).$$

If you're at ease with those, you should be able to finish the proof on your own. If you're not sure, just ask over here and I'll be glad to provide details.

share|cite|improve this answer
The problem with that formula is that the integral may not converge.. – Max Nov 13 '11 at 11:53
Indeed, you'll need to impose some conditions at infinity. I guess that $\nabla \times \mathbf{B}(\mathbf{r}) = \mathcal{O}(1/r^2)$ suffices, but someone competent should check this. Of course, there are also smoothness conditions on $\mathbf{B}$; $\mathcal{C}^2$ should suffice, I reckon. – Gerben Nov 13 '11 at 12:12
you are right, but i'm considering the general case: $\vec{B} $ doesnt have to go rapidly to zero at infinity. It may not even go to zero. – Max Nov 13 '11 at 20:52
Simple, take a partition of unity of $\mathbb{R}^3$ called $\{\phi_\alpha\}$. Let $\mathbf{B}_\alpha = \phi_\alpha \mathbf{B}$, they are compactly supported. Apply Helmholz formula to them to get $\mathbf{A}_\alpha$. Formally $\mathbf{A} = \sum_\alpha \mathbf{A}_\alpha$, but notice that if you are only interested in the values of $\mathbf{A}$ on some compact set $\bar{\Omega}\subset\mathbb{R}^3$, you just need to sum over the (finitely many) $\alpha$s such that the support of $\phi_\alpha$ intersects $\bar{\Omega}$. – Willie Wong Nov 14 '11 at 12:26
@ Willie Wong: first, how do you know that $div(\Phi_\alpha \vec{B})=0 \;\;\; $ so you can define $A_\alpha \;\;\;$? secondly, how do you know that the sum you mentioned converges? – Max Nov 14 '11 at 18:52

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.