5

I need an efficient way to numerically find the first $n$ positive roots $\lambda_n$ of the transcendental equation

$$ \dfrac{J_0 (\lambda_n r) Y_1 (\lambda_n) - J_1 (\lambda_n) Y_0 (\lambda_n r)}{J_0 (\lambda_n r) Y_0 (\lambda_n) - J_0 (\lambda_n) Y_0 (\lambda_n r)} = \dfrac{\delta}{\lambda_n}$$

where $\delta$ is a constant.

I have tried newtzero and chebfun in MATLAB. They are both taking longer than I'd like. The roots are needed for the solution of a PDE (transient heat transfer in one spatial dimension) with time varying boundary conditions using eigenfunction expansions. If anyone knows of a technique to determine the roots even a little faster, it would be much appreciated. Thank you.

Luis Costa
  • 181
  • 3
  • How long is it taking? Also, what is the size of the system you are solving? – Charles Jul 10 '17 at 16:46
  • 4
    Using Newton's method with reasonable first guesses is probably the best method here: the lhs is almost periodic and always decreasing, the rhs is decreasing, and the equation is really well suited for it. You can get a good first guess by using an asymptotic approximation for the lhs, so perhaps that might be worth trying. – Kirill Jul 10 '17 at 16:56
  • 1
    As @Kirill mentioned, you can use an asymptotic expansion of your left-hand side, or you could use an asymptotic expansion of your differential equation, as mentioned in a previous question of mine. For the 1D eigenvalue problem you could also use Finite Difference Methods. – nicoguaro Jul 10 '17 at 17:38
  • @Kirill Thank you for the suggestion. An asymptotic expansion of the LHS seems like a great way to get initial guesses. – Luis Costa Jul 10 '17 at 17:49
  • @nicoguaro I expect FDM to be more costly in getting the same accuracy as eigenfunction expansion. Is that not your experience? – Luis Costa Jul 10 '17 at 17:49
  • @Kirill one last question... Since I can take analytical derivatives of my function would using a higher order Householder method (Newton being 1st order) lead to increased performance? Usually it's not advisable when only numerical derivatives are available since the computation to determine the derivative is more expensive than the benefit of the higher order method. – Luis Costa Jul 10 '17 at 18:39
  • 1
    I obtained a similar expression recently when computing the vibration modes of a cone. For some choice of parameters it was better to use FDM due to computation of the Bessel functions (in SciPy). – nicoguaro Jul 10 '17 at 18:48
  • 2
    @LuisCosta It could happen with complicated functions that the number of iterations saved by using a higher-order method may or may not outweigh the extra cost of evaluating the more complicated functions—you wouldn't really know without testing. (The higher order only helps asymptotically, and if you only have floating-point doubles it might not matter.) – Kirill Jul 10 '17 at 19:12
  • @Kirill I am trying to do something similar to the OP - how do I go about finding the (multiple) first guesses for the roots using asymptotic expansions? – Dipole Apr 12 '18 at 18:25
  • @Jack In this question the l.h.s. was piecewise monotonically decreasing on every interval between the roots of the denominator. So you could roughly figure out where the singularities are, using Bessel function asymptotics for that (the plot looks a little like $-\tan x$ here), and use midpoints as guesses. It's very problem-specific, you'd be better off asking a separate question I think. – Kirill Apr 12 '18 at 18:51
  • @Kirill Thanks. If you have time please see https://scicomp.stackexchange.com/questions/29287/finding-the-first-n-roots-of-transcendental-equation – Dipole Apr 12 '18 at 19:38

0 Answers0