# SageManifolds different frames

Hi All,

I have the following code:

sage: M = Manifold(2, 'M')
sage: U = M.open_subset('U')
sage: c_xy.<x,y> = U.chart()
sage: V = M.open_subset('V')
sage: c_uv.<u,v> = V.chart()
sage: M.declare_union(U,V)
sage: xy_to_uv = c_xy.transition_map(c_uv, (x+y, x-y), intersection_name='W', restrictions1= x>0, restrictions2= u+v>0)
sage: xy_to_uv.display()
sage: uv_to_xy = xy_to_uv.inverse()
sage: uv_to_xy.display()
sage: e_xy = c_xy.frame(); e_uv = c_uv.frame()
sage: t = M.tensor_field(1,1, name='t')
sage: t[e_xy,:] = [[x, 1], [y, 0]]
sage: t[:]
sage: t[e_uv,:]
sage: w = M.vector_field(name='w')
sage: w[e_xy,:] = [-y, x]
sage: w[:]
sage: w[e_uv,:]


What I don't understand is the result in sage: t[e_uv,:] and sage: w[e_uv,:] in view of the transition map uv_to_xy. Shouldn't the result be a direct substitution x=(u+v)/2 and y=(u-v)/2

How is this calculated?

Thanks,

Daniel

edit retag close merge delete

Sort by » oldest newest most voted

The result of t[e_uv,:] cannot be the same as t[:] with a mere substitution x=(u+v)/2 and y=(u-v)/2 because it gives the components of t in a different vector frame: the frame is e_uv for t[e_uv,:], whereas it is the default frame on M for t[:], which is e_xy. In other words, the components returned by t[e_uv,:] are those of the following expansion:

sage: t.display(e_uv)
t = (1/2*u + 1/2) d/du*du + (1/2*u - 1/2) d/du*dv + (1/2*v + 1/2) d/dv*du + (1/2*v - 1/2) d/dv*dv


whereas the components returned by t[:] are those of an expansion on a different basis:

sage: t.display()
t = x d/dx*dx + d/dx*dy + y d/dy*dx


Same thing for the vector w:

sage: w[:]
[-y, x]


agrees with

sage: w.display()
w = -y d/dx + x d/dy


while

sage: w[e_uv,:]
[v, -u]


agrees with

sage: w.display(e_uv)
w = v d/du - u d/dv

more

Thanks Eric, I understand now. As you said, it is not a mere substitution, it is also a change of basis. For a tensor T you have to multiply by $J^{-1}\cdot T\cdot J$ For a vector V you have to multiply by $J^{-1}\cdot V$ Where J is the Jacobian of uv_to_xy against u,v Thanks again. Daniel

( 2018-11-21 00:30:31 +0200 )edit