使用浮点运算评估多项式的最准确算法是什么?互联网似乎暗示霍纳的方法是常用的。特别是我有一个形式为 f(x) = ax^3 + bx^2 + cx + d 的三次多项式,我正在用浮点运算以幼稚的方式对其进行评估,并且很好奇是一些递归方法还是一些重构会给出更准确的结果。也就是说,如果我要在 Mathematica 中准确地或以公吨的精度评估多项式,我会得到更接近的结果。
浮点数中的精确多项式求值
计算科学
浮点
多项式
2021-12-16 10:01:51
3个回答
Horner 确实是评估多项式的最稳定的方法(并且您可以在没有太多额外成本的情况下获得评估其导数的好处)。Higham 对算法进行了很好的错误分析(数值算法的准确性和稳定性,第 2 版,第 94 页)。他还提出了一种包含运行误差界限的算法,因此您可以了解实际值与霍纳计算的值之间的差异(第 95 页上的算法 5.1)。
如果您的情况仅限于三次多项式并且您担心循环开销,您可以手动展开循环。但我怀疑你会收获很多。坚持久经考验。
霍纳的稳定性可以通过从每个减去一个常数来提高霍纳形式。
这在C. Mesztenyi 和 C. Witzgall 的“多项式的稳定评估”中进行了描述,国家标准局研究杂志 - B. 数学和数学物理卷。71 B,第 1 期,1967 年 1 月至 3 月。
作为替代方案,您可以使用与牛顿基具有相同评估复杂性的重心拉格朗日基。重心公式也用于 MATLAB Chebfun实现。有关详细信息,请参阅 LN Trefethen 的论文。
其它你可能感兴趣的问题