天天看點

Bessel 函數在matlab和Scipy 中的差別貝塞爾函數的數學表達形式!

貝塞爾函數的數學表達形式!

1、matlab 中,貝塞爾函數的表達形式

他山之石——參考連結

2、python中,貝塞爾函數的表達形式

他山之石——參考連結

在python中的兩種貝塞爾函數的表達形式!

(1) scipy.special.jn

Bessel 函數在matlab和Scipy 中的差別貝塞爾函數的數學表達形式!

基本用法

from scipy import special as sp
# sp.jn(v,z)
# sp.jv(v,z)
# 發現兩種用法的結果是一樣的!
'''
parameters: 
	v: orders   (datatype: float)
	z: argument (datetype: float or complex)
return:
	J: value of the Bessel function $J_{v}(z)$
'''
           

數學表達式:

J v ( z ) = exp ⁡ ( v π r / 2 ) I v ( − ı z ) ( J z > 0 ) J v ( z ) = exp ⁡ ( − v π ı / 2 ) I v ( ı z ) ( J z < 0 ) \begin{aligned} J_{v}(z)=\exp (v \pi r / 2) I_{v}(-\imath z) & &(\mathrm{J} z>0) \\ J_{v}(z)=\exp (-v \pi \imath / 2) I_{v}(\imath z) & &(\mathfrak{J} z<0) \end{aligned} Jv​(z)=exp(vπr/2)Iv​(−ız)Jv​(z)=exp(−vπı/2)Iv​(ız)​​(Jz>0)(Jz<0)​

J − v ( z ) = J v ( z ) cos ⁡ ( π v ) − Y v ( z ) sin ⁡ ( π v ) J_{-v}(z)=J_{v}(z) \cos (\pi v)-Y_{v}(z) \sin (\pi v) J−v​(z)=Jv​(z)cos(πv)−Yv​(z)sin(πv)

其中, I v I_{v} Iv​ 為修正貝塞爾函數; Y v ( z ) Y_{v}(z) Yv​(z)為第二類貝塞爾函數!

(2) scipy.special.spherical_jn

Bessel 函數在matlab和Scipy 中的差別貝塞爾函數的數學表達形式!

數學表達式:

j n ( z ) = π 2 z J n + 1 / 2 ( z ) j_{n}(z)=\sqrt{\frac{\pi}{2 z}} J_{n+1 / 2}(z) jn​(z)=2zπ​

​Jn+1/2​(z)

其中, J n J_{n} Jn​是第一類貝塞爾函數。

rerf0

reff1

reff2

from scipy import special as sp
# sp.spherical_jn(v,z)
'''
parameters: 
	v: orders   (datatype: float)
	z: argument (datetype: float or complex)
return:
	J: value of the Bessel function $J_{v}(z)$
'''
           

通過對比上述結果發現,(1)和(2)之間相差的是公式 j n ( z ) = π 2 z J n + 1 / 2 ( z ) j_{n}(z)=\sqrt{\frac{\pi}{2 z}} J_{n+1 / 2}(z) jn​(z)=2zπ​

​Jn+1/2​(z)。 也就是說,方式(1)中的貝塞爾函數是Jz(v, z);方式(2)中的 球 \color{red}{球} 球貝塞爾函數,數學上乘以 π 2 z \sqrt{\frac{\pi}{2 z}} 2zπ​

​,将變量 v v v修改為 v + 1 / 2 v+1/2 v+1/2,即得到與球貝塞爾函數scipy.special.spherical_jn(v,z)一樣的結果!

Bessel 函數在matlab和Scipy 中的差別貝塞爾函數的數學表達形式!