大鸭梨 's Home Page

我的 Google Blog,聊聊可爱的 Delphi、Mathematica,并发发牢骚。

《Mathematica 探险》

《Mathematica 探险》俺已经写完一章了,该拿出来晾晾了。

《Mathematica 探险》里包含些什么呢?很遗憾,现在还没有一个确定的大纲。不过,我想,她的前三章应该是:初见端倪乐在其中由表及里

现在,我把第一章“初见端倪”(节选)放在 blog 上,看看有没有朋友喜欢她。——这将觉得她的未来:如果没得到多少眼球,我想她就只能“夭折”了(不过,我可能也会坚持写下去,但可能性似乎很小)。由于只是节选,有些小节只保留了题目,不知道有没有“戛然而止”的效果?

语言方面,我从小就不擅长写作文,所以《Mathematica 探险》怕是“词句不佳”,万望包涵。

体例方面,注释集中放在每章的结尾。这些注释通常不会影响阅读的流畅性,但可能包含着不少读者感兴趣的内容。——这些注释没有删节,完整奉上。

预备知识:一定的数学知识(高中程度?)、少许的编程知识。

样章[下载]。

下载[pdfBookmark].

Mathematica: 快速排序

算法:从列中选出一个元素,然后将所有比它小的元素进行快速排序并放在它的左侧,将所有不比它小的元素进行快速排序并放在它的右侧。

这个算法可以很好地演示函数式编程的“优雅”:

qsort[{}] = {};
qsort[{x_}] := {x};

qsort[ls:{x_, rst__}] := 
        qsort[Select[{rst}, # < x &]] ~Join~
        {x} ~Join~ 
        qsort[Select[{rst}, # >= x &]];

Mathematica: 把一列东西分为长度不同的组

算法:按长度取出一组,然后让剩余的东西继续分下一组。

在Mathematica里,这个算法可以相当精妙地实现:

(*ls = 一列东西*)
(*t = {第1组的长度, 第2组的长度...}*)
TakeRepeated[ls_List, t_List] := First /@ Rest[
    FoldList[
        Through[{Take, Drop}[#1[[2]], #2]] &
        ,
        {{}, ls},
        t
    ]
];

比如:TakeRepeated[{1, 2, 3, 4}, {1, 2, 1}] -->{{1}, {2, 3}, {4}}

Through[...]& 函数输入两个参数,#1 = {忽略, {东西}}, #2 = 长度. 它返回:{Take[{东西}, 长度], Drop[{东西}, 长度]}。

Take[{东西}, 长度] 就是分出来一个组
Drop[{东西}, 长度] 是参与下一次分组的列。

用 Mathematica 写论文

用Mathematica写论文,汉字可能会是“乱码”,经过尝试发现解决方法其实很简单:

修改 global 设置,将 Text Fortmatting -> CharacterEncoding 改为 $SystemCharacterEncoding 即可。

遗憾的是,Mathematica 会把一大串汉字当做一个“单词”,也不会自动在中英文交界处自动留少许空白。前者好像只能将就了,后者只好手工插入个 \[ThinSpace]——可以自己定义个菜单项并可指定快捷键。

没用过“深奥”的TeX、LATex,不过Mathematica 排出来的东西已经很漂亮了。

天才少年事件

15岁少年获软件大赛最高奖 他设计的高速杀毒软件,被列为XX市重大科技项目......

http://news.sohu.com/20060128/n241638368.shtm

这个少年用 搭建之星 搞了“杀毒软件”。这个软件检测不出IECAR 提供的测试文件(X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*), 可以说并没有什么“杀毒”功能(有可能是作者并不知道有这么个测试文件)。

经过一轮声势浩大的吹捧之后,真相稍白于天下。于是,这个少年就成了众矢之的。甚至有人把他于 CJ 相提并论。

不管怎么说,造假这个性质是确定无疑的了。对这个少年该如何处置?

我想,一棒子打死是不对的,甚至在舆论上也不宜大肆宣扬,因为他毕竟尚未成年,而且也没骗人钱财、伤人性命,还是宽容一些吧! 

从技术上讲,我们也应该看到,他对计算机知识的掌握比大多数同龄人要多,这是好事,是问题的积极方面。“大人”们应该在这方面对他加以引导。

从道德上讲,这个孩子不诚实。“大人”们应该教他如何诚实做人。

16 岁就能这么搞说明其是有才华的。但愿以后能踏踏实实学习,不然就“泯然众人”矣。

至于“天才”、铺天盖地的吹捧,则都是我们这些“大人”的错。只要有一个明眼的大人看出其中的破绽,还会闹这么大笑话吗?

把问题想轻松点:抑或是这小家伙在故意试探大人们的水平。结果,现在一个图有其表的软件把很多人都弄得云里雾里,岂不哀哉? 

外行?内行?

 蒙外行容易,蒙内行难。

扪心自问:对于我们所不懂的专业,我们追捧过吗?

我们不可能是全懂先生,有些信息需要“内行人”来提供。比如“汉芯”,如果我一点数字技术都不懂,我如何判断这是我们的骄傲还是我们的耻辱?我真诚地企盼内行人,有良知的、有水平的、真正的内行人来做出判断。

现在有些人,事事充内行、时时充内行。这些人也应唾弃之!!! 

本地链接 

关于大鸭梨 

友情链接 

 yaowangqiu的BLOG