Posts tagged with matrices

In many showers there are two taps: Hot and Cold. You use them to control both the pressure and the temperature of the water, but you do so indirectly: the pressure is controlled by the sum of the (position of the) two taps, while the temperature is controlled by their difference. Thus, the basis you are given:

Hot = (1,0)
Cold = (0,1)

Isn’t the basis you want:

Pressure = (1,1)
Temperature = (1,−1)

($\dpi{200} \bg_white \large \begin{bmatrix}+1 & +1 \\ +1 & -1 \end{bmatrix}$ would be the basis isomorphism)



other bases:

(Source: qr.ae)

Here’s a physically intuitive reason that rotations ↺

(which seem circular) are in fact linear maps.

If you have two independent wheels that can only roll straight forward and straight back, it is possible to turn the luggage. By doing both linear maps at once (which is what a matrix
$\large \dpi{300} \bg_white \begin{pmatrix} a \rightsquigarrow a & | & a \rightsquigarrow b & | & a \rightsquigarrow c \\ \hline b \rightsquigarrow a & | & b \rightsquigarrow b & | & b \rightsquigarrow c \\ \hline c \rightsquigarrow a & | & c \rightsquigarrow b & | & c \rightsquigarrow c \end{pmatrix}$

or Lie action does) and opposite each other, two straights ↓↑ make a twist ↺.

Or if you could get a car | luggage | segway with split (= independent = disconnected) axles

to roll the right wheel(s) independently and opposite to the left wheel(s)

, then you would spin around in place.

## ∄ inverse

• I cheated on you. ∄ way to restore the original pure trust of our early relationship.
• The broken glass. Even with glue we couldn’t put it back to be the same original glass.
• I got old. ∄ potion to restore my lost youth.
• Adam & Eve ate from the tree of the knowledge of good & evil. They could not unlearn what they learned.
• “Be … careful what you put in that head because you will never, ever get it out.” ― Thomas Cardinal Wolsey
• We polluted the lake with our sewage runoff. The algal blooms choked off the fish. ∄ way to restore it.
• Phase change. And the phase boundary can only be traversed one direction (or the backwards direction costs vastly more energy). The marble rolls off the table, the leg poisoned by gangrene. The father dies at war. The unkind words can’t be unsaid.

#semigroups

## High-dimensional Arrays in J

J is hott. Some highlights from the Wikipedia article and J's homepage:

• you can do a lot with just a few characters in J. Define a moving average in 8 characters, including spaces, for example.
• Have you ever felt like whether it’s Java or C, Python or Ruby, all these languages are just the Same Old Thing?

J makes thinking in high-dimensional arrays easy.

1. The sentence .i 7 8 means “Show me a 7×8 two-array” (ok, “matrix” but … matrices are verbs and arrays are nouns)
2. The sentence .i 7 8 3 means “Show me a 7×8×3 three-array”.
3. The sentence .i 7 8 3 4 13 2 66 means "Show me a 7×8×3×4×13×2×66 dimensional seven-array”.

I won’t reprint the long outputs but here’s a shorter one.

   i.4 5 3
0  1  2
3  4  5
6  7  8
9 10 11
12 13 14

15 16 17
18 19 20
21 22 23
24 25 26
27 28 29

30 31 32
33 34 35
36 37 38
39 40 41
42 43 44

45 46 47
48 49 50
51 52 53
54 55 56
57 58 59


And another for clarity:

   i.3 5 4
0  1  2  3
4  5  6  7
8  9 10 11
12 13 14 15
16 17 18 19

20 21 22 23
24 25 26 27
28 29 30 31
32 33 34 35
36 37 38 39

40 41 42 43
44 45 46 47
48 49 50 51
52 53 54 55
56 57 58 59

This is reminiscent of using R's combn function to visualise higher-dimensional stuff, right?

I guess this is how computers think all the time! I wonder what they say about us when we’re not around.

## Robot Committing Suicide

I move my arm. [holonomy]

I move my arm, hand and shoulder. [holonomy]

I move my arm, hand, shoulders, but my fingers are still.

I move my arm. [lie group]

I move my arm across the table. [embedded in a space]

I brush my laptop computer to the side. [lie group A]

I brush my laptop computer to the other side. [lie group A⁻¹]

I brush my laptop computer off the table. []

The laptop computer falls to the floor. [gravity = m/M ¹⁄dist²]

The laptop computer splinters and cracks. [nonlinear PDE’s]

The laptop computer can not be repaired. [entropy]

I brush my arm back and forth across the table. [AA⁻¹AA⁻¹]

The laptop computer, in pieces, lies still on the floor. [principle of least action]

I brush my arm across the table. There is nothing else on the table. [noncommutative]

I brush my arm across the table. No objects are moved. [phase change]

## How do I Create the Identity Matrix in R? Also a bit of group theory.

I googled for this once upon a time and nothing came up. Hopefully this saves someone ten minutes of digging about in the documentation.

You make identity matrices with the keyword diag, and the number of dimensions in parentheses.

> diag(3)
[,1] [,2] [,3]
[1,]    1 0 0
[2,]    0 1 0
[3,]    0 0 1 

That’s it.

> diag(11)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,]    1 0 0 0 0 0 0 0 0 0 0
[2,]    0 1 0 0 0 0 0 0 0 0 0
[3,]    0 0 1 0 0 0 0 0 0 0 0
[4,]    0 0 0 1 0 0 0 0 0 0 0
[5,]    0 0 0 0 1 0 0 0 0 0 0
[6,]    0 0 0 0 0 1 0 0 0 0 0
[7,]    0 0 0 0 0 0 1 0 0 0 0
[8,]    0 0 0 0 0 0 0 1 0 0 0
[9,]    0 0 0 0 0 0 0 0 1 0 0
[10,]    0 0 0 0 0 0 0 0 0 1 0
[11,]    0 0 0 0 0 0 0 0 0 0 1 

But while I have your attention, let’s do a couple mathematically interesting things with identity matrices.

First of all you may have heard of Tikhonov regularisation, or ridge regression. That’s a form of penalty to rule out overly complex statistical models. @benoithamelin explains on @johndcook’s blog that

• Tikhonov regularisation is also a way of puffing air on a singular matrix det|M|=0 so as to make the matrix invertible without altering the eigenvalues too much.

Now how about a connection to group theory?

First take a 7-dimensional identity matrix, then rotate one of the rows off the top to the bottom row.

> diag(7)[ c(2:7,1), ]
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0 1 0 0 0 0 0
[2,]    0 0 1 0 0 0 0
[3,]    0 0 0 1 0 0 0
[4,]    0 0 0 0 1 0 0
[5,]    0 0 0 0 0 1 0
[6,]    0 0 0 0 0 0 1
[7,]    1 0 0 0 0 0 0 

Inside the brackets it’s [row,column]. So the concatenated c(2,3,4,5,6,7,1) become the new row numbers.

Let’s call this matrix M.7 (a valid name in R) and look at the multiples of it. Matrix multiplication in R is the %*% symbol, not the * symbol. (* does entry-by-entry multiplication, which is good for convolution but not for this.)

Look what happens when you multiply M.7 by itself: it starts to cascade.

> M.7   %*%   M.7
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0 0 1 0 0 0 0
[2,]    0 0 0 1 0 0 0
[3,]    0 0 0 0 1 0 0
[4,]    0 0 0 0 0 1 0
[5,]    0 0 0 0 0 0 1
[6,]    1 0 0 0 0 0 0
[7,]    0 1 0 0 0 0 0
> M.7   %*%   M.7   %*%   M.7
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0 0 0 1 0 0 0
[2,]    0 0 0 0 1 0 0
[3,]    0 0 0 0 0 1 0
[4,]    0 0 0 0 0 0 1
[5,]    1 0 0 0 0 0 0
[6,]    0 1 0 0 0 0 0
[7,]    0 0 1 0 0 0 0 

If I wanted to do straight-up matrix powers rather than typing M %*% M %*% M %*% M %*% ... %*% M 131 times, I would need to require(expm) package and then the %^% operator for the power.

Here are some more powers of M.7:

> M.7   %^%   4
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0 0 0 0 1 0 0
[2,]    0 0 0 0 0 1 0
[3,]    0 0 0 0 0 0 1
[4,]    1    0    0    0    0    0    0
[5,]    0    1    0    0    0    0    0
[6,]    0    0    1    0    0    0    0
[7,]    0    0    0    1    0    0    0
> M.7   %^%   5
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0 0 0 0 0 1 0
[2,]    0 0 0 0 0 0 1
[3,]    1    0    0    0    0    0    0
[4,]    0    1    0    0    0    0    0
[5,]    0    0    1    0    0    0    0
[6,]    0    0    0    1    0    0    0
[7,]    0    0    0    0    1    0    0
> M.7   %^%   6
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    0 0 0 0 0 0 1
[2,]    1    0    0    0    0    0    0
[3,]    0    1    0    0    0    0    0
[4,]    0    0    1    0    0    0    0
[5,]    0    0    0    1    0    0    0
[6,]    0    0    0    0    1    0    0
[7,]    0    0    0    0    0    1    0
> M.7   %^%   7
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    0    0    0    0    0    0
[2,]    0    1    0    0    0    0    0
[3,]    0    0    1    0    0    0    0
[4,]    0    0    0    1    0    0    0
[5,]    0    0    0    0    1    0    0
[6,]    0    0    0    0    0    1    0
[7,]    0    0    0    0    0    0    1


Look at the last one! It’s the identity matrix! Back to square one!

Or should I say square zero. If you multiplied again you would go through the cycle again. Likewise if you multiplied intermediate matrices from midway through, you would still travel around within the cycle. It would be exponent rules thing^x × thing^y = thing^[x+y] modulo 7.

What you’ve just discovered is the cyclic group P₇ (also sometimes called Z₇). The pair M.7, %*% is one way of presenting the only consistent multiplication table for 7 things. Another way of presenting the group is with the pair {0,1,2,3,4,5,6}, + mod 7 (that’s where it gets the name Z₇, because ℤ=the integers. A third way of presenting the cyclic 7-group, which we can also do in R:

> w <- complex( modulus=1, argument=2*pi/7 )
> w
[1] 0.6234898+0.7818315i
> w^2
[1] −0.2225209+0.9749279i
> w^3
[1] −0.9009689+0.4338837i
> w^4
[1] −0.9009689−0.4338837i
> w^5
[1] −0.2225209−0.9749279i
> w^6
[1] 0.6234898−0.7818315i
> w^7
[1] 1−0i

Whoa! All of a sudden at the 7th step we’re back to “1" again. (A different one, but "the unit element" nonetheless.)

So three different number systems

• counting numbers;
• matrix-blocks; and
• a ring of imaginary numbers

— are all demonstrating the same underlying logic.

Although each is merely an idea with only a spiritual existence, these are the kinds of “logical atoms” that build up the theories we use to describe the actual world scientifically. (Counting = money, or demography, or forestry; matrix = classical mechanics, or video game visuals; imaginary numbers = electrical engineering, or quantum mechanics.)

Three different number systems but they’re all essentially the same thing, which is this idea of a “cycle-of-7”. The cycle-of-7, when combined with other simple groups (also in matrix format), might model a biological system like a metabolic pathway.

Philosophically, P₇ is interesting because numbers—these existential things that seem to be around whether we think about them or not—have naturally formed into this “circular” shape. When a concept comes out of mathematics it feels more authoritative, a deep fact about the logical structure of the universe, perhaps closer to the root of all the mysteries.

In the real world I’d expect various other processes to hook into P₇—like a noise matrix, or some other groups. Other fundamental units should combine with it; I’d expect to see P₇ instantiated by itself rarely.

Mathematically, P₇ is interesting because three totally different number systems (imaginary, counting, square-matrix) are shown to have one “root cause” which is the group concept.

John Rhodes got famous for arguing that everything, but EVERYTHING, is built up from a logical structure made from SNAGs, of which P₇=C₇=Z₇ is one. viz, algebraic engineering

Or, in the words of Olaf Sporns:

[S]imple elements organize into dynamic patterns … Very different systems can generate strikingly similar patterns—for example, the motions of particles in a fluid or gas and the coordinated movements of bacterial colonies, swarms of fish, flocks of birds, or crowds of commuters returning home from work. … While looking for ways to compute voltage and current flow in electrical networks, the physicist Gustav Kirchhoff represented these networks as graphs…. [His] contemporary, Arthur Cayley, applied graph theoretical concepts to … enumerating chemical isomers….

Graphs, then, can be converted into adjacency matrices by putting a 0 where there is no connection between a and b in the [row=a, column=b], or putting a (±)1 where there is a (directed) link between the two nodes. The sparse [0's, 1's] matrix M.7 above is a transition matrix of the cyclical C₇ picture: 1 → 2 → 3 → 4 → 5 …. A noun (C₇) converted into a verb (%*% M.7).

In short, groups are one of those things that make people think: Hey, man, maybe EVERYTHING is a matrix. I’m going to go meditate on that.

Gotcha.

@IgorCarron blogs recent applications of compressive sensing and matrix factorisation every week.

(Compressive sensing solves underdetermined systems of equations, for example trying to fill in missing data, by L₁-norm minimisation.)

This week: reverse-engineering biochemical pathways and complex systems analysis.