Nov 30

    如果有人问你,三角形

  

    的下一行数是什么,你一定会毫不犹豫地说,下一行是 “1 4 6 4 1” ——这是 Pascal 三角,每个数都等于两肩的数之和。不过,最近 The College Mathematics Journal 上的一篇论文却给出了一个同样合理的正确答案: 1 4 5 4 1 。理由同样对称而美观:每个数都等于两肩的数之积加 1 ,除以头顶上(再上一行的对应位置上)的数。例如,第 2 个数 4 就等于 (1*3 + 1) / 1 ,而第 3 个数 5 则等于 (3*3 + 1) / 2 。我们不妨就紧跟 Pascal 的脚步,把它取名为 Rascal 三角吧。
    有网友肯定会说了,你就瞎掰吧, Rascal 三角形的生成规则里有除法,这会让三角形里面充斥着大量的分数的。你错了,这才是 Rascal 三角形的神奇之处:尽管每个数都是由两数相除得来的,但它们保证都是整数!你能看出这是为什么吗?

  

查看更多 »

Sep 29

    最近,一道 Google 校园招聘面试题红遍了整个中文网络:

    现在北京有一套房子,价格 200 万,假设房价每年上涨 10% ,一个软件工程师每年固定能赚 40 万。如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子?
    A. 5年
    B. 7年
    C. 8年
    D. 9年
    E. 永远买不起

    并不让人感到意外,这道题的答案选 E 。这背后的数学道理就是,线性的增长速度毕竟是赶不上指数级的增长速度的。我用 Mathematica 画了一个简单的图,按照题目所给数据模拟了 50 年内的房价和收入情况。可见,尽管底数仅仅是 1.1 ,指数级增长的威力也一如既往的令人震撼。

 
    
 
    唉⋯⋯什么时候工资也能成比地增长就好了。
 

May 26

    大家都知道,幻方是这样一种数字游戏,将 1 到 n^2 这 n^2 个数填入 n×n 的方阵中之后,每行、每列及两条对角线上的数字之和都相同。作为一个古老的数学游戏,幻方的生命力极强,直到现在数学家们还在寻找满足各种奇怪性质的幻方。更有意思的是,这神奇的数字方阵后来竟也发展成了文字游戏。人们发现,在 4×4 的方阵中填入以下字母,每行每列都是一个单词:

C A R D
A R E A
R E A R
D A R T

    这样的字母方阵就被称为“文字幻方” (word square) 。

    最近本人对文字游戏尤其感兴趣,心头开始思考起这么一个问题:是否有可能在方阵中填入汉字,让每行每列都是一个词语呢?看着电脑桌面上放着上次寻找 中文 piphilology 的词库,我就又手痒了,于是花了一下午的时间,利用 Mathematica 对汉字幻方作了一些搜索。下面和大家分享一下我得到的结果。

查看更多 »

May 24

    我曾经在这里介绍过一个叫做 mnemonic 的文字游戏:

  数学家 George Pólya 曾说过一句经典的话: How I need a drink, alcoholic of course, after the heavy chapters involving quantum mechanics! 依次数出每个单词的字母个数,你会惊讶的发现它正好是圆周率的前 15 位。后来又有人在后面加上一句 All of thy geometry, Herr Planck, is fairly hard ,让圆周率长度增加到 24 位。

    事实上,人们还创造了很多类似的句子,比如

      Can I have a large container of orange juice?
      How I wish I could calculate pi faster.
      For a girl I loved contrived; by nature tough, her heart survived.

    这种各个单词的字母个数恰好与圆周率的各位数字相同的句子就叫做 piphilology ,它是由单词 pi 和philology 合成的一个词。

 
    最近和朋友聊天时,又一次谈到了相关的内容。作为一个酷爱文字游戏的中文系学生,我当时就不爽了——中国语言文字博大精深,为什么就没有中文 piphilology 呢?要知道,英文单词有字母数,中文汉字也有笔画数呀!于是,我决心自己创作一个中文 piphilology ,使得一句话里每个字的笔画数恰好等于圆周率的小数展开。

查看更多 »

Apr 25

    Mathematica 强大的符号计算和化简能力相信会让不少人震撼不已。输入 Sum[1/n^2, {n, 1, ∞}] , Mathematica 竟然知道它等于 π^2/6 。我不禁问自己, Mathematica 真的什么都能化简出来吗?今天,我偶然遇到一个简单的表达式, Mathematica 竟然不知道它的精确值。

    在 Mathematica 中输入 Cot[π/2] , Mathematica 会告诉你它等于 0 ;在 Mathematica 中输入 Cot[π/4] , Mathematica 会告诉你它等于 1 ;但在 Mathematica 中输入 Cot[π/8] , Mathematica 返回的却还是一个 Cot[π/8] ,并没有给出它的值。而 Cot[π/8] 并不是一个复杂到无法用四则运算和平方开方表达出来的数。在一个边长为 1 的正八边形中,每条边的所对应的“圆心角”为 2π/8 = π/4 ,因此“圆周角” α 就等于 π/8 。由下图我们可以轻易看出, Cot[π/8]=√2+1 。

查看更多 »

Mar 8

    Mathematica 提供了一个看上去毫无用途的无厘头函数 Rasterize ,它可以以图片的格式输出运算结果。比如,下面这个句子可以打印出 (x+1)^n 的展开式的“倒影”:

   

    今天我突然想到,我们可以利用这个函数很方便地分析汉字在图象上的性质。函数 Binarize 可以把图象转换为单色单通道, ImageData 则可以把图象转换成数组的形式,以便我们定量分析。因此,下面这句话就可以把一个汉字转换成 12*12 的 01 矩阵:

   

查看更多 »

Feb 11

刚才在这里看到了如题所说的图像,立即想到用 Mathematica 验证一下。我选出了几个个人比较感兴趣的 k ,再用一句话便可输出所有对应 k 的图像:

kArray = {2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 36, 50};
For[i = 1, i <= Length[kArray], i++,
 Export["F:\\" <> ToString[kArray[[i]]] <> ".png",
  ArrayPlot[Table[Boole[Length[Divisors[x*y]] == kArray[[i]]], {x, 1, 400}, {y, 1, 400}],
   PixelConstrained -> {1, 1}, Frame -> False]]];

 
当 k=2 时,由于只有素数才有两个约数,因此所有点都是形如 (p, 1) 或者 (1, p) 的点,其中 p 为某个素数:

查看更多 »

Jan 14

    语言统计分析期末大作业要求我们统计全唐诗中的对偶字,并用所得到的统计结果反过来评判出对仗最工整的诗句。我在数据处理过程中突然想到,鉴于互成对偶的两个字之间有一定的语义联系,我们便有了一个庞大的汉字语义关联库;如果把所有汉字之间的关联画成一张图会是什么样子呢?于是我用 Mathematica 7 提出了全唐诗中处在对偶位置上的所有字对,得到了 464448 个可能的对偶关系;再利用一些算法得到了最稳定、最常用的 2000 个对偶关系,把它们都描绘在一张大图上,于是便有了上面的这个图。点击这里查看高清无码大图,1600x1600 像素。可以看到,有语义关联的汉字自动地聚合到了一起。

查看更多 »

« 更早的日志      更新的日志 »