手动被开方数为什么非要写成(10a+b)^2这种固定形式????
手动被开方数为什么非要写成(10a+b)^2这种固定形式???? 这只是一种算法而已,你没必要这么纠结!这种算法完全不切实际,
你还不如用牛顿迭代法,
或者用连分数来计算
这个年代,手算开平方能有啥用呢?
这是因为10进制数是人们最熟悉的形式,人们在书写一个数时总是写成10进制的形式,自然,在计算过程中也使用10进制的形式。如果你对16进制很熟悉,自然可以使用(16a+b)^2的形式。事实上,高效的计算机算法,从来不用(10+b)^2的形式。 按照牛顿迭代法的原理
\(\D \sqrt{n}=m-\frac{m^2-n}{2m}\)
只要m取得足够靠近算一次就很精确了
不知道什么算法是最适合手动的 定义\(\D p=\left[\frac{\lg n}{2}\right]\)
\(\D q=\left[\sqrt{\left[\frac{n}{100^p}\right]}\right]\)
那么按照手算开平方原理,有
\(\D m=10^p\cdot q+\frac{n-q^2 \cdot 100^p}{2 \cdot 10^p \cdot q}\) \(\D \sqrt{n^2+m}\leq \sqrt{n^2+2\cdot n \cdot \frac{m}{2n}+\frac{m^2}{4n^2}}=\abs{n+\frac{m}{2n}}\) 对于小整数平方根的算法,可使用初等的级数展开式的算法,这个算法比较简单,不使用大整数乘以大整数的算法。详见整数平方根的计算(一)
对于任意精度的平方根算法,目前最好的算法是Paul Zimmermann 的《Karatsuba Square Root》,这个算法优于牛顿迭代法。我实现了Karatsuba和牛顿这两种平方根算法,才得出这个结论的。详情见 https://bbs.emath.ac.cn/forum.php?mod=redirect&goto=findpost&ptid=9477&pid=67197&fromuid=25
页:
[1]