bessel functions

10 vues (au cours des 30 derniers jours)
aaa le 7 Juin 2012
Réponse apportée : Imad le 20 Mai 2014
Hi,
I am trying to write a code to calculate the bessel functions of the first kind. The equation is given here: http://en.wikipedia.org/wiki/Bessel_function#Bessel_functions_of_the_first_kind_:_J.CE.B1
I also have the following code:
beta = 4;
alpha = 1;
iteration = 3;
format long
for m = 1:iteration
J(m) = (((-1)^m)/(factorial(m)*gamma(m+alpha+1)))*(beta/2)^(2*m+alpha);
end
out = sum(J)
However, when i compare my results with the built in function besselj, I cannot get the same result. Unfortunately, I cannot see where I am going wrong.
All assistance is appreciated.
tia
0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Réponse acceptée

aaa le 11 Juin 2012
I have solved this issue. I should have started the iterations at 0 instead of 1.
0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Plus de réponses (3)

Honglei Chen le 8 Juin 2012
The iteration should go to infinity but yours stop at 3.
In fact, this kind of implementation has another numerical issue, see the notes below from factorial's reference page
Since double precision numbers only have about 15 digits, the answer is only accurate for n <= 21. For larger n, the answer will have the right magnitude, and is accurate for the first 15 digits.
2 commentairesAfficher AucuneMasquer Aucune
aaa le 8 Juin 2012
hmm, i probably should have not left it at 3. However, I found that after any number greater than 8 for the number of iterations, produces the same result, so i'm not sure if an infinite sum is needed for an approximation.
Are you saying that for iteration < 21, the answer should still be accurate for the first 15 digits? for my needs, this is more than enough, but i found that even for iteration = 10, that the answer is significantly different than when i use the besselj( ) function call.
Honglei Chen le 8 Juin 2012
This is indeed the equation but I'm sure there are programming tricks to get around the numerical issue. I personally don't know what they are, but looks to me the brute force approach will hit the wall very soon due to numerical issues.

Connectez-vous pour commenter.

aaa le 8 Juin 2012
I want to also add that i tried to use the
doc besselj
and then formula that was presented there. However, I still do not get the same result as besselj(), but I do get the same result as the formula i initially used.
0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Hi I am trying to develop a script for Bessel functions for a given data set to determine modes of vibrations in pipes. My project is Flow induced vibrations in pipes, My geometry is a 90 degree mitred pipe section. I have to determine the point in the elbow where circumferential modes change to lateral mode once the flow has changed direction at the 90 degree section. I have got my pressure fluctuation data out of computational fluid dynamics and imposed in Ansys structural. Now I have two types of data,
Frequency vs magnitude for fluid fluctuating pressure Displacement values for structure against time and their frequency vs magnitude using FFT
I am stuck at Bessel functions. I am trying to develop a script in Matlab for my data so that I can get mode shapes for different sections of pipe. I do not understand how to use my data from structural and apply Bessel functions on it so that I can see which section of pipe is undergoing which mode shape. This is my first time with Bessels. Can you help. Regards,
0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Catégories

En savoir plus sur Bessel functions dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by