|
D.7.1.27 irred_secondary_char0
Procedure from library finvar.lib (see finvar_lib).
- Usage:
- irred_secondary_char0(P,REY,M[,v][,"PP"]);
P: a 1xn <matrix> with homogeneous primary invariants, where
n is the number of variables of the basering;
REY: a gxn <matrix> representing the Reynolds operator, where
g the size of the corresponding group;
M: a 1x2 <matrix> giving numerator and denominator of the
Molien series;
v: an optional <int>;
"PP": if this string occurs as (optional) parameter, then in
all degrees power products of irr. sec. inv. will be computed.
- Return:
- Irreducible homogeneous secondary invariants of the invariant ring
(type <matrix>)
- Assume:
- We are in the non-modular case, i.e., the characteristic of the basering
does not divide the group order;
REY is the 1st return value of group_reynolds(), reynolds_molien() or
the second one of primary_invariants();
M is the return value of molien() or the second one of
reynolds_molien() or the third one of primary_invariants()
- Display:
- Information on the progress of computations if v does not equal 0
- Theory:
- The secondary invariants are calculated by finding a basis (in terms
of monomials) of the basering modulo the primary invariants, mapping
those to invariants with the Reynolds operator. Among these images
or their power products we pick secondary invariants using Groebner
basis techniques (see S. King: Fast Computation of Secondary Invariants).
The size of this set can be read off from the Molien series. Here, only
irreducible secondary invariants are explicitly computed, which saves time and
memory.
Moreover, if no irr. sec. inv. in degree d-1 have been found and unless the last
optional paramter "PP" is used, a Groebner basis of primary invariants and
irreducible secondary invariants up to degree d-2 is computed, which allows to
detect irr. sec. inv. in degree d without computing power products.
There are three internal parameters "pieces", "MonStep" and "IrrSwitch".
The default values of the parameters should be fine in most cases. However,
in some cases, different values may provide a better balance of memory
consumption (smaller values) and speed (bigger values).
Example:
| LIB "finvar.lib";
ring r= 0, (a,b,c,d,e,f),dp;
matrix A1[6][6] = 0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0;
matrix A2[6][6] = 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0;
list L = primary_invariants(A1,A2);
matrix IS = irred_secondary_char0(L[1],L[2],L[3],0);
IS;
==> IS[1,1]=ab+cd+ef
==> IS[1,2]=a2d+ad2+b2e+be2+c2f+cf2
==> IS[1,3]=ac2+b2d+a2e+ce2+d2f+bf2
==> IS[1,4]=b2c+bc2+d2e+de2+a2f+af2
==> IS[1,5]=a2c+bd2+c2e+ae2+b2f+df2
==> IS[1,6]=a2cd+abd2+abe2+b2ef+c2ef+cdf2
==> IS[1,7]=ab2d+ac2d+a2be+cd2f+ce2f+bef2
==> IS[1,8]=a2bd+acd2+ab2e+c2df+be2f+cef2
==> IS[1,9]=a3d+ad3+b3e+be3+c3f+cf3
| See also:
secondary_char0.
|