舍入误差

我在用昨天我写的方式计算sqrt(a)
3阶迭代,在使用默认精度的情况下,由于舍入误差发生了发散的现象
迭代次数: 8
计算结果: 1409.19673578662854171
相对误差: 0.000180436417557990604922
迭代次数: 9
计算结果: 1408.94251124942256652
相对误差: 1.4682332404908543661e-12
迭代次数: 10
计算结果: 1408.94251124735391024
相对误差: -3.81679361123628071732e-20
迭代次数: 11
计算结果: 1408.94251124735391029
相对误差: -2.19311729677891129927e-21
迭代次数: 12
计算结果: 1408.94251124735391027
相对误差: -1.4505354752379816839e-20
当迭代次数大于等于8时,迅速收敛
然后就发生了一个很有趣的现象,15次以上的迭代的时候,使用2阶迭代要
比3阶能获得略微更高的精度。
当我换用1024位精度,采用3阶迭代进行计算时,情况发生了惊人的变化
迭代次数: 12
计算结果: 1408.942511247353910289820207953231236078
相对误差: -3.691499193715134110660858656096332961862e-309
采用默认精度的情况下,上次的迭代误差是在e-20级别

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥