Python调用贝塞尔函数
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调用贝塞尔函数相关推荐
- python 调用 javascript函数
python 调用 javascript函数 # pip install pyexecjs import execjs # 直接执行 print('execjs.eval:', execjs.eval ...
- python调用C函数库
python调用C函数库 (2012-10-31 13:47:50) 转载▼ 标签: 动态链接库 c语言 so ctypes python 分类:Python 背景:工作中,有很多公共类库是使用C语言 ...
- Python 调用C函数
/********************************************************************* Python 调用C函数* 说明:* Tony在处理SQL ...
- python调用c语言函数_从Python调用C函数
python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...
- 一文读懂如何用python调用matlab函数(windows环境)
第一步配置环境: 要安装引擎 API,请在操作系统提示符下执行以下命令,其中 matlabroot 是 MATLAB 文件夹的路径.您可能需要管理员权限才能执行这些命令.或者,使用在非默认位置安装用于 ...
- python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
- python调用dll函数_从Python调用DLL函数
我想从Python调用DLL中的函数.但我有个错误:"Attribute Error function not found" 这是我的代码:import os import cty ...
- python调用什么函数实现对文件内容的读取_Python 文件读取函数 read(), readline(), readlines()...
Python 提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作: read() 函数:逐个字节或者字符读取文件中的内容: readline() 函数:逐行读取文件中的内容: readl ...
- python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...
在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...
最新文章
- 设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突...
- mysql 条件 函数_mysql 函数 时间函数,数学函数,字符串函数,条件判断函数
- 最新,使用truffle框架之后,安装ipfs的api包文件的命令变化
- IDEA中 @override报错的解决方法
- linux脚本编写思想,Linux脚本编写入门基础(三)
- 作者:宾军志(1976-),男,御数坊(北京)科技咨询有限公司联合创始人。...
- 取模(mod)与取余(rem)的区别——Matlab学习笔记
- 活动事务日志以及事务的类型
- oracle+tquery,Oracle测试题及答案
- 实现机器学习的循序渐进指南V——支持向量机
- 大数据之-Hadoop3.x_Yarn_资源调度器介绍说明---大数据之hadoop3.x工作笔记0140
- 每日算法系列【LeetCode 556】下一个更大元素 III
- Java反射异常处理之InvocationTargetException
- vs2008 sp1 C++ 发布程序
- 高德地图ios11 定位失败
- 电脑开机界面如何设置个性签名?
- 智能名片小程序创建名片页功能实现关键代码
- flyaway mysql_graylog2.3日志服务器
- 内存取证-volatility工具的使用 (史上更全教程,更全命令)
- Android夜间模式原理
热门文章
- drupal建站案例_Drupal建站过程思考——不识庐山真面目,只缘身在此山中
- A Formal Methodology Applied to Secure Over-the-Air Automotive Applications
- mac使用Chrome模拟微信内置浏览器
- Woj 简易题解 Volume #2
- 深度:老年消费市场新品类新热点不断涌现,解读轮椅/老年鞋/蛋白粉/助听器四大类产品创新发展路径
- webp2jpg在线图片格式转换器源码
- 万达信息举行创业板新股发行网上路演
- eul for Mac(菜单栏系统监控工具)中文版支持m1芯片
- 移动考勤管理系统有什么优势?
- Python Selenium+Requests爬虫[双线程]--今日头条图片爬取【亲测能行!!!】