牛顿多项式的典型系数

时间:2012-11-17 22:09:40

标签: java interpolation polynomial-math

前段时间我为我编程的游戏实现了Polynom近似。

我正在使用牛顿的金字塔方法。 我花了很长时间来弄明白,但我的解决方案需要计算二项式系数,我还必须总结每个幂的最终系数的所有系数(因为解决这个问题类似于平方,立方体..术语和计算二项式系数)

例如: 从生物学术语的n个中选出k并添加它们  一个选择倍增
 a *(x + b)(x + c)(x + d)==> a * x ^ 3 + a * x ^ 2 *(b + c + d)+ a * x(bc + bd + cd)+ a * b * c * d
 所以b * c * d将是一个选择b * c和b * d

我现在的问题是: 有没有办法用牛顿方案计算多项插值而不必计算所有的二元系数?

我的代码: https://github.com/superphil0/Polynominterpolation/blob/master/PolynomInterpolation.java

它的效果非常好,但是如果一个点得分过多则会相当慢 因为选择了所有可以概括的术语

(我真的很难用英语解释这个,我希望有人能理解我想知道的事情)

欢呼声

1 个答案:

答案 0 :(得分:1)

this description判断,我认为你的“金字塔方案”会产生系数 c i ,这样多项式 p x )可写为
p x )= c 0 +( x - x 0 )( c 1 +( x - x 1 )( c 2 +( x - x 2 )( c 3 +( x - x 3 )( ......( c n -1 +( x - x ñ -1 c n )...))))

现在,您可以从后面递归计算规范系数。从中开始 p n = c n

在每个步骤中,当前多项式可以写为
p k = c k +( x - x k p k +1 = c k +( x - x k )( b 0 + b 1 x + b 2 x < sup> 2 + ...)
假设下一个较小的多项式已经变成规范系数。

现在你可以使用那些系数 b <计算 p k 的系数 a i sub> i p k +1 。在严格的正式方式中,我必须使用索引而不是 a b ,但我相信这样更清晰。那么下一个多项式的规范系数是什么?

  • a 0 = c k - x k b <子> 0
  • a 1 = b 0 - x k b <子> 1
  • a 2 = b 1 - x k b <子> 2
  • ...

您可以在循环中编写它,使用并重用单个数组a来保存系数:

double[] a = new double[n + 1]; // initialized to zeros
for (int k = n; k >= 0; --k) {
    for (int i = n - k; i > 0; --i)
        a[i] = a[i - 1] - x[k]*a[i];
    a[0] = c[k] - x[k]*a[0];
}