怎麼算出一個數的算術平方根,要求筆算?

例如20


所謂手算,當然是要一位一位地試了。

平方根

樓上的兩位你們確定你們的演算法真的可以手算嘛!

補張圖:


x_n=frac{1}{2}(x_{n-1}+frac{a}{x_{n-1}})迭代來算sqrt{a}


我來補充說明一下前面鄧永哲給出的方法

x_{n} =frac{1}{2} left( x_{n-1}+frac{a}{x_{n-1}} 
ight)

這是通過牛頓迭代法來計算sqrt{a}

牛頓迭代的思想是計算函數的一階導數在局部使用線性函數進行逼近求根

方法如下

  1. 選擇一個靠近函數f(x)的零點的一個值x_{0},這個值可以是通過二分法估算出或者是隨便猜一個值,當然選取越靠近函數f(x)的零點越好,達到所需精度的迭代步數也少.如果一個函數有多個零點則初始迭代值對最終結果有影響.最好選取較靠近你要求根的值作為初始值.
  2. 使用線性函數f_{0}(x)=f(x_{0} )+f^{x_{0}的鄰域逼近f(x),那麼可得f(x)根的一個逼近值x_{1}:f_{0}(x_{1})=0解方程可得x_{1}=x_{0}-frac{f(x_{0})}{f^{

  3. 得到新的跟的逼近值x_{1}後將步驟2中的x_{0}替換成x_{1}進行計算.可得比x_{1}精度更高的逼近值x_{2}:x_{2}=x_{1}-frac{f(x_{1})}{f^{.可得迭代公式x_{n+1}:x_{n+1}=x_{n}-frac{f(x_{n})}{f^{.此遞推式收斂至函數零點,在迭代至第n次達到所需精度後停止迭代,所得x_{n}為函數f(x)=0在給定精度下根的一個逼近值.

(圖片來自Wikipedia Newton"s method)

回到計算sqrt{a} 上,設函數f(x)=x^{2}-a即函數f(x)的零點為x=sqrt{a} .使用上面的牛頓迭代法進行計算:

f(x)=x^{2}-a

f^{

則迭代公式為:x_{n+1}:x_{n+1}=x_{n}-frac{x_{n}^{2} -a}{2x_{n}} =frac{1}{2} left( x_{n}+frac{a}{x_{n}}  
ight)

計算示例如下:

我們需要的精度為x_{n}in [x-10^{-6},x+10^{-6}](x_{n}為迭代逼近值,x為函數f(x)=x^{2}-a零點即sqrt{a} )

選取x_{0}=5a=20

x_{1}=frac{1}{2} left( 5+frac{20}{5}  
ight) =4.5

x_{2}=frac{1}{2} left( 4.5+frac{20}{4.5}  
ight) =4.47222222

x_{3}=frac{1}{2} left( 4.47222222+frac{20}{4.47222222}  
ight) =4.47213595

sqrt{20} -10^{-6}leq x_{3}leq sqrt{20} +10^{-6}sqrt{20} 的在10^{-5}精度範圍下的逼近值為x=4.472135

這就是運用牛頓迭代法計算sqrt{a} 的過程

當然牛頓迭代式數值分析中的一個重要方法,解方程的數值方法不止牛頓迭代一種,還有如二分法,不動點迭代法,割線法,Brent法等等,使用什麼方法視具體情況而定.


手把手+原理,不怕你不懂:

開2次方可以手算,但開n(n&>2)次方有手算的方法嗎? - LiTuX 的回答


效果見圖。

隨便一個數:

無限算下去,一直不斷地逼近。

下面是乾貨:

1.判斷是位數是偶數還是奇數。

偶數的話就好辦,從左到右兩個數為一個單位。比如1234,那麼就是12是第一單位,34是第二單位。

奇數的話,從左到右,先去第一個數是第一單位,下面依次兩個數一個單位。比如,12345,就是1,23,45。

有人說,有小數怎麼辦呢?請看下圖。

我們可以把1234看成是1234.00000等等....

有助於下面後續的理解。

2.開始算第一單元。

解釋一下為什麼依次取兩位為一個單元,因為這種方法是一次確定一個數(0--9),而一個一位數的平方不大於81,所以一次用兩個數就能確定下來個數。

比如1234,第一單元12,想哪個數的平方小於等於12而且最接近12呢?3

所以答案的第一個數就確定了。3

把12減去3的平方差是3,把第二單元的34移到剛剛減出來的3的後面,334。

把得到答案裡面的第一個數3乘以2得6,然後設答案中的第二位是X,把六作為十位數,X作為個位數,判斷6X乘以X接近334且小於334,瞬間想出來是X=5。現在答案就是35了。

334-65x5=9,然後就用到我們剛才說的了,1234可以看做是1234.000000....,把小數點後兩個零下拉到9的後面。

判斷第三位就是重複第二步了。

把答案得到的35乘以2得70,設答案第三位為X,那麼判斷70X乘以X的值接近900且小於等於900,恩是1,第三位也出來了。注意第三位已經進入小數區了。所以,答案現在是35.1。依次接著循環算下去.....

看完了吧,給個小題算算。計算12345.678

下面是我的計算,得到是111.11106....


20=frac{20}{25}25=(1-0.2)	imes 5^2

於是sqrt{20}=5sqrt{1-0.2}

利用在x接近於0時sqrt{1+x} approx 1+frac x2

sqrt{1-0.2}approx 1-0.1=0.9 .

於是sqrt{20} approx 4.5

然後20=frac{20}{4.5^2}4.5^2,仿照第一步繼續。


展開成連分數是手算最方便的法子。

left( 4+x 
ight)^{2}  =20</P>

x^{2} +8x=4

x=frac{4}{8+x}

sqrt{20} =4+frac{4}{8+frac{4}{8+frac{4}{8+frac{4}{...} } } }


先找平方與給定值最靠近的兩個整數,然後二分法--


夾逼法(常規)

或者連分數(佩爾方程常用解法來源)

就是把整數部分拆開,小數部分再次變成其倒數,然後分離整數


疊代法。比如求根號n,先將n求倒數,再乘以(n-1),再加上2,得到一個結果,然後 求倒數,再乘以(n-1),再加上2,得到一個結果,如此反覆,直到精度達到要求。此法可行,不過也許不是最優方案。


我們上初中時,初二的課本上就有「手開平方法」(就是題主問題的答案),屬於自學內容,稍微有點兒難度,我們數學老師帶著大家做了幾個,就都會了, 可能我和題主不是同一個時代的人,現在的課本里已經沒有這個了吧?


推薦閱讀:

請問該如何理解群的作用,軌道穩定子定理和西羅定理呀?
怎樣用尺規作圓的外切正五邊形?
數系中像自然數、整數、有理數、複數等等,都有字母表示,為什麼無理數、虛數沒有字母表示呢?
度量空間 (metric space) 與測度空間 (measure space) 的關係?
如何評價2017數學建模國賽?

TAG:數學 | 數值分析 |