MPFR/MPFI下非负项幂级数及导数计算的求和终止条件判定
可行的停止判据方案
你用MPFI区间算术的前提下,完全可以用余项上界估计+区间宽度校验的方案,比你提到的相邻部分和比较的方案可靠得多,也不会浪费计算资源:
- 先对导数后的级数做重编号:令
k = n - m,级数可改写为series(h,m) = sum_{k=0}^∞ t_k,其中所有项t_k ≥ 0,部分和严格单调递增收敛到真值。 - 不要硬算每一项的表达式,推导相邻项的递推关系:
t_{k+1} = t_k * r_k,其中r_k是相邻项比值,可通过a(n)的定义和排列数的性质化简得到,数值上恒小于1。 - 每累加完第
k项后,计算剩余无穷项的上界:因为r_k < 1,剩余余项和R_k = sum_{i=k+1}^∞ t_i < t_{k+1}/(1 - r_k),是等比级数的上界。 - 此时真值必然落在区间
[S_k, S_k + R_k]内,用MPFI表示这个区间后,只要区间宽度小于2^{-(p+32)} * max(|S_k|, MPFR最小正浮点数),就说明已经满足p+32位的精度要求,直接停止累加即可。 - 最后把区间结果舍入到
p位输出,因为真值完全被区间包裹,且区间宽度小于1个p+32位的最小精度单位,忠实舍入的要求完全可以满足。
你提到的四步策略的问题
这个策略存在可靠性缺陷:当级数收敛较慢(比如h接近1)时,相邻两项的差可能已经小于p+32位的舍入阈值,但剩余无穷余项的总和仍可能大于p+32位的最小精度单位,此时提前停止会导致结果精度不足,无法满足忠实舍入要求。
关于你提到的项数上界的问题
不需要提前计算固定的项数上界,上面的递推余项估计是边算边做的,当h接近0时,r_k会非常小,余项会快速收敛到阈值以下,自动减少需要计算的项数,不会出现h=1最坏情况假设带来的资源浪费。
工作精度不需要设到p*4,仅需设置为p+40左右,比目标精度多留8位余量覆盖舍入误差和余项估计的误差即可。
内容的提问来源于stack exchange,提问作者user2373145
相关产品推荐
相关产品推荐

