您的位置:首页 > 其它

使用Horner法则计算多项式的值

2013-10-24 08:58 357 查看
计算Pn(x) = an * x^n + an-1 * x^(n-1) + ... + a1 * x + a0

直接计算,需要做的乘法次数 1+2+3+……+n = n(1+n)/2 = O(n2)

使用Horner规则,Pn(x) = ((... ((anx + an-1)x + an-2)x + ... + a2)x + a1)x + a0

需要做的乘法次数 n = O(n)

public class Horner{
public static int compute(int x, int[] A){
//计算Pn(x) = an * x^n + an-1 * x^(n-1) + ... + a1 * x + a0
int result = A[A.length-1];
for(int i = A.length-2; i >= 0; i --){
result = x*result + A[i];
}
return result;
}
public static void main(String[] args){
//单元测试。取 ai = 2^n-i;n为10。答案应为1024 * 11 = 11264
int x = 2;
final int N = 10;
int[] A = new int[N+1];
int tmp = 1024;
for(int i = 0; i < A.length; i ++){
A[i] = tmp;
tmp /= 2;
}
System.out.println(compute(x, A));
}
}


Java
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: