Difference between revisions of "BesselJ0"
m (Text replacement - "\$([^\$]+)\$" to "\\(\1\\)") |
|||
(One intermediate revision by one other user not shown) | |||
Line 3: | Line 3: | ||
[[File:BesselY0J0J1plotT060.png|500px|thumb| |
[[File:BesselY0J0J1plotT060.png|500px|thumb| |
||
[[Explicit plot]] of [[BesselY0]] (red), [[BesselJ1]] (green) and [[BesselJ0]] (blue)]] |
[[Explicit plot]] of [[BesselY0]] (red), [[BesselJ1]] (green) and [[BesselJ0]] (blue)]] |
||
− | [[File:Besselj0map1T080.png|right|500px|thumb| |
+ | [[File:Besselj0map1T080.png|right|500px|thumb|\(u+\mathrm i v=\mathrm{BesselJ}_0 (x+\mathrm i y)\)]] |
− | '''BesselJ0''' called also the '''[[Bessel function]] of zero order''' and also |
+ | '''BesselJ0''' called also the '''[[Bessel function]] of zero order''' and also \(J_0\), is [[entire function]], solution of equation |
− | : |
+ | : \( \!\!\!\!\!\!\!\!\!\! (1) \displaystyle ~ ~ ~ |
J_0''(z)+ |
J_0''(z)+ |
||
J_0'(z)/z+ |
J_0'(z)/z+ |
||
− | J_0(z)=0 |
+ | J_0(z)=0 \) |
− | : |
+ | : \( \!\!\!\!\!\!\!\!\!\! (2) \displaystyle ~ ~ ~ J_0(0)=1 ~, ~~ J_0'(0)=0\) |
− | [[Complex map]] of function BesselJ0 is shown in figure at right. The short notation |
+ | [[Complex map]] of function BesselJ0 is shown in figure at right. The short notation \(J_0=\mathrm{BesselJ0}\) is also valid. |
==Integral representation== |
==Integral representation== |
||
− | : |
+ | : \( \!\!\!\!\!\!\!\!\!\! (3) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(z)= |
\frac{1}{\pi}\int_0^\pi \cos\!\big( z \cos (t) \big)~ \mathrm d t |
\frac{1}{\pi}\int_0^\pi \cos\!\big( z \cos (t) \big)~ \mathrm d t |
||
+ | \) |
||
− | $ |
||
==Symmetry== |
==Symmetry== |
||
+ | |||
+ | The BesselJ0 is real-holomorphic, |
||
+ | |||
⚫ | |||
+ | |||
The BesselJ0 is symmetric function, |
The BesselJ0 is symmetric function, |
||
+ | |||
− | : |
+ | : \( \!\!\!\!\!\!\!\!\!\! (5) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(-z)= \mathrm{BesselJ}_0(z)\) |
− | In particular, |
||
⚫ | |||
==Expansion at zero== |
==Expansion at zero== |
||
The straightforward Taylor expansion at zero can be written as follows: |
The straightforward Taylor expansion at zero can be written as follows: |
||
− | : |
+ | : \( \!\!\!\!\!\!\!\!\!\! (6) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(z)= |
\sum_{n=0}^{\infty} |
\sum_{n=0}^{\infty} |
||
\frac{ (-z^2/4)^n } |
\frac{ (-z^2/4)^n } |
||
Line 36: | Line 40: | ||
+\frac{z^4}{64} |
+\frac{z^4}{64} |
||
-\frac{z^6}{2304}+ ... |
-\frac{z^6}{2304}+ ... |
||
+ | \) |
||
− | $ |
||
− | The series converges in the whole complex plane and, at the complex(double) arithmetics, gives of order of dozen significant figures at least for |
+ | The series converges in the whole complex plane and, at the complex(double) arithmetics, gives of order of dozen significant figures at least for \(|z|\!<\!20\); it is sufficient to keep few tens of terms in the expansion. For larger values of the argument, the expansion below can be used. |
==Expansion at infinity== |
==Expansion at infinity== |
||
Line 44: | Line 48: | ||
Expansion at large vales of the argument can be written as follows: |
Expansion at large vales of the argument can be written as follows: |
||
− | : |
+ | : \( \!\!\!\!\!\!\!\!\!\! (8) \displaystyle ~ ~ ~ J_0(z) \approx |
\sqrt{\frac{2}{\pi z}} \cos\!\left(z-\frac{\pi}{4}\right) \left( 1 - \frac{9}{128 z^2}+ ..\right) |
\sqrt{\frac{2}{\pi z}} \cos\!\left(z-\frac{\pi}{4}\right) \left( 1 - \frac{9}{128 z^2}+ ..\right) |
||
+ | \) \(+\) \(\displaystyle |
||
− | + |
||
\sqrt{\frac{2}{\pi z}} \sin\!\left(z-\frac{\pi}{4}\right) \frac{1}{8z}\left( 1 - \frac{75}{128 z^2}+ ..\right) |
\sqrt{\frac{2}{\pi z}} \sin\!\left(z-\frac{\pi}{4}\right) \frac{1}{8z}\left( 1 - \frac{75}{128 z^2}+ ..\right) |
||
+ | \) |
||
− | $ |
||
− | |||
[[Mathematica]] allows to calculate a dozen of term of this expansion; they can be extracted also from the [[complex(double)]] implementation [[Besselj0.cin]]. |
[[Mathematica]] allows to calculate a dozen of term of this expansion; they can be extracted also from the [[complex(double)]] implementation [[Besselj0.cin]]. |
||
+ | |||
+ | ==Amplitude and phase== |
||
+ | |||
+ | Another expansion represents BesselJ0 in terms of its amplitude and phase <ref>http://www.cl.cam.ac.uk/~jrh13/papers/bessel.pdf |
||
+ | John Harrison. Fast and Accurate Bessel Function Computation. |
||
+ | </ref>: |
||
+ | |||
+ | \(J_0(x) = \displaystyle |
||
+ | \frac{2}{\pi x} A(x) \, \cos(x-\pi/4+\Phi(x))\) |
||
+ | |||
+ | \(A(x)\approx 1-\frac{1}{16 x^2}+\frac{53}{512 x^4}-\frac{4447}{8192 x^6} |
||
+ | +\frac{3066403}{524288x^8} |
||
+ | -\frac{896631415}{8388608 x^{10}} |
||
+ | +\frac{796754802993}{268435456 x^{12}} |
||
+ | +..\) |
||
+ | |||
+ | \(\Phi(x)\approx \frac{-1}{8x}+\frac{25}{384 x^3} |
||
+ | -\frac{1073}{5120 x^5} |
||
+ | +\frac{375733}{229376 x^7} |
||
+ | -\frac{55384775}{2359296 x^9} |
||
+ | +\frac{24713030909}{46137344 x^{11}} |
||
+ | +..\) |
||
+ | |||
+ | Coefficients of the expansions above can be calculated and verified with the [[Mathematica]] code below: |
||
+ | <poem> |
||
+ | sL[x_] = Normal[Series[Log[HankelH1[0, x] Sqrt[Pi I x/2]], {x, Infinity, 16}]] |
||
+ | sLr[x_] = Expand[(sL[x] + sL[-x])/2] |
||
+ | sLi[x_] = Expand[(sL[x] - sL[-x])/2/I] |
||
+ | sLA[x_] = Normal[Series[HankelH1[0, x] Sqrt[Pi I x/2] Exp[-I sLi[x]], {x, Infinity, 16}]] |
||
+ | Plot[{Re[HankelH1[0, x]], Re[sLA[x] Sqrt[2/(Pi I x)] Exp[I sLi[x]]]}, {x,1,21}] |
||
+ | Plot[{10^15 (sLA[x] Sqrt[2/(Pi x)] Cos[- Pi/4 + sLi[x]] - BesselJ[0,x])}, {x,18,29}, AspectRatio -> .3, GridLines -> {{20}, {}}] |
||
+ | </poem> |
||
+ | The precision of corresponding approximation of [[BesselJ0]]\((x)\) reaches the machine precision at \(x>20\). |
||
+ | |||
+ | The asymptotic expansions for [[BesselJ0]] diverge, but are useful for precise evaluation of [[BesseoJ0[[\((z)\) at \(|z|>20\), giving of order of 16 significant figures. |
||
==Behavior along the real axis== |
==Behavior along the real axis== |
||
− | Along the real axis, BesselJ0 oscillates (like other [[Bessel]] functions). The zeros of are denoted with |
+ | Along the real axis, BesselJ0 oscillates (like other [[Bessel]] functions). The zeros of are denoted with \(j_{0,n}\); where \(n\) is supposed to be positive integer. The [[WebMatematica]] offers the on-line service to evaluate these zeros |
<ref> |
<ref> |
||
http://cose.math.bas.bg/webMathematica/webComputing/BesselZeros.jsp |
http://cose.math.bas.bg/webMathematica/webComputing/BesselZeros.jsp |
||
Line 63: | Line 101: | ||
: 11.79153443901428 |
: 11.79153443901428 |
||
: 14.93091770848779 |
: 14.93091770848779 |
||
+ | |||
+ | In [[C++]], zeros of the Bessel function can be implemented with the code beginning with |
||
+ | <poem><nomathjax><nowiki> |
||
+ | #include<stdio.h> |
||
+ | #include<math.h> |
||
+ | #define DB double |
||
+ | DB jnp(int n,DB x){ return .5*( jn(n-1,x)-jn(n+1,x) ) ; } // Derivative of n th Bessel |
||
+ | DB jnz(int v, int k){ DB x,t; t=M_PI*(k+.5*v-.25); x= t - (v*v-.25)*.5/t; |
||
+ | x-= jn(v,x)/jnp(v,x); // Newton adjustment of the root |
||
+ | x-= jn(v,x)/jnp(v,x); |
||
+ | x-= jn(v,x)/jnp(v,x); |
||
+ | return x; } // the k th zero of v th Bessel |
||
+ | </nowiki></nomathjax></poem> |
||
==Integral properties== |
==Integral properties== |
||
Line 72: | Line 123: | ||
S.F.Yu. School of Electrical & Electronic Engineering, Nanyang Technological University.Singapore. |
S.F.Yu. School of Electrical & Electronic Engineering, Nanyang Technological University.Singapore. |
||
</ref> in the following form: |
</ref> in the following form: |
||
− | : |
+ | :\( \displaystyle \int_0^W ~ J_0(s_p r)~ j_0(s_q r) ~r~ \mathrm d r = \delta_{p,q} \frac{W^2}{2} J_0'(s_p W)^2\) |
− | : |
+ | :\( \displaystyle \int_0^W ~ J_0(s r_q)~ j_0(s r_p) ~r~ \mathrm d r = \delta_{p,q} \frac{S^2}{2} J_0'(S\, r_p )^2\) |
− | : |
+ | :\( r_{2n+1}=W ~ ~ , ~ ~ s_{n+1}=S\) |
− | : |
+ | :\( \zeta_{2n+1}=SW\) |
That needs to be somehow interpreted. |
That needs to be somehow interpreted. |
||
==Numerical implementation== |
==Numerical implementation== |
||
+ | |||
+ | The numerical implementation of BesselJ0 can be extracted from description of figure http://mizugadro.mydns.jp/t/index.php/File:Besselj0map1T080.png |
||
+ | |||
+ | In [[Mathematica]], BesselJ0\((z)\) can be calculated with the built-in function, BesselJ[0,z] . |
||
+ | |||
+ | For real values of the argument, in [[C++]], there is built-in function j0 that evaluates \(J_0\). |
||
==Application== |
==Application== |
Latest revision as of 18:25, 30 July 2019
BesselJ0 called also the Bessel function of zero order and also \(J_0\), is entire function, solution of equation
- \( \!\!\!\!\!\!\!\!\!\! (1) \displaystyle ~ ~ ~ J_0''(z)+ J_0'(z)/z+ J_0(z)=0 \)
- \( \!\!\!\!\!\!\!\!\!\! (2) \displaystyle ~ ~ ~ J_0(0)=1 ~, ~~ J_0'(0)=0\)
Complex map of function BesselJ0 is shown in figure at right. The short notation \(J_0=\mathrm{BesselJ0}\) is also valid.
Integral representation
- \( \!\!\!\!\!\!\!\!\!\! (3) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(z)= \frac{1}{\pi}\int_0^\pi \cos\!\big( z \cos (t) \big)~ \mathrm d t \)
Symmetry
The BesselJ0 is real-holomorphic,
- \( \!\!\!\!\!\!\!\!\!\! (4) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(z^*)= \mathrm{BesselJ}_0(z)^*\)
The BesselJ0 is symmetric function,
- \( \!\!\!\!\!\!\!\!\!\! (5) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(-z)= \mathrm{BesselJ}_0(z)\)
Expansion at zero
The straightforward Taylor expansion at zero can be written as follows:
- \( \!\!\!\!\!\!\!\!\!\! (6) \displaystyle ~ ~ ~ \mathrm{BesselJ}_0(z)= \sum_{n=0}^{\infty} \frac{ (-z^2/4)^n } {\mathrm{Factorial}(n)^2} = 1 -\frac{z^2}{4} +\frac{z^4}{64} -\frac{z^6}{2304}+ ... \)
The series converges in the whole complex plane and, at the complex(double) arithmetics, gives of order of dozen significant figures at least for \(|z|\!<\!20\); it is sufficient to keep few tens of terms in the expansion. For larger values of the argument, the expansion below can be used.
Expansion at infinity
Expansion at large vales of the argument can be written as follows:
- \( \!\!\!\!\!\!\!\!\!\! (8) \displaystyle ~ ~ ~ J_0(z) \approx \sqrt{\frac{2}{\pi z}} \cos\!\left(z-\frac{\pi}{4}\right) \left( 1 - \frac{9}{128 z^2}+ ..\right) \) \(+\) \(\displaystyle \sqrt{\frac{2}{\pi z}} \sin\!\left(z-\frac{\pi}{4}\right) \frac{1}{8z}\left( 1 - \frac{75}{128 z^2}+ ..\right) \)
Mathematica allows to calculate a dozen of term of this expansion; they can be extracted also from the complex(double) implementation Besselj0.cin.
Amplitude and phase
Another expansion represents BesselJ0 in terms of its amplitude and phase [1]:
\(J_0(x) = \displaystyle \frac{2}{\pi x} A(x) \, \cos(x-\pi/4+\Phi(x))\)
\(A(x)\approx 1-\frac{1}{16 x^2}+\frac{53}{512 x^4}-\frac{4447}{8192 x^6} +\frac{3066403}{524288x^8} -\frac{896631415}{8388608 x^{10}} +\frac{796754802993}{268435456 x^{12}} +..\)
\(\Phi(x)\approx \frac{-1}{8x}+\frac{25}{384 x^3} -\frac{1073}{5120 x^5} +\frac{375733}{229376 x^7} -\frac{55384775}{2359296 x^9} +\frac{24713030909}{46137344 x^{11}} +..\)
Coefficients of the expansions above can be calculated and verified with the Mathematica code below:
sL[x_] = Normal[Series[Log[HankelH1[0, x] Sqrt[Pi I x/2]], {x, Infinity, 16}]]
sLr[x_] = Expand[(sL[x] + sL[-x])/2]
sLi[x_] = Expand[(sL[x] - sL[-x])/2/I]
sLA[x_] = Normal[Series[HankelH1[0, x] Sqrt[Pi I x/2] Exp[-I sLi[x]], {x, Infinity, 16}]]
Plot[{Re[HankelH1[0, x]], Re[sLA[x] Sqrt[2/(Pi I x)] Exp[I sLi[x]]]}, {x,1,21}]
Plot[{10^15 (sLA[x] Sqrt[2/(Pi x)] Cos[- Pi/4 + sLi[x]] - BesselJ[0,x])}, {x,18,29}, AspectRatio -> .3, GridLines -> {{20}, {}}]
The precision of corresponding approximation of BesselJ0\((x)\) reaches the machine precision at \(x>20\).
The asymptotic expansions for BesselJ0 diverge, but are useful for precise evaluation of [[BesseoJ0[[\((z)\) at \(|z|>20\), giving of order of 16 significant figures.
Behavior along the real axis
Along the real axis, BesselJ0 oscillates (like other Bessel functions). The zeros of are denoted with \(j_{0,n}\); where \(n\) is supposed to be positive integer. The WebMatematica offers the on-line service to evaluate these zeros [2]; a thousand of zeros can be evaluated within few seconds. In particular, the first 5 values are
- 2.404825557695773
- 5.520078110286311
- 8.653727912911011
- 11.79153443901428
- 14.93091770848779
In C++, zeros of the Bessel function can be implemented with the code beginning with
#include<stdio.h>
#include<math.h>
#define DB double
DB jnp(int n,DB x){ return .5*( jn(n-1,x)-jn(n+1,x) ) ; } // Derivative of n th Bessel
DB jnz(int v, int k){ DB x,t; t=M_PI*(k+.5*v-.25); x= t - (v*v-.25)*.5/t;
x-= jn(v,x)/jnp(v,x); // Newton adjustment of the root
x-= jn(v,x)/jnp(v,x);
x-= jn(v,x)/jnp(v,x);
return x; } // the k th zero of v th Bessel
Integral properties
The orthogonality properties for the zero-th Bessel is suggested [3] in the following form:
- \( \displaystyle \int_0^W ~ J_0(s_p r)~ j_0(s_q r) ~r~ \mathrm d r = \delta_{p,q} \frac{W^2}{2} J_0'(s_p W)^2\)
- \( \displaystyle \int_0^W ~ J_0(s r_q)~ j_0(s r_p) ~r~ \mathrm d r = \delta_{p,q} \frac{S^2}{2} J_0'(S\, r_p )^2\)
- \( r_{2n+1}=W ~ ~ , ~ ~ s_{n+1}=S\)
- \( \zeta_{2n+1}=SW\)
That needs to be somehow interpreted.
Numerical implementation
The numerical implementation of BesselJ0 can be extracted from description of figure http://mizugadro.mydns.jp/t/index.php/File:Besselj0map1T080.png
In Mathematica, BesselJ0\((z)\) can be calculated with the built-in function, BesselJ[0,z] .
For real values of the argument, in C++, there is built-in function j0 that evaluates \(J_0\).
Application
The Bessel function appear at the consideration of wave equations with circular symmetry.
References
- ↑ http://www.cl.cam.ac.uk/~jrh13/papers/bessel.pdf John Harrison. Fast and Accurate Bessel Function Computation.
- ↑ http://cose.math.bas.bg/webMathematica/webComputing/BesselZeros.jsp
- ↑ http://www.scribd.com/doc/62046269/29/A-5-Bessel-Transform-and-Discrete-Bessel-Transform ANALYSIS AND DESIGN OF VERTICAL CAVITY SURFACE EMITTING LASERS. WILEY SERIES IN LASERS AND APPLICATIONS. D. R. VIJ, Editor, Kurukshetra University. S.F.Yu. School of Electrical & Electronic Engineering, Nanyang Technological University.Singapore.