|   | 1 |  initial version  | 
As the error message says, you must use set_inverse() to set the inverse by hand, because SageMath is not capable to invert the system automatically in this case. So you should run
spherical_to_Cartesian.set_inverse(sqrt(x^2+y^2+z^2), 
                                   atan2(sqrt(x^2+y^2), z),
                                   atan2(y, x))
Then you may write
Cartesian_to_spherical = spherical_to_Cartesian.inverse()
Cartesian_to_spherical.display()
the output of which is
r = sqrt(x^2 + y^2 + z^2)
th = arctan2(sqrt(x^2 + y^2), z)
ph = arctan2(y, x)
Note that you can add the optional parameter verbose=True to set_inverse in order for SageMath to check that the provided inverse is valid (the check consists in performing the coordinate transformation followed by its inverse, in both directions):
spherical_to_Cartesian.set_inverse(sqrt(x^2+y^2+z^2), 
                                   atan2(sqrt(x^2+y^2), z),
                                   atan2(y, x), verbose=True)
This results in
Check of the inverse coordinate transformation:
  r == abs(r)
  th == arctan2(abs(r)*sin(th), r*cos(th))
  ph == arctan2(r*cos(ph)*sin(th), r*sin(ph)*sin(th))
  x == y
  y == x
  z == z
As you can see, the check is not perfect, partly because you did not specify the range for the coordinate r, so that abs(r) could not be simplified. If you specify r:(0,+oo) while declaring sphericalChart, then you get:
Check of the inverse coordinate transformation:
  r == r
  th == arctan2(r*sin(th), r*cos(th))
  ph == arctan2(r*cos(ph)*sin(th), r*sin(ph)*sin(th))
  x == y
  y == x
  z == z
This is almost OK, except for some lack of simplification of the arctan2 function.
|   | 2 |  No.2 Revision  | 
As the error message says, you must use set_inverse() to set the inverse by hand, because SageMath is not capable to invert the system automatically in this case. So you should run
spherical_to_Cartesian.set_inverse(sqrt(x^2+y^2+z^2), 
                                   atan2(sqrt(x^2+y^2), z),
                                   atan2(y, x))
Then you may write
Cartesian_to_spherical = spherical_to_Cartesian.inverse()
Cartesian_to_spherical.display()
the output of which is
r = sqrt(x^2 + y^2 + z^2)
th = arctan2(sqrt(x^2 + y^2), z)
ph = arctan2(y, x)
Note that you can add the optional parameter verbose=True to set_inverse in order for SageMath to check that the provided inverse is valid (the check consists in performing the coordinate transformation followed by its inverse, in both directions):
spherical_to_Cartesian.set_inverse(sqrt(x^2+y^2+z^2), 
                                   atan2(sqrt(x^2+y^2), z),
                                   atan2(y, x), verbose=True)
This results in
Check of the inverse coordinate transformation:
  r == abs(r)
  th == arctan2(abs(r)*sin(th), r*cos(th))
  ph == arctan2(r*cos(ph)*sin(th), r*sin(ph)*sin(th))
  x == y
  y == x
  z == z
As you can see, the check is not perfect, partly because you did not specify the range for the coordinate r, so that abs(r) could not be simplified. If you specify r:(0,+oo) while declaring sphericalChart, then you get:
Check of the inverse coordinate transformation:
  r == r
  th == arctan2(r*sin(th), r*cos(th))
  ph == arctan2(r*cos(ph)*sin(th), r*sin(ph)*sin(th))
  x == y
  y == x
  z == z
This is almost OK, except for some lack of simplification of the arctan2 function.
PS: many examples of use of set_inverse() can be found in the $H^2$ example.
|   | 3 |  No.3 Revision  | 
As the error message says, you must use set_inverse() to set the inverse by hand, because SageMath is not capable to invert the system automatically in this case. So you should run
spherical_to_Cartesian.set_inverse(sqrt(x^2+y^2+z^2), 
                                   atan2(sqrt(x^2+y^2), z),
                                   atan2(y, x))
Then you may write
Cartesian_to_spherical = spherical_to_Cartesian.inverse()
Cartesian_to_spherical.display()
the output of which is
r = sqrt(x^2 + y^2 + z^2)
th = arctan2(sqrt(x^2 + y^2), z)
ph = arctan2(y, x)
Note that you can add the optional parameter verbose=True to set_inverse in order for SageMath to check that the provided inverse is valid (the check consists in performing the coordinate transformation followed by its inverse, in both directions):
spherical_to_Cartesian.set_inverse(sqrt(x^2+y^2+z^2), 
                                   atan2(sqrt(x^2+y^2), z),
                                   atan2(y, x), verbose=True)
This results in
Check of the inverse coordinate transformation:
  r == abs(r)
  th == arctan2(abs(r)*sin(th), r*cos(th))
  ph == arctan2(r*cos(ph)*sin(th), r*sin(ph)*sin(th))
  x == y
  y == x
  z == z
As you can see, the check is not perfect, partly because you did not specify the range for the coordinate r, so that abs(r) could not be simplified. If you specify r:(0,+oo) while declaring sphericalChart, then you get:
Check of the inverse coordinate transformation:
  r == r
  th == arctan2(r*sin(th), r*cos(th))
  ph == arctan2(r*cos(ph)*sin(th), r*sin(ph)*sin(th))
  x == y
  y == x
  z == z
This is almost OK, except for some lack of simplification of the arctan2 function.
PS: many examples of use of set_inverse() can be found in the $H^2$ hyperbolic plane example.
 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
 
                
                Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.