0
$\begingroup$

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):

enter image description here

seem to bear this out.

However, the graph for 11<=t<=13:

enter image description here

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"?

$\endgroup$
  • 5
    $\begingroup$ Reduce[520427/100000*Sin[529699/1000000*t] - Sin[2*Pi*t] == 0 && 0 <= t <= 100, t, Reals] // N with some reasonable bound on t might get you what you're after... $\endgroup$ – ciao Aug 8 '15 at 1:54
  • 2
    $\begingroup$ Or, NSolve[{5.20427*Sin[0.529699*t] == Sin[2*Pi*t] // Rationalize[#, 0] &, 0 <= t <= 100}, t] $\endgroup$ – Bob Hanlon Aug 8 '15 at 2:50
  • 1
    $\begingroup$ Thanks, @ciao and Bob! I had considered Rationalize'ing the equations, but thought that would make things worse, not better. Bob, your solution works even without Rationalize, though Mathematica auto-rationalizes with the warning message "Solve was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result.". If either of you would write this up as an answer, I'd be happy to accept it. $\endgroup$ – barrycarter Aug 8 '15 at 11:37
3
$\begingroup$

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]
$\endgroup$
1
$\begingroup$

The package RootSearch, by Ted Ersek, does what you need :

RootSearch[5.20427*Sin[0.529699*t] == Sin[2*Pi*t], {t, 0, 20}]

{
{t->0.},
{t->0.3249099866},
{t->5.978887138},
{t->11.61730758},
{t->12.13526959},
{t->12.2204946},
{t->17.93561673}
}

$\endgroup$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.