Complement and degenerate metric
chakravala opened this issue · comments
The following is a quote of @enkimute from the discussion in #3
check the way he defined the complement and figure out if this may provide a method that works for degenerate metrics in the same unified fashion..
Opening this issue is meant to track ongoing discussions regarding degenerate metrics and complements
@Orbots and @enkimute just wanted to let you know that this whole time Grassmann
already has support for dual numbers built-in along with DirectSum.jl package.
julia> using Grassmann
julia> basis"ϵ+++"
(⟨ϵ+++⟩, v, vϵ, v₁, v₂, v₃, vϵ₁, vϵ₂, vϵ₃, v₁₂, v₁₃, v₂₃, vϵ₁₂, vϵ₁₃, vϵ₂₃, v₁₂₃, vϵ₁₂₃)
julia> v2*vϵ
-1vϵ₂
julia> ans*vϵ
0v
As mentioned in #3 and #10 there is some interest in the complement operation and the degenerate metric
The feature already exists, although I don't know enough about degenerate inner products to really know if it is correct or not, so it is up to you to check this.
However, the degenerate metric feature is not fully advertised yet because I wanted to enhance the behavior of the origin and infinity elements of conformal geometric algebra...
This current definition should be sufficient for dual numbers though, as far as I know currently. Please let me know if you try it out and have some feedback.
Did a test on the degenerate metric in Grassmann
and compared with @enkimute Ganja Cheat Sheets
julia> using Grassmann
julia> basis"ϵ"
(⟨ϵ⟩, v, vϵ)
julia> (1+2vϵ)+(3+4vϵ)
4 + 6vϵ
julia> (1+2vϵ)-(3+4vϵ)
-2 - 2vϵ
julia> (1+2vϵ)*(3+4vϵ)
3 + 10vϵ
julia> (1+2vϵ)∧(3+4vϵ)
3 + 10vϵ
julia> (1+2vϵ)⋅(3+4vϵ)
11 + 6vϵ
julia> (1+2vϵ)∨(3+4vϵ)
10 + 8vϵ
julia> conj(1+2vϵ)
1 - 2vϵ
julia> complementright(1+2vϵ)
2 + 1vϵ
This means that all my results are correct so far except for the inner product should be 3 + 10vϵ
That means there is something I might be doing right, but the inner prodocut not yet.
Alright, so if I use the Hodge star (at the moment defined to be complementright
) then I do get the correct results for inner product in fact:
julia> ⋆(⋆(1+2vϵ)⋅(⋆(⋆(3+4vϵ))))
3 + 10vϵ
And this is how I techincally defined the inner product in my program too. This means there is a bug in the way I implemented the degenerate metric in the inner product composite method.
I will let you know when I figure out what the bug is, but to answer @enkimute original question, yes it does look like the complementright
definition of inner product used should be sound. I should just make sure that my composite implementation also handles the degenerate metric correctly now.
As of right now, this issue is considered resolved and higher-order degenerate metrics are now supported via the tangent bundle capability provided by DirectSum
version 0.2.1, documentation comes later ~