用python求解bessel函数_python中的矢量化球面bessel函数?

我注意到,n阶的^{}贝塞尔函数和自变量x jv(n,x)在x中矢量化:

In [14]: import scipy.special as sp

In [16]: sp.jv(1, range(3)) # n=1, [x=0,1,2]

Out[16]: array([ 0., 0.44005059, 0.57672481])

但是球面贝塞尔函数没有相应的矢量化形式,sp.sph_jn:In [19]: sp.sph_jn(1,range(3))

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in ()

----> 1 sp.sph_jn(1,range(3)) #n=1, 3 value array

/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/scipy/special/basic.pyc in sph_jn(n, z)

262 """

263 if not (isscalar(n) and isscalar(z)):

--> 264 raise ValueError("arguments must be scalars.")

265 if (n != floor(n)) or (n < 0):

266 raise ValueError("n must be a non-negative integer.")

ValueError: arguments must be scalars.

此外,球面贝塞尔函数一次计算N的所有阶数。因此,如果我想要n=5贝塞尔函数作为参数x=10,它将返回n=1,2,3,4,5。它实际上在一个过程中返回jn及其派生:

^{pr2}$

为什么API中存在这种不对称性,有人知道有一个库可以返回矢量化的球形贝塞尔函数,或者至少更快(例如在cython中)?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值