import java.util.Scanner;
public class test {
public static void main(String[] args) {
// 一元三次方程的表达式为 ax^3+bx^2+cx+d=0 其中 x!=0.
// 输入系统,输入a,b,c,d的值
Scanner sc = new Scanner(System.in);
double x=0;
System.out.println("Please enter the a ::");
double a = sc.nextDouble();
if(a==0)
{
System.out.println("Input error");
return;
}
System.out.println("Please enter the b ::");
double b = sc.nextDouble();
System.out.println("Please enter the c ::");
double c = sc.nextDouble();
System.out.println("Please enter the d ::");
double d = sc.nextDouble();
// 使用二分法求解一元三次方程。
// n表示最小解,m表示最大解。
double n=-100.0,m=100.0;
// 取中间值。
double middle;
// 迭代的次数为100次。
for(int i=0;i<100;i++)
{
// 取得中间值。
middle = (n+m)/2.0;
// 得到近似解
x=a*middle*middle*middle+b*middle*middle+c*middle+d;
// 如果x在middle的左边,就表示x的近似解就在middle和m直接。
// n x middle m
if(x<middle)
{
// 设置n
n=middle;
}
else
{
// 设置m
m=middle;
}
}
// 输出系统。
System.out.println("the x is ::"+x);
}
}
11-25
05-07