# How to perform wedge product

I have heard all kinds of great things about Clifford/Geometric algebra, but I can't find any good resources. I have been looking EVERYWHERE for just one actual example of a wedge product being calculated and for a bi-, tri- or any multivector to be written out with actual numbers! Every article and video just talks about properties, which is fine, but I have a hard time understand how to use something without a solid example.

Could you please actually compute a wedge product between some vectors? Like [1, 3, -2] ∧ [5, 2, 8] ? Or any other example with values. The more examples the better!

Thank so much!!

• I share your frustration. My introduction to wedge products is Muirhead's "Aspects of Multivariate Statistical Theory", where they arise in only a differential sense (dealing with dx's and dy's). I am unaware of anyplace they arise in an absolute sense. – John Polcari Jul 6 '18 at 15:15

I assume your notation $[v^1,v^2,v^3]$ means a vector $\mathbf v \in V = \mathbb R^3$ where $$\mathbf v = v^1\ \mathbf e_1 + v^2\ \mathbf e_2 + v^3\ \mathbf e_3.$$ The wedge operator is a bilinear, antisymmetric operator takes in two vectors $\mathbf v, \mathbf w \in V$ and outputs a bivector $\mathbf v \wedge \mathbf w \in \Lambda^2(V)$ such that $$\begin{split} \mathbf v \wedge \mathbf w &= (v^1\ \mathbf e_1 + v^2\ \mathbf e_2 + v^3\ \mathbf e_3) \wedge (w^1\ \mathbf e_1 + w^2\ \mathbf e_2 + w^3\ \mathbf e_3) \\ &= v^1 w^1\ \mathbf e_1 \wedge \mathbf e_1 + (v^1 w^2 - v^2 w^1)\ \mathbf e_1 \wedge \mathbf e_2 + (v^1 w^3 - v^3 w^1)\ \mathbf e_1 \wedge \mathbf e_3 \\ &\quad + v^2w^2\ \mathbf e_2 \wedge \mathbf e_2 + (v^2 w^3 - v^3 w^2)\ \mathbf e_2 \wedge \mathbf e_3 + v^3w^3\ \mathbf e_3 \wedge \mathbf e_3 \\ &= (v^1 w^2 - v^2 w^1)\ \mathbf e_1 \wedge \mathbf e_2 + (v^1 w^3 - v^3 w^1)\ \mathbf e_1 \wedge \mathbf e_3 + (v^2 w^3 - v^3 w^2)\ \mathbf e_2 \wedge \mathbf e_3. \end{split}\tag1$$ If you're wondering why I have made these simplifications:

• The wedge is bilinear, i.e. $(a\mathbf v + b \mathbf w) \wedge \mathbf x = a(\mathbf v \wedge \mathbf x) + b(\mathbf w \wedge \mathbf x)$ and the same in the second slot, so this allows us to distribute it through the linear combinations in parentheses after the first equal sign, and take out the coefficients;
• The wedge is antisymmetric, i.e. $\mathbf v \wedge \mathbf w = - \mathbf w \wedge \mathbf v$, which implies $\mathbf v \wedge \mathbf v = \mathbf 0$, so this allows us to "reorder" $a(\mathbf e_2 \wedge \mathbf e_1) = - a (\mathbf e_1 \wedge \mathbf e_2)$, etc., in the second line, and simplify $b (\mathbf e_1 \wedge \mathbf e_1) = b\ \mathbf 0 = \mathbf 0$, etc., in the third.

Notice that if you set $$\begin{split} \mathbf e_1 \wedge \mathbf e_2 &\mapsto \mathbf e_3, \\ \mathbf e_1 \wedge \mathbf e_3 &\mapsto - \mathbf e_2, \\ \mathbf e_2 \wedge \mathbf e_3 &\mapsto \mathbf e_1, \end{split}\tag2$$ you get the cross product $\mathbf v \times \mathbf w$! Since $\{\mathbf e_i \wedge \mathbf e_j,\ 1\leq i < j\leq n\}$ turns out to be a basis for $\Lambda^2(V)$ when $\dim V = n$, $(2)$ defines a bilinear map $\star : \Lambda^2(V) \to V$ which is called Hodge dual and can actually be generalized to higher dimensions. However it is basically only in dimension $3$ that it takes this simple, familiar form (this is because $\dim \Lambda^2 V = \dim V$ when $n=3$).

In the specific case where $$\mathbf v = \mathbf e_1 + 3 \mathbf e_2 -2 \mathbf e_3, \qquad \mathbf w = 5 \mathbf e_1 + 2 \mathbf e_2 + 8 \mathbf e_3,$$ you get, from $(1)$, $$\begin{split} \mathbf v \wedge \mathbf w &= -13\ \mathbf e_1 \wedge \mathbf e_2 + 18\ \mathbf e_1 \wedge \mathbf e_3 +28\ \mathbf e_2 \wedge \mathbf e_3 . \end{split}$$ As a confirmation, notice $\star(\mathbf v \wedge \mathbf w) = \mathbf v \times \mathbf w$.

If you are interested in the "concrete" side of exterior algebra, I suggest you give a look at Sergei Winitzki's Linear Algebra via Exterior Products, which is available online for free. He introduces these very abstract concepts, like tensor products, wedge products, hodge duality, etc., but always manages to include simple computational examples that show how they work. You can find the book here.

I have been looking EVERYWHERE for just one actual example of a wedge product being calculated and for a bi-, tri- or any multivector to be written out with actual numbers!

The reason why this is the case is because the wedge product of two vectors is not just some array of numbers. Sure, every finite dimensional vector space is isomorphic to the vector space of the tuples of that length, hence you can describe it as array of numbers (by mapping it with that isomorphism which simply maps the basis of your space to some basis of the tuples). However is that meaningful thing to do? In some cases it might be but in general you have to realize that this is just an arbitrary choice. There are a lot of bases so you can do this in many ways.

In the three dimensional case there's important map, the Hodge isomorphism, that gives you a way to represent the wedge of two vectors with a vector from your original space (this is actually the cross product, if you chose the right parameters for the map), however this map requires two extra parameters that introduce more structure to your space (namely inner product and a choice of volume form).

In the case of $(1, 3, -2) \wedge (5, 2, 8)$, there's not much else that you can do other than picking an arbitrary basis of your original space and expressing that product in terms of the wedged basis vectors. For example $$(1,3,-2) = 1(1, 0, 0) + 3(0,1,0) -2(0,0,1)$$ $$(5,2,8) = 5(1, 0, 0) + 2(0,1,0) +8(0,0,1)$$ $$(1,3,-2) \wedge (5,2,8) = (1(1, 0, 0) + 3(0,1,0) -2(0,0,1)) \wedge (5(1, 0, 0) + 2(0,1,0) +8(0,0,1)) = 5 (1, 0, 0) \wedge (1, 0, 0) + 15 (0,1,0) \wedge (1, 0, 0) - 10 (0,0,1) \wedge (1, 0, 0) + 2 (1, 0, 0) \wedge (0,1,0) - 4 (0,0,1) \wedge (0,1,0) + 8 (1, 0, 0) \wedge (0,0,1) + 24 (0,1,0) \wedge (0,0,1) - 16 (0,0,1) \wedge (0,0,1) = -15 (1, 0, 0) \wedge (0,1,0) + 2 (1, 0, 0) \wedge (0,1,0) + 10 (1, 0, 0) \wedge (0,0,1) + 8 (1, 0, 0) \wedge (0,0,1) + 24(0,1,0) \wedge (0,0,1) + 4 (0,1,0) \wedge (0,0,1) = 28 (0,1,0) \wedge (0,0,1) + 18 (1, 0, 0) \wedge (0,0,1) - 13 (1, 0, 0) \wedge (0,1,0)$$

Or now using the mentioned arbitrary isomorphism (mapping that chosen basis to the chosen basis of tuples) you can map it to just array of numbers hence (28,18, -13) but that's not too meaningful because it doesn't explicitly show the basis.

Wedge product refers to the exterior algebra, not clifford algebra (though it can be emulated in the latter).

So, suppose you have vectors $$x=(1,3,-2)$$ and $$y=(5,2,8)$$. Let $$\{e_1,e_2,e_3\}$$ be the basis of our vector space $$\mathbb R^3$$, so $$x=1\cdot e_1 + 3 \cdot e_2 - 2 \cdot e_3$$ and $$y=5\cdot e_1 + 2 \cdot e_2 + 8 \cdot e_3$$.

The wedge product of two vectors, strictly speaking, is not itself a vector of the same space $$V$$, but of the exterior square $$\Lambda ^2V$$. If $$\dim V=n$$, then $$\dim \Lambda^2 V = \frac{n(n-1)}{2}$$. In three dimensions, however, it happens that $$\dim \Lambda^2 V=\frac{3\cdot 2}{2}=3$$.

The main rules for wedge products are $$a \wedge a=0$$ and $$a \wedge b = - b \wedge a$$. One common basis for $$\Lambda^2 \mathbb R^3$$ is $$\{e_2 \wedge e_3, e_3 \wedge e_1, e_1 \wedge e_2\}$$.

So, let's plug everything in (and remember that $$\wedge$$ is bilinear):

$$x\wedge y=(1\cdot e_1 + 3 \cdot e_2 - 2 \cdot e_3) \wedge (5\cdot e_1 + 2 \cdot e_2 + 8 \cdot e_3) = \\ 1\cdot 5 \cdot e_1 \wedge e_1 + 1\cdot 2 \cdot e_1 \wedge e_2 + 1\cdot 8 \cdot e_1 \wedge e_3 + \\ 3\cdot 5 \cdot e_2\wedge e_1 +3\cdot 2 \cdot e_2\wedge e_2 +3\cdot 8 \cdot e_2\wedge e_3 - \\ 2\cdot 5 \cdot e_3\wedge e_1 -2\cdot 2 \cdot e_3\wedge e_2 -2\cdot 8 \cdot e_3\wedge e_3 = \\ 5 \cdot \mathbb O + 2 \cdot e_1 \wedge e_2 - 8 \cdot e_3 \wedge e_1 - \\ 15 \cdot e_1\wedge e_2 +6 \cdot \mathbb O +24 \cdot e_2\wedge e_3 - \\ 10 \cdot e_3\wedge e_1 +4 \cdot e_2\wedge e_3 -16 \cdot \mathbb O = \\ 28 \cdot e_2\wedge e_3-18 \cdot e_3\wedge e_1 - 13 \cdot e_1\wedge e_2$$

Here, $$\mathbb O$$ denotes the zero vector.

I think your question is slightly vague. Do you mean the exterior product between $(1,3,-2)$ and $(5,2,8)$ in $\mathbb{R}^3$? In that case, a concrete rule is $$(1,3,-2) \wedge (5,2,8) = (3\cdot8+2\cdot 2, -(1\cdot 8+2\cdot5),1\cdot2-3\cdot5)=(28,-18,-13).$$

In fact in general $$(a,b,c) \wedge (a',b',c') = (bc'-b'c,-(ac'-ca'),ab'-ba').$$

• This is incorrect. The wedge product of two vectors in $\mathbb{R}^3$ is not vector from $\mathbb{R}^3$, you are implicitly using the linear isomorphism $\phi$ that acts like $$\phi\left( (0,1,0) \wedge (0,0,1) \right) = (1, 0,0)$$ $$\phi\left( (0,0,1) \wedge (1,0,0) \right) = (0, 1,0)$$ $$\phi\left( (1,0,0) \wedge (0,1,0) \right) = (0, 0,1)$$ – gcc-6.0 Jul 6 '18 at 16:12
• Right. My first point is sometimes the symbol $\wedge$ is used for the exterior product in $\mathbb{R}^3$ - at least in my experience. That is why I said the question is slightly vague. I gave a 'concrete' way of doing this operation because I think it is a good starting point to understand the more abstract definition of wedge product. It sounds really strange to me that the OP did not find any reference about this topic - even on Wikipedia there is a very good dissertation on it. So I preferred to give my answer as 'down to earth' hint. – Gibbs Jul 6 '18 at 19:24

For those looking for a numerical way to play around with clifford algebras and the wedge product, I found this python package a good place to start: https://github.com/pygae/clifford

Assuming you are interested in using a normal 3D euclidean space you can simply run:  from clifford.g3 import * a = 1*e1 + 3*e2 - 2*e3 b = 5*e1 + 2*e2 + 8*e3 c = a^b  This produces: c = -(13.0^e12) + (18.0^e13) + (28.0^e23) as @giobrach correctly calculates

### EDIT

Full disclosure I am one of the core contributors to the clifford python package

• Welcome to the site. It is alright to mention ones own software but it should be disclosed. – quid Dec 7 '18 at 17:39
• Thanks @quid, I'm not totally sure what the form is for this, especially as I am not the original author of the software, but will add it as an edit – Hugo Hadfield Dec 8 '18 at 12:35