如何在Wolfram Alpha中获取含floor函数积分的高精度数值近似
问题说明
在阅读Ovidiu Furdui所著的《极限、级数与小数部分积分:数学分析问题》(Springer出版数学问题丛书)部分章节,以及AoPS(Art of Problem Solving)论坛相关讨论帖后,对如下积分产生了研究兴趣:

记该积分准确值为A,其20位精度近似值为:
A = 0.6449340668482264365
在Wolfram Alpha中输入如下查询代码时:
integrate 1/(floor(1/x)) from x=0 to 1 to 20 digits
平台返回的近似计算结果为:
A* = 0.64493701331278272222
两个结果从第7位小数开始出现偏差,核心原因是被积函数$\lfloor 1/x \rfloor$在区间$(0,1]$内存在无穷多个间断点(位置为$x=1/n, n$为正整数),Wolfram Alpha默认的数值积分算法采样无法覆盖所有趋近于0的窄小区间,产生了截断误差。
Wolfram Alpha获取高精度结果的方法
- 优先使用级数拆分计算:按$\lfloor 1/x \rfloor$的分段特性拆分积分区间,原积分可转化为收敛级数求和:
对任意正整数$k$,当$x\in(1/(k+1),1/k]$时$\lfloor 1/x \rfloor=k$,因此
$$A=\sum_{k=1}^\infty \int_{1/(k+1)}{1/k}\frac{1}{k}dx=\sum_{k=1}\infty \frac{1}{k^2(k+1)}=\zeta(2)-1$$
其中$\zeta(2)=\pi^2/6$是黎曼Zeta函数在2处的取值。在Wolfram Alpha中输入以下代码即可得到任意指定精度的结果,以20位精度为例:
也可以直接用闭式计算,效率更高:N[Sum[1/(k^2 (k + 1)), {k, 1, Infinity}], 20]N[Zeta[2] - 1, 20] - 若必须直接做数值积分,需要手动调整积分算法参数,提高递归深度、明确精度要求,示例代码如下:
注意这种方式计算效率远低于级数求和,精度要求越高耗时增长越快。NIntegrate[1/Floor[1/x], {x, 0, 1}, Method -> "GlobalAdaptive", MaxRecursion -> 30, PrecisionGoal -> 20]
内容的提问来源于stack exchange,提问作者Max Lonysa Muller
相关产品推荐
相关产品推荐

