现在的位置: 首页 > 综合 > 正文

二分法求方程的根

2013年09月26日 ⁄ 综合 ⁄ 共 981字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.