Re: solving a periodic function
- To: mathgroup at smc.vnet.net
- Subject: [mg114005] Re: solving a periodic function
- From: Fred Klingener <gigabitbucket at BrockEng.com>
- Date: Sat, 20 Nov 2010 06:14:36 -0500 (EST)
- References: <ic34rb$5s7$1@smc.vnet.net>
On Nov 18, 7:06 am, Michael Stern <nycst... at gmail.com> wrote: > I have a fun little puzzle that I solved via other methods, but would > like to know if there might have been a more elegant method via > Mathematica. > > I wanted to figure out the times during the day at which the hour hand > and minute hand of a clock line up perfectly. I worked in terms of "unit > time", in which the 12 hours of the clock are represented as ranging > from 0 to 1. It is then easy to arrive at To get a grip on what was going on (and maybe because DateList takes seconds at the end to cast the answer in {HH,MM,SS}), I started by calculating the hand positions in radians clockwise from 12 as a function of seconds past midnight: hourHandPosition[t_] := (2 Pi/12) t/( 60 60) minuteHandPosition[t_] := (2 Pi/60) Mod[t/60, 60] Plot[{hourHandPosition[t], minuteHandPosition[t]}, {t, 0, 12 60 60}] Solve can handle this in the following form, getting times when hour and minute hand are coincident, trying first for a solution in the Rationals: sols = Solve[hourHandPosition[t] == minuteHandPosition[t], t, Rationals]; and it gives answers in the form 43200 (n - 1) / 11, {n, 0, 11} The {HH, MM, SS} form can be constructed as follows (using now NSolve to generate forms that fit DateList): Drop[#, 3] & /@ DateList /@ (t /. NSolve[hourHandPosition[t] == minuteHandPosition[t], t, Reals]) // TableForm 0 0 0. 1 5 27.2727 2 10 54.5455 3 16 21.8182 4 21 49.0909 5 27 16.3636 6 32 43.6364 7 38 10.9091 8 43 38.1818 9 49 5.45455 10 54 32.7273 The case where the hands are opposed is Drop[#, 3] & /@ DateList /@ (t /. NSolve[hourHandPosition[t] == minuteHandPosition[t] + Pi, t, Reals]) // TableForm 6 0 0. 7 5 27.2727 8 10 54.5455 9 16 21.8182 10 21 49.0909 11 27 16.3636 12 32 43.6364 13 38 10.9091 14 43 38.1818 15 49 5.45455 16 54 32.7273 , which would match your array if I Mod[]ed the hours and sorted. > > p.s. the solutions are evenly spaced at the following times > { > {"12:32:43.6364"}, > {"1:38:10.9091"}, > {"2:43:38.1818"}, > {"3:49:5.45455"}, > {"4:54:32.7273"}, > {"6:00:00."}, > {"7:5:27.2727"}, > {"8:10:54.5455"}, > {"9:16:21.8182"}, > {"10:21:49.0909"}, > {"11:27:16.3636"} > > } I frankly don't know why the ___Solves don't work on unstraightness[t]==0, but maybe there's a clue in the fact that something like this works: Drop[#,3]&/@ DateList/@ (12 3600 t/. Table[ FindRoot[ unstraightness[t]==0 ,{t, j/12} ] ,{j,1,11} ] )//TableForm Fred Klingener