浮点数中的精确多项式求值

计算科学 浮点 多项式
2021-12-16 10:01:51

使用浮点运算评估多项式的​​最准确算法是什么?互联网似乎暗示霍纳的方法是常用的。特别是我有一个形式为 f(x) = ax^3 + bx^2 + cx + d 的三次多项式,我正在用浮点运算以幼稚的方式对其进行评估,并且很好奇是一些递归方法还是一些重构会给出更准确的结果。也就是说,如果我要在 Mathematica 中准确地或以公吨的精度评估多项式,我会得到更接近的结果。

3个回答

Horner 确实是评估多项式的​​最稳定的方法(并且您可以在没有太多额外成本的情况下获得评估其导数的好处)。Higham 对算法进行了很好的错误分析(数值算法的准确性和稳定性,第 2 版,第 94 页)。他还提出了一种包含运行误差界限的算法,因此您可以了解实际值与霍纳计算的值之间的差异(第 95 页上的算法 5.1)。

如果您的情况仅限于三次多项式并且您担心循环开销,您可以手动展开循环。但我怀疑你会收获很多。坚持久经考验。

作为替代方案,您可以使用与牛顿基具有相同评估复杂性的重心拉格朗日基。重心公式也用于 MATLAB Chebfun实现。有关详细信息,请参阅 LN Trefethen 的论文。