背景

​ 昨晚我在看一本书,叫《数学极客》,看到第六章《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. Java学习day38

    Java内存:1.堆:存放new的对象和数组:可以被所有线程共享,不会存放别的对象引用 2.栈:存放基本变量类型(会包含这个基本类型的具体数值):存放对象的变量(会存放这个引用在堆里面的具体地址) 3 ...

  2. 面试官:RabbitMQ过期时间设置、死信队列、延时队列怎么设计?

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 RabbitMQ我们经常的使用, ...

  3. Java语言学习day13--7月14日

    今日内容介绍1.循环练习2.数组方法练习 ###01奇数求和练习 * A: 奇数求和练习 * a: 题目分析 * 为了记录累加和的值,我们需要定义一个存储累加和的变量 * 我们要获取到1-100范围内 ...

  4. 【职场必备】6个免费良心网站&职场办公网站(收藏血赚)

    1.随机自动生成头像的网站:https://www.tool22.com/Tools-SJTX.html2.迅捷PDF转换器:https://app.xunjiepdf.com/3.全网音乐下载:① ...

  5. 【第五课】VIM编辑器(学习笔记)

    4月10日学习笔记打卡

  6. 龙智被评估为CMMI [3] 级

    2022年3月,龙智宣布已被评估为CMMI研究所的能力成熟度模型集成(CMMI)的 [3] 级. CMMI 是一个能力改进框架,它为组织提供有效流程的基本要素,最终提高其绩效. 成熟度级别 3 的评估 ...

  7. VSCODE调试时在cygwin.S中发生段错误

    起因: C++实现矩阵类和向量类 当看了我实现的矩阵类后,一个同学问我: 然后我就试了试1000维,结果运行时在cygwin.S里引发了奇奇怪怪的Segmentation fault,而且这个文件还是 ...

  8. CSS预编译器

    零.CSS预编译器 CSS预处理器是指对生成CSS前的某一语法的处理.CSS预处理器用一种专门的编程语言,进行Web页面样式设计,然后再编译成正常的CSS文件,供项目使用 CSS预处理器为CSS增加一 ...

  9. 『现学现忘』Git基础 — 21、git diff命令

    目录 1.git diff 命令说明 2.比较工作区与暂存区中文件的差别 3.比较暂存区与本地库中文件的差别 4.总结git diff命令常见用法 5.总结 1.git diff 命令说明 在comm ...

  10. linux fedora35 配置jdk,安装mysql,安装tomcat

    配置jdk18很简单,下载jdk,只需要.tar.gz结尾的文件就行,https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.t ...