You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

精确计算x₂₀并反向递推求xₙ:结果验证与递推特性分析

递推积分的反向计算分析

首先回顾原问题的核心信息:已知 ( x_n = \int_0^1 \frac{t^n}{t+5} dt ),已推导得到正向递推式:

( x_n = \frac{1}{n} - 5x_{n-1} )
且 ( x_0 = \ln\left(\frac{6}{5}\right) = \ln1.2 )


一、精确计算 ( x_{20} ) 的方法:截断泰勒级数展开

我们可以把被积函数 ( \frac{1}{t+5} ) 在区间 [0,1] 上展开成收敛的泰勒级数:
[
\frac{1}{t+5} = \frac{1}{5} \cdot \frac{1}{1 + \frac{t}{5}} = \frac{1}{5} \sum_{k=0}^{\infty} (-1)^k \left( \frac{t}{5} \right)^k
]
这个级数在 ( t \in [0,1] ) 时绝对收敛,因此可以逐项积分:
[
x_n = \int_0^1 t^n \cdot \frac{1}{5} \sum_{k=0}^{\infty} (-1)^k \left( \frac{t}{5} \right)^k dt = \frac{1}{5} \sum_{k=0}^{\infty} \frac{(-1)k}{5k} \int_0^1 t^{n+k} dt
]
计算积分项 ( \int_0^1 t^{n+k} dt = \frac{1}{n+k+1} ),代入后得到级数形式的 ( x_n ):
[
x_n = \sum_{k=0}^{\infty} \frac{(-1)k}{5{k+1}(n+k+1)}
]
对于 ( n=20 ),这个级数收敛极快(每一项都乘以 ( -1/5 ),绝对值呈指数衰减),只要截断到绝对值小于 ( 10^{-16} ) 的项,就能达到机器全精度。你可以用这段代码验证:

def compute_xn(n):
    total = 0.0
    k = 0
    while True:
        term = ((-1)**k) / (5**(k+1) * (n + k + 1))
        if abs(term) < 1e-16:
            break
        total += term
        k += 1
    return total

x20 = compute_xn(20)
print(f"高精度x20:{x20:.18f}")

二、反向递推的结果与表现分析

把原正向递推式变形为反向递推式:
[
x_{n-1} = \frac{1}{5} \left( \frac{1}{n} - x_n \right)
]
用高精度的 ( x_{20} ) 代入,依次计算 ( x_{19} ) 到 ( x_0 )。

结果正确性

  • 最终得到的 ( x_0 ) 会非常接近 ( \ln1.2 ),双精度下误差几乎可以忽略,结果完全正确。
  • 中间的 ( x_n )(比如 ( x_{10}、x_5 ) 等)也和直接用泰勒级数计算的结果高度吻合,精度达标。

反向递推与正向递推的表现差异

正向递推(从 ( x_0 ) 算到 ( x_{20} ))会出现严重的误差放大:每一步都要乘以5再做减法,机器浮点数的舍入误差会被指数级放大,到 ( x_{20} ) 时结果会完全失真。

而反向递推(从 ( x_{20} ) 算到 ( x_0 ))则是误差衰减的:每一步计算是除以5,舍入误差会被不断缩小,哪怕初始的 ( x_{20} ) 有微小误差,经过反向递推后,前面的 ( x_n ) 误差会越来越小,最终 ( x_0 ) 的精度极高。

核心原因

这是由递推关系的条件数决定的:

  • 正向递推的递推因子是-5,绝对值大于1,属于不稳定递推,任何微小误差都会被指数级放大。
  • 反向递推的递推因子是1/5,绝对值小于1,属于稳定递推,误差会被指数级衰减,计算结果会越来越准确。

内容的提问来源于stack exchange,提问作者Nash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:55:02