从“迷失的8”到生成函数:小数展开的秘密

    小学时经常在计算器上面按12345679这个神秘的8位数。这个数牛就牛在,它乘以9的结果正好等于111111111。你可以在计算器上输好12345679,然后问MM“你的幸运数字是多少”;如果她说“7”,你就在计算器上按“乘以63”,计算器上将会显示出清一色的7字,看上去无比壮观。
    假如123456789×9=1111111111的话,我倒不会觉得奇怪。网上流行过一个火星帖子,写了一大堆诸如111111111 * 111111111 = 12345678987654321的式子来展示数学之美,以至于大家会认为123456789×9的结果也一定是一串很有规律的数字。因此,如果我不在这里说一句123456789×9其实并不等于1111111111的话,估计很多人都发现不了问题。事实上,123456789×9=1111111101,偏偏就差一个“1”。而怪就怪在,去掉被除数中的数字“8”,偏偏又有了12345679×9=111111111,一个极其别扭的算式反而得到了完美的结果。不要让你的直觉被数学之美所蒙蔽,数学上有大量出人意料的、看上去很不对称的结论。
    为什么偏偏要少一个“8”呢?难道这真的是算术中的一个不可抹去的疤痕?我们急需要寻求一个解释,填补上算术中的这个不和谐的“漏洞”。一种解释是,我们看到了123456789×9=1111111101并不美观,想要对其进行改造,进而得到(123456789+1)*9 = 1111111101+9 = 1111111110,于是(123456789+1)*9/10 = 12345679*9 = 111111111。用这种办法的确可以解释“迷失的8”,不过这个解释并不漂亮。为了寻求一个更好的解释,我们来看一看111111111和9的关系。

Read more…

关于123456789:一个难以解释的数学巧合

    将123456789翻一倍,你会发现结果仍然是这9个数字的一个排列:

123456789 x 2 = 246913578

    我们再次将246913578翻倍,发现:

246913578 x 2 = 493827156

    结果依旧使用了每个数字各一次。操,没完了吗?我们继续翻倍:

493827156 x 2 = 987654312

    牛B了,一个很有特点的数987654312,显然每个数字又只用了一次。
    你或许会想,这下到头了吧,再翻倍就成10位数了。不过,请看:

987654312 x 2 = 1975308624

    又使用了每个数字各一次,只不过这一次加上了数字0。再来?

1975308624 x 2 = 3950617248

    恐怖了,又是每个数字各出现一次。
    出现了这么多巧合之后我们开始怀疑,这并不是什么巧合,一定有什么简单的方法可以解释这种现象的。
    但是,下面的事实让这个问题更加复杂了。到了第6次后,虽然仍然是10位数,但偏偏就在这时发生了一次例外:

3950617248 x 2 = 7901234496 <– 第一次出现例外

    于是,我们不得不相信,前面这一切很可能只是一个巧合,它背后并没有什么简单的原理。
    即使有办法解释这种巧合,解释方法可能也很麻烦。寻找一个漂亮的解释是一个有趣的课题。

巨牛B的在线数学工具:反符号计算器

    在没有Mathematica这种牛B东西的年代,我们用电脑做数学题时,电脑只能返回一长串的小数。但你那小数精确到多少位都没用,我们做作业总是要求最终结果是一个表达式的形式。于是,当时我就在想,计算器可以计算出一长串表达式的值,但有没有计算器可以根据足够精确的数值反过来推出表达式呢?
    今天果然发现了这样一个牛B东西:在线反符号计算器(Inverse Symbolic Calculator, ISC)。输入足够多位的小数,它可以告诉你这个数是由什么表达式得到的。比如,你输入10.5916630466254391,系统会告诉你它是两倍根号23加1;输入1.8994432200976623351,系统会告诉你它是cos(1)的值加上e的一半;输入0.3732821739073952,系统会告诉你它是Γ(1/3)的倒数。它到底有多牛B呢?我试过一些比较复杂的式子。它竟然能准确地算出,11.1457467760047553180356168160是(2√2 + 1)/3 + π^2。

链接:http://ddrive.cs.dal.ca/~isc/standard.html

趣题:估算小数点后第三位

    下面这道题来自今年的Virginia Tech Rigeonal数学比赛(不知道该咋翻好)。比赛时间为两个半小时,一共有7道题,这是第5题:
    找出下面这个数小数点后第三位上的数字:(2+√5)^100 * ((1+√2)^100 + (1+√2)^(-100))

    这个问题有趣的地方就是,你真的可以用一个简单的办法估算出答案来。为什么不先试试看?

    我们需要求出(2+√5)^100 * ((1+√2)^100 + (1+√2)^(-100))小数点后第三位上的数。首先,(1+√2)^(-1)就等于(√2-1),而二项式展开后你会发现(√2 + 1)^(2n) + (√2 – 1)^(2n)总是一个整数(根号2的奇数次幂总是一正一负抵消)。同样地,((√5 + 2)^(2n) + (√5 – 2)^(2n)) * ((√2 + 1)^(2n) + (√2 – 1)^(2n))也是一个整数,于是(√5 + 2)^(2n) * ((√2 + 1)^(2n) + (√2 – 1)^(2n))和(√5 – 2)^(2n) * ((√2 + 1)^(2n) + (√2 – 1)^(2n))的小数部分是互补的(相加为1),我们可以依据后面这个数的小数部分来确定前面这个数(也即题目要求的数)的小数部分。而当n较大时,后面这个数很可能会变得非常小。事实上,当n=50时,

  (√5 – 2)^100 * ((√2 + 1)^100 + (√2 – 1)^100)
< (√5 – 2)^100 * 2((√2 + 1)^100)
< (1/4)^100 * 2((5/2)^100)
= 2(5/8)^100

    可以断定,这是一个非常非常小的数,小数点后面紧跟着的0至少有10个。这足以说明,题目里那个数的小数点后面十几位全部是9。事实上,
(2+√5)^100 * ((1+√2)^100 + (1+√2)^(-100))
= 94158733601034420664808450657998303298219601745567527892456021922994
  873597395955752869490271254871747.9999999999999999999999996186915243
  507242961564029332966750212181162222265977213142686546252118999….
    小数点后一共有24个9。

本文来源:http://www.cut-the-knot.org/arithmetic/PowersOf10.shtml

没有乘法口诀表将会怎样:古巴比伦乘法和古埃及乘法

    在各种文明的算术发展过程中,乘法运算的产生是很重要的一步。一个文明可以比较顺利地发展出计数方法和加减法运算,但要想创造一套简单可行的乘法运算方法却不那么容易。我们目前使用的乘法竖式计算看似简便,实际上这需要我们事先掌握九九乘法口诀表;考虑到这一点,这种竖式计算并不是完美的。我们即将看到,在数学的发展过程中,不同的文明创造出了哪些不同的乘法运算方法,其中有的运算法甚至可以完全抛弃乘法表。
    古巴比伦数学使用60进制,考古发现的一块古巴比伦泥板证实了这一点。这块泥板上有一个正方形,对角线上有四个数字1, 24, 51, 10。最初发现这块泥板时人们并不知道这是什么意思,后来某牛人惊讶地发现,如果把这些数字当作60进制的三位小数的话,得到的正好是单位正方形对角线长度的近似值:1 + 24/60 + 51/60^2 + 10/60^3 = 1.41421296296…  这说明古巴比伦已经掌握了勾股定理。60进制的使用为古巴比伦数学的乘法运算发展带来了很大的障碍,因为如果你要背59-59乘法口诀表的话,至少也得背1000多项,等你把它背完了后我期末论文估计都已经全写完了。另一项考古发现告诉了我们古巴比伦数学的乘法运算如何避免使用乘法表。考古学家们发现一些泥板上刻有60以内的平方表,利用公式ab = [(a+b)^2 – a^2 – b^2]/2 可以迅速查表得到ab的值。另一个公式则是ab = [(a+b)^2 – (a-b)^2]/4,这说明两个数相乘只需取它们的和平方与差平方的差,再两次取半即可。平方数的频繁使用很可能加速了古巴比伦人发现勾股定理的过程。
    古巴比伦数学把除以一个数看作是乘以它的倒数,利用倒数表可以很方便的实现这种算法。倒数表开头的一部分是这个样子:

2      0; 30
3      0; 20
4      0; 15
5      0; 12
6      0; 10
8      0; 7, 30
9      0; 6, 40
10     0; 6
12     0; 5
15     0; 4
16     0; 3, 45
18     0; 3, 20
20     0; 3
….    ….

    
    古巴比伦人很早就发现,1/7是一个无限小数,怎么除也除不完。古巴比伦的倒数表里所有的数都是精确的小数,它们(在60进制中)都是有限小数。碰到无限小数时,他们会用取近似值的方法来解决。例如,古巴比伦人会通过1/13 = 1*(1/13) = 7*(1/91) ≈ 7*(1/90) = 7*(40/3600) = (7*40)/3600 来计算1/13的值。那个40就是查倒数表查出来的。

    古埃及数学使用了完全不同的乘法运算法。它们的乘法运算不需要借助任何辅助用表。古埃及人注意到,任何一个数都可以表示为若干个不同的2的幂的和。因此,你需要做的仅仅是不断将1和乘数进行翻倍。看看古埃及人如何计算46乘以22:

  46 x 22 = 1012
   1   22
   2   44     44
   4   88   + 88
   8  176  + 176
  16  352
  32  704  + 704
          ——-
            1012

    上面的演算中,左列是1不断翻倍的结果,右边是22不断翻倍的结果。选出左列的2, 4, 8, 32,它们的和正好就是被乘数46;那么把右列对应的数加起来就是乘法运算的最终结果。至于如何选出2, 4, 8, 32这四个数,一个简单的方法就是,不断选出左列里小于被乘数的数中最大的一个,然后当前被乘数减去它。比如,32是最大的数,用46-32后剩14;8是小于14的最大数,14-8后剩6;然后最大的小于6的数是4,6减去4后剩2,这样下来2+4+8+32正好就是被乘数46了。这其实就是二进制的经典应用,2, 4, 8, 32正好与46的二进制中的数字1一一对应。你可以在这里看到一些相关的东西。
    无独有偶,据说俄国农村曾产生过这样一种乘法算术法:将被乘数逐次减半,同时乘数依次加倍,那么找出所有左边的数是奇数的行,其右列的数的和就是答案。例如,下面的例子中,23, 11, 5和1都是奇数,于是右边对应的44, 88, 176和704的和就是乘法运算的结果。这个做法与古埃及的算术法完全一样,但看起来似乎更神奇一些。

  46 x 22 = 1012
  46   22
  23   44     44
  11   88   + 88
   5  176  + 176
   2  352
   1  704  + 704
          ——-
            1012

做人要厚道
转贴请注明出处