fx2422esplus吧 关注:26贴子:903
  • 9回复贴,共1

20180504 说说实数和小数的映射关系

只看楼主收藏回复

1L挖坑


IP属地:广东来自Android客户端1楼2018-05-04 21:13回复
    先说说下面要讨论的映射是基于哪两个集合的映射。为了方便起见只讨论非负的实数,管这个集合叫S。另外,讨论“正整数.0到9的无穷序列”,就是我们通常说的“小数”,分为整数部分和小数部分,而小数部分总可以写成一个无穷序列,如果是有限小数,就认为这个序列某一项开始全为0。由所有这一形式的“东西”构成的集合称为D。下面研究的映射就是这两个集合之间的。


    IP属地:广东来自Android客户端3楼2018-05-04 21:29
    回复
      首先,研究一个简单的映射,由D到S的映射。怎么映射呢?首先完成小数部分那个无穷序列的映射。假设这个序列是a1,a2,……,考虑一个极限式:n趋于无穷时,a1/10^1+a2/10^2+……+an/10^n这个极限。由数学分析里的结论容易得到,这个极限存在,并且极限值是[0,1]之间的实数。然后就可以定义,这个映射将D内每个元素映射为这个极限值加上它的整数部分。显然,得到的结果是一个非负实数。


      IP属地:广东来自Android客户端4楼2018-05-04 21:48
      回复
        显然,这个映射可以将D内每个元素都映射为S中的元素。那么它是不是单射?是不是满射?首先,它不是单射,因为1.000000……和0.999999……会被映射到同一个数,就是1。然后,它是不是满射?是的,不过我没有证明过。


        IP属地:广东来自Android客户端5楼2018-05-04 21:51
        回复
          事实上我们通常看到一个小数然后把它对应到实数的时候,我们大脑中自动反应出的那个对应关系,其实跟这个映射就是相等的。注意,我用的是“相等”,而不是“就是”,因为我们大脑中不一定去想这是一个极限式。不过只要知道它们相等就可以了,不纠结这个问题。


          IP属地:广东来自Android客户端6楼2018-05-04 21:54
          回复
            另外注意一个问题,如果是有限小数,那么不需要极限的概念就能将“正小数”映射为正实数,而且这时候在某种意义下,这是一个单射。例如,24.22这个数,将小数映射为2/10+2/100,就完成了这个映射,并没有涉及到极限。


            IP属地:广东来自Android客户端7楼2018-05-04 21:57
            回复
              好了,下面再考虑另一个映射,刚才那个是从D到S的映射,下面这个映射是从S到D的映射,它的映射规则嘛,我准备用一个例子。如pi这个正实数,它在[3,4)之间,就定义它映射到的那个元素的小数点前的正整数为3。之后的序列呢,则取pi-3,也就是小数部分,它位于[0,1)之间。首先,它位于[0.1,0.2)之间,所以定义序列第1位是1。这里注意一个问题,0.1和0.2,要把它对应为真正的实数才能进行比较,现在有的只是一个“小数”,因此,这里定义,先用刚才说的那种映射把0.1和0.2映射到实数。刚才说了,有限小数的映射是很容易的,算几个加法和乘除法就出来了,因此这一步不难。第1位是1,确定了,好,第2位。这个数位于[0.14,0.15)之间,就定义第2位是4。后面的位也是以此类推,显然,不管你想做多少位,都能做出来,因此这个序列是存在的。正整数确定了,序列确定了,映射到的D元素,也就确定了。这个定义就算是完成了。


              IP属地:广东来自Android客户端8楼2018-05-04 22:08
              回复
                同样的,讨论这个映射是不是单射?是不是满射?同样根据数学分析理论,可以证明,它是一个单射。证明简单说一下,如果两个实数不相等,一定会存在某个有限小数,一个大于它,一个不大于它,这个应该可以用稠密性推出来。所以,那个序列在这一位就会出现不同。然后呢,它不是满射,比如没有任何一个实数会映射到0.999999……同样的简单说说,假设有一个数映射到0.999999……先强调一遍,这里说的0.999999……不是真的指0.999999……这个小数了,而是指D中的正整数为0,序列为全9的这个元素!假设某个实数映射成了0.999999……,那么按照定义这个数首先位于[0,1)之间,然后它大于0.9,大于0.99,大于0.999,反正是比每一个这种形式的数都大。然后,这可以推出这个数不小于1的!这就矛盾了。所以0.999999……并不在值域中。同理,所有的从某一位开始全为9的D中的元素都不在值域中。


                IP属地:广东来自Android客户端9楼2018-05-04 22:18
                回复
                  再说说前面定义的这两个映射有什么关系。假设第一个映射是f,第二个是g。应该可以证明,对S中的任何元素s,有f(g(s))=s。我没有去证明过,不过我相信它是对的。这样一来,它们很像一个逆映射的关系,但是g这个映射在D内有很多空白点,没有被映射到。在映射到的这些点,用f这个映射都能映回原来的点,同时,f还把那些空白点也映到了S中,当然,f把别的元素也会映射到同一个点中。换句话说,如果把D中的“空白点”,也就是没有被g映射到的点,把它们去掉,称为E,那么f就是E到S的一个双射,g则是S到E的双射,且f和g互为逆映射。


                  IP属地:广东来自Android客户端10楼2018-05-04 22:28
                  回复
                    问题在于,用g这个映射的话,0.999999……这样的数就处于一个空白点,因为没有一个实数用g映射能映射到它。我想,0.999999……到底等不等于1这个问题能引起这么激烈的争论,原因就在于后面全是9的序列实在是不容易找到一个很明显的实数来“显然”地跟它对应。当然,事实上你也找不到,因为本来就没有。
                    那么0.999999……到底等于几?数学界公认的规定,是等于1。这里就真的是规定让它等于几都行了,因为g定义覆盖不到它,如果要定义,就只能特殊定义。然后定义为几呢?其实不管从哪个角度,定义为1都还算是合理的,比如f映射把它映射为1就是一个有力的理由。并且,如果真的很喜欢g的定义,那么希望让它真的能等于一个大于0.9,大于0.99,大于0.999,……这样的数,前面说过,满足这个条件的数一定不小于1,那么如果不定义为1,似乎就应该定义为一个大于1的数,好像还不如定义为1,毕竟0.999999……看起来就不像一个大于1的数。


                    IP属地:广东来自Android客户端12楼2018-05-04 22:47
                    回复