Hacker News new | ask | show | jobs
by hugohadfield 2105 days ago
Hi everyone, I'm Hugo one of the maintainers of this package, glad to see lots of interest! If anyone is interested in some of the applications of GA in robotics etc then check out the talk Eric and I gave at GAME2020 back in February https://www.youtube.com/watch?v=bj9JslblYPU
1 comments

A few months back I made an effort to learn GA. I did get some traction, but eventually shelved the effort. The thing that put me off is that no one could explain how to do units analysis in GA. I am mainly interested in physics and engineering applications, especially robotics and also RF engineering to some extent. Without being able to see how dimensions combine in GA, I have zero confidence in the correctness of my results. Arithmetic without dimensional analysis is not physics. Full. Stop.

So, if you could point to any resources that show how to properly dimension GA values, and how GA operators combine dimensions, that would get me started on GA again.

The units work just how you’d expect; as far as I can tell there’s nothing new or unique about units in GA.

If you multiply two vectors with units of meters, you get a scalar + a bivector, both with units of square meters.

If you divide two vectors with units of meters, you get a scalar + a bivector which are both dimensionless.

Etc.

What are units of the geometric product of two vectors?

Edit: didn't read clearly. Better question is why would we want to have a scalar with units of square meters in this case? Shouldn't 0-grade objects all have the same units?

> Shouldn't 0-grade objects all have the same units?

No, and this is a really important point. Scalars can have any units. For example, you can have a scalar with units of time, or mass, and you can take the dot product of a force vector and a displacement vector to get a scalar with units of [force]·[distance] = [work].

If you instead form the wedge product of those vectors, you get a bivector with the same units: [force]·[distance] = [torque] (note that the units of [work], [torque], and [energy] are all the same).

If you take the geometric product of a force vector and a displacement vector, the result is the sum of a scalar and a bivector, both with the same units of [force]·[distance].

> If you take the geometric product of a force vector and a displacement vector, the result is the sum of a scalar and a bivector, both with the same units of [force]·[distance].

This part is where I have problem with GA: what the hell is the physical[0] interpretation of such a sum? For example, a four-vector <p_x,p_y,p_z,c·E_k> (momentum and kinetic energy) can be thought of as kinetic energy being the temporal component of (4-)momentum, but no similar interpretation seems viable to combine work and torque into a logically unified quantity.

0: I'm not sure if this is the right word - the interpretation as single unified value with no special-case treatment of its components might be another, equally not-quite-right way of putting it.

The physical interpretation depends on context, but the concrete arithmetic is the same whether you write it using GA language or some other mathematical formalism (matrices, Gibbs–Heaviside style vectors, differential forms, tensors, complex numbers, ...), so if you have a problem with it your problem is with the physics.

Like with any expressive language (e.g. English, C++, or matrix algebra), GA makes it possible to state a wide variety of nonsensical things. But that’s not the fault of the language.

Where GA really shines IMO is in the ability to divide by vectors, something that is extremely useful but gets super cumbersome using other mathematical languages.

The biggest “problem” I have with GA is that it takes a lot of practice to get familiarity with all of the powerful stuff it can do. There are pages and pages of (extremely powerful and useful) short identities which are impossible to memorize by just looking at them, and can only be learned as far as I can tell through years of hard-won experience. I feel like I still only really have a handle on the most basic stuff.

I find regularly myself working on some complicated coordinate-based calculation for 3 pages of scratch paper full of mistakes and wrong turns, only to experience déjà vu, re-express the original thing in GA language, and end up with a clear and geometrically interpretable 4 lines of simple algebraic identities which solve the problem. But I’m not always sure if I’d be able to figure out which 4 lines to use right off the bat, without first going through the coordinate slog.

It’s kind of the same, actually. You can treat the individual entries as “components” in a 2^d-vector with special multiplicative structure, which essentially transforms in specific ways. These axioms of GA lay that out more clearly: https://arxiv.org/pdf/1205.5935.pdf (specifically axiom 6)
As I said, the units of the geometric product of two vectors (which if you like can be broken into the sum of a scalar part + a bivector part, each with the same units) will be the product of the units of each vector.
At some point, any GA computation bottoms out to scalars. Since you start out with quantities you already know how to give dimensions to, I would expect you can just follow standard dimensionsal analysis.

That isn't to say it's straightforward to implement computationally, or that there isn't interesting structure there.

Why is this any more of a problem than units in conventional vector calculus?