文章目录

scipy.special中封装了一些特殊函数,Bessel函数亦在其中。

定义

Bessel函数为Bessel方程的解,Bessel方程为

x 2 d 2 y d x 2 + x d y d x + ( x 2 − α 2 ) y = 0 x^2\frac{\text d^2y}{\text dx^2}+x\frac{\text dy}{\text dx}+(x^2-\alpha^2)y=0 x2dx2d2y+xdxdy+(x2α2)y=0

随着 α \alpha α的变化,Bessel函数有着不同的类别。当 α \alpha α非负时,可得到第一类Bessel函数的幂级数展开式,表示为

J α ( x ) = ∑ m = 0 ∞ ( − 1 ) m m ! Γ ( m + α + 1 ) ( x 2 ) 2 m + α J_{\alpha}(x)=\sum^\infty_{m=0}\frac{(-1)^m}{m!\Gamma(m+\alpha+1)}(\frac{x}{2})^{2m+\alpha} Jα(x)=m=0m!Γ(m+α+1)(1)m(2x)2m+α

α \alpha α为整数,则满足 J − n ( x ) = ( − 1 ) n J n ( x ) J_{-n}(x)=(-1)^nJ_n(x) Jn(x)=(1)nJn(x)

第二类Bessel函数又称为诺伊曼(Neumann)函数

Y α ( x ) = J α ( x ) cos ⁡ ( α π ) − J − α ( x ) sin ⁡ ( α π ) Y_\alpha(x)=\frac{J_\alpha(x)\cos(\alpha\pi)-J_{-\alpha}(x)}{\sin(\alpha\pi)} Yα(x)=sin(απ)Jα(x)cos(απ)Jα(x)

  • 第三类

第三类Bessel函数又称汉克尔(Hankel)函数,表示为

H α ( 1 ) ( x ) = J α ( x ) + i Y α ( x ) H α ( 2 ) ( x ) = J α ( x ) − i Y α ( x ) \begin{aligned} H_\alpha^{(1)}(x)=J_\alpha(x)+iY_\alpha(x)\\ H_\alpha^{(2)}(x)=J_\alpha(x)-iY_\alpha(x) \end{aligned} Hα(1)(x)=Jα(x)+iYα(x)Hα(2)(x)=Jα(x)iYα(x)

可得

H α ( 1 ) ( x ) = J − α ( x ) − e − i α π i sin ⁡ ( α π ) H α ( 2 ) ( x ) = J α ( x ) − e − i α π − i sin ⁡ ( α π ) \begin{aligned} H_\alpha^{(1)}(x)=\frac{J_{-\alpha}(x)-e^{-i\alpha\pi}}{i\sin(\alpha\pi)}\\ H_\alpha^{(2)}(x)=\frac{J_{\alpha}(x)-e^{-i\alpha\pi}}{-i\sin(\alpha\pi)}\\ \end{aligned} Hα(1)(x)=isin(απ)Jα(x)eiαπHα(2)(x)=isin(απ)Jα(x)eiαπ

即Hankel函数可表示为第一类或第二类Bessel函数的组合。

  • 递推公式

d d x [ x n J n ( x ) ] = x n J n − 11 ( x ) d d x [ x n J n ( x ) ] = x n J n − 11 ( x ) \begin{aligned} \frac{\text d}{\text dx}[x^nJ_n(x)]=x^nJ_{n-11}(x)\\ \frac{\text d}{\text dx}[x^nJ_n(x)]=x^nJ_{n-11}(x)\\ \end{aligned} dxd[xnJn(x)]=xnJn11(x)dxd[xnJn(x)]=xnJn11(x)

封装

scipy.special中,封装了如下Bessel函数。

整数阶实数阶指数标度
一类jv(v, z)jve(v,z)
修正iv(v, z)ive(v, z)
二类yn(n, x)yv(v, z)yve(v, z)
修正kn(n, x)nkv(v, z)kve(v, z)
三类1hankel1(v, z)hankel1e(v, z)
三类2hankel2(v, z)hankel2e(v, z)

这些不同类型的Bessel函数,具有相似的输入变量,其中v均表示阶数,z均表示自变量。以jv(v,z)为例,作为第一类实数阶Bessel函数,其表达式为

J v ( z ) = { exp ⁡ ( v π ı ) I v ( − ı z ) ℑ ( z ) > 0 exp ⁡ ( − v π ı ) I v ( ı z ) ℑ ( z ) < 0 J_v(z)=\left\{\begin{aligned} \exp(v\pi\imath)I_v(-\imath z)&\Im(z)>0\\ \exp(-v\pi\imath)I_v(\imath z)&\Im(z)<0 \end{aligned}\right. Jv(z)={exp(vπ)Iv(z)exp(vπ)Iv(z)(z)>0(z)<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) Jv(z)=Jv(z)cos(πv)Yv(z)sin(πv)

其函数图像为

在这里插入图片描述

绘图代码如下

import numpy as np
from scipy.special import jv
import matplotlib.pyplot as plt
v,z = np.indices([50,100])
ax = plt.subplot(projection='3d')
j = jv(v,z)
ax.plot_surface(v,z,j)

此外,还有wright_bessel(a,b,x)为广义贝塞尔函数,表达式为

ϕ ( a , b , x ) = ∑ 0 ∞ x k k ! Γ ( a k + b ) \phi(a,b,x)=\sum^\infty_0\frac{x^k}{k!\Gamma(ak+b)} ϕ(a,b,x)=0k!Γ(ak+b)xk

其中,a,b,x均大等于0。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐