|
D.15.19.6 diagonalizeVecField
Procedure from library VecField.lib (see VecField_lib).
- Usage:
- diagonalizeVecField(list l), l a list of VecFields
- Return:
- list of VecFields W such that they are all simultaneously diagonal.
- Assume:
- all input VecFields have to be simultaneously diagonalizable.
- Note:
- the algorithm requires inversions of algebra morphisms. These will be
exact to the precision of l[1]. Warning: The algorithm assumes
standard coordinates. If V is not given in standard coordinates, it will
be converted to standard coordinates, but not converted back at the end,
so the resulting transformation is from standard coordinates to the
Saito coordinates. If you want the entire transformation from your original
coordinates to the Saito ones, add the inverse of your original coordinate
transformation manually.
Note that weight vectors only take Int64,
making the algorithm fail for very large entries in V.vec.
Example:
| LIB "VecField.lib";
int oldp = printlevel;
printlevel = 1;
ring r = 0, (x, y, z),ds;
vector v = [-1,-1,-1];
VecField V = v;
V.precision = 4;
map phi = r, x-2y2+z3,2y+y3+z,z;
VecField W = changeCoordinates(V,phi);
VecField X = [-2,1,0];
VecField WS = diagonalizeVecField(W,X);
==> ? error in diagonalizeVecField: no solutions found
==> ? leaving VecField.lib::diagonalizeVecField (0)
printlevel = oldp;
|
|