![]() | 1 | initial version |
Hi all.
I think I have found an answer, but it is not a "happy" one. The crucial issue was with the line
transit_H_to_X = transit_Y_to_X * transit_H_to_Y
which works but provides a result that depends on sin(θ)
rather than fully simplifying and providing a result that depends on sin(θ_)
(the θ_
variable is my name for the 'variable with a hat' θ_ = r*θ
.
While that result is formally correct, it is insufficiently simplified, and the later plot
command crashes because of this insufficient simplification.
Here is the full running code after manually introducing the transition rather than relying on SageMath to calculate the transition:
from sage. All import *
from IPython.display import display, Math, Latex
%display latex
M = Manifold(4, 'M', latex_name=r'\mathcal{M}', structure='Lorentzian')
X.<t,x,y,z> = M.chart()
U = M.open_subset('U', coord_def={X: (y!=0, x<0)})
X_U = X.restrict(U)
display(Latex(f'$X_U = {latex(X_U)}$'))
Y.<t,r,th,ph> = U.chart(r't:(-oo,+oo) r:(0,+oo) th:(0,+pi):\theta ph:(0,2*pi):\phi')
transit_Y_to_X = Y.transition_map(X, [
t, r*sin(th)*cos(ph), r*sin(th)*sin(ph), r*cos(th)
])
transit_Y_to_X.set_inverse(
t, sqrt(x^2+y^2+z^2), arccos(z/sqrt(x^2+y^2+z^2)), atan2(y,x)
)
H.<t,r,th_,ph_> = U.chart(r't:(-oo,+oo) r:(0,+oo) th_:(0,+oo):\hat{θ} ph_:(0,+oo):\hat{φ}')
transit_H_to_Y = H.transition_map(Y, [
t, r, th_/r, ph_/(r*sin(th))
])
transit_Y_to_H = transit_H_to_Y.inverse()
transit_Y_to_H.display()
# transit_H_to_X = transit_Y_to_X * transit_H_to_Y
display((transit_Y_to_X * transit_H_to_Y).display())
transit_H_to_X = H.transition_map(X, [
t,
r*sin(th_/r)*cos(ph_/(r*sin(th_/r))),
r*sin(th_/r)*sin(ph_/(r*sin(th_/r))),
r*cos(th_/r),
])
display(transit_H_to_X)
display(transit_H_to_X.display())
transit_H_to_X.set_inverse(
t,
sqrt(x^2+y^2+z^2),
sqrt(x^2+y^2+z^2)*arccos(z/sqrt(x^2+y^2+z^2)),
sqrt(x^2+y^2+z^2)*sin(arccos(z/sqrt(x^2+y^2+z^2)))*atan2(y,x)
)
transit_X_to_H = transit_H_to_X.inverse()
display(transit_X_to_H)
display(transit_X_to_H.display())
H.plot(chart=X,
ambient_coords=(x,y,z), fixed_coords={t:0},
ranges={r:(1,1.1), th_:(1.1,1.2), ph_:(1.1,1.2)}, number_values=3,
)
Thanks for viewing and advice, especially @max_alekseyev.
GPN