我是一个初学者,对JAVA不太了解,自己写了很久总写不正确,请大家帮小弟一次, 
用JAVA用JAVA语言编写一个程序求一个一元二次方程f(x)=a*x*x*x+b*x*x+C*x+d=0的根(用弦截法),在编写代码得时候可以赋值给a,b,c,d.一定要用弦截法

解决方案 »

  1.   

    这是一个例子,以x*x*x-2*x*x+8*x-16=0为例,两个开始点已经选取为-1和3
    //这里以x*x*x-2*x*x+8*x-16=0为例
    public class aa
    {
    static float x1=-1,x2=3; //选取的两个开始点,这两个点要保证f(x1),f(x2)符号相反
    float x; //存结果

    float f(float x) //求f(x)
    {
    float y;
    y = ((x-2)*x+8)*x-16;
    return y;
    }
    float xpoint(float x1,float x2)//求弦截点的坐标
    {
    float x;
    x = (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
    return x;
    }
    float root(float x1,float x2)//求根
    {
    float x,y,y1;
    y1 = f(x1);
    do{
    x=xpoint(x1,x2);
    y=f(x);
    if(y*y>0)
    {
    y1=y;
    x1=x;
    }
    else x2=x;
    }while(Math.abs(y)>0.0001);
    return x;
    }
    public static void main(String[] args)
    {
    aa a = new aa();
    a.x = a.root(a.x1,a.x2);
    System.out.print("The root of equation is "+a.x);
    }
    }
      

  2.   

     float f(float x)            //求f(x)
        {
            float y;
            y = ((x-2)*x+8)*x-16;
            return y;
        }
    楼上这个优化的好
      

  3.   


    import java.util.*; 
    import java.math.*; public class Test { float x1,x2,y1,y2,x; 
    static float a,b,c,d; 
    public static void main(String []args) 

    float x1,x2,y1,y2,x; 
    do{ 
    System.out.println("please input two numbers:"); 
    Scanner in = new Scanner(System.in); 
    x1 = in.nextFloat(); 
    x2 = in.nextFloat(); System.out.print("input a:"); 
    a = in.nextFloat(); 
    System.out.print("input b:"); 
    b = in.nextFloat(); 
    System.out.print("input c:"); 
    c = in.nextFloat(); 
    System.out.print("input d:"); 
    d = in.nextFloat(); 
    y1 = f(x1); 
    y2 = f(x2); }while(y1*y2>=0); 
    x =root(x1,x2); 
    System.out.printf("A root of equation is %8.4f",x); 

    public static float f(float x){ 
    float y; y=a*x*x*x+b*x*x+c*x+d; 
    return y; 
    } public static float root(float x1,float x2){ 
    float y1,y,x; 
    y1=f(x1); 
    do 

      x=xpoint(x1,x2); 
      y=f(x); 
      if(y1*y>=0) 
      { 
      y1=y; 
      x1=x; 
      } 
      else 
        x2=x; 
      }while((Math.abs(y))>=0.0001); 
    return x; 
    } public static float xpoint(float x1,float x2){ 
    float x; 
    x = (f(x2)*x1-f(x1)*x2)/(f(x2)-f(x1)); 
    return x; 

    }
    http://topic.csdn.net/u/20090503/16/ddc9018d-e9ab-4670-baa1-ed1bd93c1c8f.html?seed=2004985029
    出处