To help with https://astronomy.stackexchange.com/questions/11456/ I'm trying to find all numerical solutions to:
5.20427*Sin[0.529699*t] == Sin[2*Pi*t]
Since the period of the first function is 11.8618, I would expect to see 2 answers per period, or about one answer for every length 5.9309 interval.
At first, the graphs of these functions (for 0<=t<=12):
seem to bear this out.
However, the graph for 11<=t<=13:
shows the situation can be much worse, with two "extra" nearly equal solutions in addition the "expected" solution.
Is there any good way to find all numerical solutions, including these "corner cases"?
Answer
NSolve (or Reduce as pointed out by @ciao in the comments above) will find all solutions in a specified interval
$Version
"10.2.0 for Mac OS X x86 (64-bit) (July 7, 2015)"
NSolve[{5.20427*Sin[0.529699*t] == Sin[2*Pi*t], 0 <= t <= 100}, t]
{{t -> 0.}, {t -> 0.32491}, {t -> 5.97889}, {t -> 11.6173}, {t -> 12.1353}, {t -> 12.2205}, {t -> 17.9356}, {t -> 23.5697}, {t -> 29.8887}, {t -> 35.5261}, {t -> 41.1833}, {t -> 41.4872}, {t -> 41.8327}, {t -> 47.4839}, {t -> 53.1234}, {t -> 53.6101}, {t -> 53.7428}, {t -> 59.4409}, {t -> 65.075}, {t -> 71.3945}, {t -> 77.0312}, {t -> 82.6919}, {t -> 82.9743}, {t -> 83.3401}, {t -> 88.9889}, {t -> 94.6297}, {t -> 95.0909}, {t -> 95.2589}}
In some Mathematica versions there will be a warning message, e.g.,
$Version
"10.0 for Mac OS X x86 (64-bit) (June 29, 2014)"
NSolve[{5.20427*Sin[0.529699*t] == Sin[2*Pi*t], 0 <= t <= 100}, t]
Solve::ratnz: Solve was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result. >>
{{t -> 0.}, {t -> 0.32491}, {t -> 5.97889}, {t -> 11.6173}, {t -> 12.1353}, {t -> 12.2205}, {t -> 17.9356}, {t -> 23.5697}, {t -> 29.8887}, {t -> 35.5261}, {t -> 41.1833}, {t -> 41.4872}, {t -> 41.8327}, {t -> 47.4839}, {t -> 53.1234}, {t -> 53.6101}, {t -> 53.7428}, {t -> 59.4409}, {t -> 65.075}, {t -> 71.3945}, {t -> 77.0312}, {t -> 82.6919}, {t -> 82.9743}, {t -> 83.3401}, {t -> 88.9889}, {t -> 94.6297}, {t -> 95.0909}, {t -> 95.2589}}
This warning can be avoided by using Rationalize
NSolve[{5.20427*Sin[0.529699*t] == Sin[2*Pi*t] // Rationalize[#, 0] &,
0 <= t <= 100}, t]


Comments
Post a Comment