我正在实现二分法,作为第一步,我需要评估多项式函数,但是我得不到正确的结果。
使用的多项式是3(x^2)+7(x)+1
使用x=2
,结果应为27
public static double evaluaFx(int []coef, int grade, int x) {
//int x viene siendo los x0,xf.xmenter code here
double Fx=0;
//System.out.println("grade"+grade+"x"+x);
//for (int i = grade; i >=0; i--) {
// System.out.println(coef[i]);
//}
for (int i = grade; i>=0; i--) {
Fx= Math.pow((coef[i]*x), grade);
// System.out.println(Fx+"mas"+"("+coef[i]+x+") a la grado"+grade);
}
return Fx;
}
上述算法有什么问题?
答案 0 :(得分:1)
您的算法有几个问题:
一个等级的公式(步骤i
)应为:
// for instance, if i=2, you want 3 * x^2 which translate to
Fx = coef[i]*Math.pow(x, i);
然后在for循环中,你不会累加连续的等级计算,在每一步都会失去先前的结果。你应该这样做(注意 + = 而不是 = )
Fx += coef[i]*Math.pow(x, i);