# [plt-scheme] Matrix Determinants

 From: Arthur Nunes-Harwit (anh at cs.rit.edu) Date: Fri Mar 28 11:19:25 EDT 2008 Previous message: [plt-scheme] Matrix Determinants Next message: [plt-scheme] Matrix Determinants Messages sorted by: [date] [thread] [subject] [author]

```Dear Henk,

A somewhat obscure approach to the determinant that might give you the
sort of elegant code you desire involves the wedge product and
multi-vectors.

A vector v = (a1, ..., an) = a1*e1 + ... + an*en, where ei is the ith
basis vector.

A multi-vector m = a1*E1 + ... + an*En, where Ei is a wedge product of
basis vectors.  ie E = ei1^...^eik, where E is in normal form if there are
no repetitions, and the subscripts are in ascending order.  This product
has the following properties for products of basis vectors.

ei1^(ei2^E) = (ei1^ei2)^E = -(ei2^ei1)^E, so
(ei1^ei1)^E = 0

IE the wedge product is associative, and anticommutative.

The wedge product is distributive; hence to extend the product to
multi-vectors, it is only necessary to define what happens on scaled Es.

(a*Ei)^(b*Ej) = (a*b)*(Ei^Ej)

We can also extend the dot product to multi-vectors.

(a*Ei).(b*Ej) = a*b if Ei = Ej, otherwise 0

Now the determinant of a matrix M = [v1, ..., vn], where each vi is an
n-dimensional vector can be defined as follows.

Det M = Det [v1, ..., vn] = (v1^...^vn).(e1^...^en)

This formulation seems particularly simple to my eye.

Example:

Det [(1, 3), (2, 4)] =
((1*e1 + 3*e2)^(2*e1+4*e2)).(e1^e2)=
(e1^(2*e1+4*e2) + 3*e2^(2*e1+4*e2)).(e1^e2)=
(4*(e1^e2) + 6*(e2^e1)).(e1^e2)=
(4*(e1^e2) + -6*(e1^e2)).(e1^e2)=
(-2*(e1^e2)).(e1^e2)=
-2

-Arthur

```

 Posted on the users mailing list. Previous message: [plt-scheme] Matrix Determinants Next message: [plt-scheme] Matrix Determinants Messages sorted by: [date] [thread] [subject] [author]