十分抱歉,上周发烧了,没有写博客。

今天来讲一下我发现的一个开根号公式

n=am+bn=a^m+b

nma+bmam1\sqrt[m]{n}\approx a+\frac{b}{ma^{m-1}}

其中b|b|越小越好

灵感来源

某一天做练习册的时候看到某道题估算某个数的平方根:

n=a2+bn=a^2+b
假设n=a+x(0<x<1)\sqrt{n}=a+x(0<x<1)
n=(a+x)2n=(a+x)^2
n=a2+2ax+x2n=a^2+2ax+x^2
因为x2x^2太小我们直接扔掉,原式变成
x=b2ax=\frac{b}{2a}
所以na+b2a\sqrt{n}\approx a+\frac{b}{2a}

所以就想用类似的方法求nm\sqrt[m]{n}

举个栗子

例如说我们要算3\sqrt{3}

然后我们知道3=22+(1)3=2^2+(-1)

所以32+12×2=1.75\sqrt{3}\approx 2+\frac{-1}{2\times2}=1.75

但假如我们数字再大一点,会怎么样呢?

10001=1002+1,10001100+12×100=100.00510001=100^2+1,\sqrt{10001}\approx100+\frac{1}{2\times100}=100.005

这已经很接近了!10001=100.004999875\sqrt{10001}=100.004999875\dots,这个公式得到的值准确率有99.999999875%99.999999875\%

假如我们试一下求2100\sqrt[100]{2}的值:2=1100+1,21001+1100×199=1.012=1^{100}+1,\sqrt[100]{2}\approx1+\frac{1}{100\times1^{99}}=1.01,而2100=1.00695\sqrt[100]{2}=1.00695\dots,准确率有99.698%99.698\%

所以我们可以总结出这个公式的优缺点:

  • 开方数越大越精确
  • mm越大会越不精确(除非开方数大)

推导

其实推导也不难,只是纯粹的杨辉三角罢了

假设n=am+bn=a^m+b并且nm=a+x(x<1)\sqrt[m]{n}=a+x(x<1)
n=(a+x)m\therefore n=(a+x)^m
n=am+mam1x++maxm1+xmn=a^m+ma^{m-1}x+\dots+max^{m-1}+x^m

此时,我们可以将省略号全部去掉(因为这部分比较难计算),并且把xmx^m去掉(因为这部分太小了)

所以原本的式子就变成了

n=am+max(am2+xm2)n=a^m+max(a^{m-2}+x^{m-2})

b=max(am2+xm2)b=max(a^{m-2}+x^{m-2})

bma=x(am2+xm2)\frac{b}{ma}=x(a^{m-2}+x^{m-2})

bma=xam2+xm1\frac{b}{ma}=xa^{m-2}+x^{m-1}

然后因为xm1x^{m-1}也很小,那么也扔掉,最后

bma=xam2\frac{b}{ma}=xa^{m-2}

x=bmam1x=\frac{b}{ma^{m-1}}

所以

nm=a+x\sqrt[m]{n}=a+x

nm=a+bmam1\sqrt[m]{n}=a+\frac{b}{ma^{m-1}}

Update

Update 2019.10.4

十分感谢@jacky567 给出了一个改进后的方法。

当我们算出a+bmam1a+\frac{b}{ma^{m-1}}后,他已经接近nm\sqrt[m]{n}了。

因为我们说了,b|b|越小越好,那么a+bmam1a+\frac{b}{ma^{m-1}}代入公式中的aa,那么bb就会更小,这时我们再迭代计算一遍,这个值就会更接近于nm\sqrt[m]{n}

举个例子2\sqrt{2}

2=12+1,21+12=1.52=1^2+1,\sqrt{2}\approx1+\frac{1}{2}=1.5

2=(1.5)2+(0.25),21.5+0.253=1712=1.416˙2=(1.5)^2+(-0.25),\sqrt{2}\approx1.5+\frac{-0.25}{3}=\frac{17}{12}=1.41\dot6

2=(1712)2+(1144),217121408=577408=1.4142˙156862745098039˙2=(\frac{17}{12})^2+(-\frac{1}{144}),\sqrt{2}\approx\frac{17}{12}-\frac{1}{408}=\frac{577}{408}=1.414\dot215686274509803\dot9

\dots

以此类推,你会发现他的精确度越来越高。(94.2809%99.8268%99.9998%94.2809\%\to99.8268\%\to99.9998\%

那么只要你一直算下去,他就会更接近于2\sqrt{2}

其他开根号的方法

有牛顿迭代法、手算(夹逼法?)、无穷连分数近似法、以及一种神奇的开平方根的卡马克开方法,但是卡马克开方法只适用于计算机(如果是人算就算了吧)。

这些以后有时间再讲(又开了一个新坑)