有人可以向我解释一下找到数字平方根的递归伪代码吗?我发现很难理解,因为我没有给出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)
答案 0 :(得分:3)
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))。
希望这有帮助,
布鲁斯
答案 1 :(得分:1)
牛顿的算法不仅仅是从一个估计变为“更好的估计”。有一些详细的数学背后的原因,为什么更好的估计就是它。
我们的想法是找到f(x) = 0
形式的任意方程的解,(除了少数例外情况),如果你有x
的近似值,你可以得到更好的近似值,通过查看f(x)
的变化率(通常写为f'(x)
),并使用它来确定您需要调整估算的数量,以便更好地估算真实情况溶液
对于平方根,也就是说,我们想要找x=sqrt(n)
,我们可以写f(x)=x^2-n
和f'(x)=2x
,然后使用牛顿算法找到正确的{{1}制作x
。这意味着,如果我们有一个估算值f(x)=0
,那么为了计算我们的下一个估算值,我们会看e
,我们会问我们需要更改f(e)=e^2-n
以摆脱多少这个错误。由于e
的变化率为f
,f'(x)
为2e
,我们应将(e,e^2-n)
除以e^2-n
才能工作我们需要多少调整2e
,以获得我们的下一个估算值。
也就是说,我们的下一个估计应该是
e
有关牛顿算法的更多信息,请访问: http://tutorial.math.lamar.edu/Classes/CalcI/NewtonsMethod.aspx(其中有一个可爱的图表解释了它的工作原理)和http://www.math.brown.edu/UTRA/linapprox.html,其中介绍了一些更具技术性的细节。