Mike's lecture on vector spaces and dual spaces

From Xenharmonic Wiki
Jump to navigation Jump to search


[math]\newcommand{\bra}[1]{\left \langle #1 \right |} \newcommand{\ket}[1]{\left |#1 \right \rangle} \newcommand{\braket}[2]{\left \langle #1 \middle |#2 \right \rangle} \newcommand{\bratext}[1]{\left \langle \text{#1} \right |} \newcommand{\kettext}[1]{\left |\text{#1} \right \rangle} \newcommand{\brakettext}[2]{\left \langle \text{#1} \middle |\text{#2} \right \rangle} \newcommand{\v}[1]{\boldsymbol{\vec{#1}}} \newcommand{\-}[0]{\text{-}} \newcommand{\s}[0]{\;\,}[/math]

EPISODE 1: Vector Spaces and Dual Spaces

If you haven't seen monzos or vals before and are totally confused, please read the pages on Monzos and Vals first!

If you have seen it, then to review, a monzo is a way to represent a JI interval that shows how it decomposes into a combination of simpler, "prime" intervals. It does so by directly representing an interval's prime factorization. A 5-limit monzo looks like [math]\ket{a \s b \s c}[/math], where [math]a[/math], [math]b[/math], and [math]c[/math] are the exponents for primes 2, 3, and 5, respectively. A 7-limit JI monzo looks like [math]\ket{a \s b \s c \s d}[/math], where [math]d[/math] represents the additional exponent for 7. The 11-limit gets you another coefficient and so on.

On the other hand, a val is a way to represent how JI intervals map to tempered steps along a chain of generators. A val does this by specifying the mapping for the primes, and in so doing ends up specifying the mapping for every JI interval as well: since every interval is a combination of primes, then we can find the mapping for any interval in some val by simply adding and subtracting the mapping for the primes in such a way that the original interval is recreated. A 5-limit val looks like [math]\bra{a \s b \s c}[/math], where [math]a[/math], [math]b[/math], and [math]c[/math] are the number of steps along the chain that primes 2, 3, and 5 map to, respectively. A 7-limit val looks like [math]\bra{a \s b \s c \s d}[/math], where [math]d[/math] represents the additional mapping for 7. Like with monzos, going to the 11-limit gets you another coefficient and so on. Again, if this is confusing, please go back to the pages on Monzos and Vals and read those first!

Assuming you understand that, then we've reached our first new idea, which will help us gain a geometric intuition into what some of these abstract entities mean. That idea, which will enable us to rediscover vals and monzos in a much stronger mathematical and geometric context, is this:


1.1: A monzo can be viewed as a VECTOR in a VECTOR SPACE[1].

For instance, the syntonic comma is [math]\ket{\-4 \s 4 \s \-1}[/math]. A geometric interpretation of this interval might be as a point in a space, like the point [math](\-4,4,\-1)[/math]. You'd plot this point by going -4 steps on the x axis, 4 steps on the y axis, and -1 steps on the z-axis. And if you really want to think of it like a vector in the sense that some high school or college algebra courses teach it, you can also draw an arrow with a big arrowhead from the origin that connects to this point. Here's a widget that lets you plot vectors:

Keep in mind that Wolfram Alpha is very fragile, so if you try to do anything fancy, it's going to break. But, Paul's "A Middle Path" paper has so many good plots of this that I might as well just point anyone interested to take a look at it over there: http://sethares.engr.wisc.edu/paperspdf/Erlich-MiddlePath.pdf

Now, the interesting part: in linear algebra, every vector space has a "dual space," which of course must be thought of as a bizarro universe for the vector space in which the background is black and the arrows and points are white. The elements in this space are called "covectors." I can't get the exact colors I mentioned here, but I've cheated a bit to get Wolfram to change the colors, so you can plot covectors here:

You can also plot more than one vector or covector by putting in a list of vectors separated by commas, something like [math](12,19,28),\s(7,11,16)[/math]. However, this will break the nice color properties I set up above. Also, if you put in too many entries, Wolfram Alpha has been known to break.

So then, what's the point?

This is all well and good by itself, but it doesn't mean anything unless you understand how covectors interact with vectors. Covectors are mathematical objects that are thought to act on vectors. When a covector "acts on" a vector, the interaction occurs by you taking the dot product of the two vectors.

For example: say your covector is [math](12,19,28)^*[/math] (the star means it's in the dual space), and your vector is [math](\-4,4,\-1)[/math], then the dot product[2] of the two is [math]12 \cdot \-4 + 19 \cdot 4 + 28 \cdot \-1 = 0[/math]. Thus, the result of [math](12,19,28)^*[/math] acting on [math](\-4,4,\-1)[/math] is [math]0[/math].

The action of a covector on a vector must, of course, be pictured as the different colored arrows lining up and exploding and spitting out a single number, or something. Wolfram unfortunately doesn't let me do nice explosion effects, so you'll have to imagine it.

Alternatively, if you're used to dot products, then you'll also be able to understand this operation in terms of the projection of one vector on another. However, if you choose to visualize it this way, you must understand that these two things you're projecting onto one another lie in different spaces - one is a vector lying in a vector space, and the other is a covector lying in this new "dual space" you're learning about.

OK, so how do we use these things?


1.2: Covectors mean stuff. (OR: YOU DON'T KNOW MONZO)

One interesting way to think of covectors, since they're these dual vectors that "act on" normal vectors, is as functions - they take in a vector as input, multiply each coefficient of the vector by the corresponding coefficient of the covector, sum them up, and spit out a number.

In other words, you know that the action of the covector [math](12,19,28)^*[/math] on any arbitrary vector [math](a,b,c)[/math] is going to be [math]12a + 19b + 28c[/math]. So, you can think of [math](12,19,28)^*[/math] itself as a function looking something like [math]f(\v{v}) = 12a + 19b + 28c[/math] for some vector of the form [math](a,b,c)[/math]. Note that the formatting on [math]\v{v}[/math] specifies that [math]\v{v}[/math] is a vector that's being taken in as input.

Thus, covectors are little mathematical machines - they take in vectors, do some simple dot product-ish stuff, and output a scalar. Simple! We'll see that they turn up again and again and again in tuning theory, too.

Before we go on, however, let's clean up the notation a bit. In physics, the notation commonly used is to notate covectors [math]\bratext{like this}[/math] and to notate vectors [math]\kettext{like this}[/math]. Physicists call this "bra-ket" notation, or sometimes "Dirac" notation. So...

  • Instead of writing covectors as [math](x,y,z)^*[/math], I'll just write [math]\bra{x \s y \s z}[/math] from now on.
  • Instead of writing vectors as [math](a,b,c)[/math], I'll just write [math]\ket{a \s b \s c}[/math] from now on.
  • When I want to denote the dot product of a covector and a vector, I'll write it as [math]\braket{x \s y \s z}{a \s b \s c}[/math].

Now then, how do we use covectors? Or, rather, how do we recognize when our thought processes are using them, even if we never realized before these thought processes involved things called covectors? Well, let's say you're going to ask a harmlessly ordinary question like "does 81/80 vanish in 12-EDO?"

Now, when you ask that question, what are you really asking? For instance, another way to rephrase that question is to ask this: "if I go up four tempered 3/2's, then go down a

tempered 5/1, thus putting me at what's supposed to be 81/80 - how many steps in 12-EDO do I arrive at? Is it 0?"

Or, to represent everything in terms of primes, that's also the same as saying "if I go up four tempered 3/1's, then down a tempered 5/1, and then down four (possibly tempered) 2/1's to reduce within the octave, thus putting me at what's supposed to be 81/80 - how many steps in 12-EDO do I arrive at? Is it 0?"

And, if you want to put that in prime order, so that first you move around by all a bunch of 2/1's, then you move around by a bunch of 3/1's then you move around by a bunch of 5/1's, we arrive at yet another equivalent expression: "if I first go down four possibly tempered 2/1's, then up four tempered 3/1's, then down a tempered 5/1, thus putting me at what's supposed to be 81/80 - how many steps in 12-EDO do I arrive at? Is it 0?"

You may want to take a second to confirm for yourself that all of these expressions are the same thing - they'll all move you up by exactly 81/80.

This last formulation of the question is especially easy to figure out if we know how we want to map the primes in 12-EDO. Which, hopefully, we do: in 12-EDO, 2/1 is most obviously mapped to 12 steps (duh), 3/1 is best mapped to 19 steps, and 5/1 is best mapped to 28 steps. Let's see what happens, then, if we mechanically solve the above problem by stacking and removing intervals from one another like lego pieces or something, in exactly the fashion I mentioned above, and see what we're left with. Let's see what we get:

1) first you go down 4 octaves, at a rate of 12 steps per octave, putting you underwater at -48 steps.

2) then, you go up 4 tritaves, times 19 steps per tritave, giving you 76 steps. This lands you at a net of -48 + 76 = 28 steps.

3) finally, you go down one 5/1, times 28 steps per 5/1, putting you down 28 more steps. This lands you at a net of 28 - 28 steps = 0.

So, if you mechanically work out the way that you'd compute how many steps 81/80 is in 12-EDO, you get 0 steps, meaning you're back at 1/1 and hence tempered out. No surprise there.

But, if you really think about it, what you've also just done is evaluate the expression [math]12*\-4 + 19*4 + 28*\-1[/math]: down four (possibly tempered) octaves, up four tempered tritaves, down a tempered 5/1, see what the result is. This is the same exact thing as multiplying out [math]\braket{12 \s 19 \s 28}{\-4 \s 4 \s -1}[/math]. Looks like you've just seemingly applied [math]\bra{12 \s 19 \s 18}[/math] to [math]\ket{\-4 \s 4 \s \-1}[/math].

So you already knew that intervals like 81/80, if placed in monzo form, can be viewed as vectors. In light of the above example, it's now starting to look pretty clear that equal temperament mappings, if placed in val form, can be viewed as covectors.

In fact, this is exactly what's going on. Vals are simply covectors acting on the space of monzos. Once you invent monzos and decide that they're vectors, the laws of mathematics set themselves up so that you get vals as covectors for free.[3] Very nice!

But where do we go with this realization?


1.3: Why the fact that covectors mean stuff matters. (OR: PREPARE FOR WEDGIE)

Assuming you've understood my exposition thus far, you now hopefully see where all things like monzos and vals come from.

  • Monzos, straightforwardly, are elements in a vector space - they're vectors - like the spaces you learned in high school algebra.
  • Vals, straightforwardly, are elements in the "dual space" to that space - they're covectors - which is the new thing you just learned about and which you'd end up learning in college linear algebra.

Also, hopefully, now you see that this whole [math]\brakettext{covector}{vector}[/math] thing is just a mathematical representation of the mechanical process you'd be doing if you sat down in scala for a while and stacked and subtracted intervals and figured out what you end up arriving at in some EDO. In other words, [math]\bra{12 \s 19 \s 28}[/math] is just a little machine that takes in JI intervals and spits out steps, and the mathematical name for this sort of little machine is "covector." Nice!

Now, historically speaking, the concept of taking JI intervals and treating them like vectors isn't new. Theorists have been doing that for years and years. Neither Paul nor Gene nor Graham nor Joe Monzo nor anyone I know first came up with the concept of plotting JI intervals as vectors on a JI lattice.

The real quantum leap in thought, here, is to consider the musical interpretation of the elements in the dual space -- the covectors. It's is one of those things that appears to be completely meaningless from a musical standpoint unless you really think about it. Someone at some point figured out all of the above and I think it's the one of the best and most whole-brained insights ever made in music theory. Looking at the dual space is, in a sense, the logical completion of the idea of putting JI into a "lattice," as per Tenney/Fokker/Wilson/etc.

Now, where do we go from here?

Well, if there's one thing mathematicians know a lot of random crap about, it's vectors and covectors. They've been exploring manipulations of these sorts of objects for literally thousands of years under the moniker of "linear algebra." These objects may be new to music theory, but they're definitely not new to math. And since mathematics has concerned itself for such a long time with manipulating covectors and vectors, we can simply take some of the techniques that mathematicians have developed to do so, and apply them here, in a musical context.

One of the manipulations that would appear to be totally useless is a deceptively simple extension of all of this called exterior algebra. It introduces a single product, called the wedge product, and you can multiply vectors together using this in a similar sort of way that you'd multiply polynomials on paper in high school algebra or something. It also introduces a new type of object, called a multivector - defined as the product of vectors. Turns out it's not useless at all - these will be seen to represent temperaments.[4]

Another manipulation that might appear to be useless is, rather than to generalize vectors to multivectors, to generalize them to matrices - we can view vectors/monzos as column matrices, and covectors/vals as row matrices, and arrive at many of the same concepts above, but from this different approach. Instead of multiplying vectors together with a special multiplication operation, we can concatenate them into matrices which also represent temperaments.

So then, how do we continue? Well, there are basically two different paths you can go down, both of which are basically the same exact thing:

1) The exterior algebra/"wedgie" route, a la Gene Smith.

2) The matrix algebra/"mapping" route, a la Graham Breed.

Both of these have different strengths. Gene's approach I find to be remarkably elegant in a certain kind of way, in that multivectors are very intuitive objects to think about. Graham's approach, on the other hand, isn't quite as "elegant," but may be a bit simpler to work out and immediately glean information from - mapping matrices are a bit easier to understand than wedgies.

We'll cover both of these eventually. But first, we'll need to dig deeper into what, exactly, temperaments "are," conceptually. That'll be the next lecture.


  1. Technically, monzos don't form a vector space but a "Z-module", because monzos only take integer coefficients and Z, the set of integers, is a ring but not a field. Similarly vals are a dual Z-module to the monzos. For practical purposes, this technicality is completely accounted for by tools like the x31eq temperament finder --- it might tell you that your temperament is a "contorted" version of another temperament, and in temperament theory we usually want non-contorted temperaments.
  2. Note that some have raised technical concerns about this operation being called the "dot product," insisting that the dot product is something that's only done between two vectors, or two covectors, but never between one covector and one vector. Another term that's sometimes been used for this product in the "bracket product", for reasons we don't need to get into here. However, confusingly, the term bracket product has also been used for the ordinary dot product, and it's also very common to hear people call the thing I'm calling the dot product above. It's best at this point to just know that the two terms are out there. I'm going to continue calling it the dot product since its' something more people are familiar with.
  3. As we'll soon see, vals aren't the only sorts of covectors there are. There's another way to interpret the space of covectors, which is as "tuning maps" which assign an actual tuning value in cents to the intervals in a temperament. But we're not there yet, so all you need to concern yourself with at this point is vals as covectors and monzos as vectors.
  4. This is one of those things that seems totally useless unless you're Gene Smith, at which point you realize that multivals represent higher-rank temperaments, and that this random field of mathematics has a rather musical interpretation.