# How to get the Roots of nonlinear equations

How to get the Roots of nonlinear equations.

nu=326.531
Plot[(I*m1)*Tanh[I*m1] - nu, {m1, -1, 30}]


How to get the first ten positive roots

and i have tried that when the nu is bigger,then the root is more difficult to find

for example i have found from the plot taht the first positive root is about 1.5,but when i use

FindRoot[(I*m1)*Tanh[I*m1] - nu, {m1, 1.5}]


i get

{m1 -> 7.95108}


so how to get the first ten positive roots and when the nu is 500,1000 or bigger?

You could use RootSearch. For instance:

Module[{nu = 1000, sols},
sols = RootSearch[(I*m1)*Tanh[I*m1] == nu, {m1, 0, 100}, PrecisionGoal -> 20];
Max[Abs[(I*m1)*Tanh[I*m1] - nu /. sols]]
]
(* 0.*10^-14 *)


Assuming 0<m1<100 NSolve evaluates all real solutions:

 sol[nu_] := NSolve[{(I m1)*Tanh[I m1] == nu, 0 < m1 < 100} , m1, Reals]


for example

 sol
(*{{m1 -> 1.56937}, {m1 -> 4.70768}, {m1 -> 7.84614}, {m1 ->10.9846},
{m1 -> 14.123}, {m1 -> 17.2668}, {m1 -> 20.4}, {m1 ->23.5384},
{m1 -> 26.6724}, {m1 -> 29.8153}, {m1 -> 32.9538}, {m1 ->36.0962},
{m1 -> 39.2307}, {m1 -> 42.3692}, {m1 ->45.5076}, {m1 -> 48.6461},
{m1 -> 51.7822}, {m1 -> 54.9072}, {m1 ->58.0615}, {m1 -> 61.1999},
{m1 -> 64.3384}, {m1 ->67.4769}, {m1 -> 70.6299}, {m1 -> 73.7549},
{m1 -> 76.8923}, {m1 ->80.0308}, {m1 -> 83.1692}, {m1 -> 86.3077},
{m1 ->89.4462}, {m1 -> 92.5847}, {m1 -> 95.7231}, {m1 -> 98.8616}}*)

• these are all great.answers and thanks a lot,but these all can't run in lower versions. – dcydhb Jan 19 '19 at 13:37
• @ dcydhb NSolve-version runs with Mathematica v9 ! – Ulrich Neumann Jan 19 '19 at 13:44
nu = 326.531 // Rationalize;

expr = I*m1*Tanh[I*m1] - nu

(* -(326531/1000) - m1 Tan[m1] *)


The first ten positive roots are

sol10 = Solve[{expr == 0, 0 < m1 < 100}, m1][[1 ;; 10]];


The exact solutions are Root objects, e.g.,

sol10[]

{m1 -> Root[{326531/1000 + #1 Tan[#1] &, 1.57562162484059191385}]}


Their approximate numeric values are

m1a = m1 /. sol10 // N

(* {1.57562, 4.72686, 7.8781, 11.0293, 14.1806, 17.3318, 20.483, 23.6342,
26.7854, 29.9366} *)

Plot[expr, {m1, -1, 30},
MaxRecursion -> 10,
Epilog -> {Red, AbsolutePointSize,
Tooltip[Point[{#, 0}], #] & /@ m1a},
PlotRange -> {-500, 100}] • these are all great.answers and thanks a lot,but these all can't run in lower versions. – dcydhb Jan 19 '19 at 13:38
• Edit your question to include stating the version that you are using and which of the commands included in the answers does not work with your version. – Bob Hanlon Jan 19 '19 at 13:45