4 ms·
The Case Against Geometric Algebra
- pvg 3y agoYou probably want to give this a bit of time and repost it when the geometric cache flushes a little bit: https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=by%3Adang%20hive%20mind%20&sort=byDate&type=comment https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
- deleted 3y ago[deleted]
- rhelz 3y agoHmmm.... if I understand your post correctly, it seems like you think the geometric product should be canceled ("cancel" as in cancel culture). And it should be canceled because it's really weird to be adding a scalar to a vector. Let me try to emphasize your case as much as possible: The geometric product of two vectors, a and b is; a * b = a . b + a ^ b I.e. an "inner' or "interior" product, plus an "outer" or "exterior" product. What kind of self-respecting multiplication consists of a sum of two other kinds of multiplications? And why the heck would you even want to add them? Do I have you correct? As a point of departure, let me quote you here: // The general geometric product between two mixed-grade multivectors follows by writing them all out as sums of products of vectors like the above, then cancelling everything out according to xx=1 and xy=−yx for all choices of x=y // Yup. But you do need quantities who have a multiplication table like x and y above, in order to develop the exterior product. And you say you like the exterior product. So, the existence of quantities which multiply like xx=1 and xy=-yx isn't objectionable to you, per se, right? But, as you also say above, the geometric product is just polynomial multiplication with expressions using quantities like x and y with those multiplication tables. E.g., suppose we are multiplying a and b, which are 2D vectors expressed in the basis of x and y: (ax * x + ay * y) * (bx * x + by * y) = (ax*bx)*(x*x) + (ax*by)*(x*y) + (ay*bx)*(y*x) + (ay*by)*(y*y) = (ax*bx + ay*by) + (ax*by-bx*ay)*xy = (a . b) + (a ^ b) So the reason why it's not weird that the geometric product is the sum of two other products, is that polynomial multiplication is not weird. And that's the same reason why it's legit to add a scalar to a bivector: because polynomial multiplication is legit. When you are multiplying out 2d vectors, the number of terms is reasonable, but 3d and 4d vectors it starts to get to be very tedious to do by hand. The solution? Well, we use (a . b) as a shorthand for some of the terms, and (a^b) as a short hand for the rest of the terms. Basically, it's just naming/bundling together terms from a polynomial multiplication in order to treat them as a single entity, instead of a bunch of entities. Its conceptually more tractable that way, and its way easier on your hand when you are writing them out manually. It's really not as bizarre as it looks. I really wish that this view of geometric algebra were front and center in presentations of it. It does seem really weird to come upon a*b = a.b + a^b cold, without knowing what the heck a wedge product is and why we have two different kinds of products added together. Hope that helps, sorry if I didn't really get your objections or address all your points.
- ajkjk 3y agoThanks for reading! Yeah I have no problem with the exterior product which obeys x ∧ y=-y ∧ x and x ∧ x = 0. But I see no reason to use the same product for xx=1. Exterior algebra does just fine with its two separate products, and combining the two into the same product seems to me to go poorly pretty much everywhere it's done. The two operations are just not the same and when you combine them the rules are weird and you have to un-combine them to actually do anything useful outside of a couple of specific examples. (Also I'll point out that ab = a·b + a∧b is not generally true for multivectors; it only works for vectors. For arbitrary multivectors you end up with a bunch of "mixed" terms, for instance (xy)(yz) = xz = x∧z which you can't write as either a dot or wedge product.)
- rhelz 3y agoHmmm....so basically, you are saying that you prefer to keep two sets of books, one for the inner product and one for the outer product? Its true that when you are, say, proving that two expressions are equal, e.g.: a = b you might have to "unpack" each of the components, and separately equate them, e.g.: ax*x = bx*x and ay*x = by*x so ax = bx and ay = by etc etc, but frequently, there are a lot of intermediate steps before that, and I've always found it easier to reason about those steps at the higher level of combining the two products into a single product. I guess I still don't understand why you think the rules are weird: its just polynomial multiplication, what's so weird about that? Yeah, the operations are not the same, but they are come from one operation, viz, multiplying two polynomials. Sure ab = a.b + a^b is only true if a and b are vectors. But if they are general multi vectors, computing ab is still just a polynomial multiplication. And yeah, not every geometric multiplication can be expressed as (a.b) +(a^b), which is to say that we have not invented a shorthand operator for every possible subset of terms for every possible result of multiplying two polynomials together. Doesn't mean its not useful shorthand tho! The real big payoff (as another commenter mentioned in another thread) is that the geometric product is invertable. Neither (a.b) or (a^b) is invertible by itself. But their sum is. The fact that geometric multiplication is invertible just makes it soooo much easier to use all your algebra skills when manipulating and deriving expressions. ...... Do you remember the first time you learned about vectors? I do....I had just spent 4 or 5 years learning that you can multiply and divide integers, and integers are just a subset of real numbers, which you can also multiply and divide. And then complex numbers, which are a superset of the real numbers, which you can multiply and divide. So, naturally, I just assumed that you would be able to multiply and divide vectors, and add scalars to vectors, just like I added integers to real numbers. But the teacher just said "you can't multiply or divide vectors, MmmKay?" No reason. No explanation. "you can't add vectors to scalars, MmmKay?" YMMV, but I would have enjoyed the experience much more if I had known that you actually can multiply and divide vectors, and add them to scalars, etc. And that multi vectors are a superset of real and complex numbers, just like they are supersets of integers. The whole thing would have cohered a lot better than just an arbitrary "stop asking those kind of questions" did. And learning geometric algebra in the 9th grade (which is possible, because you've already learned polynomial multiplication), and therefore, ipso facto, learned the exterior algebra, would have been endlessly useful for the rest of my life. Imagine learning real physics in high school.
- nh23423fefe 3y ago> What does it even mean to have a “mixed-grade” multivector? The product of two vectors has a scalar part and a bivector part. Why? I interpret the mixed grade vectors as weighted sums of parallel and perpendicular parts. The product preserves information by letting the product of grade 1 and grade 1 be in grade 0 + grade 2. It's the same interpretation for products of vectors and blades. you get a multivector which preserves the geometric information in a n-1 and n+1 grade multivector. The product has the interpretation as the information preserving product. So I don't really see what you mean when you say: >Either way, GA’s trick of “removing the vector part, then putting it back” is just… weird, I guess? uv = u(v|| + v_|_) = scalar + bivector every vector is decomposable and so I dont get why this grade splitting is unnatural or uninterpretable to you? It's the reason people are always talking about the even subalgebras of geometric algebras. Besides all the this. The purpose of the geometric product, is that it is an associative product over the embedding 2^n dimensional vector space and you get a closed associative algebra.
- rhelz 3y agoI don't quite follow where you are deriving the reflection of a vector across another vector. You seem to assume that it is the parallel part which needs to be flipped--isn't it the perpendicular part? And the GA derivation doesn't seem that much different from the operator-based one, viz: let a||b be the component of a parallel to b, let a_|_b be the component of a perpendicular to b: I too would start where your operator-style derivation starts, i.e. a reflected across b = (a||b) - (a_|_b) (flipping the perpendicular, not the parallel, component). Given that a||b = (a.b)/b and (a_|_b) = (a^b)/b, we can express it as: a reflected across b = (a.b)/b - (a^b)/b Because the geometric product is associative, we can factor out the division by b, and rewrite it as: = ((a.b)- (a^b))/b Now, the numerator, (a.b) - (a^b), just looks so *achingly* close to a geometric product, doesn't it? If only we could somehow swap the sign of the exterior product....well, gee whiz, all we have to do is swap the order of the arguments! = ((b.a) + (b^a))/b = (b*a)/b Substituting in for the definition of 1/b, we get the sandwich product = (b*a*b)/(b*b) which, if b is a unit vector, = b*a*b. If we start out with b as a unit vector, the derivation is so simple it feels like cheating: a reflected across b = (a.b)*b - (a^b)*b = (a.b - a^b)* b = (b.a + b^a)*b = b*a*b. Is that really so much harder to derive, or does it really give that much harder of a formula to remember, than the operator-based approach? If so, can you spell it out a bit? To me anyways, the geometric product really shines here: because it operates so much like ordinary (though order-dependent) multiplication, its easy for me to use my mad algebra skillz to wrangle the expression into any particular form which is handy to me.
- jvanderbot 3y agoThe basic complaint is that GA adds nothing to exterior algebra, which is well understood, even if under-utilized. That the concepts of EA are under-used is not up for debate: Everyone agrees. In fact, by reframing everything from the first introduction to linear algrebra and up in terms of GA, you lose intuition, compatibility, and gain nothing. https://en.wikipedia.org/wiki/Exterior_algebra https://en.wikipedia.org/wiki/Exterior_algebra Having read the GA textbook and vector calculus textbook, I can't agree more. The whole thing made me consistently think "Oh cool, so what?". Usually when I read through a grad / undergrad textbook I gain a new way of thinking about problems I want to think about. With GA, it was more of contorting my problems to fit onto GA, and then ... nothing. However, there were some claims that I did not verify in the GA textbook about being computationally faster and more stable. Those, if borne out, would be valuable.
- blablabla123 3y agoIn my first few semesters of studying Physics I found these commonly used integral identities (Stokes etc.) really odd and wondered why those look so similar. Of course EA/differential forms provide ways to generalize that. Then other QM topics have these absolutely counter-intuitive geometries, although GA seems to provide some consistent intuition. (E.g. why a full rotation is 720 degrees) That said, I think vector algebra/calculus seems to be too much calculation focused to me. It's really hard to develop an intuition without excessive amounts of exercising calculations. (And books about GA still seem scarce) By the way, this article provides some estimations about no. operations compared to just using matrices: https://enkimute.github.io/LookMaNoMatrices/ https://enkimute.github.io/LookMaNoMatrices/
- Nevermark 3y agoAs a software developer, the point about distinguishing multi-vectors from operations they may be isomorphic to makes complete sense. I.e. just because two data structures have the same values, and are related, doesn't make them the same thing. A great deal of clarity is had by not treating all two-field structures of real/float x and y, as if they were all points and offsets and vectors, etc. Each of those things is a different type, with different expectations on how it will be legally used, and combined with the others. The fact that two numbers over two dimensions allows for isomorphic relations between them, does not make them the same thing. -- This is very similar to how pointers/addresses (1-dimensional objects) are represented by an integer, and so are offsets/sizes. But they are different. Adding two addresses makes no sense. De-referencing an offset makes no sense. There is an isomorphism, between offsets from the zero address and the same numerical addresses, but the distinction between whether you have an offset or address is important if you want your type system to guarantee proper/safe behavior. Conceptually, an address consists of a RAM origin, and an offset. Where as an offset is just an offset. You can add and subtract offsets. You can add and subtract offsets to addresses (i.e. to their offsets). And you can subtract addresses (the RAM origins cancel, leaving an offset). But you can't add two addresses, because adding two origins makes no sense. (Generalizing from adding two values, to multiple additions = multiplication of by indices: multiplying offsets by indices makes sense. Multiplying addresses by offsets or indices does not. Adding and subtracting indices makes sense. Multiplying indices makes sense, but not as an offset (although there is an isomorphism from the number of elements n of an i x j array of objects, it objects have a size of 1.))