How to find all roots of an equation?

In[162]:= b = 1;

In[163]:= Df = 0.05;

In[164]:= r0 = 0.02;

In[165]:= rx = 2;

In[166]:= m = 0.05;

In[167]:= jrmax = 5.6*10^(-7);

In[168]:= k = 2.5;

In[169]:= v0 =  1;

In[170]:= S = 1.4*10^(-8);

In[171]:= cs0 = S/m

Out[171]= 2.8*10^-7

In[172]:= t = 0.008

Out[172]= 0.008

In[173]:= R0 = r0/Sqrt[Df*b/m]

Out[173]= 0.02

In[174]:= Rx = rx/Sqrt[Df*b/m]

Out[174]= 2.

In[175]:= Cs0 = cs0/cs0

Out[175]= 1.

In[176]:= T = t/(r0^2/Df)

Out[176]= 1.

In[177]:= Rr =  r0*k/(b*Df)

Out[177]= 1.

In[178]:= Rv =  r0*v0/(b*Df)

Out[178]= 0.4

In[179]:= Jrmax = jrmax/(r0*S)

Out[179]= 2000.

In[180]:= h1 =  Rv/R0

Out[180]= 20.

In[181]:= h2 = Rv/Rx

Out[181]= 0.2

In[182]:= (*characteristic root*)

In[188]:= eq1 = ((h1 + (1 - Rv/2)/R0)*
      BesselY[Rv/2, \[Lambda] R0] + \[Lambda]*
      BesselY[Rv/2 - 1, \[Lambda] R0])*((h2 + (1 - Rv/2)/Rx)*
      BesselJ[Rv/2, \[Lambda]*Rx] +
     \[Lambda]*
      BesselJ[Rv/2 - 1, \[Lambda]*Rx]) - ((h1 + (1 - Rv/2)/R0)* 
      BesselJ[Rv/2, \[Lambda]*R0] +
     \[Lambda]*BesselJ[Rv/2 - 1, \[Lambda] R0])*((h2 + (1 - Rv/2)/Rx)*
      BesselY[Rv/2, \[Lambda]*Rx] +
     \[Lambda]*BesselY[Rv/2 - 1, \[Lambda] Rx])

Out[188]= (\[Lambda] BesselJ[-0.8, 2. \[Lambda]] + 
    0.6 BesselJ[0.2, 2. \[Lambda]]) (\[Lambda] BesselY[-0.8, 
      0.02 \[Lambda]] + 
    60. BesselY[0.2, 0.02 \[Lambda]]) - (\[Lambda] BesselJ[-0.8, 
      0.02 \[Lambda]] + 
    60. BesselJ[0.2, 0.02 \[Lambda]]) (\[Lambda] BesselY[-0.8, 
      2. \[Lambda]] + 0.6 BesselY[0.2, 2. \[Lambda]])

Find all roots of eq1.

Hi Jaques

You could do this by iteration using the fact that three successive roots have closely the same distance.

Below the code to find the first 20 positive roots:

r1 = \\[Lambda] /. FindRoot[eq1 == 0, {\\[Lambda], 1}];

r2 = \\[Lambda] /. FindRoot[eq1 == 0, {\\[Lambda], 2}];


roots = Join[{r1, r2}, 
   Table[r = 2 r2 - r1; r1 = r2; 
    r2 = \\[Lambda] /. FindRoot[eq1 == 0, {\\[Lambda], r}], {20}]];

Plot[eq1, {\\[Lambda], 0, 35},  Epilog -> {Red, Point[{#, 0}] & /@ roots}]

Best Regards
Robert

(1) Copying and pasting line by line is tedious. Supplying only the input, sans In[…]=, is preferred.

(2) It can be solved if the variable is restricted to a finite range.

NSolve[{eq1 == 0, -10 <= \[Lambda] <= 10}, \[Lambda]]

(* Out[26]= {{\[Lambda] -> -8.76828}, {\[Lambda] -> -7.16348}, \
{\[Lambda] -> -3.96149}, {\[Lambda] -> -2.38046}, {\[Lambda] -> \
-0.901317}, {\[Lambda] -> 0.901317}, {\[Lambda] -> 
   2.38046}, {\[Lambda] -> 3.96149}, {\[Lambda] -> 
   7.16348}, {\[Lambda] -> 8.76828}} *)

Hi Daniel,

NSolve[eq1 == 0,  \\[Lambda]]

Did not work, now I am aware that it is possible to specify additional conditions.
Thank you.

In[214]:= eq3 = NSolve[{eq1 == 0, 0 < [Lambda] < 100}, [Lambda]]

Out[214]= {{\[Lambda] -> 0.901317}, {\[Lambda] -> 
   2.38046}, {\[Lambda] -> 3.96149}, {\[Lambda] -> 
   7.16348}, {\[Lambda] -> 8.76828}, {\[Lambda] -> 
   10.3734}, {\[Lambda] -> 11.9785}, {\[Lambda] -> 
   13.5832}, {\[Lambda] -> 15.1875}, {\[Lambda] -> 
   16.7915}, {\[Lambda] -> 18.3949}, {\[Lambda] -> 
   19.9979}, {\[Lambda] -> 21.6003}, {\[Lambda] -> 
   23.2024}, {\[Lambda] -> 24.8039}, {\[Lambda] -> 
   26.405}, {\[Lambda] -> 28.0056}, {\[Lambda] -> 
   29.6057}, {\[Lambda] -> 31.2055}, {\[Lambda] -> 
   32.8047}, {\[Lambda] -> 34.4036}, {\[Lambda] -> 
   36.002}, {\[Lambda] -> 37.6001}, {\[Lambda] -> 
   39.1977}, {\[Lambda] -> 40.795}, {\[Lambda] -> 
   42.392}, {\[Lambda] -> 43.9885}, {\[Lambda] -> 
   45.5848}, {\[Lambda] -> 47.1807}, {\[Lambda] -> 
   48.7762}, {\[Lambda] -> 50.3715}, {\[Lambda] -> 
   51.9665}, {\[Lambda] -> 53.5612}, {\[Lambda] -> 
   55.1557}, {\[Lambda] -> 56.7499}, {\[Lambda] -> 
   58.3438}, {\[Lambda] -> 59.9375}, {\[Lambda] -> 
   61.531}, {\[Lambda] -> 63.1242}, {\[Lambda] -> 
   64.7172}, {\[Lambda] -> 66.3101}, {\[Lambda] -> 
   67.9027}, {\[Lambda] -> 69.4951}, {\[Lambda] -> 
   71.0874}, {\[Lambda] -> 72.6795}, {\[Lambda] -> 
   74.2714}, {\[Lambda] -> 75.8632}, {\[Lambda] -> 
   77.4548}, {\[Lambda] -> 79.0463}, {\[Lambda] -> 
   80.6376}, {\[Lambda] -> 82.2288}, {\[Lambda] -> 
   83.8198}, {\[Lambda] -> 85.4108}, {\[Lambda] -> 
   87.0016}, {\[Lambda] -> 88.5923}, {\[Lambda] -> 
   90.1828}, {\[Lambda] -> 91.7733}, {\[Lambda] -> 
   93.3637}, {\[Lambda] -> 94.954}, {\[Lambda] -> 
   96.5441}, {\[Lambda] -> 98.1342}, {\[Lambda] -> 99.7242}}