背景

​ 昨晚我在看一本书,叫《数学极客》,看到第六章《e:不自然的自然数》,这个数最早开始接触应该是高一的时候,那时候问老师,这个数是怎么来的,老实说,和圆周率一样,是一个常数,然后就没有然后了,后面这个问题就随着我的好奇心一起沉睡了,直到昨晚这个尘封许久的问题又一次浮上我的心头,庆幸的是这次我有了打破砂锅问到底的想法和行动。特意写下这篇文章纪念这一次探索之旅。

e是怎么来的?

​ 这个数其实来源于1683年瑞士数学家雅各布·伯努利以及他所研究的复利问题。复利问题是这样的,如果你有a元,存进银行里,银行一年之后付你100%的利息,那么你一年之后能拿到的钱就是:

\[y = a(1 + 1)
\]

但是现在要是银行改变策略了,变成半年付一次利息,并且一次利息为50%,那么一年后你能拿到多少呢?是下面这个数:

\[y = a(1 +\frac{1}{2})^2
\]

其实很明显我们可以看出来,分的份数越多可以拿到的更多,因为下一次结算利息是以上一次发放的本金加上利息作为本金计算出来的。那么自然而然,我们会好奇,要是把一年的时间分成无穷大份,我们一年之后能得到多少?这个计算也简单嘛。就是下面这个式子:

\[y = a\lim_{n\rightarrow+\infty}(1 + \frac{1}{n})^n
\]

我们看这个式子,其实a是常数,也就是我们的原始本金,不需要纳入讨论的范畴,我们关键还是看后面的部分。当n趋于无穷的时候后面这个1+1/n的n次方代表着我们这笔钱能翻几倍。伯努利发现这个数趋近无穷大的时候,这个数会毕竟一个小数,也就是我们熟知的2.718。

​ 这个2.718是怎么算的呢?我们可以把e^x用泰勒公式展开:

​ 当f(x)是e^x的时候代入进去:

当x是1的时候也就是我们要计算的e的值:

​ 一开始这个数还不叫e,他叫b。后来欧拉出现了,他觉得呀,你这个式子趋近于一个常数,是好事情,但是你一开始的假设他的一年后翻一倍,后面也是基于这个假设,把一年分成若干份,每次发放的利息是若干份之一,这个结论不够一般化,所以把这个东西推广了一下。一年之后的利息总是x。就变成了下面这个式子:

\[a\lim_{n\rightarrow+\infty}(1 + \frac{x}{n})^n
\]

可以看出来,这个式子其实就变成了关于x的函数了,一般在数学上表示一个关于x的函数都是用f(x), 但是这里欧啦用了exp(x)来表示, exp就是指数的意思。也就是:

\[exp(x) = a\lim_{n\rightarrow+\infty}(1 + \frac{x}{n})^n
\]

这个也就是指数函数最开始的定义。到这里就会有人问了,指数不是y=a^x这种形式嘛。其实你这样看,就豁然开朗了:

\[exp(x) = a\lim_{n\rightarrow+\infty}((1 + (\frac{x}{n})^\frac{n}{x})^x
\]

上面这两个式子其实是等价的,就是稍微操作了一下。n除x,在外面又乘x。但是这里你仔细观察

\[\lim_{n\rightarrow+\infty}(1 + (\frac{x}{n})^\frac{n}{x}
\]

这个不就是上面伯努利一开始发现的常数2.718嘛。所以exp(x)最后可以写成:

\[exp(x) = e ^x
\]

这也就是指数函数最早的由来,e也是从这里来的,所以e也叫欧拉常数。这个式子的意义是说,通过不断结算的方式追求到的复利也是有极限的,他的极限就是e^x倍。x指年利率。

计算机为什么是二进制?

​ 乍一看这个问题很突兀,为什么计算机是二进制,一般这个问题的答案都是因为电荷只有正电荷和负电荷,所以计算机里面一个电子元器件只能表示两种状态,然后就用二进制了。但是你有没有想过,如果我把好几个电子元器件捆绑在一块,比如我捆绑三个元器件,这样这三个元器件就可以表示0到7的数,这样咱们直接搞个8进制不也可以嘛?这里就涉及到信息表示效率了,信息的表示效率指的是能表示的信息量于表示这个信息量所需要的资源的比值。比如举2进制的例子来说,现在要表示0到7这个数据量,那么我们用3个二进制单元就可以表示完了。所以我们站在数学的角度推广这个结论,就是我们要表示m个数,那么在二进制下面要用n个二进制单元去表示,也就是

\[m = 2 ^n
\]

那么在二进制下面要表示那么多数需要多少种状态呢,每个比特位就是两种状态嘛。所以一共需要:

\[s = 2n
\]

那么这个时候我们把这个结论推广成x进制,看看谁的效率是最高的。m个数要是在x进制下面表示就就是:

\[m = x ^ n
\]

那么他需要的资源就是

\[s = xn
\]

那么这里我们讨论的就应该是在表示相同数据量m的时候,那个进制,也就是x的值,会使得s是最小的。这样子就最省资源了,这就是效率最高的做法。那么我们把这两个式子联合起来计算,从第一个式子中得到

\[n = \frac{lnm}{lnx}
\]

代入到第二个式子就会得到:

\[s = lnm * \frac{r}{lnr}
\]

m是常数,所以这个式子什么时候最小取决于r/lnr什么时候最小。这个就比较好做了,对这个式子进行求导会发现这个式子在r取e的时候会取得最小值。所以理论上来说e进制效率是最高的,e的取值是2.718所以理论上来说三进制应该比二进制更高效。但是不好实现,实在没有合适的运算逻辑和简易的实现方式。所以选择了二进制。后来也有人研究三进制,但是等他们优化了三进制的逻辑运算之后,二进制的计算机已经普及了,当你要起跑的时候你的对手已经跑的没影了。。。不过后面三进制有没有弯道超车的机会也未可知,这也是科技的魅力。。

总结

​ 其实写下这篇文章也是机缘巧合,也不知道为什么可以看书看着看着就兴冲冲的研究起来。但是在内心中还是为学到了东西而感到快乐的,希望把这份快乐也传递给你。另外也推荐《数学极客》这本书给你,个人感觉写的蛮不错的。

参考资料

个人推广

​ 下面是笔者的公众号,希望兄弟们可以多多关注,感谢您的支持啦~

自然常数e的由来以及计算机为什么是二进制的更多相关文章

  1. 关于自然常数e的理解

    关于自然常数\(e\)的理解 By Z.H. Fu 切问录 ( http://www.fuzihao.org ) 利息增长模型 在上中学学习对数的时候,我们就学到了一个叫做e的东西(\(e\appro ...

  2. 我们数学中常用的自然常数e代表什么?看完长知识了!

    我们在学习期间都接触过自然常数e,也知道e ≍ 2.718,学过极限的同学应该也知道 那么大家知道e的含义是什么吗?为啥叫“自然常数”? e的含义可以用一个计算利息的例子来解释. 假如你有1块钱,银行 ...

  3. 自然常数e的含义

    e是一个重要的常数,但是它的直观含义却不像 π 那么明了.我们都知道,圆的周长与直径之比是一个常数,这个常数被称为圆周率,记作 π = 3.14159......可是e代表什么呢? e是“指数”(ex ...

  4. Python的学习之-计算机编码和二进制

    bit位,计算机中最小的表示单位 8bit = 1bytes字节,最小的储存单位,1bytes缩写为1b 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 102 ...

  5. Hadoop源代码点滴-自然常数e

    数学里的 e 为什么叫做自然底数?是不是自然界里什么东西恰好是 e? https://www.zhihu.com/question/20296247

  6. 自然常数e的神奇之美

  7. 自然常数 e 的理解与应用

    某彩票中奖率是百万分之一,则一个人买一百万张彩票仍不中奖的概率是: (1−1106)106≈1e e 往往出现在: 许多微小事件带来的总体变化 随机性和无穷多:

  8. java--字符编码,正则表达式

    转载请申明出处:http://blog.csdn.net/xmxkf day21   字符编码 06-IO流(转换流的字符编码) 字符编码: 1. 字符流的出现为了方便操作字符,更重要的是加入了编码转 ...

  9. Java面向对象 IO (四)

     Java面向对象  IO  (四) 知识概要:                 (1)打印流 (2)序列流 SequenceInputStream (3)ObjectInputStream与Ob ...

随机推荐

  1. 在Vue3项目中使用pinia代替Vuex进行数据存储

    pinia是一个vue的状态存储库,你可以使用它来存储.共享一些跨组件或者页面的数据,使用起来和vuex非常类似.pina相对Vuex来说,更好的ts支持和代码自动补全功能.本篇随笔介绍pinia的基 ...

  2. JavaWeb入门day10-JSP

    JSP 什么是JSP Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术 最大特点: 写JSP就像在写HTML 区别 HTML只给用户提供静态数据 J ...

  3. CVPR 2022数据集汇总|包含目标检测、多模态等方向

    前言 本文收集汇总了目前CVPR 2022已放出的一些数据集资源. 转载自极市平台 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟踪.经典论文解读.CV招聘信息. M5Produc ...

  4. 9.2 Linux硬盘分区和挂载

    一块新的硬盘存储设备后,先需要分区,然后再格式化文件系统,最后才能挂载并正常使用. 分区:根据需求和硬盘大小划分空间 格式化:对分区安装文件系统 挂载:将设备文件与一个目录关联的动作叫挂载 硬盘分区格 ...

  5. Libco Hook 机制浅析

    Libco Hook 机制浅析 之前的文章里我们提到过 Libco 有一套 Hook 机制,可以通过协程的让出(yield)原语将系统的阻塞系统调用改造为非阻塞的,这篇文章我们将深入解析 Hook 机 ...

  6. 《C++Primary》阅读简要总结

    三月份的主要任务之一就是阅读C++Primary这本书,终于在昨天25号下午完成了基础部分的阅读,算是对基础知识整体梳理了一遍,开始看这本书大概可以追溯到去年12月份,在那之前看了C++的入门书籍&l ...

  7. DevOps、CI、CD都是什么鬼?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ DevOps DevOps是Development和Operations的组合,是一种方法论, ...

  8. 操作系统实现-boot.asm实现

    博客网址:www.shicoder.top 微信:18223081347 欢迎加群聊天 :452380935 这一次我们进入操作系统实现的真实编码, 这一次主要是完善对boot.asm文件的全部实现, ...

  9. H5如何实现唤起APP

    前言 写过hybrid的同学,想必都会遇到这样的需求,如果用户安装了自己的APP,就打开APP或跳转到APP内某个页面,如果没安装则引导用户到对应页面或应用商店下载.这里就涉及到了H5与Native之 ...

  10. mysql二进制日志和mysql备份工具介绍以及日志恢复

    mysql备份: 三种备份方式 冷备:数据库停机,在进行备份 热备:lock table锁表,read   数据库只可以读不能写,在备份 温备:备份时数据库正常运行 备份类型:完整备份:全部备份,部分 ...