摘要 对于简单的多项式计算,计算机也可能输出错误结果;另外,虽然多项式的 Hornor(或秦九韶)形式减少了计算机的运算量,但并不一定能提高计算结果的精度。
例1. 已知下列C代码(其中 随机取自(0,1))[1,2]:
若 ,则理论上
= 0.2401e-16。但是,实践中,若在Visual Studio 2010 中运行上述代码,则
的输出结果为0。这样,计算机给出了错误结果。
若改写上述 为Hornor(或秦九韶) 形式 ,即代码变为
保持 不变,则
的输出结果为 -0.22204460492503131e-15。这样,计算机同样给出了错误结果,并且错的更为离谱。
总结:对于简单的多项式计算,计算机也可能输出错误结果;虽然多项式的 Hornor(或秦九韶)形式减少了计算机的运算量,但并不一定能提高计算结果的精度。
参考文献
[1] 汤恩义, BARR Earl, 苏振东, 等. 程序数值误差的扰动检测与优化. 中国科学: 信息科学, 2014, 44(11): 1445–1466
[2] Goubault E, Putot S. Static analysis of numerical algorithms. In: Proceedings of the 13th International Static Analysis Symposium, 2006. 18–34