Bessel函数在Python中与大指数一起使用

Rap*_*pid 8 python scipy bessel-functions

我有一些代码使用了修改后的第一和第二阶贝塞尔函数(iv和kv).令人讨厌的是,他们似乎有限制,那些是iv(0,713)和kv(0,697),每个加一个,你得到无穷大和0.这对我来说是个问题,因为我需要使用高于此值的值,通常高达2000或更高.当我试图除以这些时,我最终潜水0或无穷大,这意味着我要么得到错误或零,这两者都不是我想要的.

我正在使用scipy bessel函数,是否有更好的函数可以处理更小和更大的数字,或者修改Python以使用这些大数字的方法.我不确定这里真正的问题是为什么Python不能超过700这些工作,是函数还是Python?

我不知道Python是否已经在做,但我只需要前5-10位*10 ^ x,例如; 也就是说我不需要全部1000位数,也许这就是与Wolfram Alpha如何解决这个问题相比,Python的工作原理是什么?

pv.*_*pv. 8

如果使用双精度机器浮点,Scipy中的ivkv函数或多或少都可以得到.如上面的注释中所述,您正在从浮点范围溢出结果的范围内工作.

您可以使用具有mpmath可调精度(软件)浮点的库来解决此问题.(它类似于MPFR,但在Python中):

In [1]: import mpmath

In [2]: mpmath.besseli(0, 1714)
mpf('2.3156788070459683e+742')

In [3]: mpmath.besselk(0, 1714)
mpf('1.2597398974570405e-746')
Run Code Online (Sandbox Code Playgroud)