Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 91213ddcfbe7f54821d42c2d9e091326 > files > 98

gap-system-packages-4.4.12-5mdv2010.0.i586.rpm

  
  2. Bits and Pieces
  
  This  chapter contains a few very basic functions which are needed for space
  group calculations and were missing in standard GAP.
  
  
  2.1 Matrices and Vectors
  
  2.1-1 SignRat
  
  > SignRat( x ) _______________________________________________________method
  Returns:  sign  of  the  rational  number x (Standard GAP currently only has
            SignInt).
  
  2.1-2 VectorModOne
  
  > VectorModOne( v ) __________________________________________________method
  Returns:  Rational vector of the same length with enties in [0,1)
  
  For a rational vector v, this returns the vector with all entries taken "mod
  1".
  
  ---------------------------  Example  ----------------------------
    gap> SignRat((-4)/(-2));
    1
    gap> SignRat(9/(-2));
    -1
    gap> VectorModOne([1/10,100/9,5/6,6/5]);
    [ 1/10, 1/9, 5/6, 1/5 ]
  ------------------------------------------------------------------
  
  2.1-3 IsSquareMat
  
  > IsSquareMat( matrix ) ______________________________________________method
  Returns:  true if matrix is a square matrix and false otherwise.
  
  2.1-4 DimensionSquareMat
  
  > DimensionSquareMat( matrix ) _______________________________________method
  Returns:  Number  of  lines  in  the  matrix matrix if it is square and fail
            otherwise
  
  ---------------------------  Example  ----------------------------
    gap> m:=[[1,2,3],[4,5,6],[9,6,12]];
    [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 9, 6, 12 ] ]
    gap> IsSquareMat(m);
    true
    gap> DimensionSquareMat(m);
    3
    gap> DimensionSquareMat([[1,2],[1,2,3]]);
    Error, Matrix is not square called from
  ------------------------------------------------------------------
  
  Affine  mappings  of  n  dimensional space are often written as a pair (A,v)
  where  A  is  a  linear  mapping  and  v  is a vector. GAP represents affine
  mappings  by  n+1  times  n+1  matrices  M  which  satisfy M_{n+1,n+1}=1 and
  M_{i,n+1}=0 for all 1<= i <= n.
  
  An  affine matrix acts on an n dimensional space which is written as a space
  of n+1 tuples with n+1st entry 1. Here we give two functions to handle these
  affine matrices.
  
  
  2.2 Affine Matrices OnRight
  
  2.2-1 LinearPartOfAffineMatOnRight
  
  > LinearPartOfAffineMatOnRight( mat ) ________________________________method
  Returns:  the  linear  part  of  the  affine matrix mat. That is, everything
            except for the last row and column.
  
  2.2-2 BasisChangeAffineMatOnRight
  
  > BasisChangeAffineMatOnRight( transform, mat ) ______________________method
  Returns:  affine matrix with same dimensions as mat
  
  A  basis change transform of an n dimensional space induces a transformation
  on  affine mappings on this space. If mat is a affine matrix (in particular,
  it  is  (n+1)x  (n+1)), this method returns the image of mat under the basis
  transformation induced by transform.
  
  ---------------------------  Example  ----------------------------
    gap> c:=[[0,1],[1,0]];
    [ [ 0, 1 ], [ 1, 0 ] ]
    gap> m:=[[1/2,0,0],[0,2/3,0],[1,0,1]];
    [ [ 1/2, 0, 0 ], [ 0, 2/3, 0 ], [ 1, 0, 1 ] ]
    gap> BasisChangeAffineMatOnRight(c,m);
    [ [ 2/3, 0, 0 ], [ 0, 1/2, 0 ], [ 0, 1, 1 ] ]
  ------------------------------------------------------------------
  
  2.2-3 TranslationOnRightFromVector
  
  > TranslationOnRightFromVector( v ) __________________________________method
  Returns:  Affine matrix
  
  Given  a  vector v with n entries, this method returns a (n+1)x (n+1) matrix
  which corresponds to the affine translation defined by v.
  
  ---------------------------  Example  ----------------------------
    gap> m:=TranslationOnRightFromVector([1,2,3]);;
    gap> Display(m);
    [ [  1,  0,  0,  0 ],
      [  0,  1,  0,  0 ],
      [  0,  0,  1,  0 ],
      [  1,  2,  3,  1 ] ]
    gap> LinearPartOfAffineMatOnRight(m);
    [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ]
    gap> BasisChangeAffineMatOnRight([[3,2,1],[0,1,0],[0,0,1]],m);
    [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 3, 4, 4, 1 ] ]
  ------------------------------------------------------------------
  
  
  2.3 Geometry
  
  2.3-1 GramianOfAverageScalarProductFromFiniteMatrixGroup
  
  > GramianOfAverageScalarProductFromFiniteMatrixGroup( G ) ____________method
  Returns:  Symmetric positive definite matrix
  
  For  a  finite  matrix  group  G,  the  gramian matrix of the average scalar
  product  is  returned. This is the sum over all gg^t with gin G (actually it
  is  enough to take a generating set). The group G is orthogonal with respect
  to the scalar product induced by the returned matrix.
  
  
  2.3-2 Inequalities
  
  Inequalities  are  represented  in  the  same  way  they  are represented in
  polymaking.  The  vector (v_0,...,v_n) represents the inequality 0<= v_0+v_1
  x_1+... + v_n x_n.
  
  2.3-3 BisectorInequalityFromPointPair
  
  > BisectorInequalityFromPointPair( v1, v2[, gram] ) __________________method
  Returns:  vector of length Length(v1)+1
  
  Calculates  the  inequality  defining the half-space containing v1 such that
  v1-v2  is  perpendicular  on  the  bounding  hyperplane.  And  (v1-v2)/2  is
  contained in the bounding hyperplane.
  If  the  matrix gram is given, it is used as the gramian matrix. Otherwiese,
  the  standard  scalar product is used. It is not checked if gram is positive
  definite or symmetric.
  
  2.3-4 WhichSideOfHyperplane
  
  > WhichSideOfHyperplane( v, ineq ) ___________________________________method
  > WhichSideOfHyperplaneNC( v, ineq ) _________________________________method
  Returns:  -1 (below) 0 (in) or 1 (above).
  
  Let v be a vector of length n and ineq an inequality represented by a vector
  of  length  n+1.  Then  WhichSideOfHyperplane(v,  ineq)  returns 1 if v is a
  solution  of the inequality but not the equation given by ineq, it returns 0
  if  v  is  a  solution to the equation and -1 if it is not a solution of the
  inequality ineq.
  
  The NC version does not test the input for correctness.
  
  ---------------------------  Example  ----------------------------
    gap> BisectorInequalityFromPointPair([0,0],[1,0]);
    [ 1, -2, 0 ]
    gap> ineq:=BisectorInequalityFromPointPair([0,0],[1,0],[[5,4],[4,5]]);
    [ 5, -10, -8 ]
    gap> ineq{[2,3]}*[1/2,0];
    -5
    gap> WhichSideOfHyperplane([0,0],ineq);
    1
    gap> WhichSideOfHyperplane([1/2,0],ineq);
    0
  ------------------------------------------------------------------
  
  2.3-5 RelativePositionPointAndPolygon
  
  > RelativePositionPointAndPolygon( point, poly ) _____________________method
  Returns:  one of "VERTEX", "FACET", "OUTSIDE", "INSIDE"
  
  Let  poly  be  a  PolymakeObject and point a vector. If point is a vertex of
  poly,  the  string "VERTEX" is returned. If point lies inside poly, "INSIDE"
  is returned and if it lies in a facet, "FACET" is returned and if point does
  not lie inside poly, the function returns "OUTSIDE".
  
  
  2.4 Space Groups
  
  2.4-1 PointGroupRepresentatives
  
  > PointGroupRepresentatives( group ) ______________________________attribute
  > PointGroupRepresentatives( group ) _________________________________method
  Returns:  list of matrices
  
  Given  an  AffineCrystGroupOnLeftOrRight  group,  this  returns  a  list  of
  representatives  of  the  point  group  of  group.  That  is,  a  system  of
  representatives  for  the  factor  group  modulo  translations.  This  is an
  attribute of AffineCrystGroupOnLeftOrRight