Skip to main content

curated data - How do I determine astronomical transit times?


Mathematica, through the "legacy" Scientific Astronomer package, used to have the ability to easily determine accurate transit times of astronomical objects simply, with Culmination[object, neardate]; but now lacks this feature. Is there a way to use AstronomicalData to do this?



Answer



This is not a full answer, but more a response to J.M.'s comment and provides a routine to calculate $\Delta T$ which was sitting on my hard disk. This is intended as a starting point for further calculations.



deltaT::usage = 
"deltaT[date] calculate the arithmetic difference, in seconds, \
between the Terrestrial Dynamical Time (TD) and the Universal \
Time(UT).\n ΔT = TD - UT is given in seconds.";
deltaT::yearx = "Invalid year.";

Options[deltaT] = {Method -> Interpolation};
deltaT[{y0_, m0_: 1, d0_: 1, h0_: 0, min0_: 0, s0_: 0},
opts : OptionsPattern[]] :=
Module[

{y = y0 + (m0 - 0.5)/12, u, ΔT, t, tab, meth},
(*from:http://eclipse.gsfc.nasa.gov/SEcat5/deltat.html*)
tab = {{-500, 17190}, {-400, 15530}, {-300, 14080}, {-200,
12790}, {-100, 11640}, {0, 10580}, {100, 9600}, {200,
8640}, {300, 7680}, {400, 6700}, {500, 5710}, {600, 4740}, {700,
3810}, {800, 2960}, {900, 2200}, {1000, 1570}, {1100,
1090}, {1200, 740}, {1300, 490}, {1400, 320}, {1500, 200}, {1600,
120}, {1700, 9}, {1750, 13}, {1800, 14}, {1850,
7}, {1900, -3}, {1950, 29}, {1955.`, 31.1`}, {1960.`,
33.2`}, {1965.`, 35.7`}, {1970.`, 40.2`}, {1975.`,

45.5`}, {1980.`, 50.5`}, {1985.`, 54.3`}, {1990.`,
56.9`}, {1995.`, 60.8`}, {2000.`, 63.8`}, {2005.`, 64.7`}};
meth = OptionValue[Method];
If[! MemberQ[{Interpolation, Polynomials}, meth],
meth = Interpolation];
If[meth === Interpolation,
If[-500 <= y0 <= 2005, ΔT =
Interpolation[tab, y],(*extrapolation beyond observed values*)
t = (y - 1820)/100;
ΔT = -20 + 32*t^2],

Which[y0 < -500, u = (y - 1820)/100;
ΔT = -20 + 32*u^2, -500 <= y0 <=
500,(*error not larger than 4 seconds*)u = y/100;
ΔT =
10583.6 - 1014.41*u + 33.78311*u^2 - 5.952053*u^3 -
0.1798452*u^4 + 0.022174192*u^5 + 0.0090316521*u^6,
500 < y0 <= 1600, u = (y - 1000)/100;
ΔT =
1574.2 - 556.01*u + 71.23472*u^2 + 0.319781*u^3 -
0.8503463*u^4 - 0.005050998*u^5 + 0.0083572073*u^6,

1600 < y0 <= 1700, t = y - 1600;
ΔT = 120 - 0.9808*t - 0.01532*t^2 + t^3/7129,
1700 < y0 <= 1800, t = y - 1700;
ΔT =
8.83 + 0.1603*t - 0.0059285*t^2 + 0.00013336*t^3 - t^4/1174000,
1800 < y0 <= 1860,
t = y - 1800; ΔT =
13.72 - 0.332447*t + 0.0068612*t^2 + 0.0041116*t^3 -
0.00037436*t^4 + 0.0000121272*t^5 - 0.0000001699*t^6 +
0.000000000875*t^7, 1860 < y0 <= 1900, t = y - 1860;

ΔT =
7.62 + 0.5737*t - 0.251754*t^2 + 0.01680668*t^3 -
0.0004473624*t^4 + t^5/233174, 1900 < y0 <= 1920, t = y - 1900;
ΔT = -2.79 + 1.494119*t - 0.0598939*t^2 +
0.0061966*t^3 - 0.000197*t^4, 1920 < y0 <= 1941, t = y - 1920;
ΔT =
21.20 + 0.84493*t - 0.076100*t^2 + 0.0020936*t^3,
1941 < y0 <= 1961, t = y - 1950;
ΔT = 29.07 + 0.407*t - t^2/233 + t^3/2547,
1961 < y0 <= 1986, t = y - 2000;

ΔT =
63.86 + 0.3345*t - 0.060374*t^2 + 0.0017275*t^3 +
0.000651814*t^4 + 0.00002373599*t^5, 1986 < y0 <= 2005,
t = y - 2000;
ΔT =
63.86 + 0.3345*t - 0.060374*t^2 + 0.0017275*t^3 +
0.000651814*t^4 + 0.00002373599*t^5, 2005 < y0 <= 2050,
t = y - 2000;
ΔT =
62.92 + 0.32217*t +

0.005589*
t^2,
(*This expression is derived from estimated values of ΔT in the years 2010 and 2050. The value for 2010 (66.9 seconds) is based on a linearly extrapolation from 2005 using 0.39 seconds/year (average from 1995 to 2005).The value for 2050 (93 seconds) is linearly extrapolated from 2010 using 0.66 seconds year (average rate from 1901 to 2000).*)
2050 < y0 <=
2150, ΔT = -20 + 32*((y - 1820)/100)^2 -
0.5628*(2150 -
y),
(*The last term is introduced to eliminate the discontinuity at 2050.*)
2150 < y0, u = (y - 1820)/100;
ΔT = -20 + 32*u^2, True, Message[deltaT::yearx]];

(*All values of ΔT based on Morrison and Stephenson[2004] assume a value for the Moon's secular acceleration of-26 arcsec/cy^2. However the ELP-2000 82 lunar ephemeris employed in the Canon uses a slightly different value of-25.858 arcsec/cy^2. Thus a small correction "c" must be added to the values derived from the polynomial expressions for ΔT before they can be used in the Canon c=-0.000012932*(y-1955)^2. Since the values of ΔT for the interval 1955 to 2005 were derived independent of any lunar ephemeris, no correction is needed for this period.*)
(*References Morrison, L.and Stephenson,F.R., "Historical Values of the Earth's Clock Error ΔT and the Calculation of Eclipses",J.Hist.Astron.,Vol .35 Part 3, August 2004,No .120,pp 327-336 (2004).Stephenson F.R and Houlden M.A., Atlas of Historical Eclipse Maps,Cambridge Univ.Press.,Cambridge, 1986.*)
];
ΔT
]

Comments

Popular posts from this blog

plotting - Plot 4D data with color as 4th dimension

I have a list of 4D data (x position, y position, amplitude, wavelength). I want to plot x, y, and amplitude on a 3D plot and have the color of the points correspond to the wavelength. I have seen many examples using functions to define color but my wavelength cannot be expressed by an analytic function. Is there a simple way to do this? Answer Here a another possible way to visualize 4D data: data = Flatten[Table[{x, y, x^2 + y^2, Sin[x - y]}, {x, -Pi, Pi,Pi/10}, {y,-Pi,Pi, Pi/10}], 1]; You can use the function Point along with VertexColors . Now the points are places using the first three elements and the color is determined by the fourth. In this case I used Hue, but you can use whatever you prefer. Graphics3D[ Point[data[[All, 1 ;; 3]], VertexColors -> Hue /@ data[[All, 4]]], Axes -> True, BoxRatios -> {1, 1, 1/GoldenRatio}]

plotting - Filling between two spheres in SphericalPlot3D

Manipulate[ SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, Mesh -> None, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], {n, 0, 1}] I cant' seem to be able to make a filling between two spheres. I've already tried the obvious Filling -> {1 -> {2}} but Mathematica doesn't seem to like that option. Is there any easy way around this or ... Answer There is no built-in filling in SphericalPlot3D . One option is to use ParametricPlot3D to draw the surfaces between the two shells: Manipulate[ Show[SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], ParametricPlot3D[{ r {Sin[t] Cos[1.5 Pi], Sin[t] Sin[1.5 Pi], Cos[t]}, r {Sin[t] Cos[0 Pi], Sin[t] Sin[0 Pi], Cos[t]}}, {r, 1, 2 - n}, {t, 0, Pi}, PlotStyle -> Yellow, Mesh -> {2, 15}]], {n, 0, 1}]

plotting - Mathematica: 3D plot based on combined 2D graphs

I have several sigmoidal fits to 3 different datasets, with mean fit predictions plus the 95% confidence limits (not symmetrical around the mean) and the actual data. I would now like to show these different 2D plots projected in 3D as in but then using proper perspective. In the link here they give some solutions to combine the plots using isometric perspective, but I would like to use proper 3 point perspective. Any thoughts? Also any way to show the mean points per time point for each series plus or minus the standard error on the mean would be cool too, either using points+vertical bars, or using spheres plus tubes. Below are some test data and the fit function I am using. Note that I am working on a logit(proportion) scale and that the final vertical scale is Log10(percentage). (* some test data *) data = Table[Null, {i, 4}]; data[[1]] = {{1, -5.8}, {2, -5.4}, {3, -0.8}, {4, -0.2}, {5, 4.6}, {1, -6.4}, {2, -5.6}, {3, -0.7}, {4, 0.04}, {5, 1.0}, {1, -6.8}, {2, -4.7}, {3, -1....