How to solve the Warning: Unable to solve symbolically. Returning a numeric solution using vpasolve. of Bessel function
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jun Xiao
am 13 Mär. 2020
Beantwortet: Walter Roberson
am 13 Mär. 2020

I had used Matlab to solve the Bessel equation like this, but it came out that warning Warning: Unable to solve symbolically. Returning a numeric solution using vpasolve. But it should have the result. So may I ask it's there anyway to get the result?
Here's my code:
clc; clear all; close all;
syms a
n2 = 1;
n1 = 1.445;
y = n2/n1;
d = y.^2+1;
a1 = besselj(0,a);
c1= a1==0;
solve(c1,a);
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 13 Mär. 2020
The BesselJ function is an oscillating function that has an infinite number of zeros. There is no known closed form for the solutions for the equation, so solve() is not able to return a symbolic solution.
However I would also point out that you have used beselj(0,a) . That corresponds to
but the equation in the image is
which would correspond to besselj(1,a) rather than besselj(0,a)
What can you do? Well, you cannot find a useful symbolic solution for
. Numeric solutions exist, and you can approximate how far apart they are, but you cannot give a formula for them except in terms of infinite summations or infinite integrals.
vpasolve() can find numeric roots without complaining about it. Because there are an infinite number of roots, you should pass a starting point into vpasolve(), such as
vpasolve(besselj(1,a), 3)
vpasolve(besselj(1,a), 6)
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Bessel functions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!