Home Online Manual
Top
Back: SaitoBase
Forward: vecFieldToMatrix
FastBack:
FastForward:
Up: VecField_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.15.23.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;