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

解决方案 »

  1.   


    拿别人C++的例子改的 你看一下 系数ABCD可以自己改
    import java.util.Scanner;
    public class Xuanjiefa {
    static double epsilon = 0.0000001; // 精度
    static int MAXREAPT = 100;
    static final double A = 1;
    static final double B = 2;
    static final double C = 3;
    static final double D = 4;
    static double result;
    static double f(double x) {
    return A * x * x * x + B * x * x + C * x + D;
    }
    static boolean rootChord(double x0, double x1)
    // 根在区间[x0,x1]附近(不一定在区间里面),同时x0兼作求根结果返回,x0,x1谁大谁小没有关系
    {
    double xk, xk1, xk2;
    xk = x0;
    xk1 = x1;
    for (int i = 0; i < MAXREAPT; i++) {
    xk2 = xk1 - f(xk1) * (xk1 - xk) / (f(xk1) - f(xk));// key step
    if (Math.abs(xk2 - xk1) < epsilon) {
    result = xk1;// 返回根
    return true;
    } else {
    xk = xk1;
    xk1 = xk2;
    }
    }
    // 迭代失败
    System.out.println("迭代次数超过预期.");
    return false;
    }
    public static void main(String[] args) {
    double x0, x1;
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入初始迭代x0,x1值:");
    x0 = sc.nextDouble();
    x1 = sc.nextDouble();
    if (rootChord(x0, x1)) {
    System.out.println("在该初始值附近的根为:" + result);
    } else {
    System.out.println("迭代失败!");
    }
    }
    }
      

  2.   

    对了 上面注释中“同时x0兼作求根结果返回”这句话是原来C++中的 放在这儿就不对了 应该是“同时result作求根结果返回”