2011-03-05 84 views
0

嗨 我有一个问题,我们如何使用Horner数据结构来显示一个多项式,就像“x^100+1”?horner数据结构

例如用于上述多项式我们 需要尺寸101的阵列,其它的索引 示出了该多项式的功率 例如用于阵列[100] = 1和阵列[0] = 1,不幸的是所有的其他指标是0!但有另一种 的方式,这是不同的, 有助于显示在一个小的 阵列的多项式!我想知道,这样

感谢

+1

你能澄清你的问题一点?你了解Horner方法的工作原理吗?你有什么尝试,什么不工作? – 2011-03-05 18:10:59

+0

例如对于上述多项式,我们需要一个大小为101的数组,其索引显示了该多项式的功率,例如数组[100] = 1和数组[0] = 1,不幸的是所有其他索引都是0!但有另一种方式是不同的,并有助于在一个小阵列中显示多项式!我想知道这种方式 – user472221 2011-03-05 18:13:48

回答

1

霍纳方案(HTTP: //en.wikipedia.org/wiki/Horner_scheme)是表示多项式的另一种方式,但由于信息内容相同,所以需要相同数量的信息(相同的数组大小)。唯一的区别是我们计算多项式时的排序。

p(x) = (...((a[n] * x + a[n-1]) * x + a[n-2]) ...) * x + a[0] 

在你的例子中,我们将再次有一个[100] = 1,a [0] = 1,其余为零。

在这种情况下,计算多项式的代码将

result = a[n]; 
for(int i=n-1;i>=0;i--) { 
    result = result * x + a[i]; 
} 
+0

非常感谢:) – user472221 2011-03-05 18:49:06

1

一般的形式

A * x^n + B * x^n-1 + .... 

的多项式你只需要知道n和商店(A,B,...)为你可以使用数组或列表。为了表示,所有你需要的是n和这个列表。 我不知道,如果你有兴趣的评价,但它会是这样的

ArrayList<int> list = new ArrayList<int>(); 

填充列表与A,B,...

int result; 

for(int i=0; i<n; i++) 
    result+= list.get(i) * Math.pow(valueOfX, n-i);