Help in Bessel functions overflow in Matlab

Hello Everyone,
I have a trouble about bessel function overflow in matlab. Does anyone have problem with bessel function overflow?
for example:
n=1078;
m1a= 431.2918;
x=(-1).*besselh(n,2,m1a);
than x return 4.9654e+286 -5.7074e+302i.
if n change to 1079;
than x return -inf.
Is there any solution to prevent the command "besselh" from overflowing? Because I want more data with higher n in besselh or besselj.
I really appreciate for your help,
Thank you,
Martin Chang

Réponses (1)

Walter Roberson
Walter Roberson le 18 Mai 2014

0 votes

You will need to switch to a higher precision toolbox such as the Symbolic Mathematics toolbox.

2 commentaires

martinyao
martinyao le 18 Mai 2014
Dear Roberson, Thanks for your answer.I have tried to use command "vpa" in Symbolic Mathematics toolbox. But the result is still inf.
For example,
n=1079;
m1a= 431.2918;
vpa x 500
x=(-1).*besselh(n,2,m1a);
x still return -inf.
Did I have a mistake in using the Symbolic Mathematics toolbox.? Or is it not your means?
Thank you , I really appreciate for your help.
Yes, the answer is still -Inf because you are doing a numeric computation. Symbolic Math Toolbox doesn't have a besselh function, so you just need to manually construct it using besselj and bessely for the real and imaginary components.
Try something like this instead:
syms Z v
Z = sym('431.2918');
v = sym('1079');
y = -1.*(besselj(v,Z) - 1i*bessely(v,Z));
vpa(y)
ans =
- 1.1772358960337809504005397055303e-307 - 2.7337988321687724066318412501641e303i

Connectez-vous pour commenter.

Catégories

Question posée :

le 17 Mai 2014

Commenté :

le 7 Jan 2015

Community Treasure Hunt

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

Start Hunting!

Translated by