二分法

class Div//    クラスの宣言
{
    double low,high,x;//フィールドの宣言  low とhighの間にある解を求める。
   
    void set(double low,double high)//メソッドの宣言 low とhighをsetする。
    {
        this.high=high;
        this.low=low;
    }
   
    double get()//メソッドの宣言
    {
        for(int i=1;i<50;i++)//この場合50回計算を繰り返す。
        {
            x=(low+high)/2;//中点を計算する。
           
            if(function(x)>0) high=x;//中点が正のときは、中点をhighにする。
            else low=x;//中点が負のときは、中点をlowにする。
        }
        return x;//50回計算後にこの値を返す。
    }
           
       
    double function(double x)//メソッドの宣言
    {
        return x*x-1;//好きな関数を代入する。
    }
}

 

どんな複雑な関数でもこの方法によって、x軸との交点、すなわち解を求めることができる。近似値だけれど。

掛け算と足し算だけで解が求まる なんて、めからうろこ。上の n は 計算回数。

BACK >>