快速計算平方根?二分法,顧名思義,即是在某個區間内進行二分查找,取中間值的意思,我們以為例:,我來為大家講解一下關于快速計算平方根?跟着小編一起來看一看吧!
二分法,顧名思義,即是在某個區間内進行二分查找,取中間值的意思,我們以為例:
已知;
則取與的中間點,因為,則再取與的中間值,以此類推下去。
因為非完全平方數算術平方根是無理數,所以算得的區間會無限接近于這個無理數,由此可見,每計算次,所得的結果的誤差也就不超過
類似地,還有一種方法叫做逐次逼近法,我們以為例,我們知道,為了計算的小數點後一位,我們可以把、、……全部算出來,當算到,時,我們就可以确定小數點後一位數字,以此類推,我們把,……計算出來,與比較,從而得出小數點後兩位……這樣,每進行次運算(最壞情況),誤差就不大于
但是,用這種方法,越到後面,計算量就越大,但是進步不快,有沒有更加簡便的方法呢?
平方法這種方法,主要是以不等式的計算規律,來加快計算速度,我們還是以為例,我們知道
把上式兩端各減去,得
上式平方,得
上式平方,得
上式平方,得
上式左右同除以,得
整理,得
觀察上式,我們可以看出,我們求出的區間的誤差不超過,這比上一種方法計算量要小得多,而且每次取得的進步是平方級别的,按照這樣,我們可以算出的小數點後許多位,例如上式,我們化成小數後,得出的範圍是。
我們不妨求解地更精确一些,例如從一開始,我們就可以把縮小到更小的範圍:
平方,得
再平方,得
再平方,得
再平方,得
同除以,得
整理後化成小數,得
這樣,我們就把算到了小數點後第位,僅僅通過次計算,我們就可以使算得的結果與相差不超過!
由此,我們可以證明一下用這種方法,誤差是否會越來越小。如果是的近似值,且已知誤差()。我們可以取一個更好的近似值(當時),使得
和的誤差滿足:
我們将不等式兩端平方,得
兩邊同除以,得
當時,,可見的誤差比更小。
此外,把不等式兩邊同時立方,甚至次方,次方,都會得到更加精确的近似值,但是平方較為簡單,而多次平方會使誤差更小。此外,還可以用這種方法去求一個數立方根的值。
線性穿插法這種方法利用了算術平方根與完全平方數的性質,我們還是以為例。
把放在中間設為,分别找到前後完全平方數:,
線性穿插,得:
我們再以為例,,
線性穿插,得:
類似地,我們設所求的平方根為,兩個完全平方數的算數平方根分别為,,我們得到:
因式分解,得,
整理,得
由此,我們可以推導出
因為,所以隻取正根,即
這便是線性穿插法的通解。
極限法極限法的原理為當趨近無窮小時,有,其中為不為的常數。
我們以為例,因為
變形,得
我們設所求的算術平方根裡面的數為,比它略小的完全平方數為,則
通過上面的變換,我們得到:
這便是極限法的通解。
附錄
double kaifang(double low,double up){
double x=up;
double mid=low (up-low)/2;
while(fabs(mid*mid-x)>=1e-6){
mid=low (up-low)/2;
if(mid*mid>x){
up=mid;
}
else if(mid*mid<x){
low=mid;
}
}
return mid;
}
本文作者:
完成時間:
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!