$ \newcommand{\veciup}[1]{#1^1,\ldots,#1^n} \newcommand{\setveci}[1]{\cbrn{\veci{#1}}} \newcommand{\setveciup}[1]{\cbrn{\veciup{#1}}} \newcommand{\tang}{T} $

When I was learning about Continuum Mechanics for the first time, the covariance and contravariance of vectors confused the hell out of me. The concepts gain meaning in the context of Riemannian Geometry, but it was surprising to find that one doesn’t need to learn an entire subject to grasp the logic behind co-/contravariance. An intermediate knowledge of linear algebra is enough—that is, one has to be acquainted with the concept of vector spaces and one-forms.

The duality of co-/contravariance arises when one has to define vectors in terms of a non-orthonormal basis. The reason such terminology doesn’t show up in engineering education is that Cartesian coordinates are enough for most engineering problems. But every now and then, a complex problem with funky geometrical requirements show up, like one that requires measuring distances and areas on non-flat surfaces. Then you end up with dual vector spaces. I’ll try to give the basics of duality below.

Definition: Let V\CV be a finite-dimensional real vector space. The space V=L(V,R)\CV^\ast = \CL(\CV,\IR), defined as the the space of all one-forms α:VR\Balpha:\CV\to\IR, is called the dual space to V\CV.

Let B={e1,,en}B=\cbr{\Be_1,\dots,\Be_n} be a basis of V\CV. Any vector vV\Bv\in\CV can be written in terms of BB as

v=a1e1++anen\begin{equation} \Bv = a_1 \Be_1 + \cdots + a_n\Be_n \htmlId{eq:vectorrep1}{} \tag{1}\end{equation}

with the components a1,,anRa_1,\dots,a_n\in\IR. For any i=1,,ni=1,\dots,n, we can define the ii-th component aia_i by a one-form as

ei:={VRvei(v)=ai\begin{equation} \Be^i := \left\{ \begin{aligned} \CV &\to \IR \\ \Bv &\mapsto \Be^i(\Bv) = a_i \end{aligned}\right. \tag{2}\end{equation}

These elements are linear and thus are in the space L(V,R)\CL(\CV,\IR)1. Given any basis B={e1,,en}B=\setveci{\Be}, we call B={e1,,en}B^\ast = \setveciup{\Be} the basis of V\CV^\ast dual to BB. The fact that BB^\ast really is a basis of V\CV^\ast can be proved by showing that ei\Be^i are linearly independent. Then v\Bv has the following representation

v=e1(v)e1++en(v)en.\begin{equation} \Bv = \Be^1(\Bv)\, \Be_1 + \cdots + \Be^n(\Bv)\, \Be_n. \htmlId{eq:vectorrep2}{} \tag{3}\end{equation}

Instead of aia_i, it is practical to denote the components of v\Bv as viv^i, lightface of the same symbol with a raised index corresponding to the raised index of the dual basis:

v=v1e1++vnenandvi=ei(v).\begin{equation} \Bv = v^1 \Be_1 + \cdots + v^n \Be_n \eqwith v^i = \Be^i(\Bv). \tag{4}\end{equation}

In fact, this convention is more compatible with the symmetry caused by the duality. This point will be more clear after the introduction of dual basis representation of one-forms.

Proposition: Each eiL(V,R)\Be^i \in \CL(\CV,\IR) can be identified by its action on the basis BB:

ei(ej)={1if i=j0otherwise.\begin{equation} \Be^i(\Be_j) = \begin{cases} 1 & \text{if } i=j \\ 0 & \text{otherwise}. \end{cases} \htmlId{eq:dualbasis2}{} \tag{5}\end{equation}

Proof: For any vV\Bv\in\CV, ei(v)\Be^i(\Bv) must give viv^i, the ii-th component of v\Bv. Setting v=ej\Bv = \Be_j, one sees that ei(v)=vi=1\Be^i(\Bv)=v^i = 1 when i=ji=j, and is zero otherwise.

Geometrically, (5) implies that a basis vector is perpendicular to all the dual basis vectors, except its own dual.

Dual Basis Representation of One-Forms

Let α\Balpha be a one form in V\CV^\ast with the corresponding dual basis {e1,,en}\setveciup{\Be}. Then similar to a vector, α\Balpha has the following representation

α()=α(e1)e1()++α(en)en()=α1e1()++αnen()\begin{equation} \begin{aligned} \Balpha(\cdot) &= \Balpha(\Be_1)\,\Be^1(\cdot) + \dots + \Balpha(\Be_n)\,\Be^n(\cdot) \\ &= \alpha_1 \Be^1(\cdot) + \dots + \alpha_n \Be^n(\cdot) \end{aligned} \tag{6}\end{equation}

where the components of the one-form α\Balpha are defined as

αi=α(ei).\begin{equation} \alpha_i = \Balpha(\Be_i). \tag{7}\end{equation}

Proof: We substitute (3) and obtain

α(v)=α(i=1nei(v)ei)=i=1nα(ei)ei(v)\begin{equation} \begin{aligned} \Balpha(\Bv) &= \Balpha\rbr{\suml{i=1}{n} \Be^i(\Bv)\, \Be_i} = \suml{i=1}{n} \Balpha(\Be_i)\, \Be^i(\Bv) \\ \end{aligned} \tag{8}\end{equation}

using α\Balpha‘s linearity.

Notation: Let V\CV be a finite-dimensional real vector space. For vV\Bv\in\CV and αV\Balpha\in\CV^\ast

,:={V×VR(v,α)α(v)\begin{equation} \abrn{\cdot,\cdot} := \left\{\begin{aligned} \CV\times\CV^\ast &\to \IR \\ (\Bv, \Balpha) &\mapsto \Balpha(\Bv) \end{aligned}\right. \tag{9}\end{equation}

denotes the action of α\Balpha on v\Bv, and is called a natural pairing or dual pairing between a vector space and its dual. It is of the essence to understand that ,\abrn{\cdot,\cdot} does not denote an inner product in V\CV; that is, v,α\abr{\Bv,\Balpha} means α(v)\Balpha(\Bv).

With this notation, (3) can be written as

v=v,e1e1++v,enen.\begin{equation} \Bv = \abrn{\Bv,\Be^1}\, \Be_1 + \cdots + \abrn{\Bv,\Be^n}\, \Be_n. \tag{10}\end{equation}

and (5) as

ei,ej=δij.\begin{equation} \abrn{\Be_i, \Be^j} = \delta_{ij}. \htmlId{eq:dualbasis1}{} \tag{11}\end{equation}

Using the convention that ei\Be_i are column vectors and ei\Be^i are row vectors, (11) can be rearranged in the following manner

[e1e2en]1=[e1e2en]\begin{equation} \left[ \begin{array}{ c|c|c|c } \Be_1&\Be_2&\cdots&\Be_n \end{array} \right]\inv = \left[ \begin{array}{ c } \Be^1 \\ \hline \Be^2 \\ \hline \vdots \\ \hline \Be^n \end{array} \right] \htmlId{eq:computedualbasis1}{} \tag{12}\end{equation}

which can be used to compute a dual basis.

Example: Given a two-dimensional vector space V\CV with a basis e1=[2,0.5]T\Be_1=[2,-0.5]\tra, e2=[1,1]T\Be_2=[1,1]\tra, we use (12) to compute

[210.51]1=[0.40.40.20.8]\begin{equation} \begin{bmatrix} 2 & 1 \\ -0.5 & 1 \end{bmatrix}\inv = \begin{bmatrix} 0.4 & -0.4 \\ 0.2 & 0.8 \end{bmatrix} \tag{13}\end{equation}

and obtain the dual basis vectors as e1=[0.4,0.4]\Be^1=[0.4,-0.4] and e2=[0.2,0.8]\Be^2=[0.2,0.8]. The result is given in the following figure,

where one can see that e1e2\Be_1\perp\Be^2, e1e2\Be^1\perp\Be_2.

A body B\CB embedded in R2\IR^2 with curvilinear coordinates. Every point P\CP at X\BX has an associated two-dimensional vector space, called B\CB's tangent space at X\BX, denoted TXB\tang_{\BX}\CB. The basis ei\Be_i corresponding to coordinates θi\theta_i are not necessarily orthogonal and can admit corresponding duals ei\Be^i, due to curvilinearity. The coordinates appear to be affine at the point's immediate vicinity, and thus in the tangent space.

The introduction of the dual space allows us to reinterpret a one-form α\Balpha as an object residing in the dual space. In fact, the canonical duality V=V\CV^{\ast\ast}=\CV states that every vector v\Bv can be interpreted as a functional on the space V\CV^\ast via

v:={VRαv(α) or v,α\begin{equation} \Bv:= \left\{ \begin{aligned} \CV^\ast &\to \IR \\ \Balpha &\mapsto \Bv(\Balpha) \text{ or } \abrn{\Bv, \Balpha} \end{aligned}\right. \tag{14}\end{equation}
  1. Despite being denoted with bold letters, one-forms should not be confused with vectors.