| products/Sources/formale Sprachen/GAP/pkg/repndecomp/doc/chap6.html |
 |
<?xml version= "1.0" encoding= "UTF-8"?>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns= "http://www.w3.org/1999/xhtml" xml:lang= "en">
< head>
< title>GAP (RepnDecomp) - Chapter 6: Centralizer (commutant) rings</ title>
< meta http-equiv= "content-type" content= "text/html; charset=UTF-8" />
< meta name= "generator" content= "GAPDoc2HTML" />
< link rel= "stylesheet" type= "text/css" href= "manual.css" />
< script src= "manual.js" type= "text/javascript"></ script>
< script type= "text/javascript">overwriteStyle();</ script>
</ head>
< body class= "chap6" onload= "jscontent()">
< div class= "chlinktop">< span class= "chlink1">Goto Chapter: </ span>< a href= "chap0.html">Top</ a> < a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chap6.html">6</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap5.html">[Previous Chapter]</a> <a href="chapInd.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap6_mj.html">[MathJax on]</a></p>
<p><a id="X7A0EF2C67E2DB726" name="X7A0EF2C67E2DB726"></a></p>
<div class="ChapSects"><a href="chap6.html#X7A0EF2C67E2DB726">6 <span class="Heading">Centralizer (commutant) rings</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X7E70A3D881CD5FFA">6.1 <span class="Heading">Finding a basis for the centralizer</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap6.html#X7901B6A7860D35C3">6.1-1 CentralizerBlocksOfRepresentation</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap6.html#X86B19E2B877121E9">6.1-2 CentralizerOfRepresentation</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap6.html#X83C4F8C17DA976EE">6.2 <span class="Heading">Using the centralizer for computations</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap6.html#X87E5BAEB82DC00C3">6.2-1 ClassSumCentralizer</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap6.html#X78719DC8868B0744">6.2-2 ClassSumCentralizerNC</a></span>
</div></div>
</div>
<h3>6 <span class="Heading">Centralizer (commutant) rings</span></h3>
<p><a id="X7E70A3D881CD5FFA" name="X7E70A3D881CD5FFA"></a></p>
<h4>6.1 <span class="Heading">Finding a basis for the centralizer</span></h4>
<p><a id="X7901B6A7860D35C3" name="X7901B6A7860D35C3"></a></p>
<h5>6.1-1 CentralizerBlocksOfRepresentation</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; CentralizerBlocksOfRepresentation</code>( <var class="Arg">rho</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: List of vector space generators for the centralizer ring of <span class="Math">\rho(G)</span>, written in the basis given by <code class="func">BlockDiagonalBasisOfRepresentation</code> (<a href="chap5.html#X8361AD057AD282AC"><span class="RefLink">5.1-1</span></a>). The matrices are given as a list of blocks.</p>
<p>Let <span class="Math">G</span> have irreducible representations <span class="Math">\rho_i</span> with multiplicities <span class="Math">m_i</span>. The centralizer has dimension <span class="Math">\sum_i m_i^2</span> as a <span class="Math">\mathbb{C}</span>-vector space. This function gives the minimal number of generators required.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := DihedralGroup(8);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">irreps := IrreducibleRepresentations(G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># rho is the sum of two isomorphic degree 1 irreps, and a degree</span>
<span class="GAPprompt">></span> <span class="GAPinput"># 2 irrep.</span>
<span class="GAPprompt">></span> <span class="GAPinput">rho := DirectSumOfRepresentations([irreps[4], irreps[4], irreps[5]]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># Compute a basis for the centralizer (in blocks)</span>
<span class="GAPprompt">></span> <span class="GAPinput">cent_basis_blocks := CentralizerBlocksOfRepresentation(rho);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># Verify that the dimension is the sum of the multiplicities squared,</span>
<span class="GAPprompt">></span> <span class="GAPinput"># in this case 2^2 + 1 = 5.</span>
<span class="GAPprompt">></span> <span class="GAPinput">Length(cent_basis_blocks) = 5;</span>
true
</pre></div>
<p><a id="X86B19E2B877121E9" name="X86B19E2B877121E9"></a></p>
<h5>6.1-2 CentralizerOfRepresentation</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; CentralizerOfRepresentation</code>( <var class="Arg">arg</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: List of vector space generators for the centralizer ring of <span class="Math">\rho(G)</span>.</p>
<p>This gives the same result as <code class="func">CentralizerBlocksOfRepresentation</code> (<a href="chap6.html#X7901B6A7860D35C3"><span class="RefLink">6.1-1</span></a>), but with the matrices given in their entirety: not as lists of blocks, but as full matrices.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput"># This is the actual basis for the centralizer.</span>
<span class="GAPprompt">></span> <span class="GAPinput">cent_basis := CentralizerOfRepresentation(rho);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># All matrices in the span should commute with the image of rho.</span>
<span class="GAPprompt">></span> <span class="GAPinput">ForAll(G, g -> ForAll(cent_basis, M -> Image(rho, g)*M = M*Image(rho,g)));</span>
true
</pre></div>
<p><a id="X83C4F8C17DA976EE" name="X83C4F8C17DA976EE"></a></p>
<h4>6.2 <span class="Heading">Using the centralizer for computations</span></h4>
<p><a id="X87E5BAEB82DC00C3" name="X87E5BAEB82DC00C3"></a></p>
<h5>6.2-1 ClassSumCentralizer</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; ClassSumCentralizer</code>( <var class="Arg">rho</var>, <var class="Arg">class</var>, <var class="Arg">cent_basis</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: <span class="Math">\sum_{s \in t^G} \rho(s)</span>, where <span class="Math">t</span> is a representative of the conjugacy class <var class="Arg">class</var> of <span class="Math">G</span>.</p>
<p>We require that <var class="Arg">rho</var> is unitary. Uses the given orthonormal basis (with respect to the inner product <span class="Math">\langle A, B \rangle = \mbox{Trace}(AB^*)</span>) for the centralizer ring of <var class="Arg">rho</var> to calculate the sum of the conjugacy class <var class="Arg">class</var> quickly, i.e. without summing over the class.</p>
<p>NOTE: Orthonormality of <var class="Arg">cent_basis</var> and unitarity of <var class="Arg">rho</var> are checked. See <code class="func">ClassSumCentralizerNC</code> (<a href="chap6.html#X78719DC8868B0744"><span class="RefLink">6.2-2</span></a>) for a version of this function without checks. The checks are not very expensive, so it is recommended you use the function with checks.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput"># Now we have a basis for the centralizer, we can sum a conjugacy class</span>
<span class="GAPprompt">></span> <span class="GAPinput"># of G.</span>
<span class="GAPprompt">></span> <span class="GAPinput">class := List(ConjugacyClasses(G)[3]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># We can do the computation naively, with no centralizer basis given:</span>
<span class="GAPprompt">></span> <span class="GAPinput">sum1 := ClassSumCentralizer(rho, class, fail);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># Before summing with th centralizer basis given, we need to</span>
<span class="GAPprompt">></span> <span class="GAPinput"># orthonormalize it. It's already orthogonal, but not normal:</span>
<span class="GAPprompt">></span> <span class="GAPinput">orth_basis := OrthonormalBasis@RepnDecomp(cent_basis);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsOrthonormalSet(orth_basis, InnerProduct@RepnDecomp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput"># And with the centralizer given, should be more efficient in certain</span>
<span class="GAPprompt">></span> <span class="GAPinput"># cases (small degree, low multiplicities, but very large group)</span>
<span class="GAPprompt">></span> <span class="GAPinput">sum2 := ClassSumCentralizer(rho, class, orth_basis);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># Should be the same:</span>
<span class="GAPprompt">></span> <span class="GAPinput">sum1 = sum2;</span>
true
</pre></div>
<p><a id="X78719DC8868B0744" name="X78719DC8868B0744"></a></p>
<h5>6.2-2 ClassSumCentralizerNC</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; ClassSumCentralizerNC</code>( <var class="Arg">rho</var>, <var class="Arg">class</var>, <var class="Arg">cent_basis</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The same as <code class="func">ClassSumCentralizer</code> (<a href="chap6.html#X87E5BAEB82DC00C3"><span class="RefLink">6.2-1</span></a>), but does not check the basis for orthonormality or the representation for unitarity.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput"># The very same as the above, but with no checks on orthonormality.</span>
<span class="GAPprompt">></span> <span class="GAPinput">sum3 := ClassSumCentralizerNC(rho, class, orth_basis);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sum1 = sum3;</span>
true
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap5.html">[Previous Chapter]</a> <a href="chapInd.html">[Next Chapter]</a> </div>
<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chap6.html">6</a> <a href="chapInd.html">Ind</a> </div>
<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland
|
|