Question: Finding roots of a complex trigonometric expression

I have the following trigonometric expression:

detA:= -(-((-16*cosh(beta*`ℓ`*xi[2])*sinh(beta*`ℓ`)+16*sinh(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`))*sinh(beta*xi[1]*`ℓ`)+(-16*sin(beta*`ℓ`*xi[2])*cos(beta*`ℓ`)+16*cos(beta*`ℓ`*xi[2])*sin(beta*`ℓ`))*sin(beta*xi[1]*`ℓ`)-(16*(-sin(beta*`ℓ`*xi[2])*sin(beta*`ℓ`)+cosh(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`)-sinh(beta*`ℓ`*xi[2])*sinh(beta*`ℓ`)-cos(beta*`ℓ`*xi[2])*cos(beta*`ℓ`)))*(cos(beta*xi[1]*`ℓ`)-cosh(beta*xi[1]*`ℓ`)))*sin(beta*`ℓ`*xi[2])+16*cos(beta*`ℓ`*xi[2])*((sin(beta*`ℓ`*xi[2])*sin(beta*`ℓ`)-cosh(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`)+sinh(beta*`ℓ`*xi[2])*sinh(beta*`ℓ`)+cos(beta*`ℓ`*xi[2])*cos(beta*`ℓ`))*sin(beta*xi[1]*`ℓ`)+(sin(beta*`ℓ`*xi[2])*cos(beta*`ℓ`)-cos(beta*`ℓ`*xi[2])*sin(beta*`ℓ`))*(cos(beta*xi[1]*`ℓ`)-cosh(beta*xi[1]*`ℓ`))))*sinh(beta*`ℓ`*xi[2])+16*cosh(beta*`ℓ`*xi[2])*((sin(beta*`ℓ`*xi[2])*sin(beta*`ℓ`)-cosh(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`)+sinh(beta*`ℓ`*xi[2])*sinh(beta*`ℓ`)+cos(beta*`ℓ`*xi[2])*cos(beta*`ℓ`))*sinh(beta*xi[1]*`ℓ`)+(sinh(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`)-cosh(beta*`ℓ`*xi[2])*sinh(beta*`ℓ`))*(cos(beta*xi[1]*`ℓ`)-cosh(beta*xi[1]*`ℓ`)))*sin(beta*`ℓ`*xi[2])-(16*(cos(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`*xi[2])-1))*((sin(beta*`ℓ`*xi[2])*cos(beta*`ℓ`)-cos(beta*`ℓ`*xi[2])*sin(beta*`ℓ`))*sinh(beta*xi[1]*`ℓ`)+sin(beta*xi[1]*`ℓ`)*(sinh(beta*`ℓ`*xi[2])*cosh(beta*`ℓ`)-cosh(beta*`ℓ`*xi[2])*sinh(beta*`ℓ`)))

where:

xi1_val:= 0.05:
xi2_val:= 0.10:
ell_val:= 12:

I want to determine the roots "beta[1]..beta[N]" of this expression. For this, I have tried:

evalf(subs([xi[1] = xi1_val, xi[2] = xi2_val, `ℓ` = ell_val], detA)):
sol_beta:= Student[Calculus1][Roots](%, 1e-5..15);

which yields:

sol_beta:= [10.4719755]

However, I'm pretty sure there is another root before this, as we can see by the plot of the function:

plot(subs([xi[1] = xi1_val, xi[2] = xi2_val, `ℓ` = ell_val], detA), beta = 5.2..5.3,
    axes = boxed,
    gridlines = true,
    labels = [typeset(beta), typeset(`det A`)],
    size = [0.5,0.5]
    );

it is clear that there is a root about beta = 5.2359, which is not captured by "Roots" function.

Can someone help me build an algorythm that will get all roots wihtin a given interval? Particularly, I need it to be an efficient routine, because I will later vary parameters "xi[1]" and "xi[2]" and make a surface with the solutions. So I will run it several times.

Please Wait...