笨笨 发表于 2019-3-29 21:33:59

手动被开方数为什么非要写成(10a+b)^2这种固定形式????

手动被开方数为什么非要写成(10a+b)^2这种固定形式????

mathematica 发表于 2019-3-30 08:04:06

这只是一种算法而已,你没必要这么纠结!
这种算法完全不切实际,
你还不如用牛顿迭代法,
或者用连分数来计算
这个年代,手算开平方能有啥用呢?

liangbch 发表于 2019-3-30 08:24:18

这是因为10进制数是人们最熟悉的形式,人们在书写一个数时总是写成10进制的形式,自然,在计算过程中也使用10进制的形式。如果你对16进制很熟悉,自然可以使用(16a+b)^2的形式。事实上,高效的计算机算法,从来不用(10+b)^2的形式。

manthanein 发表于 2019-10-24 09:58:06

按照牛顿迭代法的原理
\(\D \sqrt{n}=m-\frac{m^2-n}{2m}\)
只要m取得足够靠近算一次就很精确了
不知道什么算法是最适合手动的

manthanein 发表于 2019-10-24 10:15:40

定义\(\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}\)

manthanein 发表于 2019-10-24 10:37:46

\(\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}}\)

liangbch 发表于 2020-2-28 10:32:09

对于小整数平方根的算法,可使用初等的级数展开式的算法,这个算法比较简单,不使用大整数乘以大整数的算法。详见整数平方根的计算(一)
对于任意精度的平方根算法,目前最好的算法是Paul Zimmermann 的《Karatsuba Square Root》,这个算法优于牛顿迭代法。我实现了Karatsuba和牛顿这两种平方根算法,才得出这个结论的。详情见 https://bbs.emath.ac.cn/forum.php?mod=redirect&goto=findpost&ptid=9477&pid=67197&fromuid=25
页: [1]
查看完整版本: 手动被开方数为什么非要写成(10a+b)^2这种固定形式????