一维多项式求值

来源:互联网 发布:js video 播放监控 编辑:程序博客网 时间:2024/06/04 00:59
  这是一个计算多项式的值的程序。
  P(x)=3x^6+7x^5-3x^4+2x^3+7x^2-7x-15
  请分别算出 当x=-2,-0.5,1,2,3.7,4.0的时候,P的数值。
  解题思路是:设计一个通用的算法来计算多项式的值。
  答案:采用递推的方法
  P(x)=((an*x+an-1)x+... +a1)x+a0
  也就是说,把所有的式子都拆分为  a1x+a0  的形式,
  然后再不断的乘以  ((a3x+a2)x+a1)x+a0
  这样不断递推下去,首项系数乘以的x的指数刚好为式子中的指数

 

/** * 这是一个计算多项式的值的程序。 * P(x)=3x^6+7x^5-3x^4+2x^3+7x^2-7x-15 * 请分别算出 当x=-2,-0.5,1,2,3.7,4.0的时候,P的数值。 * 解题思路是:设计一个通用的算法来计算多项式的值。 * 答案:采用递推的方法 * P(x)=((an*x+an-1)x+... +a1)x+a0 * 也就是说,把所有的式子都拆分为  a1x+a0  的形式, * 然后再不断的乘以  ((a3x+a2)x+a1)x+a0 * 这样不断递推下去,首项系数乘以的x的指数刚好为式子中的指数 */package Lily_Java_commons;/** *  @author   LilyLee * @date     2017年4月23日 * @time     下午9:20:58 * @Version  1.0 * @email    lilylee_1213@foxmail.com * */public class Ploynomial_cac {static double polyD(double a[],int n,double x){double result=a[n-1];for(int i=n-2;i>=0;i--){result=result*x+a[i];}return result;}public static void main(String[] args) {// TODO Auto-generated method stubdouble a[]={-15,-7,7,2,-3,7,3};double x[]={-2,-0.5,1,2,3.7,4};double result=0.0;for(int i=0;i<x.length;i++){result=polyD(a,a.length,x[i]);System.out.println("x="+x[i]+"  P="+result);}}}

上面已经是正确的输出了。

但是今天还学了一招,JAVA里面如何控制输出的格式。(上一次控制输出格式的时候感觉还是大一学C语言的时候啊....)

DecimalFormat df=new DecimalFormat("0.000E00");
DecimalFormat dff=new DecimalFormat("0.00");


/** * 这是一个计算多项式的值的程序。 * P(x)=3x^6+7x^5-3x^4+2x^3+7x^2-7x-15 * 请分别算出 当x=-2,-0.5,1,2,3.7,4.0的时候,P的数值。 * 解题思路是:设计一个通用的算法来计算多项式的值。 * 答案:采用递推的方法 * P(x)=((an*x+an-1)x+... +a1)x+a0 * 也就是说,把所有的式子都拆分为  a1x+a0  的形式, * 然后再不断的乘以  ((a3x+a2)x+a1)x+a0 * 这样不断递推下去,首项系数乘以的x的指数刚好为式子中的指数 */package Lily_Java_commons;import java.text.DecimalFormat;/** *  @author   LilyLee * @date     2017年4月23日 * @time     下午9:20:58 * @Version  1.0 * @email    lilylee_1213@foxmail.com * */public class Ploynomial_cac {static double polyD(double a[],int n,double x){double result=a[n-1];for(int i=n-2;i>=0;i--){result=result*x+a[i];}return result;}public static void main(String[] args) {// TODO Auto-generated method stubdouble a[]={-15,-7,7,2,-3,7,3};double x[]={-2,-0.5,1,2,3.7,4};double result=0.0;DecimalFormat df=new DecimalFormat("0.000E00");DecimalFormat dff=new DecimalFormat("0.00");for(int i=0;i<x.length;i++){result=polyD(a,a.length,x[i]);System.out.println("x="+dff.format(x[i])+"  P="+df.format(result));}}}


0 0
原创粉丝点击