数学小Tricks

数学小Tricks

数学小Tricks

手撕 \(\ln x\)

介绍

可以通过泰勒公式推导出

\[\ln\frac{n+1}n\approx \frac2{2n+1}

\]

于是乎我们容易得到

\[\ln n=

\left\{\begin{aligned}

&\ln\frac n2+\ln2&,2\mid n\\

&\ln\frac{n}{n-1}+\ln(n-1)&,2\nmid n

\end{aligned}\right.

\]

然后我们只需要记住

\[\ln2\approx0.693

\]

就可以不断递归,对于一个数 \(x\) 我们至多迭代 \(\log_2x\) 次就可以得到近似值

举例

以求 \(\ln46\) 的近似值为例

\[\begin{aligned}

\ln46

&=\ln23+\ln2\\

&=\ln\frac{23}{22}+\ln22+\ln2\\

&=\ln\frac{23}{22}+\ln11+2\ln2\\

&=\ln\frac{23}{22}+\ln\frac{11}{10}+\ln10+2\ln2\\

&=\ln\frac{23}{22}+\ln\frac{11}{10}+\ln5+3\ln2\\

&=\ln\frac{23}{22}+\ln\frac{11}{10}+\ln\frac54+\ln4+3\ln2\\

&=\ln\frac{23}{22}+\ln\frac{11}{10}+\ln\frac54+5\ln2\\

&\approx\frac2{22\times2+1}+\frac2{10\times2+1}+\frac2{4\times2+1}+5\ln2\\

&=\frac2{45}+\frac2{21}+\frac29+5\ln2\\

&\approx0.044+0.095+0.222+5\times0.693\\

&=3.826

\end{aligned}

\]

那么这准确吗?我们用计算器按一下

\[\ln46\approx3.828641396489095

\]

误差仅有 \(0.0026\) 左右,已经完全足够了

手撕 \(\sqrt x\)

介绍

首先我们可以通过大眼观察法很容易地得到 \(\lfloor\sqrt x\rfloor\),如果 \(x\) 是完全平方数就不用算了,如果不是,就有

\[\lfloor\sqrt x\rfloor<\sqrt x<\lfloor\sqrt x\rfloor+1

\]

换个元,让 \(t=\lfloor\sqrt x\rfloor\)

\[\begin{aligned}

\because t<\sqrt x

\therefore 0<\sqrt x-t<1\\

\end{aligned}

\]

平方一下

\[0

\]

整理得

\[\frac{x+t^2-1}{2t}<\sqrt x<\frac{x+t^2}{2t}

\]

这里我们就可以得到一个近似 \(\sqrt x\) 的分数了,如果还要更接近的分数,可以同时减去 \(\frac{x+t^2-1}{2t}\),然后就有

\[0<\sqrt x-\frac{x+t^2-1}{2t}<\frac1{2t}

\]

再平方重复上述过程就可以做到不断提高精度,不过这种做法收敛速度极快,一次迭代的精度足以满足大多需求

举例

以计算 \(\sqrt{46}\) 为例

\[6<\sqrt{46}<7

\]

所以

\[0<\sqrt{46}-6<1

\]

平方

\[0<82-12\sqrt{46}<1

\]

整理一下

\[\frac{81}{12}<\sqrt{46}<\frac{41}{6}

\]

\[6.75<\sqrt{46}<6.83

\]

已经差不多够用了,如果还要更高精度就减掉 \(\frac{81}{12}\),再重复一次上面的操作就可以得到更高的精度

该文为本人原创,转载请注明出处

博客园传送门

相关推荐

弹弹堂手游武器用哪个
菠菜365官网

弹弹堂手游武器用哪个

📅 02-04 👁️ 9669
招标信息平台有哪些?这 8 个主流平台,80% 的企业都在用!
想知道恋活是什么游戏?看完这篇就懂了!
菠菜365官网

想知道恋活是什么游戏?看完这篇就懂了!

📅 07-21 👁️ 6868