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

15位精度浮点计算(20-(sqrt(32397)/9))^(1/3)的误差求解

分析相近数相减后的误差计算

首先,我们一步步拆解这个问题——核心是处理相近数相减导致的灾难性抵消,先算减法步骤的误差,再通过误差传播得到最终三次方根结果的误差值。

步骤1:确定真实值与计算值

先精准推导减法部分的真实结果:

  • 因为 32397 = 180² - 3,所以 sqrt(32397) = 180 × sqrt(1 - 3/180²) ≈ 179.99166647376543
  • 除以9后得到:179.99166647376543 / 9 ≈ 19.999074052640603
  • 真实差值:20 - 19.999074052640603 = 0.000925947359397
  • 你用15位精度计算得到的差值:0.000925947369386

步骤2:计算减法步骤的误差

绝对误差

绝对误差是计算值与真实值的差的绝对值:

|0.000925947369386 - 0.000925947359397| ≈ 9.989 × 10⁻¹²

相对误差

相对误差是绝对误差除以真实值:

9.989 × 10⁻¹² / 0.000925947359397 ≈ 1.08 × 10⁻⁸

步骤3:将误差传播到三次方根计算

设 f(y) = y^(1/3)(y 是减法结果),根据数值分析的误差传播公式:

  • 绝对误差:Δf ≈ f’(y_true) × Δy,其中导数 f’(y) = (1/3)y^(-2/3)
  • 相对误差:Δf/f ≈ (1/3)(Δy/y)

最终结果的绝对误差

先计算真实差值的导数项:

y_true = 0.000925947359397
y_true^(-2/3) = (1/0.000925947359397)^(2/3) ≈ 105.27

代入绝对误差公式:

Δf ≈ (1/3) × 105.27 × 9.989 × 10⁻¹² ≈ 3.50 × 10⁻¹⁰

最终结果的相对误差

直接用相对误差传播公式简化计算:

Δf/f ≈ (1/3) × 1.08 × 10⁻⁸ ≈ 3.60 × 10⁻⁹

额外优化建议

这种灾难性抵消可以通过代数变形避免,比如把原式改写为:

( (20² - (sqrt(32397)/9)²) / (20 + sqrt(32397)/9) )^(1/3) = (1/(27*(20 + sqrt(32397)/9)))^(1/3)

这样就彻底避开了相近数相减,能保留更多有效数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:30:09