Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Selecting random k-blades, k-versors, and k-vectors #32

Open
brainandforce opened this issue Nov 21, 2024 · 0 comments
Open

Selecting random k-blades, k-versors, and k-vectors #32

brainandforce opened this issue Nov 21, 2024 · 0 comments

Comments

@brainandforce
Copy link
Owner

There's great utility in picking random elements of a Clifford algebra, but I want to make sure the library is very clear about how random elements are picked. Julia itself does not have firm rules about how functions like rand or randn should be implemented.

These behaviors are going to be standardized in the package:

  • rand, randn, and randexp for KVector{0,Q,T} arguments will simply pass in the scalar type T.
  • randn(::Type{KVector{1,Q,T<:AbstractFloat}}) for positive-definite algebras defined by Q will generate a random 1-blade with each coefficient derived from a Gaussian distribution (just as randn(::Type{T<:AbstractFloat}) would). The norms of these vectors will obey a chi distribution, and their moduli will obey a chi-squared distribution.
  • rand(::Type{KVector{1,Q,T<:AbstractFloat}}) will normalize the result of randn so that the points lie on the unit sphere centered at the origin.

The big outstanding issues are

  • Selecting random k-blades, k-versors, or k-vectors: I assume this can be done by taking random wedge or geometric products of 1-blades, but a) I'm not certain the distribution will be correct, and b) there may be a more efficient way.
  • Syntax: I don't think the syntax rand(KVector{K,Q,T}) is suitable for generating a random k-blade as opposed to a random k-vector. on the other hand, random k-blades are likely to be more useful to a user of this package.
  • Non-positive-definite metrics: I really don't know what an appropriate mechanism is for handling arbitrary non-positive-definite metrics. I suspect we can look to the Lorentzian case to handle nondegenerate metrics generally, but even that, to me, is unclear.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant