pub struct U1Algebra(pub f64);Expand description
Lie algebra u(1) ≅ ℝ
The Lie algebra of U(1) consists of purely imaginary numbers i·a where a ∈ ℝ. We represent this as a 1-dimensional real vector space.
§Mathematical Structure
Elements of u(1) have the form:
X = i·a where a ∈ ℝThe exponential map is simply:
exp(i·a) = e^{ia} ∈ U(1)§Examples
use lie_groups::u1::U1Algebra;
use lie_groups::traits::LieAlgebra;
// Create algebra element
let v = U1Algebra::from_components(&[1.5]);
// Scale
let w = v.scale(2.0);
assert_eq!(w.value(), 3.0);Tuple Fields§
§0: f64Implementations§
Trait Implementations§
Source§impl LieAlgebra for U1Algebra
impl LieAlgebra for U1Algebra
Source§fn basis_element(i: usize) -> Self
fn basis_element(i: usize) -> Self
Get the i-th basis element of the Lie algebra. Read more
Source§fn from_components(components: &[f64]) -> Self
fn from_components(components: &[f64]) -> Self
Construct algebra element from basis coordinates. Read more
impl AntiHermitianByConstruction for U1Algebra
u(1) algebra elements are anti-Hermitian by construction.
The representation U1Algebra(f64) stores a real number a representing
the purely imaginary element ia ∈ iℝ ⊂ ℂ. Since (ia)* = -ia, these
are anti-Hermitian (as 1×1 complex matrices).
§Note: NOT TracelessByConstruction
Unlike su(n), the u(1) algebra is NOT traceless. For a 1×1 matrix [ia],
the trace is ia ≠ 0 (for a ≠ 0). This is why U(1) ≠ SU(1).
The theorem det(exp(X)) = exp(tr(X)) still holds, but gives:
- det(exp(ia)) = exp(ia) ≠ 1 in general
- This is correct: U(1) elements have |det| = 1, not det = 1
impl Copy for U1Algebra
impl StructuralPartialEq for U1Algebra
Auto Trait Implementations§
impl Freeze for U1Algebra
impl RefUnwindSafe for U1Algebra
impl Send for U1Algebra
impl Sync for U1Algebra
impl Unpin for U1Algebra
impl UnsafeUnpin for U1Algebra
impl UnwindSafe for U1Algebra
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.