I had a fun discovery in February. I was working on software to visualize quaternions at quaternions.sf.net. The idea is that one generates a large number of quaternions somehow, and then sorts those quaternions by their time. One can then decide to plot those quaternions in a 10 second universe at 10 frames/second, or 100 frames total. Depending on the time, it will determine what frame a quaternion is drawn.
Where the quaternion is drawn is determined by the x, y, and z. Generate the 100 frames, use some tools from ImageMagick, and out comes a gif animation that can be viewed on the web. The frames can be drawn with ImageMagick (kind of flat), GnuPlot (kind of like a physics paper), or POVRay, a great 3D image creator, the clear winner.
Space and time reversal
Yellow is input, from txyz=(-5, -5, -5, -5) to (0, 0, 0, 0).
Blue is a spatial reversal, from txyz=(-5, 5, 5, 5) to (0, 0, 0, 0)
Green is a time reversal, from txyz=(5, -5, -5, -5) to (0, 0, 0, 0)
up/down | ||
near/far | left/right | that is |
I could have written the code is anything, but I want my stuff to last. The only user interface that has lasted 30 years is the command line, so I decided to use that approach: small programs that play with quaternions, and can pipe their results into other programs that can do a math operation on quaternions. I've got about 40 such programs, like q_add, q_sin, etc. A Perl program called q_graph can takes streams of quaternions and make the animations in one step. The process for number crunching is fast, but making animation is not.
Back to the physics. I decide to generate important groups, such as SU(2), which can be generated from the expression exp(q-q*). Take a thousand randomly generated quaternions, stick it in that expression, and plot.
up/down | ||
near/far | left/right | that is |
The image is kind of interesting. Time is almost always greater than zero. It does fill up space smoothly. The Lie algebra su(2) has 3 degrees of freedom, but a quaternion has 4. How to get the 4th? Why not q/|q| exp(q-q*)? Notice that because I am using the same darn quaternion throughout, this particular bit of quaternion multiplication is Abelian because q/|q| exp(q-q*) = exp(q-q*) q/|q|. 3 degrees of freedom go into exp(q-q*), leaving 1 for q/|q|, meaning q/|q| happens to be a representation of U(1)! So take a new 1000 random quaternions, plug into q/|q| exp(q-q*), and see U(1)xSU(2), electroweak symmetry. This is more like a 4D sphere, but is has a real for negative time.
So how does one fill up uniformly a unit volume of spacetime using quaternions? I took the conjugate of one U(1)xSU(2) times a different quaternion, q* q'. Why should this create a different group? Quaternion multiplication as Hamilton practiced it is associative. I call a product that tosses a conjugate in the middle a "Euclidean product". The Euclidean product is not associative, since (a)*bc != (ab)*c. The norms are the same, but the results point in a different direction. The norm of (q/|q| exp(q-q*))* q'/|q'| exp(q'-q'*) is one, and there are 8 independent numbers that go into the system, just like the Lie algebra su(3).
up/down | ||
near/far | left/right | that is |
A longer page with a few more examples is over here: standard model . Based on the algebra, and even more importantly, these analytic animations, we now have a reason for the symmetries that appear in the standard model: it is about having the ability to describe smoothly any possible way of generating events in spacetime using quaternions. If you want to know how to bring in gravity, image 2 of these sphere, with slightly different sizes. The group Diff(M) will help smoothly describe the changes in those sizes by taking small continous steps with a changing metric.
doug
No comments:
Post a Comment