mars.tensor.i0#

mars.tensor.i0(x, **kwargs)[来源]#

零阶修正贝塞尔函数。

通常表示为 \(I_0\)。这个函数会进行广播,但不会 提升 整数数据类型参数,除非至少有一个浮点数或复数数据类型参数陪伴(详见下面的 Raises 部分)。

Parameters

x (array_like, dtype floatcomplex) – 贝塞尔函数的参数。

Returns

out – 在每个x的元素上评估的修正贝塞尔函数。

Return type

张量, 形状 = x.shape, 数据类型 = x.dtype

Raises

TypeError – 数组无法安全地转换为所需类型:如果参数仅由整数数据类型组成。

备注

我们使用Clenshaw发表的算法 1,该算法被Abramowitz和Stegun引用 2,函数域被划分为两个区间[0,8]和(8,inf),在每个区间中使用切比雪夫多项式展开。使用IEEE算术的域[0,30]上的相对误差记录 3 显示峰值为5.8e-16,均方根为1.4e-16(n = 30000)。

参考文献

1

C. W. Clenshaw, “切比雪夫级数的数学函数”,在 国家物理实验室数学表, 第5卷, 伦敦: 女王的文具办公室, 1962.

2

M. Abramowitz 和 I. A. Stegun, 数学函数手册, 第10次印刷, 纽约: Dover, 1964年, 第379页。 http://www.math.sfu.ca/~cbm/aands/page_379.htm

3

http://kobesearch.cpan.org/htdocs/Math-Cephes/Math/Cephes.html

示例

>>> import mars.tensor as mt
>>> mt.i0([0.]).execute()
array([1.])
>>> mt.i0([0., 1. + 2j]).execute()
array([ 1.00000000+0.j        ,  0.18785373+0.64616944j])