close

題目



已知一個正數N的平方根介於0與N之間,根據二分逼近法,可令N的平方根為X(0<=X<=N),令a=0(下邊界),b=N(上邊界)
step 1: X=(a+b)/2
step 2: 若 X*X > N 則 令 a=a,b=X 反之 X*X < N 則 令 a=x,b=b 回step 1
step 3: 重複執行step 1跟step 2直到 X*X -> N
請撰寫一個程式,利用二分逼近法求N的平方根。


程式



#include<iostream>

using namespace std;

int main()
{
    double n,a=0,b,x;//定義區//n=使用者輸入的數值//a=下邊界//b=上邊界//x=逼近值

    //////////////////Input
    cout<<"請輸入N的值以求其平方根:";
    cin>>n;
    //////////////////運算
    b=n;//載入上邊界

    for(int i=0;i<100;i++){//利用迴圈執行逼近
        x=((a+b)/2);//尋找上下邊界的中間值
        if((x*x)>n){//如果X^2大於N^2則
            b=x;//上邊界移動到中間值
        }else if((x*x)<n){//如果X^2小於N^2則
            a=x;//下邊界移動到中間值
        }
    }
    //////////////////Output
    cout<<endl
        <<">>>>計算結果<<<<"<<endl
        <<"N的平方根是:"<<x<<endl;
}



看不懂再問


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Aminzai 的頭像
    Aminzai

    Amin's Note

    Aminzai 發表在 痞客邦 留言(0) 人氣()