让我们说我们有多项在x,除力的x:

p = (a + x(b + x(c + ..)))/(x**n)

效率一边,这将更准确的计算数值,或使用上述区分:

p = (((a/x + b)/x + c)/x + ...)

感谢

有帮助吗?

解决方案

我认为的差异是最小的,除非有一个机会, x**n 溢出或下溢,在这种情况下应当使用第二的表达。

这两种表达方式不同的两个地方:

  1. 评估顺序被颠倒(...,c,b,a)第一个表达和(a,b,c,...)对于第二的表达。哪一个是最好的价值取决于系数。
  2. 第一个表达的 .../x**n 在结束。Jonathan解释说,由于这个原因可以预计,第二的表达是更加准确,因为它具有较少的行动。然而,我认为 .../x**n 原因只有一个最低精确度的损失(与其他地方相比,你失去了精度),除非 x**n 溢出或下溢.

其他提示

提供的答案是错误的不幸

第二个等式P =(((A / X + B)/ X + C)/ X + ...)是唯一的边缘更坏 的准确性和更坏速度。

为什么呢?乘法的相对误差只有主线性项 和一个小的二次项。司在对比介绍较高,但 非常小的术语(立方体,四次):

E =相对误差,假定常数两个术语

A * B =(1 + E)的 B(1 + E)=一 B(1 + 2E + E ^ 2)//乘法

A / B =(1 + E)/ B(1 + E)= A / B(1 + E)(1 + E + E ^ 2 + E ^ 3 + ...几何级数)//分割

所以除法总是比乘法差些。 对于速度的考虑:师总是比乘法慢, 10倍 - 正常的因素可以从3倍不等。所以嵌套部门是多少 比嵌套乘法慢,如果你不计算最后一个因素 X ^ N不被POW(),但通过巢式的乘法运算。

的X ^ n可以通过环的结果相乘来容易地计算 双功率= X; 对第(n-1)  功率* = X;

如果您使用POW(),要知道,它主要是方便地计算 指数和对数,取比必要的(100×)更多的时间。

您了解,虽然双和详细的结果之间的误差仍然很小, 多项式结果的非常的为大的n的x的变化很敏感?! 所以,如果你使用的高N的注意,你的答案可能完全没谱 因为以x小误差天文扩增。

scroll top