Solve for Roots of Bessel Function of First Kind

13 views (last 30 days)
I have this Bessel function that I am trying to solve for the roots qn. They are dependent upon alpha, which I was able to figure out. The literature sources I have are from the 80s and give me a simple table with 6 roots and alphas ranging from zero to infinity, but I need to be able to use this in my infinite summation model, so being able to solve for more would be useful.
Any help would be greatly appreaciated. I have downloaded the besselzero function so far, but don't know how to modify that to what I am trying to solve, with my modifications being external to the bessel function.
Thank you

Accepted Answer

Walter Roberson
Walter Roberson on 22 Feb 2021
syms q_n
alpha = 123.456;
eqn = alpha * q_n * besselj(0, q_n) + 2 * besselj(1, q_n) == 0
eqn = 
guess = sqrt(5)
guess = 2.2361
vpasolve(eqn, q_n, guess)
ans = 
2.4115338681268972484128947947434
fplot(lhs(eqn), [-5 5])
  2 Comments
Maressa Schulze
Maressa Schulze on 22 Feb 2021
Is there a way to write this to get multiple q's? I need to have q_1 to q_1000 for my work.
Thank you!
Walter Roberson
Walter Roberson on 22 Feb 2021
N = 100;
syms q_n
alpha = 123.456;
eqn = alpha * q_n * besselj(0, q_n) + 2 * besselj(1, q_n) == 0
eqn = 
sols = zeros(N, 1, 'sym');
for K = 1 : N
guess = K * pi;
sols(K) = vpasolve(eqn, q_n, guess);
end
vpa(sols,10)
ans = 

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!