【问题标题】:Division in double precision双精度除法
【发布时间】:2014-01-17 21:59:59
【问题描述】:

我有两个双变量:

a > 0
b >= 0

这可能是很小的数字。 “a”代表矩阵的奇异值,“b”代表Tikhonov regularization 常数。作为 Tikhonov 最小二乘解的一部分,需要计算数量:

c = a*a / (a*a + b)

但是,如果 a 非常小(即矩阵的小奇异值),a*a 可能无法以双精度表示。对于给定的 a,b 范围,如何以数值稳定的方式计算商 c?

【问题讨论】:

    标签: division numerical-methods


    【解决方案1】:

    我能想到的最好的是:

    c = 1 / (1 + b / a / a)
    

    要得出这个等价,请注意 1/c 是 (a^2 + b)/c 然后分解分数。这种形式可能在数值上更稳定,因为它不需要在任何时候计算 a^2。如果 ba 都非常小,它仍然会丢失精度。如果这种情况也必须处理,您可以查看泰勒级数展开(可能适用于这种情况,也可能不适用)。

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2020-02-29
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多