Increasingly I’ve found the Levi-Civita symbol to be incredibly useful at deducing equalities involving cross products. I’d go through some basic applications of the symbol in linear algebra and multivariable calculus. We would discuss more advanced applications in part 2.

Consider vectors \(\mathbf{u}\) and \(\mathbf{v}\). We can consider the components of \(\mathbf{u, v}\) as follows: \(\mathbf{u} = u_1 \mathbf{e}_1 + u_1 \mathbf{e}_2 + u_3 \mathbf{e}_3\) and \(\mathbf{v} = v_1 \mathbf{e}_1 + v_2 \mathbf{e}_2 + v_3 \mathbf{e}_3\) where \(\mathbf{e}_i\) are the standard unit column vectors.

Introducing the Levi-Civita Symbol,

\[\varepsilon _{ijk}={\begin{cases}+1&{\text{if }}(i,j,k){\text{ is }}(1,2,3),(2,3,1),{\text{ or }}(3,1,2),\\-1&{\text{if }}(i,j,k){\text{ is }}(3,2,1),(1,3,2),{\text{ or }}(2,1,3),\\\;\;\,0&{\text{if }}i=j,{\text{ or }}j=k,{\text{ or }}k=i\end{cases}}\]

The cases for \(1\) and \(-1\) come from analyzing whether \(i,j,k\) forms an even or odd permutation of \(\{1, 2, 3\}\).

This definition may seem to come from nowhere and as such it would be helpful to connect it with some linear algebra.


You may wish to skim through this section upon first reading. The main result of this section is the formula for the determinant expressed in terms of Levi-Civita symbols, which we would use later on.

We first introduce the Leibniz formula for determinants, which gives us a technical expression of the determinant of a square matrix in terms of permutations of the matrix elements.

\[\det A = \sum _{\tau \in S_{n}}\operatorname {sgn}(\tau )\prod _{i=1}^{n}a_{i,\,\tau (i)}=\sum _{\sigma \in S_{n}}\operatorname {sgn}(\sigma )\prod _{i=1}^{n}a_{\sigma (i),\,i}\]

One can prove that the determinant is the only alternating multilinear function from \(F: M_n(\mathbb{R}) \to \mathbb{R}\) such that \(F(I) = 1\). You can find a general proof here.

It’s annoying to have the indexing set be the symmetry group. Restricting ourselves to \(3 \times 3\) matrices over the reals, by considering how \(S_3\) acts on the set \(\{1,2,3\}\), we could view \(S_3\) as a subset of functions that map \(\{1,2,3\}\) to \(\{1,2,3\}\). Notice there’s a bijection from such functions to ordered triples \(\{(i,j,k), i,j,k\in\{1,2,3\}\}\) by \(f \to (f(1), f(2), f(3))\), which is much easier to work with.

As such, we have

\[\begin{align*} \det A &= \sum _{\tau \in S_{3}}\operatorname {sgn}(\tau )a_{1\tau (1)}a_{2\tau (2)}a_{3\tau (3)} = \sum _{\sigma \in S_{3}}\operatorname {sgn}(\sigma )a_{\sigma (1)1}a_{\sigma (2)2}a_{\sigma (3)3}\\ &= \sum _{ijk} \varepsilon_{ijk} a_{1i} a_{2j} a_{3k} = \sum _{ijk} \varepsilon_{ijk} a_{i1} a_{j2} a_{k3} \end{align*}\]

where \(\varepsilon_{ijk}\) is zero if and only if \((i,j,k)\) doesn’t correspond to a permutation in \(S_3\).

In particular if we express \(A = (\mathbf{A}^1 ~\mathbf{A}^2 ~\mathbf{A}^3)\) where \(\mathbf{A}^i\) denotes the \(i\)-th column vector of \(A\), we get

\[\det A = \sum _{ijk} \varepsilon_{ijk} \mathbf{A}^1_i \mathbf{A}^2_j \mathbf{A}^3_k\]

In particular,

\[\begin{align*} & \det (\mathbf{e}_l ~\mathbf{e}_m ~\mathbf{e}_n) \\ &= \sum_{ijk} \varepsilon_{ijk} (\mathbf{e}_l)_i (\mathbf{e}_m)_j (\mathbf{e}_n)_k \\ &= \sum_{ijk} \varepsilon_{ijk} \delta_{il} \delta_{jm} \delta_{kn} \\ &= \varepsilon_{lmn} \end{align*}\]

where \(\delta\) is the Kronecker delta.

Vector Product

Connecting this to the cross product, notice that

\[\mathbf{e}_i \times \mathbf{e}_j = \sum_k \epsilon_{ijk} \mathbf{e}_k\]

As such we can express

Claim: \(\mathbf{v} \times \mathbf{w} = \sum_{ijk} \varepsilon_{ijk} \mathbf{v}_j \mathbf{w}_k \mathbf{e}_i\)


\[\begin{align*} &\mathbf{v} \times \mathbf{w} \\ &= \sum_{ij} \mathbf{v}_i \mathbf{e}_i \times \mathbf{w}_j \mathbf{e}_j\\ &= \sum_{ij} \mathbf{v}_i \mathbf{w}_j (\mathbf{e}_i \times \mathbf{e}_j) \\ &= \sum_{ijk} \varepsilon_{ijk} \mathbf{v}_i \mathbf{w}_j \mathbf{e}_k \\ &= \sum_{jki} \varepsilon_{jki} \mathbf{v}_j \mathbf{w}_k \mathbf{e}_i \\ &= \sum_{ijk} \varepsilon_{ijk} \mathbf{v}_j \mathbf{w}_k \mathbf{e}_i \\ &\phantom{= \sum \sum \varepsilon \mathbf{v}_i \mathbf{w}_j \mathbf{e}_k}\square \end{align*}\]

Alternatively we could say that the \(i\)-th component of \(\mathbf{v} \times \mathbf{w}\) is \(\varepsilon_{ijk} \mathbf{v}_j \mathbf{w}_k\).

The above enables us to prove the relationship between the vector products and the determinant.

Claim: \(\mathbf{u} \cdot (\mathbf{v} \times \mathbf{w}) = \det (\mathbf{u} ~\mathbf{v} ~\mathbf{w})\)


\[\begin{align*} &\mathbf{u} \cdot (\mathbf{v} \times \mathbf{w}) \\ &= \sum_i \mathbf{u}_i [\mathbf{v} \times \mathbf{w}]_i \\ &= \sum_i\mathbf{u}_i \sum_{jk} \varepsilon_{ijk} \mathbf{v}_j \mathbf{w}_k \\ &= \sum_{ijk} \varepsilon_{ijk} \mathbf{u}_i \mathbf{v}_j \mathbf{w}_k\\ &= \det (\mathbf{u} ~\mathbf{v} ~\mathbf{w}) \\ &\phantom{= \det (\mathbf{u} ~\mathbf{v} ~\mathbf{w})}\square \end{align*}\]

Multivariable calculus

The symbol could be used to deduce equalities in multivariable calculus as well.

Let’s consider the components of the gradient, \(\nabla\), by \(\nabla = \mathbf{e}_1 \partial_1 + \mathbf{e}_2 \partial_2 + \mathbf{e}_3 \partial_3\) where \(\partial_i = \frac{\partial}{\partial \mathbf{x}_i}\). Let \(\phi\) be some scalar valued function.

Claim: \(\nabla \cdot (\nabla \times \mathbf{u}) = 0\)


\[\begin{align*} & \nabla \cdot (\nabla \times \mathbf{u}) \\ &= \sum_ i \partial_i ([\nabla \times \mathbf{u}]_i)\\ &= \sum_{ijk} \varepsilon_{ijk} \partial_i \partial_j \mathbf{u}_k \\ &= \sum_k \sum_{ij} \varepsilon_{ijk} \partial_i \partial_j \mathbf{u}_k \\ &= 0 \qquad \square \end{align*}\]

Claim: \(\nabla \times (\nabla \phi) = \mathbf{0}\)

Proof: Consider the \(i\)-th component,

\[\begin{align*} &[\nabla \times (\nabla \phi)]_i \\ &= \sum_{jk} \varepsilon_{ijk} \partial_j [\nabla \phi]_k\\ &= \sum_{jk} \varepsilon_{ijk} \partial_j \partial_k \phi \\ \end{align*}\]

Clairaut’s theorem gives you the sufficient conditions to swap the partial derivatives. In any case assume those conditions are satisified and we have \(\partial_j (\partial_k(\phi)) = \partial_k (\partial_j(\phi)) \, \forall k, j\). Swapping \(j\) and \(k\) in the sum we now have

\[\begin{align*} &= \sum_{kj} \varepsilon_{ikj} \partial_k \partial_j \phi\\ &= \sum_{jk} \varepsilon_{ikj} \partial_j \partial_k \phi\\ &= \sum_{jk} -\varepsilon_{ijk} \partial_j \partial_k \phi \\ &= - [\nabla \times (\nabla \phi)]_i \end{align*}\]

So \([\nabla \times (\nabla \phi)]_i=0\), we’re done. \(\square\)

Claim: \(\nabla \times (\phi \mathbf{u}) = (\nabla \phi \times \mathbf{u}) + \phi(\nabla \times \mathbf{u})\)

Proof: Consider the \(i\)-th component,

\[\begin{align*} &[\nabla \times (\phi \mathbf{u})]_i \\ &= \sum_{jk} \varepsilon_{ijk} \partial_j ([\phi \mathbf{u}]_k)\\ &= \sum_{jk} \varepsilon_{ijk} \partial_j (\phi \mathbf{u}_k)\\ &= \sum_{jk} \varepsilon_{ijk} \big[(\partial_j \phi)\mathbf{u}_k + \phi (\partial_j \mathbf{u}_k)\big]\\ &= [(\nabla \phi \times \mathbf{u})]_i + [\phi(\nabla \times \mathbf{u})]_i \\ & \phantom{[(\nabla \phi \times \mathbf{u})]_i + [\phi(\nabla \times \mathbf{u})]_i}\square \end{align*}\]

Claim: \(\nabla \cdot (\phi \mathbf{u}) = (\nabla \phi) \cdot \mathbf{u} + \phi(\nabla \cdot \mathbf{u})\)


\[\begin{align*} & \nabla \cdot (\phi \mathbf{u}) \\ &= \sum_i\partial_i ([\phi \mathbf{u}]_i) \\ &= \sum_i\partial_i (\phi \mathbf{u}_i) \\ &= \sum_i(\partial_i \phi) \mathbf{u}_i + \phi (\partial_i \mathbf{u}_i) \\ &= \sum_i [(\nabla \phi) \cdot \mathbf{u}]_i + [\phi(\nabla \cdot \mathbf{u})]_i \\ &= (\nabla \phi) \cdot \mathbf{u} + \phi(\nabla \cdot \mathbf{u}) \\ & \phantom{= (\nabla \phi) \cdot \mathbf{u} + \phi(\nabla \cdot \mathbf{u})}\square \end{align*}\]

Going further

To go further and handle terms such as \(\mathbf{u} \times (\mathbf{v} \times \mathbf{w})\), we need to understand how we could multiply Levi-Civita symbols together. We would do so in part 2.


I’m directly influenced by articles written by Patrick Guio, Jim Wheeler and R. L. Herman. Thanks to Henry Yip for helpful comments and providing an alternate proof.

Next maths post Previous maths post

All maths posts