# Linear Transformation Matrix is Transposed

I define a linear transformation object using the following syntax:

def f(v):
l1 = [2*v[0]+3*v[1], 5*v[0]-v[1]]
v1 = vector(l1)
return(v1)

lf = linear_transformation(RR^2, RR^2, f)
lf


The output includes the matrix [[2, 5], [3,-1]] instead of [[2,3], [5,-1]]. Is this a bug or am I doing something wrong?

EDIT: Specifying side="right" doesn't help.

edit retag close merge delete

Sort by » oldest newest most voted

Both f and lf are maps, not matrices. Ther is no ambiguity on the side of the action. The side option only applies on linear_transformation() when it is built from a matrix (there is an ambiguity since a matrix creates two linear maps depending on whether one consider the action on the left or on the right). In Sage, the matrix are by default acting on the right (i mean vectors are on the left, see for example the .kernel() method), which is what you see in the representation of lf. There is no problem here:

sage: f([0,1])
(3, -1)
sage: lf([0,1])
(3.00000000000000, -1.00000000000000)
sage: f([1,0])
(2, 5)
sage: lf([1,0])
(2.00000000000000, 5.00000000000000)


Now, if you want the matrix associated to the linear map lf with respect to the canonical basis, you can ask:

sage: lf.matrix(side='right')
[ 2.00000000000000  3.00000000000000]
[ 5.00000000000000 -1.00000000000000]


or

sage: lf.matrix(side='left')
[ 2.00000000000000  5.00000000000000]
[ 3.00000000000000 -1.00000000000000]


depending on whether you want the matrix to act on the left or on the right.

more

Okay, now I see why I was on the 'right' track but it didn't help. Nice exposé of this!

( 2014-05-06 04:58:37 -0500 )edit

Note this is the transpose of the matrix you wanted. You may want to read the documentation carefully - you may want side='right', I suppose.

more

Tried that. It doesn't work.

( 2014-05-05 07:17:17 -0500 )edit