EXAMPLES:
- In the clan of real symmetric matrices under the Ishi norm,
- it is easy to check that the idempotents all have norm 1/2::
+ In the clan of real symmetric matrices under the Ishi norm, it
+ is easy to check that the idempotents all have norm-squared
+ ``1/2``::
sage: C = RealSymmetricClan(3)
sage: b = C.basis()
return sum(
xi*yj*self.parent().inner_product_on_basis(bi, bj)
for (bi, xi) in self.items()
- for (bj, yj) in other.items()
+ for (bj, yj) in other.items()
)
+ def norm(self):
+ r"""
+ The norm of this element.
+
+ This norm is with respect to the inner product used to
+ construct the clan.
+
+ .. SEEALSO::
+
+ * :meth:`norm_vinberg`
+
+ SETUP::
+
+ sage: from mjo.clan.t_algebra_clan import RealSymmetricClan
+
+ EXAMPLES:
+
+ In the clan of real symmetric matrices under the Ishi norm, it
+ is easy to check that the idempotents all have norm-squared
+ ``1/2``::
+
+ sage: C = RealSymmetricClan(3)
+ sage: b = C.basis()
+ sage: all( b[i,j,k].norm() == (~QQ(2)).sqrt()
+ ....: for (i,j,k) in b.keys()
+ ....: if j == i )
+ True
+
+ """
+ return self.inner_product(self).sqrt()
+
def inner_product_vinberg(self, other):
r"""
The Vinberg inner product of ``self`` and ``other``.
From the definition of "Sp(z)" and Lemma 2 (pp. 380--382),
it follows that for a symmetric matrix this is twice the
- usual trace::
+ usual trace inner product::
sage: C = RealSymmetricClan(3)
sage: X = matrix(QQ, [[2,6,10],[6,10,14],[10,14,18]])
"""
return (self*other).leftreg().trace()
+ def norm_vinberg(self):
+ r"""
+ The norm of ``self`` under :meth:`inner_product_vinberg`.
+
+ SETUP::
+
+ sage: from mjo.clan.t_algebra_clan import RealSymmetricClan
+
+ EXAMPLES:
+
+ From the definition of "Sp(z)" and Lemma 2 (pp. 380--382), it
+ follows that for a symmetric matrix this is ``sqrt(2)`` times
+ the usual trace norm::
+
+ sage: C = RealSymmetricClan(3)
+ sage: X = matrix(QQ, [[2,6,10],[6,10,14],[10,14,18]])
+ sage: (X*X).trace().sqrt()
+ 2*sqrt(273)
+ sage: X = C.from_matrix(X)
+ sage: X.norm_vinberg()
+ 2*sqrt(546)
+
+ """
+ return self.inner_product_vinberg(self).sqrt()
+
def leftreg(self):
r"""
Return the left-regular representation of this element.