Scipy.special特殊数学函数模块之bessel函数
一、Scipy.special模块作用
二、bessel(贝塞尔函数)
三、special模块所有bessel函数
【资料图】
四、例子
一、Scipy.special模块作用:scipy.special包的主要特点是定义了数学物理的许多特殊函数。可用的函数包括airy(艾里函数), elliptic(椭圆函数), bessel(贝塞尔函数), gamma(欧拉第二积分), beta(贝塔函数), hypergeometric(超几何函数), parabolic cylinder(抛物柱面函数), mathieu(马蒂厄函数), spheroidal wave(球体波函数), struve(斯特鲁夫函数), and kelvin(开尔文函数)。还有一些低级别的统计数据函数,这些函数不是一般使用的,因为“统计数据”那个模块提供了这些函数的更简单的接口。这些函数中的大多数可以采用数组参数,并按照与Numerical Python中的其他数学函数相同的广播规则返回数组结果。其中许多函数也接受复数作为输入。
要获得具有单行描述的可用函数的完整列表,请键入>>help(special)。每个函数也有自己的文档,可以使用帮助进行访问。
二、bessel(贝塞尔函数)
贝塞尔函数是具有实阶或复阶α的贝塞尔微分方程的一系列解。
一般贝塞尔函数是下列常微分方程(一般称为贝塞尔方程)的标准解函数y(x):
贝塞尔函数定义链接:
https://www.britannica.com/science/special-function
https://baike.baidu.com/item/%E8%B4%9D%E5%A1%9E%E5%B0%94%E5%87%BD%E6%95%B0/3431101?fr=aladdin
三、special模块所有bessel函数:
四、例子:薄鼓头的振动模式。以下是固定在边缘的圆形鼓头的示例:
from scipy import special
import numpy as np
def drumhead_height(n, k, distance, angle, t):
kth_zero = special.jn_zeros(n, k)[-1]
return np.cos(t) * np.cos(n*angle) * special.jn(n, distance*kth_zero)
theta = np.r_[0:2*np.pi:50j]
radius = np.r_[0:1:50j]
x = np.array([r * np.cos(theta) for r in radius])
y = np.array([r * np.sin(theta) for r in radius])
z = np.array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes(rect=(0, 0.05, 0.95, 0.95), projection='3d')
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='RdBu_r', vmin=-0.5, vmax=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_xticks(np.arange(-1, 1.1, 0.5))
ax.set_yticks(np.arange(-1, 1.1, 0.5))
ax.set_zlabel('Z')
plt.show()
结果输出: