一个通用的计算多项式的值的算法可以采用递推的方式,首先将多项式表达式变形为等价于如下形式:
P(x)=(...((an-1+an-2)x+an-3)x+...+a1)x+a0
通过这个表达式可以看出,只要从里往外一层层地按照如下的方式递推,便可以得到多项式的值。
Rn-1=an-1
Rk=Rk+1+ak, k=n-2,.......1,0
通过一层层计算后,得到的R0便是多项式P(x)的值。
代码段:
import java.text.DecimalFormat;
public class Hanshu {
public static double sun(double a[],int n,double x) {
int i;
double result;
result=a[n-1];
for(i=n-2;i>=0;i--) {
result=result*x+a[i];//递推算法计算
}
return result;//返回结果
}
public static void main(String []args) {
int i;
double result;
double a[]= {-15.0,-7.0,7.0,2.0,-3.0,7.0,3.0};
double x[]= {-2.0,-0.5,1.0,2.0,3.7,4.0};
DecimalFormat df=new DecimalFormat("0.0000000E000");
DecimalFormat dfl=new DecimalFormat("0.00");
System.out.println("\n");
for(i=0;i<6;i++) {//逐个计算
result=sun(a,7,x[i]);
System.out.print("x="+dfl.format(x[i])+"时,p(x)="+df.format(result)+"\n");
}
System.out.print("\n");
}
}
其中输入参数n为多项式的项数,数组a[]依次存放多项式的n个系数,x是指定的变量值。