Ask Your Question

Transformation of derivative under a change of chart

asked 2019-09-27 21:19:19 +0200

anonymous user


updated 2019-09-27 21:21:56 +0200

Consider the following code. When it display the connection coefficient in the Y frame at the end, we obtain derivative expressions that are quite complicated (for example derivative with respect to "r sin(\theta)". I would rather expect simpler expressions containing derivatives with respect to \lambda, \theta or r alone. Like what I would obtain by applying the "textbook" transformation rules for the partial derivatives.

M = Manifold(4, 'M', latex_name=r'\mathcal{M}')
X.<t,x,y,z> = M.chart()
U = M.open_subset('U', coord_def={X: (y!=0, x<0)})
X_U = X.restrict(U)
var('l', latex_name='\lambda')
Y.<t,l,th,r> = U.chart(r't:(0,+oo) l:(0,pi) th:(0,2*pi):\theta r:(0,+oo)')

Omega = var('Omega')
transit_Y_to_X = Y.transition_map(X_U, [t, r*cos(th)*cos(l+Omega*t), r*cos(th)*sin(l+Omega*t), r*sin(th)])
transit_Y_to_X.set_inverse(t, atan2(y, x) - Omega*t, atan2(z, sqrt(x^2+y^2)), sqrt(x^2+y^2+z^2))

nabla = M.affine_connection('nabla', r'\nabla') 
phi = M.scalar_field(function('Phi', latex_name='\Phi')(x, y, z), name='phi', latex_name='\phi')
e = X_U.frame()

nabla[1,0,0] = e[1](phi).expr()
nabla.display(coordinate_labels=False, only_nonredundant=True)

nabla.display(frame=Y.frame(), chart=Y, coordinate_labels=False, only_nonredundant=True)
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2019-09-27 22:41:00 +0200

eric_g gravatar image

You can use

Manifold.options.textbook_output = False

Then $\mathrm{D}_0 \Phi$ stands for $\frac{\partial \Phi}{\partial x}$, etc.

See here for details about the display options.

edit flag offensive delete link more


Thanks, but this is not exactly what I want. From what I can understand, this option gives the same result, except that the notation is a bit more awkward.

What I want is to transform the nabla that contain derivative wrt x y z to an expression for nabla with derivatives wrt lambda theta and r. I do not want derivative with respect to complicated expression like $\dfrac{\partial (...) }{\partial ( r \sin \theta)}$.

In theory, this could be done using the standard transformation rule for partial derivative , i.e something of the form

$$ \frac{\partial }{\partial \tilde{x}^i} = \frac{\partial x^j}{\partial \tilde{x}^i } \frac{\partial }{\partial x_j} $$

Is there something equivalent in sage for the transformation of connection coefficient ?

CD gravatar imageCD ( 2019-09-28 20:21:05 +0200 )edit

I am not sure to understand what you want exactly. The $\mathrm{D}_0\Phi$ notation gets rid of expressions like $\partial/\partial(r\sin\theta)$. I agree that the Pynac notation $\mathrm{D}_0\Phi$ is not standard mathematical notation and that $\partial\Phi/\partial x$ would be preferable here. I am afraid there is no simple way to achieve this in SageMath, since symbolic functions, as defined with function(), do not have the notion of given names (e.g. x, y, z) for their arguments.

eric_g gravatar imageeric_g ( 2019-09-30 15:16:16 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2019-09-27 21:19:19 +0200

Seen: 146 times

Last updated: Sep 27 '19