用牛頓迭代法求平方根

欲求 a 的平方根, 首先要隨便猜測一個值, 在這里我們其值 X? = a / 2 作為其平方根, 然后根據(jù)下面的迭代公式算出X?, 再將 X? 帶入公式左邊計算出 X? …… 直到連續(xù)兩次算出的 Xn 和 Xn-1 的差的絕對值小于某個值 ε,即認(rèn)為找到了足夠精確的平方根,其 ε 的值取得越小, 計算出的平方根就樂精確。

迭代公式:

公式.jpg

具體實現(xiàn):

#include <iostream>
#include <cstdio>
using namespace std;
double EPS = 0.01;  // 用以控制計算精度

int main(void)
{
    double a;
    cin >> a;
    
    if (a >= 0 ) {
        double x = a/2;
        double last_x;
        do {        // 確保能夠進(jìn)行至少一次迭代 
            last_x = x;
            x = (x + a/x)/2;
        } while (x - last_x > EPS || last_x - x > EPS); // 精度未達(dá)到要求就繼續(xù)迭代
        cout << x;
    } else {
        cout << "It can't be nagitive.";
    }
    
    return 0;
} 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容