簡體   English   中英

使用遞歸的平方根(牛頓算法)

[英]Square Root (Newton's Algorithm) Using Recursion

有人可以向我解釋這個找到數字平方根的遞歸偽代碼嗎? 我發現很難理解,因為我沒有得到n,p和e輸入的含義。 謝謝。

if abs(e^2 - n) < p
    SR(n,p,e) = e     
else
    SR(n,p,e) = SR(n,p,(e+n/e)/2)

(e begins at n)

n是您想要的平方根的數字,e是對平方根的估計,p是您想要的精度,即您願意容忍的誤差。 該算法說:如果e與答案“足夠接近”,即e ^ 2在n的p之內,則e是您要尋找的答案; 否則,請嘗試更好的估計(e + n / e)2。 為什么會有更好的估計? 如果e大於sqrt(n),則n / e小於sqrt(n),因此sqrt(n)將介於e和n / e之間,因此請嘗試將e和n / e的平均值作為下一個估計。 (反之亦然,如果e小於sqrt(n))。

希望這可以幫助,

布魯斯

牛頓算法的功能遠不止是從一個估計變為一個“更好的估計”。 為什么有更好的估計值,后面還有一些詳細的數學公式。

這個想法是要找到形式為f(x) = 0 ANY方程的解決方案(除了一些例外情況),如果您對x有一個近似值,則可以通過查看比率來獲得更好的近似值f(x)的變化f(x)通常寫為f'(x) ,並以此計算出您需要調整的估計量,以獲得對真實解的更好估計。

在平方根的情況下,即我們要找到x=sqrt(n) ,我們可以寫f(x)=x^2-nf'(x)=2x ,然后使用牛頓算法來找到向右x使f(x)=0 這意味着如果我們有一個估計值e ,然后計算出下一個估計值,我們看f(e)=e^2-n ,我們問我們必須改變多少e才能消除此誤差。 。 由於f的變化率為f'(x) ,在(e,e^2-n)點處為2e ,因此我們應將e^2-n除以2e來算出需要調整e通過,以獲得我們的下一個估計。

也就是說,我們的下一個估計應該是

  e - (e^2-n) / 2e
= e - (e / 2)  + (n / 2e)
= (e + n / e) / 2

有關牛頓算法的更多信息,請訪問http://tutorial.math.lamar.edu/Classes/CalcI/NewtonsMethod.aspx (其中有一張漂亮的圖來說明其工作原理)和http://www.math。 brown.edu/UTRA/linapprox.html ,其中包含一些更詳細的技術信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM