用 Basic Mode 的计算器算对数

Posted 假如你是李华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 Basic Mode 的计算器算对数相关的知识,希望对你有一定的参考价值。

像这种常见的「普通」计算器,其实啥都能算(有了极限,啥玩意都能变成加减乘除)。其中,自然对数尤其好算,本文将提供一种方法,主要利用的是计算器的开平方功能。


众所周知,自然对数有如下展开式:

\\( ln{(1+x)} = x-\\frac{x^{2}}{2}+\\frac{x^{3}}{3}-\\frac{x^{4}}{4}+\\cdots \\;\\; \\left ( |x| < 1 \\right ) \\)

但这玩意对于这种「普通」计算器来说太难算了。所以,条条大路通罗马,在这里我们换一种思路。

回想一下函数 \\( y = a^x (a> 0, a \\neq 1) \\) 的导数是怎么推出来的:

\\( \\frac{\\mathrm{d}}{\\mathrm{d}x}a^x \\)

\\( =\\lim_{\\Delta x\\rightarrow 0}\\frac{a^{x+ \\Delta x} - a^x}{\\Delta x} \\)

\\( =\\lim_{\\Delta x\\rightarrow 0}a^x\\frac{a^{\\Delta x} - 1}{\\Delta x} \\)

\\( =a^x\\lim_{\\Delta x\\rightarrow 0}\\frac{a^{\\Delta x} - 1}{\\Delta x} \\) (1)

可以看出,后面那一坨极限已经跟 \\(x\\) 没关系了,应该等于一个跟 \\(a\\) 有关的常数。那么这个常数到底是多少呢?容易发现,令 \\( x=0 \\) 可得

\\( \\frac{\\mathrm{d}}{\\mathrm{d}x}a^x \\Big|_{x=0} =\\lim_{\\Delta x\\rightarrow 0}\\frac{a^{\\Delta x} - 1}{\\Delta x} \\)

也就是说,这个极限就等于函数在 \\(x=0\\) 处的导数值。根据指数函数的图像,我们「猜测」(这里就不是很严谨了,不过这不是本文的重点)当 \\(a\\) 取到某个值时,\\(x=0\\)处的切线斜率等于 \\(1\\), 即这个极限等于 \\(1\\), 此时函数的导函数恒等于函数本身。设这个值为 \\(e\\)(用 \\(ln{x}\\) 表示以 \\(e\\) 为底 \\(x\\) 的对数),可得

\\( \\frac{\\mathrm{d} }{\\mathrm{d} x} e^x = e^x \\)

所以

\\( \\frac{\\mathrm{d} }{\\mathrm{d} x} a^x \\)

\\(= \\frac{\\mathrm{d} }{\\mathrm{d} x} (e^{ln{a}})^x\\) (代入对数恒等式可得)

\\(= \\frac{\\mathrm{d} }{\\mathrm{d} x} e^{xln{a}} \\)

\\( = \\frac{\\mathrm{d} }{\\mathrm{d} (xln{a})} e^{xln{a}} \\frac{\\mathrm{d} }{\\mathrm{d} x}(xln{a}) \\) (链式法则)

\\( = e^{xln{a}}\\cdot ln{a} \\)

\\( = {(e^{ln{a}})}^x\\cdot ln{a} \\)

\\( = a^x\\cdot ln{a} \\)

跟 (1) 式比较一下,即得

\\( ln{a} = \\lim_{\\Delta x\\rightarrow 0}\\frac{a^{\\Delta x} - 1}{\\Delta x} \\) (2)


那么,这个 \\(e\\) 到底等于多少呢?取反函数,得:

\\( e^x = \\lim_{p\\rightarrow +\\infty }{(\\frac{x}{p}+1)}^{p} \\)

\\( e = \\lim_{p\\rightarrow +\\infty }{(\\frac{1}{p}+1)}^{p} \\)

可以算出 \\(e = 2.71828\\cdots\\), 这即是「自然对数的底」,\\( ln{x} \\) 即 \\(x\\) 的「自然对数」。


 (2) 式左边是对数,右边是幂,离目标近了一步,不过还是不好算。来点黑科技,把指数式变成根式:

 \\( ln{a} = \\lim_{x\\rightarrow 0}\\frac{a^{x} - 1}{x} \\)

\\( = \\lim_{k\\rightarrow +\\infty }\\frac{a^{(2^{-k})} - 1}{(2^{-k})} \\)

\\( = \\lim_{k\\rightarrow +\\infty }(a^{\\frac{1}{2^{k}} } - 1)\\cdot 2^{k} \\)

\\( = \\lim_{k\\rightarrow +\\infty }(\\sqrt[2^k]{a} - 1)\\cdot 2^{k} \\)

\\( = \\lim_{k\\rightarrow +\\infty }(\\underbrace{\\sqrt{\\cdots\\sqrt{\\sqrt{a}}}}_{k\\times } - 1)\\cdot 2^{k} \\) \\( (k\\in \\mathbb{N}) \\)

这个式子的值就很好算了,只要不断开平方就行了。试着令 \\(k=8\\), 算一下 \\( ln{2} \\):

算出的值是 \\( 0.694086413 \\), 事实上 \\( ln{2} \\approx 0.693147 \\), 误差 \\( 0.000939413 \\), 怎么样,够精确吧?再算算 \\( ln{3} \\):

算出的值是 \\( 1.100972987 \\), 事实上 \\( ln{3} \\approx 1.09861 \\), 误差 \\( 0.00236299 \\), 比刚才略大。可以证明,\\( x \\) 越接近 \\( 1 \\), 用这种方法算出的 \\( ln{x} \\) 的近似值跟实际值误差越小。下面是函数 \\( y=ln{x} \\) 和 \\( y=(\\sqrt[256]{x}-1)\\cdot 256 \\) 在同一坐标系内的部分图像。可以看出,拟合得非常好,简直以假乱真:

这还只是 \\( k=8 \\) 时的情形, \\(k\\) 更大就更精确了。怎么样,这个方法不错吧?

 

以上是关于用 Basic Mode 的计算器算对数的主要内容,如果未能解决你的问题,请参考以下文章

药物代谢动力学中对数梯形法如何计算AUC

两种计算自然对数的算法比較

怎么用iPhone计算器的sin或cos反算角度?

用CASIO计算器算平均数与方差

对数可以用来简化乘法计算

求助:卡西欧fx5800怎样编坐标正算中桩边桩计算公式、坐标反算计算公式、圆曲线中桩边桩计算公式?