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

定义

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

x2d2ydx2+xdydx+(x2−α2)y=0x^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)mm!Γ(m+α+1)(x2)2m+αJ_{\alpha}(x)=\sum^\infty_{m=0}\frac{(-1)^m}{m!\Gamma(m+\alpha+1)}(\frac{x}{2})^{2m+\alpha} Jα​(x)=m=0∑∞​m!Γ(m+α+1)(−1)m​(2x​)2m+α

若α\alphaα为整数,则满足J−n(x)=(−1)nJn(x)J_{-n}(x)=(-1)^nJ_n(x)J−n​(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)+iYα(x)Hα(2)(x)=Jα(x)−iYα(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απisin⁡(απ)Hα(2)(x)=Jα(x)−e−iαπ−isin⁡(απ)\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)−e−iαπ​Hα(2)​(x)=−isin(απ)Jα​(x)−e−iαπ​​

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

  • 递推公式

ddx[xnJn(x)]=xnJn−11(x)ddx[xnJn(x)]=xnJn−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)]=xnJn−11​(x)dxd​[xnJn​(x)]=xnJn−11​(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)
三类1 hankel1(v, z) hankel1e(v, z)
三类2 hankel2(v, z) hankel2e(v, z)

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

Jv(z)={exp⁡(vπı)Iv(−ız)ℑ(z)>0exp⁡(−vπı)Iv(ız)ℑ(z)<0J_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)=Jv(z)cos⁡(πv)−Yv(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)

其函数图像为

绘图代码如下

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∞xkk!Γ(ak+b)\phi(a,b,x)=\sum^\infty_0\frac{x^k}{k!\Gamma(ak+b)} ϕ(a,b,x)=0∑∞​k!Γ(ak+b)xk​

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

Python调用贝塞尔函数相关推荐

  1. python 调用 javascript函数

    python 调用 javascript函数 # pip install pyexecjs import execjs # 直接执行 print('execjs.eval:', execjs.eval ...

  2. python调用C函数库

    python调用C函数库 (2012-10-31 13:47:50) 转载▼ 标签: 动态链接库 c语言 so ctypes python 分类:Python 背景:工作中,有很多公共类库是使用C语言 ...

  3. Python 调用C函数

    /********************************************************************* Python 调用C函数* 说明:* Tony在处理SQL ...

  4. python调用c语言函数_从Python调用C函数

    python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...

  5. 一文读懂如何用python调用matlab函数(windows环境)

    第一步配置环境: 要安装引擎 API,请在操作系统提示符下执行以下命令,其中 matlabroot 是 MATLAB 文件夹的路径.您可能需要管理员权限才能执行这些命令.或者,使用在非默认位置安装用于 ...

  6. python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

  7. python调用dll函数_从Python调用DLL函数

    我想从Python调用DLL中的函数.但我有个错误:"Attribute Error function not found" 这是我的代码:import os import cty ...

  8. python调用什么函数实现对文件内容的读取_Python 文件读取函数 read(), readline(), readlines()...

    Python 提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作: read() 函数:逐个字节或者字符读取文件中的内容: readline() 函数:逐行读取文件中的内容: readl ...

  9. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

最新文章

  1. 微软称不放弃收购雅虎
  2. 一起搞清楚 Spring Security 中的 UserDetails
  3. UVA11137(立方数之和)
  4. 计算机制图国家规范,竣工图绘制相关国家规范
  5. C语言flood fill 泛洪算法(附完整源码)
  6. 基于Spark的Als算法+自迭代+Spark2.0新写法
  7. 面向Tableau开发人员的Python简要介绍(第3部分)
  8. html5 a-z字母排序,Js按A-Z排序通讯录(中文、英文、特殊字符)
  9. ARP挂马***--嗅探欺骗的最恐怖方式
  10. RabbitMQ实战:理解消息通信
  11. Matlab 实现信号滤波
  12. 电力网络故障的计算机算法,电力系统故障分析的计算机算法.pdf
  13. VMware安装Windows XP虚拟机并手动安装外加驱动程序
  14. 人工神经网络算法的应用,人工神经网络发展历史
  15. ubuntu翻译软件安装
  16. 适合女孩子玩的计算机游戏,小仙女们!NS上7款最适合女孩子玩的游戏盘点
  17. 吉米_王:浅谈“并行计算”
  18. 《Android Studio开发实战》学习(二)- 聊天室
  19. App地推效果差?你可能缺少渠道效果统计
  20. 【Spark SQL:计算平均分】

热门文章

  1. 优化算法2--遗传算法(原理)
  2. 微信公众号简单开发(5)文本消息
  3. prometheus安装
  4. linux下视频格式转换与视频合并
  5. 关于惠普打印机直连方式(wifi-direct)密码忘记的解决
  6. 【动态烟花】动态烟花HTML网页源码分享
  7. java计算句子相似度的代码_4种方法计算句子相似度
  8. 深入 Android 源码系列(一)
  9. Starling 性能优化技巧
  10. 【教程】5步白嫖使用Grammarly Premium高级版 [附脚本]