分为双精度

时间:2014-01-17 21:59:59

标签: division numerical-methods

我有两个双变量:

a > 0
b >= 0

这可能是微小的数字。 'a'表示矩阵的奇异值,'b'表示Tikhonov regularization常数。作为Tikhonov最小二乘解的一部分,有必要计算数量:

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

但是,如果a非常小(即矩阵的小奇异值),则a*a可能无法以双精度表示。对于给定范围的a,b?

,如何以数值稳定的方式计算该商c

1 个答案:

答案 0 :(得分:0)

我能想到的最好的是:

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

要获得此等效性,请注意1 / c 是( a ^ 2 + b )/ c 然后分解分数。此形式可能在数值上更稳定,因为它不需要在任何点计算 a ^ 2 。如果 b a 都非常小,它仍会失去精确度。如果必须处理这种情况,你可能会看一下泰勒系列扩展(对于这种情况可能适用也可能不适用)。