首页 >> 数学 >> 文章

上篇请见《数的创生(一)方程的解》

这一节说说从有理数产生新数的另一个途径:从有限到无限。这个概念我们在小学就已经比较熟悉了,就是从有限小数或者循环小数到无限不循环小数的扩张。然而,要说清楚这个概念,我们最好还是从更基本的概念开始,即,什么是整数,什么是小数。

0. 人类发明数字之前,整数是通过物件来表示的。这种方法在表示前面一些整数的时候还算方便,但如果数太大了,就很不方便。这就是“进位制”起作用的地方。人类用自己的十个手指头计数,计到十以后,做下标记,表示所有指头都用过一遍了,然后就可以再使用它们继续计数。每用完一次,就做一个标记,而标记的个数同样可以用手指来计,如果超过十个标记,就做一个新类型的标记,这表明所计的数已经超过一百。这就是把一个整数写为十进制数字的过程。下面这个表是把第一行的黑桃代表的整数表示为 3-进制数。祖先一直使用十进制,以至于我们离开十进制就无法举出具体例子。现在我暂时采用一种非十进制的数字体系,即以下列方式写出前几百个自然数:
零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、赵、钱、孙、李、周、吴、郑、王、...... 那么以下这个具体例子说的就是把整数 “吕” 表示为 “叁”-进制数,吕 = [壹零壹贰]

现在从抽象的角度解释一下把整数表示为拾-进制数字的过程。

1. 将一个正整数表示为拾-进制数:
做欧几里得除法: n = n1 × 拾 + b0, 要求 0 ≤ b0< 拾. 其中 n1 称为“商数”而b0称为“余数”。接着对商数应用欧几里得除法, n1 = n2 × 拾 + b1. 继续这么做下去,直到某一步 k, 商数满足 0< nk<10, 如果再做欧几里得除法, nk = 0 × 拾 + bk, 我们不再得到更多的商数. 现在我们把过程中所有的“余数” 收集起来,就得到了n的拾-进制展开 n=bk...b1b0 . 用一个复杂的公式来表示以上过程,就是


n   =    (...((bk×拾+bk-1)× 拾 +bk-2) × ... ) × 拾 + b0 =    bk × 拾k + bk-1 × 拾k-1 + ... + b1×拾 + b0



2. 以上过程可以用来得到正整数的任何 m-进制展开, 只要在过程中把“拾”换成 m.

比如, 取拾-进制数112, 记为 [112], 我们想把它展开为 6-进制数: 为方便起见,我们还是用熟悉的拾-进制数来记录运算过程, 112=18 × 6 + 4, 接着对商数做欧几里得除法 18=3×6 + 0, 再做除法 3=0 × 6 + 3. 现在商数为零,过程结束,收集过程中的余数我们得到 [112]=[304]6

3. 从用桃杏梅方表示的那个例子可以看到,石器时代的人类其实已经可以做欧几里得除法了。做欧几里得除法不需要把整数表示为任何进制的数字。现代澳门赌场里的庄家闲家仍然在用这种办法计算筹码个数。

但是为了叙述方便,在接下来的段落里我会尽量使用阿拉伯数字。如果进位单位小于或者等于拾,这就够用了。如果进位单位大于拾,就需要引进阿拉伯数字以外的数字了(本文中使用百家姓)。

分数的情况如何? 怎样把分数表示为 m-进制数字? 我们从小就做了很多这样的练习(当然,基本上都是表示为拾-进制)。考察分数 x/y. 首先做欧几里得除法 x=q × y + r, 其中 0 ≤ r < y. 这样就把 x/y 分成了整数部分 q 和小于 1 的分数 r/y. 将整数表示为 m-进制数字我们之前已经讨论过了。至于 r/y, 我们的做法是长除法,首先“移位”,即分子乘以 m, 然后做欧几里得除法 r × m = a1 × y +b1. 显然,为了此等式成立,商数必然满足 0 ≤ a1 < m. 如果余数 b1 ≠ 0, 那么将此余数移位,再做欧几里得除法 b1 × m = a2 × y + b2 . 一直这么做下去,有两种可能:(1)在某一步余数为0,过程结束;(2)余数永远不为0,长除法无限进行下去。把每一步的商数按顺序放在一起,就构成了 r/y 的 m-进制表示 0.a1a2a3... 这个小数必然是有限或者循环小数,因为每一步的余数都小于 y, 只有有限种可能,一定会重复出现,从而商数也会重复出现。举个例子: 将分数 2/5 表示为 8-进制小数。不断移位做除法, 2×8=16=3× 5+1, 接着 1 × 8 = 8 = 1 × 5 +3, 接着 3 × 8 = 24 = 4 × 5 + 4, 接着 4 × 8 = 32 = 6 × 5+2, 余数 2 重复出现, 从而欧几里得除法 2×8=16=3× 5+1 再次出现, ... 这样,我们把商数按顺序放在一起,得到循环小数 2/5 = [0.314631463146...]8

从上述段落我们应该看到,整数和分数是抽象的概念,而小数则是它们在某进位制下的表现形式。同一个有理数,在不同的进制下表示为不同的小数。细心的读者可能注意到,在进位制下展开整数和展开小于1的分数的方法不同,一个是被进位单位除,然后收集“余数”,一个是被本身的分母除,然后收集“商数”。然而,一句耳熟能详的话说,“整数是特殊的分数”,为什么展开方法如此不同?(此处请读者自己思考 5 分钟。答案是,分数的展开方式同样适用于整数,读者应该不难发现怎么做。)

取一个进制,可以把有理数展开为有限或者循环的小数。那么在此进制中那些无限而不循环的小数对应什么抽象的对象呢?如果是拾-进制,我们都知道答案:无理数。那么其它进制下的无限不循环小数也是无理数吗?或者说,无理数的定义是否依赖于进制选择?同样请读者自己思考 5 分钟,答案下几段揭晓。

现在我们进入光怪陆离的世界,看看跟小数相反的对象:“大数”。要理解这个概念,先要理解长除法的本质是通过移位和做欧几里得除法将有理数表示为各个位上的数字所表示的有理数的和,


52/5 = 拾+2/5 = [12.314631463146...]8 = 1 × 81 + 2 × 80 + 3× 8-1 + 1× 8-2 +4× 8-3 + 6× 8-4 + ...


这个例子中的小数是一个无穷和,在进位单位8的负幂次一端可能有无穷多项,而在正幂次这一端一定是有限项。19世纪数论的发展(特别是解不定方程方面的发展)促使人们去尝试另一种可能,即,在负幂次一端是有限项,而在正幂次这一端延伸到无穷。怎样实现有理数的这种 “大数” 展开?同样,应该通过长除法。但是具体做法有所不同。之前的长除法,是在每一步把余数向上移位,即,乘以进位单位 m. 移位后再做欧几里得除法,其商数虽然是整数,但考虑到移位,这商数应该往下移位。从公式上会看得更加明显:


r × m = a1 × y +b1


等价于


r = ( a1 m-1) × y + (b1 m-1 )


下一步


b1 × m = a2 × y + b2


等价于


b1 m-1 = (a2m-2) × y + (b2 m-2)


可见,在每一步把余数向上移位,然后做欧几里得除法,其效果是得到小数表示的更低位数字。现在我们要反其道而行,希望在每一步得到更高位的数字,就需要将余数向下移位,即,除以 m. 以公式表示,比如我们要将 x/y 展开为 m-进制的大数,第一步是


x = s × y + t,    要求其中 0≤ s < m 以及 t 被 m 整除

下一步,


t/m = c1 × y + d1 ,    要求其中 0≤ c1 < m 以及 d1 被 m 整除

再下一步


d1 /m = c2 × y + d2 ,    要求其中 0≤ c2 < m 以及 d2 被 m 整除


按此继续,可能到某一步 dk-1/m = ck × y + 0, 那么我们得到一个有限的大数表示;也可能这个长除法会无限进行下去。同样可以证明,可能出现的余数个数是有限的(虽然不像在传统长除法中那么明显),所以将有理数展开,一定是循环大数。 显然,这种新的长除法中每一步所做的事情跟欧几里得除法非常不同。欧几里得除法的原则是,余数一定比除数的绝对值小。而新的带余除法的原则是,余数一定要是进位单位的倍数。这种差别引起两个后果:(1)新的带余除法严重依赖于进位制,从而这种对有理数的扩展很可能依赖于进位制;(2)新的带余除法不是那么直接,不能像开头那个表展示的那样或者古人赌 “数四” 那样简单得到商数和余数。事实上,如果要保证这种新的带余除法对任何的分子分母 x,y 都一定能做,进位单位 m 必须满足比较严格的条件:m 一定要是素数。 接下来用一个例子来说明:把 7/6 展开为 3-进制大数,

第一步,先“移位”,即把分子分母里所有的因子 3 都提出来: 7/6 = 3-1 × (7/2)

第二步,对 7/2 做新的带余除法:找一个商数 s < 3,使得余数 (7 - s× 2) 是 3 的倍数。由于数字比较小,这个不难,一个一个试就行了,很快就试出 s=2, 余数为 7- 2×2 = 3.

第三步,将上一步的余数移位,即,除以 3,作为新的被除数:3/3 = 1. 再做带余除法,1-2× 2 = -3.

接着进行移位和带余除法,-3/3 = -1. 现在 (-1) - 1× 2= -3.

余数重复,所以商数将开始循环。因此我们得到

7/6 = 3-1 × ( 2×30 + 2 ×31+1×32+1×33+1×34+ ...... ) = 2×3-1 + 2 ×30+1×31+1×32+1×33+ ......

按照小数的习惯,从左到右幂次递减,则此大数记为

7/6 = [ ......1112.2 ]3

再举一个例子,将 5/8 展开为 7-进制大数:

5-5×8= -35,接着 (-35/7) - 2 ×8 = -21, 接着 (-21/7) - 4×8 = -35, 余数重复,商数开始循环,我们得到

5/8 = [ ......424242425.]7

再看一个例子,将 -1 展开为 5-进制大数:-1-4 = -5, 接着 (-5/5) -4 = -5, ..... 所以 -1 = [......444.]5 这个例子显示有理数可以展开为的大数。

前面谈的都是展开算法和例子。现在我们需要理清一下思路。比如,怎样从循环小数展开或者大数展开得到原来的分数?对于小数,可以用等比数列求和公式,

[0.4232323......] = 0.4 + 0.023×(1+0.01+0.001+......)

= 0.4+ 0.023× limk→∞(1-0.01k)/(1-0.01) = 2/5 + (23/1000) ×(100/99) = 2/5+230/99 = 1348/495,

为方便起见我在计算过程和结果中都不加说明地使用了拾-进制表示。对于大数,同样有等比数列求和公式,比如

[......444.]5 = 4×(1+5+52+53+......) =

= 4 × limk→ ∞(1-5k)/(1-5)

如果我们强令当 k趋近于无穷时 5k → 0,那我们正好得到有理数 -1. 在另一个稍微复杂一点的例子里, 7-进制大数可以用等比数列求和公式化为一个极限,

[ ......424242425.]7 = 5 + [420]7× (1+ [100]7+[10000]7+......)=

= 5 + [420]7× (1+72+74+......) = 5 + [420]7× limk→∞ (1- 72k)/(1-72)

同样,如果我们强令 7k→ 0, 则得到有理数

5+(4×72+2×7)× (1/1-72) = 5- ([210]/[48])=5/8

(计算过程中我总用到拾进制数,因为我们人类的乘法口诀是基于拾进制表示的,我不必为了避开拾进制而去找一堆小木棍儿来摆弄,还把这种原始计算过程千辛万苦地画在这里 :)

上面这些计算告诉我们,如果要在 p-进制循环大数(习惯上用字母 p 来代表任一素数) 和分数之间自由转换,我们需要接受一种奇怪的观念,就是在 p-进制下,当 k 越来越大时, pk 越来越接近于0. 一旦接受了这种观念,那个看起来怪怪的新式长除法就跟传统长除法类似了,都是坚持“余数比除数离0更近” 这个原则。这里应该注意的是,在大数的世界里,“哪个有理数离零更近”这件事,是跟进制单位 p 有莫大关联的。比如,在 3-进制大数体系里,[27] 比 [12] 离0更近,因为 [27] 含有更多的因子 3. 而在 2-进制大数体系里,[12] 比 [27] 离0更近,因为 [12] 含有更多的因子2. 这跟小数的世界太不一样了,不管用哪个进制的小数表示,1/5 都比 1/2 离0更近,这是因为在小数的世界里,衡量离0远近的是“绝对值”,它不依赖于进制的选取。

我们现在终于可以来解释这一篇的副标题:赋值完备化。所谓“赋值”,就是对每一个有理数规定离0有多远。当然,规定不是任意的,需要满足某些性质,比如,a+b 离0的距离不能大于 a 离0的距离同 b 离0的距离的和。一个这样的规定就叫一个赋值。“绝对值”就是一个赋值,它规定:正有理数离0的距离就等于这个数本身,负有理数离0的距离等于它的相反数。我们上面看到的跟素数 p 有关的是另一种赋值,称为 p-进制赋值,它规定:有理数离0的距离跟它含有的所有 p 因子成反比。就是说,如果 x/y 的分子分母都把 p 因子完全分解出来,x= pj w, 而 y= pk z, 其中 w, z 不再含有 p 因子,这样可以写 x/y = pn(w/z),其中 n=j-k. 则 x/y 离0的距离为 p-n = 1/ pn. 具体例子:有理数 -3/4, 它的 3-进制赋值为 1/3, 而 2-进制赋值为 4, 它的其它进制赋值均为 1,因为它不含有除2和3以外的其它素因子。 (有心的读者可能会观察到,这个数的绝对值为 3/4, 这样把它的绝对值和所有 p-进制赋值全部乘起来,

(3/4) × (1/3) × 4 × 1×1× 1× ...... = 1.

很容易看到这个关系对所有的有理数都成立。这说明所有这些赋值之间是有关联的,一个有理数在各个素因子处的表现是互相牵扯在一起的。这个道理虽然看起来很简单,它却有着极其深刻,很可能是至今为止数学中最深刻的推广,就是所谓“朗兰兹纲领”。这些从最简单到最复杂的关于素数之间的关联的命题,都称为“互反律”。)

扯得太远,总结一下。有理数可以用小数展开,展开的结果总是有限或者循环小数,那么包括无限不循环小数在内的所有小数自然就构成有理数的一种推广,它们在“绝对值”这种赋值下有意义,因为越到后来加上来的尾数绝对值减小得越快,所以会“收敛”到某种东西,这种东西就是某个“实数”。所以,实数的定义是不依赖于进制的,因为“绝对值”是不依赖于进制的。有理数又可以用 p-进制大数展开,展开的结果总是有限或者循环大数,而包括无限不循环大数在内的所有 p-进制大数也是有理数的一种推广,它们在“进制赋值”下有意义,越到前面加上来的大整数的 p-进制赋值减小得越快,所以收敛到某种东西,这种东西依赖于进制选取。对每一个素数 p, 有 p-进制赋值,在这种赋值下的有理数扩张称为 “p-进制数”。p-进制数之间可以进行加减乘除,它们构成数域。这样,对每一个素数 p, 存在一个数域,记为 Qp, 它是实数域的类似物。以 p-进制数为自变量和取值的函数也可以做微分和积分。从而,这个世界上存在无数多种微积分,对每一个素数有一种,再加上我们已经熟悉的以绝对值为基础的微积分。最后回忆一下,之所以大数的进制单位必须是素数,是因为只有这样才能做除法。

下一篇将是关于伽罗瓦数。

0
为您推荐

41 Responses to “数的创生(二)赋值完备化”

  1. Nikola说道:

    沙发?

  2. gildor说道:

    数学帖子最美好了!

  3. diesirae说道:

    第一节发表于01-21,第二节03-21……所以下一节是05-21?

  4. earthengine说道:

    后面要讨论sureal numbers不?

  5. harryhi说道:

    补充:

    以绝对值作为距离,Qp可以认为是一个定义在Q上的赋范向量空间,并且:
    1 任意一个圆内的任意一点都是这个圆的圆心。
    2 任意三角形都是等腰三角形。

  6. seancai110说道:

    这个= = 没看懂啊.... 除了数学书和教参, 一般都没有耐心看其他文章上的式子..

  7. 卡卡罗特说道:

    看的晕晕乎乎,不过挺美好。。。

  8. 文少说道:

    的确体会到了“每多一条公式,就减少一个读者”的定律,满屏的公式让我头晕眼花。难怪国家地理频道、discovery那么好看。

    • Flippy说道:

      同感……我看了前面一小节后就直接托到下面看评论了

      • 芋溪说道:

        Me too.

        • 季候风说道:

          这个...如果整数之间的加减乘除也能称为 “公式” 的话。

          我相信一个足够有好奇心和耐心的小学生能够读懂这一篇,成年人反而可能读不懂, 因为我们最缺少的是时间 :)

          • SillyDaddy说道:

            嗯,数学里面的推导和结论是最容易懂的,而假设和直觉则是最难获得的——魅力啊!

  9. biohu说道:

    大赞!

  10. jjx01说道:

    >因为每一步的余数都小于 y, 只有有限种可能,一定会重复出现

    ...没道理

    这篇文章是故意让人写得看不懂的么……
    高中数学有教进位制转换,作者能写到让高中生能看得懂的程度吗

    • 石头说道:

      有道理啊,我刚开始也没理解。
      在展开小数的时候,比如我们对某个数x/8进行展开到1,1234567...,接下来无论出现在7后面的是介于0与8之间的任何数,都会导致小数开始循环,因为小数展开的算法是递进的。假设下一个展开的是5,那么小数就会循环为1.1234567 567 567 567 ...;假设展开的下一位是7的话,那么小数就会循环为1.123456777777。

  11. 流云说道:

    数学课从来都是打瞌睡的我飘过~!
    不过表示留完言再尝试看下(鸭梨)

  12. SMileR说道:

    如果y是7,那么余数只会是123456,就算各出现一次,那下次肯定会重复。

  13. 阿欣说道:

    看了个开头就有点眼角抽搐了。。。数学啊,魔障

  14. 二次元说道:

    刚刚想从六进制的304变为十进制的,发现不会转——,后面完全迷糊了

  15. 曦神说道:

    因为不懂,所以精彩······

  16. 冰川宇说道:

    我对0.999999.....=1更感兴趣,作者可以写一篇。

    • Icewolf说道:

      作者这篇文章已经讲到了啊......你不妨自己用无限循环小数化为分数的方法自己算算。

  17. Metaverse说道:

    看到一半,对于生成大数的长除法,总觉得每一步的余数d不会无限展开,这样好像会把一个分数搞得发散……很费时间,剩下的明天继续,慢慢消化。。。

  18. laoma说道:

    7/6 == 2×3-1 + 2 ×3^0+1×3^1+1×3^2+1×3^3+ ……
    这里“……”是负数,并且绝对值越来越大,这样有意义吗?

    4×(1+5+5^2+5^3+……) = 4 × lim k→ ∞(1-5k)/(1-5)
    这里级数不收敛,能用求和公式吗?

    有些分数也可以在十进制下用大数方法展开,比如
    1/3
    =(7×3-2×10)/3
    =7+10*(-2/3)
    =7+10*(6*3-20)/3
    =7+6*10+100*(-2/3)
    =7+6*10+6*100+6*1000+……
    =[……66667]拾

    [27]拾 比 [12]拾 离0更近
    这里“离0更近”是一个新的定义吗?从传统的定义来看(27-0)>(12-0)就是远啊

    • 季候风说道:

      7/6 == 2×3-1 + 2 ×3^0+1×3^1+1×3^2+1×3^3+ ……
      这里“……”是负数,并且绝对值越来越大,这样有意义吗?
      *************************************************
      不是负数啊,都是正数。
      ×××××××××××××××××××××××××

      4×(1+5+5^2+5^3+……) = 4 × lim k→ ∞(1-5k)/(1-5)
      这里级数不收敛,能用求和公式吗?
      ××××××××××××××××××××××××××××××××××××××
      有限项求和公式总是成立的
      ×××××××××××××××××××××××××××××

      有些分数也可以在十进制下用大数方法展开,比如
      1/3
      =(7×3-2×10)/3
      =7+10*(-2/3)
      =7+10*(6*3-20)/3
      =7+6*10+100*(-2/3)
      =7+6*10+6*100+6*1000+……
      =[……66667]拾
      ××××××××××××××××××××××××××××
      确实存在这种可能性。只是在拾进制下并非所有的
      分数都能展开。
      ×××××××××××××××××××××××××××

      [27]拾 比 [12]拾 离0更近
      这里“离0更近”是一个新的定义吗?从传统的定义来看(27-0)>(12-0)就是远啊
      ×××××××××××××××××××××××××××××
      当然是新的定义。“大数” 与 “小数” 的差别就是在于
      对“收敛” 的定义不同。
      ×××××××××××××××××××××××××××××

  19. laoma说道:

    1)我是指省略号是负数,虽然每一项是正数
    7/2
    =2+3/2
    =2+3*(1/2)
    =2+3(2+(-3/2))
    =2+2*3+3*(-3/2)
    =2+2*3+9*(-1/2)
    =2+2*3+9*(1+(-3/2))
    =2+2*3+9+27*(-1/2)
    =2+2*3+9+27+81*(-1/2)
    =2+2*3+9+27+81+243*(-1/2)
    =2+2*3+9+27+81+243+729*(-1/2)
    =2+2*3+9+27+81+243+729+……

    2)明白了

    3)对的

    4)那么在7进制大数表示下32/5、1/55、12/55离零的距离一样远?他们之间的距离有定义吗?

    • 季候风说道:

      1) 确实如此,所有 p-进制数都可以用正的大数唯一展开
      4)两个数的距离是它们差的赋值

    • SillyDaddy说道:

      引用
      =====================================
      1)我是指省略号是负数,虽然每一项是正数
      7/2
      =2+3/2
      =2+3*(1/2)
      =2+3(2+(-3/2))
      =2+2*3+3*(-3/2)
      =2+2*3+9*(-1/2)
      =2+2*3+9*(1+(-3/2))
      =2+2*3+9+27*(-1/2)
      =2+2*3+9+27+81*(-1/2)
      =2+2*3+9+27+81+243*(-1/2)
      =2+2*3+9+27+81+243+729*(-1/2)
      =2+2*3+9+27+81+243+729+……
      =====================================

      我感觉文章里面讲述的有理数展开成大数的方法侧重点不在正负数上,形式更重要一些吧,最重要的是赋予形式以相容的意义。否则,按照
      +81*(-1/2) ==> +243*(-1/2) ==> 729*(-1/2) ==> 的计算是没办法承认大数展开的。

  20. lzlz130说道:

    希望能快点看到续篇

  21. Tao Project说道:

    建议科学松鼠会使用MathJax来处理数学公式,WordPress在head.php里面加一行即可:http://www.mathjax.org/docs/1.1/platforms/wordpress.html 或者用这个插件也行:http://wordpress.org/extend/plugins/latex/ 。

  22. 木子说道:

    数字也许本来就是人臆想出来的看似真理的东西

  23. evolvemunger说道:

    汗。小学生都能看懂?!学习琢摩中灬

  24. darkforest说道:

    莫名其妙!

    “比如
    [......444.]5 = 4×(1+5+52+53+......) =
    = 4 × limk→ ∞(1-5k)/(1-5)
    如果我们强令当 k趋近于无穷时 5k → 0,那我们正好得到有理数 -1”

    k趋近于正无穷时5^k趋近于+∞,怎么会趋近于0

    (1/5)^k才趋近于0
    你这个[......444.]5 分明就不是5进制,是5^-1 进制

    [......444.]-5 就等价于 [0.444......]5
    就是把小数左右倒过来啊

    卖弄概念

    • 季候风说道:

      我这一整篇就是在解释两个数之间的”距离“不是绝对的,不是只有一种定义。你恰好把我想要解释的重点给轻易地忽略了,只因为你坚信 5^k 必然趋于无穷。要知道极限的定义依赖于距离的定义,使用不同的距离就导致不同的收敛性。

  25. Tang说道:

    真心不懂!哈哈
    隔行隔山,或许某天我也来写写自己知道的....

  26. lery3510说道:

    大赞!
    我是高三的,看完全懂没压力,就是有点慢,自己也要动手算
    LZ的文章很启发思维啊…像一股清风把我从高考数学重复的思维中拉了出来…
    求更多这种带趣味性的文章

  27. oldkey_cj说道:

    很难看。

  28. 吴頔说道:

    这是一个专业性很强的博客,如果在发布和回复的时候都能用公式图形直接交流就好了,现在国内外这一点也就数苑博客做到了,老师们可以过去看看,考虑一下以后在那边建窝讨论:D,这是链接http://blog.math168.com/web/

Leave a Reply