/*
功能:二分法求解方程在2X^3-4X^2+3X-6=0在(-10,10)之间的根。
步骤:1.求出给出的两个端点之间的值fx1,fx2.当fx1*fx2<0,则表明x1和x2之间必存在一根
要么就不存在,一直提示输出x1和x2.
2.一旦fx1*fx2<0,就表明在x1和x2之间有根,继续判断,求的x1和x2的中点值x0,求出fx0.
3.在判断fx0*fx1>0,则在x0和x2中间去找根,此时x1不起作用,用x0代替x1,用fx0代替fx1.
要么就在x0和x1中去找根,此时x2不起作用,用x0代替x2,用fx0代替fx2.
*/
import java.io.*; public class ErFenJie { public static void main(String[] args) { double x0,x1=0,x2=0,fx0,fx1,fx2;//x1,x2作为两个端点,x0作为取中点 InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); do { System.out.println("请输入端点x1和x2的值:"); try{ x1=Integer.parseInt(br.readLine());//readLine()是读取一行文本,在控制台输入数据的时候要换行 x2=Integer.parseInt(br.readLine()); }catch(Exception e){ e.printStackTrace(); } fx1=2*x1*x1*x1-4*x1*x1+3*x1-6;//获得该方程x1的值 fx2=2*x2*x2*x2-4*x2*x2+3*x2-6;//获得该方程x2的值 }while(fx1*fx2>0);//当fx1.fx2<0时候跳出循环,表明此时x1和x2之间存在一根。 do { x0=(x1+x2)/2;//求得x1和x2的中点值 fx0=2*x0*x0*x0-4*x0*x0+3*x0-6; if(fx0*fx1<0) { x2=x0; fx2=fx0; } else { x1=x0; fx1=fx0; } } while (Math.abs(fx0)>1e-5); System.out.println("方程的根是: "+x0); } }