/*
功能:二分法求解方程在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.
功能:二分法求解方程在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);
}
}