I want to prove the following relation
$$\nabla \times (\mathbf a\times \mathbf b) = \mathbf a\nabla \cdot \mathbf b + \mathbf b \cdot \nabla \mathbf a – \mathbf b \nabla \cdot \mathbf a – \mathbf a \cdot \nabla \mathbf b$$
using the following Levi-Civita definition of cross product
$$\mathbf{a} \times \mathbf{b} =\mathbf{e}_i \epsilon_{ijk}a_ib_j$$
where $\epsilon_{ijk} =\begin{cases}
+1 & \text{if } i,j,k \text{ are in clockwise permutation}, \\
-1 & \text{if } i,j,k \text{ are in counterclockwise permutation, and} \\
\;\;\,0 & \text{if }i=j \text{ or } j=k \text{ or } k=i.
\end{cases}$
Best Answer
Proof
Courtesy of this thread from PhysicsForums.
\begin{align} \nabla \times (\vec{A} \times \vec{B}) &=\partial_l \hat{e}_l \times (a_i b_j \hat{e}_k \epsilon_{ijk}) \\ &=\partial_l a_i b_j \epsilon_{ijk} \underbrace{ (\hat{e}_l \times \hat{e}_k)}_{(\hat{e}_l \times \hat{e}_k) = \hat{e}_m \epsilon_{lkm} } \\ &=\partial_l a_i b_j \hat{e}_m \underbrace{\epsilon_{ijk} \epsilon_{mlk}}_{\text{contracted epsilon identity}} \\ &=\partial_l a_i b_j \hat{e}_m \underbrace{(\delta_{im} \delta_{jl} - \delta_{il} \delta_{jm})}_{\text{They sift other subscripts}} \\ &=\partial_j (a_i b_j \hat{e}_i)- \partial_i (a_i b_j \hat{e}_j) \\ &=\color{blue}{a_i \partial_j b_j \hat{e}_i + b_j \partial_j a_i \hat{e}_i} - (\color{green}{a_i \partial_i b_j \hat{e}_j + b_j \partial_i a_i \hat{e}_j}) \\ &= \vec{A}(\nabla \cdot \vec{B}) + (\vec{B} \cdot \nabla)\vec{A} - (\vec{A} \cdot \nabla)\vec{B} - \vec{B}(\nabla \cdot \vec{A}) \\ \end{align}
Why did the deltas vanish?
Due to Kronecker $\delta$'s sifting property. Recall the definition of Kronecker delta:
$$\delta_{ij}=\begin{cases} 0,\quad \text{if } i\ne j, \\ 1,\quad \text{if } i=j. \end{cases}$$
Thus, for $j\in\mathrm Z$:
$$\sum\limits_{-\infty}^{\infty}a_i\delta_{ij} = a_j$$
This is just like filtering (or sifting), because only when $i=j$ does $\delta_{ij} = 1$. Other terms are zeroes. This also works for partial derivatives.
For example,
$$\partial_l a_i b_j \hat{e}_m \delta_{im} \delta_{jl} = \partial_l a_i b_j \hat{e}_i \delta_{jl}$$
Thus, $$\partial_l a_i b_j \hat{e}_m \delta_{im} \delta_{jl} =\partial_j (a_i b_j \hat{e}_i).$$
Note that $\hat{e}_i$ is a
const std::vector<int>
.Some thoughts