I'm trying to get a list of dates and times of the vernal equinox for the last 30 years (or some other time interval). I'm flailing about and really have gotten nowhere. When I've tried typing vernal equinox followed by Ctrl+=, it returns the date and time of the current vernal equinox. Actually, it converts my input into that date and time. I'd like to be able to get a list of a bunch of those dates, but really don't know how to start. Ultimately, I want to graph them over some number of years and see what it looks like.
1 Answer
$\begingroup$
$\endgroup$
2
Here's a quick-and-dirty way to roughly reckon out dates for the vernal and autumnal equnoxes, based on the fact that the solar declination should be zero at those points:
Block[{$TimeZone = "Zulu"},
{tmin, tmax} =
AbsoluteTime /@ {DatePlus[DateObject[{2018, 3, 20}], Quantity[-10, "Years"]],
DateObject[{2018, 3, 21}]};
decPlot = Plot[QuantityMagnitude[Last[SunPosition[DateObject[t],
CelestialSystem -> "Equatorial"]]],
{t, tmin, tmax}, Mesh -> {{0}}, MeshFunctions -> {#2 &},
MeshStyle -> {}]]
equinoxes = Sort[Cases[Normal[decPlot], Point[{x_, y_}] :> x, ∞]]
Block[{$TimeZone = "Zulu"},
GatherBy[DateString /@ equinoxes, DateValue[#, "Month"] &]]
{{"Thu 20 Mar 2008 05:50:46", "Fri 20 Mar 2009 11:29:56", "Sat 20 Mar 2010 18:43:46",
"Sun 20 Mar 2011 23:22:50", "Tue 20 Mar 2012 05:16:46", "Wed 20 Mar 2013 11:04:17",
"Thu 20 Mar 2014 17:27:34", "Fri 20 Mar 2015 23:45:52", "Sun 20 Mar 2016 04:32:45",
"Mon 20 Mar 2017 10:32:21", "Tue 20 Mar 2018 16:18:20"},
{"Mon 22 Sep 2008 15:42:34", "Tue 22 Sep 2009 20:18:07", "Thu 23 Sep 2010 02:42:48",
"Fri 23 Sep 2011 08:55:06", "Sat 22 Sep 2012 14:44:34", "Sun 22 Sep 2013 20:41:21",
"Tue 23 Sep 2014 01:43:04", "Wed 23 Sep 2015 08:21:23", "Thu 22 Sep 2016 14:05:43",
"Fri 22 Sep 2017 19:59:57"}}
where the dates in March are vernal equinoxes, and the dates in September are autumnal equinoxes.
If need be, one can then use FindRoot[]
for a refined estimate of the equinox date:
declination[t_?NumericQ] :=
QuantityMagnitude[Last[SunPosition[DateObject[t], CelestialSystem -> "Equatorial"]]]
Block[{$TimeZone = "Zulu"},
DateString[t /. FindRoot[declination[t],
{t, AbsoluteTime["19 Mar 2018 23:59:59"],
AbsoluteTime["21 Mar 2018 23:59:59"]}]]]
"Tue 20 Mar 2018 16:18:14"
-
$\begingroup$ Far more than I was originally looking for, but extremely interesting. This opens up a number of things I did not know about. $\endgroup$ Commented Mar 21, 2018 at 13:08
-
$\begingroup$ Of course, these are only estimates; I find that they can be off by a few minutes or hours from USNO's calculations. I'm not sure where the source of discrepancy is, tho. $\endgroup$ Commented Mar 21, 2018 at 13:16
== vernal equinox 1900
and so on for each year... or make a list. $\endgroup$WolframAlpha[ "vernal equinox " <> IntegerString[#], {{"Result", 1}, "FormattedData"}] & /@ Range[1990, 2018]
, but it is slow. This is probably a good source. $\endgroup$WolframAlpha["vernal equinox " <> ToString[#], "WolframResult"] & /@ Range[1990, 2018]
$\endgroup$