Пример #1
0
 private FSnCollection IfVerticalStabilizer()
 {
     if (this.IsVertical() == true)
     {
         FSnCollection      result = new FSnCollection();
         int                a      = DiagElemCol[0];
         List <Permutation> cs     = Common.GeneratePermutations(this.Number);
         for (int j = 0; j < cs.Count; j++)
         {
             FSnElement aa = new FSnElement();
             aa.SnElement = cs[j];
             if (cs[j].IsEven() == true)
             {
                 aa.FElement = 1;
             }
             else
             {
                 aa.FElement = -1;
             }
             result.Add(aa);
         }
         return(result);
     }
     else
     {
         return(null);
     }
 }
Пример #2
0
 private FSnCollection IfHorizontalStabilizer()
 {
     if (this.IsHorizontal() == true)
     {
         FSnCollection      result = new FSnCollection();
         int                a      = (int)diagElemRow[0];
         List <Permutation> rs     = Common.GeneratePermutations(this.Number);
         for (int j = 0; j < rs.Count; j++)
         {
             FSnElement aa = new FSnElement();
             aa.SnElement = (Permutation)rs[j];
             aa.FElement  = 1;
             result.Add(aa);
         }
         return(result);
     }
     else
     {
         return(null);
     }
 }
Пример #3
0
        internal FSnCollection YoungSymmetrizer()
        {
            Array         source = this.ToMatrix();
            FSnCollection result = new FSnCollection();

            if (this.IsVertical() == true)
            {
                result = IfVerticalStabilizer();
                return(result);
            }
            if (this.IsHorizontal() == true)
            {
                result = IfHorizontalStabilizer();
                return(result);
            }
            List <Permutation> rs = this.RowStabilizer(source);
            List <Permutation> cs = this.ColStabilizer(source);

            for (int i = 0; i < cs.Count; i++)
            {
                int sign = 0;
                if (cs[i].IsEven() == true)
                {
                    sign = 1;
                }
                else
                {
                    sign = -1;
                }
                for (int j = 0; j < rs.Count; j++)
                {
                    FSnElement a = new FSnElement();
                    a.SnElement = (Permutation)(rs[j] * cs[i]);
                    a.FElement  = sign;
                    result.Add(a);
                }
            }
            return(result);
        }