6
$\begingroup$

I'm not really sure if I'm doing something wrong, or if there's a problem with some of the Mathematica curated data on stars.

My problem is this: I'm trying to find the location (latitude and longitude) on earth where a given star is directly overhead. I get a location which is very close to correct, but it's usually off by 10+ arcseconds. An example is given here:

Clear@"Global`*"
time = TimeObject[{0, 0, 0}, TimeZone -> 0];
date = DateObject[{2000, 1, 1}, 
  time]; (* date and time are specified for repeatability *)
gast = UnitConvert[SiderealTime[GeoPosition[{0, 0}], date], "Degrees"];
star = Entity["Star", "Sirius"];
starLocation = StarData[star, {"RightAscension", "Declination"}];
starGroundPosition = 
 GeoPosition[
  UnitConvert[#, "Degrees"] & /@ {starLocation[[2]],
     starLocation[[1]] - gast}];
StarData[star, 
 EntityProperty["Star", 
  "Altitude", {"Location" -> starGroundPosition, "Date" -> date}]]

The output of this code should be exactly 90 degrees (it's a test case for my debugging). Instead, Mathematica gives me a result of 89 degrees, 59 arcminutes, 48 arcseconds.

While it might be a bit unrealistic to expect this to result in exactly 90 degrees, I really do need the error to be less than one arcsecond, which isn't unreasonable.

Is there something I'm doing which is lowering the precision of the Mathematica data, or is the Mathematica data really that inaccurate?


After some thought, I've come up with a simple way to get the actual position I was originally looking for:

Clear@"Global`*"
time = TimeObject[{0, 0, 0}, TimeZone -> 0];
date = DateObject[{2000, 1, 1}, 
   time]; (* date and time are specified for repeatability *)
gast = UnitConvert[SiderealTime[GeoPosition[{0, 0}], date], "Degrees"];
starLocation = StarData["Sirius", {"RightAscension", "Declination"}];
starGroundPosition = 
 GeoPosition[
  UnitConvert[#, "Degrees"] & /@ {StarData["Sirius", "Declination"], 
    StarData["Sirius", "RightAscension"] - gast}]
error = Quantity[90, "Degrees"] - 
  StarData[star, 
   EntityProperty["Star", 
    "Altitude", {"Location" -> starGroundPosition, "Date" -> date}]]
errorDir = 
 StarData[star, 
  EntityProperty["Star", 
   "Azimuth", {"Location" -> starGroundPosition, "Date" -> date}]]
nComp = error*Cos[errorDir]
eComp = error*Sin[errorDir]
nPos = GeoPosition[
  UnitConvert[#, "Degrees"] & /@ {StarData["Sirius", "Declination"] + 
     nComp, StarData["Sirius", "RightAscension"] - gast + eComp}]
StarData[star, 
 EntityProperty["Star", 
  "Altitude", {"Location" -> nPos, "Date" -> date}]]

where nPos is the actual position of the location where the star is overhead. It's not entirely accurate: in this case it gives me an altitude of 89 degrees, 59.99 arcminutes, but that's close enough for what I need.

Unless people think that my code answers the question, I'm going to leave this open, because I don't think my original answer should have given me any error, and it's not clear to me why the original code didn't give the correct answer in the first place.

$\endgroup$
  • $\begingroup$ I wonder if there's something strange with the coordinate systems going on. Possibly related: (80767) $\endgroup$ – Michael Seifert Jul 7 '15 at 21:17
  • $\begingroup$ Perhaps there's something similar going on to (80767), but since this is done entirely in Mathematica, I would think that it should give me the appropriate answer (with respect to itself). Furthermore, I picked the date Jan 1st, 2000 since most of the models use that as a starting point. Really, it doesn't matter (to me) how the Mathematica computed data matches up to real-world observations, but I'd expect calculations done and compared in Mathematica to agree, and they don't. $\endgroup$ – Michael Witt Jul 7 '15 at 21:33
  • $\begingroup$ See also astronomy.stackexchange.com/questions/13126 $\endgroup$ – barrycarter Jan 14 '16 at 22:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.