求x得平方根得兩種方法

2022-05-02 13:24:11 字數 1124 閱讀 8117

乙個經典得題目是求平方根(見leetcode第69題)

題目如下,對於某個浮點數x,求其平方根。

方法一:二分法:

這種是最簡單的,就是定義乙個最小值0和最大值number,把乙個數取乙個中間值(0+number)/2,然後平方,如果平方大於該數值,就把中間值賦給最大值,否者就把中間值賦給最小值,一直迴圈,直到取到想要的精度為止。

//

二分法

double sqrt1(double

x)

else

mid = (high + low) / 2

; }

return

mid;

}

方法二:牛頓法

這個也是有跡可循的,求平方根即x^2=n。

令f(x)=x^2-n

如圖所示:

取x0,如果x0不是解,做乙個經過(x0,f(x0))這個點的切線,與x軸的交點為x1。

同理,如果x1不是解,做乙個經過(x1,f(x1))這個點的切線,與x軸的交點為x2。

以此類推。

以這樣的方式得到的xi會無限趨近於f(x)=0的解。

判斷xi是否是f(x)=0的解有兩種方法:

一是直接計算f(xi)的值判斷是否為0,

二是判斷前後兩個解xi和xi-1是否無限接近。

先採用第一種方法判斷

(f(x)-f(xi))/(x-xi)=f』(x),f』(x)是斜率也是f(x)的導函式,即f』(x)=2x。

化簡得:f(xi)=f(x)-f』(x)(x-xi),令f(xi)=0得:

(x^2-n)-2x(x-xi)=0

持續化簡得:

xx-n-2xx+2xxi=0

2xxi=xx+n

2xi=x+n/x

xi=(x+n/x)/2

這樣就得到了一元等式,就可

//

牛頓迭代法

double sqrt2(double

x)

return

res;

}

以進行程式設計了。

求x 的平方根 二分查詢

題目 實現 int sqrt int x 函式。實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。思路 因為x是非負整數,那麼當x是0的時候平方根為0,x為1時平方根為1,只有當x大於1時才需要計算因...

求n的算術平方根(計算平方根的巴比倫的方法)

正數n的平方根可以通過計算一系列近似值來獲得,每個近似值都比前乙個更加接近準確值,第乙個近似值是1,接下來的近似值則通過下面的公式來獲得 ai 1 ai n ai 2 include includeint main int argc,char argv new guess 1 dowhile new...

力扣求平方根三種方法小白理解

主要理清二分法關鍵,且注意避免mid平方的誕生 二分法不過就是不斷縮小左值右值的區間,使其左值與右值接近相等,而左值右值此時都為整型 所以接近相等時即為二者相差1,此時取小的數即為所求根。注意對於乙個非負數其取整數的平方根一定在其0到他的一半之間 除了0,1 c intmysqrt int x if...