手撕根号
我们先来举个例子,算一算
87
\sqrt{87}
87。首先我们知道
81
=
9
2
81 = 9^2
81=92,然后
87
−
81
=
6
87 - 81 = 6
87−81=6,然后用
9
+
6
9
×
2
=
9
1
3
9 + \frac{6}{9 \times 2} = 9\frac 13
9+9×26=931,这个数约等于
9.3
9.3
9.3。所以
87
\sqrt{87}
87 也就约等于
9.3
9.3
9.3 了。我们用计算器计算一下看我们算的准不准:
我们可以看到,这玩意儿还是比较准的。而且这个数也不是特例,所有的数都可以这样拆。那么这个东西的原理是什么呢?实际上原理无穷连分式,下面我们来证明一下这个东西:
首先假设 x = a 2 + b x = a^2 + b x=a2+b,其中 a a a 是最大的平方数小于 x x x 的整数。然后我们就能得到:
x = a 2 + b x − a 2 = b ( x + a ) ( x − a ) = b x − a = b x + a x = a + b x + a \begin{aligned} &x = a ^ 2 + b \\ &x - a^2 = b \\ (\sqrt{x} + &a)(\sqrt{x} - a) = b \\ \sqrt{x} - &a = \frac{b}{\sqrt{x} + a} \\ \sqrt{x} = &a + \frac{b}{\sqrt{x} + a} \end{aligned} (x+x−x=x=a2+bx−a2=ba)(x−a)=ba=x+aba+x+ab
然后我们可以通过这个式子无穷连带下去:
x = a + b a + x = a + b a + a + b a + x = a + b a + a + b a + a + b a + x = a + b a + a + b a + a + b a + a + b a + ⋯ \sqrt{x} = a + \frac{b}{a + \sqrt{x}} = a + \frac{b}{a + a + \frac{b}{a + \sqrt{x}}} = a + \frac{b}{a + a + \frac{b}{a + a + \frac{b}{a + \sqrt{x}}}} = a + \frac{b}{a + a + \frac{b}{a + a + \frac{b}{a + a + \frac{b}{a + \cdots}}}} x=a+a+xb=a+a+a+a+xbb=a+a+a+a+a+a+xbbb=a+a+a+a+a+a+a+a+⋯bbbb
x = a + b 2 a + b 2 a + b 2 a + b 2 a + ⋯ ≈ a + b 2 a \sqrt{x} = a + \frac{b}{2a + \frac{b}{2a + \frac{b}{2a + \frac{b}{2a + \cdots}}}} \approx a + \frac{b}{2a} x=a+2a+2a+2a+2a+⋯bbbb≈a+2ab
这个也就是我们上面所给出的算式了,如果想要更精确的话那就多带几层就好了。
手撕 l n ln ln
首先我们要记住 ln 2 ≈ 0.693 \ln 2 \approx 0.693 ln2≈0.693。还有一个公式 ln x + 1 x ≈ 2 2 x + 1 \ln \frac{x + 1}{x} \approx \frac{2}{2x + 1} lnxx+1≈2x+12,然后我们就能手撕 ln \ln ln 了。举个例子:
ln 11 = ln ( 11 10 ⋅ 2 ⋅ 5 ) = ln 11 10 + ln ( 5 4 ⋅ 4 ) + ln 2 = ln 11 10 + ln 5 4 + 3 ln 2 ≈ 2 20 + 1 + 2 8 + 1 + 3 × 0.693 ≈ 2.36 \begin{aligned} \ln 11 = & \ln (\frac{11}{10} \cdot 2 \cdot 5) = \ln \frac{11}{10} + \ln (\frac{5}{4} \cdot 4) + \ln 2 = \ln \frac{11}{10} + \ln \frac{5}{4} + 3\ln 2\\ \approx & \frac{2}{20 + 1} + \frac{2}{8 + 1} + 3 \times 0.693 \approx 2.36 \end{aligned} ln11=≈ln(1011⋅2⋅5)=ln1011+ln(45⋅4)+ln2=ln1011+ln45+3ln220+12+8+12+3×0.693≈2.36
用计算器按一下
ln
11
\ln 11
ln11:
还是挺准的。我们现在来证明一下这个近似公式
ln
x
+
1
x
≈
2
2
x
+
1
\ln \frac{x+1}{x} \approx \frac{2}{2x + 1}
lnxx+1≈2x+12
首先泰勒展开
ln
(
1
+
x
)
\ln(1 + x)
ln(1+x) :
ln
(
1
+
x
)
=
x
−
1
2
x
2
+
1
3
x
3
−
1
4
x
4
+
⋯
\ln(1 + x) = x - \frac 12 x^2 + \frac 13 x^3 - \frac 14 x ^ 4 + \cdots
ln(1+x)=x−21x2+31x3−41x4+⋯
所以:
ln
(
1
−
x
)
=
−
x
−
1
2
x
2
−
1
3
x
3
−
1
4
x
4
−
⋯
\ln(1 - x) = -x - \frac 12 x^2 - \frac 13 x^3 - \frac 14 x ^ 4 - \cdots
ln(1−x)=−x−21x2−31x3−41x4−⋯
上下式相减:
ln 1 + x 1 − x = 2 ( x + 1 3 x 3 + 1 5 x 5 + ⋯ ) \ln\frac{1 + x}{1 - x} = 2(x + \frac 13 x ^ 3 + \frac 15 x ^ 5 + \cdots) ln1−x1+x=2(x+31x3+51x5+⋯)
令 x = 1 2 n + 1 x = \frac{1}{2n + 1} x=2n+11 ( x 3 , x 5 , ⋯ x^3,x^5,\cdots x3,x5,⋯ 都很小)
ln 1 + x 1 − x = ln n + 1 n = 2 2 n + 1 + Δ ( 一 个 很 小 的 值 ) ≈ 2 2 n + 1 \ln\frac{1 + x}{1 - x} = \ln\frac{n + 1}{n} = \frac{2}{2n + 1} + \Delta(一个很小的值) \approx \frac{2}{2n + 1} ln1−x1+x=lnnn+1=2n+12+Δ(一个很小的值)≈2n+12
所以就有了这种算法。