# Why am I getting RootSearch::numb:

I'm using Ersek's RootSearch Package to find roots of function Nwes[t] which contains variables β[t], φ[t], γ][t] that were evaluated by NDSolve. However RootSearch fails to return any roots and gives a message:

RootSearch::numb: RootSearch took a number of inital samples and at each sample point the function sampled did not evaluate to a numeric value.

I dont understand why I got this message and how it occured that sample points dont have their numeric values.

My tries were:

• increase InitialSamples variable 10 times to 3000

• All input was treated with N[] function to assure it's numeric (EDIT: however Nwes and eqs had originally machine-precision)

• checked that there exist roots in given range

Whole code:

eqs = {1. Sin[φ[t]] +
0.03504358287544395 Sin[γ[t] - 1. φ[t]] Derivative[
1][γ][t]^2 +
0.31395122075073245 Cos[β[t] -
1. φ[t]] (β^′′)[t] +
0.35557468770802175 (φ^′′)[t] ==
0.31395122075073245 Sin[β[t] - 1. φ[t]] Derivative[
1][β][t]^2 +
4.303069289595211*^-18 Sin[γ[t] - 1. φ[t]] Derivative[
1][γ][t] Derivative[1][φ][t] +
0.03504358287544395 Cos[γ[t] -
1. φ[t]] (γ^′′)[t],4.739130434782608 Sin[β[
t]] + (1. Cos[φ[t]] Sin[β[t]] -
1. Cos[β[t]] Sin[φ[t]]) Derivative[1][φ][
t]^2 + 1.0082125603864733 (β^′′)[t] +
1. Cos[β[t]] Cos[φ[t]] (φ^′′)[
t] + 1. Sin[β[t]] Sin[φ[
t]] (φ^′′)[t] ==
0., (1. Cos[φ[t]] Sin[γ[t]] -
1. Cos[γ[t]] Sin[φ[t]]) Derivative[1][φ][
t]^2 + 1. Cos[γ[t]] Cos[φ[
t]] (φ^′′)[t] +
1. Sin[γ[t]] Sin[φ[t]] (φ^′′)[
t] == 18.391451068616426 Sin[γ[t]] +
1.142857142857143 (γ^′′)[t]};
Subscript[φ, start] = 0.7853981633974483096;

ic1 = {φ[0] == Subscript[φ, start], φ'[0] == 0};

ic2 = {γ[0] == 0, γ'[0] == 0};
ic3 = {β[0] == -(Pi/2), β'[0] == 0};
Nwes[t_] =0.48309178743961356 Csc[φ[
t]] (39.43705641300001 Sin[φ[t]] -
266.5071770107747 Sin[φ[t]] (1. Cos[φ[t]] +
1. Sin[φ[t]] +
14.006711409395976 Sin[β[t] - φ[t]] Derivative[
1][β][t]^2 -
14.006711409395976 Cos[β[t] - φ[
t]] (β^′′)[t] -
13.89261744966443 (φ^′′)[
t]) (1. Cos[φ[t]] + 1. Sin[φ[t]] -
0.15903539639826123 (φ^′′)[t]) +
0.28451556 Cos[φ[t]] (83.40832395950507 +
1.142857142857143 Sin[γ[t]] Derivative[1][γ][t]^2 -
1. Sin[φ[t]] Derivative[1][φ][t]^2 -
1.142857142857143 Cos[γ[t]] (γ^′′)[t] +
1. Cos[φ[t]] (φ^′′)[t]) +
0.28451556 Sin[φ[t]] (83.40832395950507 -
1.142857142857143 Cos[γ[t]] Derivative[1][γ][t]^2 +
1. Cos[φ[t]] Derivative[1][φ][t]^2 -
1.142857142857143 Sin[γ[t]] (γ^′′)[t] +
1. Sin[φ[t]] (φ^′′)[t]));

SetDirectory[NotebookDirectory[]];
Get["RootSearch.m"];

sol = NDSolve[{eqs, ic1, ic2, ic3}, {φ, γ, β}, {t, 0,
2.2}];
ErsekRootSearchRootSearch[Evaluate[Nwes[t] /. sol] == 0, {t, 0, 2.2},InitialSamples -> 3000]

• It seems the problem is that you are using invalid syntax for the second derivative. Instead of ([Beta]^[Prime][Prime])[t] use D[[Beta][t], {t, 2}]. Instead of ([CurlyPhi]^[Prime][Prime])[t] use D[[CurlyPhi][t], {t, 2}]. Instead of ([Gamma]^[Prime][Prime])[t] use D[[Gamma][t], {t, 2}]. Let us know if you still have problems after correcting that, Feb 12, 2017 at 21:41
• Thank you for RootSearch. Formatting on my PC was good, just this site processed it unwell - I checked it. When I ve done all that @MarcoB bulleted the "numb" error was over. However not all roots were found. So I replaced all my derivatives to form of this D[] function and it aint helped also (as if it was that what you meant). Feb 13, 2017 at 21:22
• Some modern alternatives to RootSearch[] can be found here. Apr 13, 2017 at 6:35

A few problems here, some of which may have come from copy/pasting code:

1. The derivative should be indicated with φ''[t] and NOT (φ^′′)[t]; the latter does not have a meaning. This should be changed in both your equation and in your Nwes expression.
2. You should define Nwes using SetDelayed (i.e. :=) instead of Set (=), so its value is recalculated each time a different value of t is assigned.
3. NDSolve returns a list of solutions; you just need the first component of that list when substituting back in Nwes, i.e. First[sol].

Once those changes are applied, RootSearch does work, although to a point:

ErsekRootSearchRootSearch[Evaluate[Nwes[t] /. First@sol] == 0, {t, 0, 2.2}]

{{t -> 0.685516}, {t -> 1.24982}, {t -> 1.37817},
{t -> 1.52045}, {t -> 1.81702}, {t -> 1.87851}}


Errors are still returned, involving precision issues. You may be better off replacing the machine precision numbers in your equations with arbitrary precision ones, as you probably had before running N on your expressions.

• Thank you for the answer. However not all roots were found at first. After many attempts it occured that if I set value of [CurlyPhi]start with 9 or sometimes 10 digits of precision (and I musnt use N[] function for that) I can receive all roots. The remaining input could have in fact any reasonable precision and it would not affect the number of roots returned. Feb 13, 2017 at 21:42
• ......I dont know what arbitrary precision is good. I think this the case of RootTest option. I also noticed that those roots which are harder to find have very sharp ("steep") curve at their location. Feb 13, 2017 at 21:53