Home Online Manual
Top
Back: arrCentralize
Forward: arrCoordNormalize
FastBack:
FastForward:
Up: arr_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.14.1.14 arrCoordChange

Procedure from library arr.lib (see arr_lib).

Usage:
arrCoordChange(A, T); arr A, (m*n mat) n*n or n*n+1 matrix T arrCoordChange(A, T , c); arr A, n*n matrix T, n*1 matrix/vector

Return:
[arr]: Arrangement A [A|b] after a coordinate change f: x -> Tx + c with T invertible i.e. [A|b] => [AT^-1|b+AT^-1c] since we have
f(H) = f(ker(a1*x1 + ... + an*xn - b)) = {f(x) : a'x -b = 0} = {y : a'f^-1(y) -b = 0)}
= {y : a'(T^-1(y-c)) - b = 0}
= {y : a'T^-1y -(b + a'T^-1c) = 0}

Note:
There are 3 options how you can give the input (in each case n <= nvars(basering)) 1. Just a nxn matrix with
=> Will automatically complete T by a unit matrix and perform x -> Tx 2. A nxn matrix T and a nx1 vector/matrix c with
=> Will automatically complete T and c and perform x -> Tx +c 3. A nxn+1 matrix T with
=> will use last column as translation vector c

Example:
 
LIB "arr.lib";
ring r = 0,(x,y,z),lp;
arr A = x,y,z;
arrCoordChange(A,1,[0,0,1]); //lifts z-hyperplane by 1 unit
==> _[1]=x
==> _[2]=y
==> _[3]=z-1
==> 
matrix T[2][2] = [0,1,1,0];  // swaps x and y
arrCoordChange(A,T);
==> _[1]=y
==> _[2]=x
==> _[3]=z
==> 
matrix c[2][1] = [1,0];
T = concat(T,c);            // now swap x and y and add 1 to x afterwards
arrCoordChange(A,T);
==> _[1]=y
==> _[2]=x-1
==> _[3]=z
==> 
// Note how T doesn't even need to be a full 3x3 base change matrix.
See also: arrCoordChange; arrCoordNormalize.