Mathematica 新版10.3.0试水

Mathematica_Banner
Standard

博客好久没写东西了也该来拔拔草了。今天想在机房新机器上装个Mathematica,于是看到了最新版已经到10.3.0了(我之前用的只是10.0.1而已),就心血来潮下了一个玩玩。打开界面时并没有感觉到什么神奇之处,然而在输入的瞬间被吓尿了,它大概是长这个样子的:

KeywordChineseHint

新版(10.2.0 起)增加了语法关键词的中文解释

妈妈再也不用担心我看不懂英文了!看完中文名称,基本上对这个函数就有个大概的了解了。

然而更加精彩的还在后面,当我输完一行代码的时候,它就变成了这样:

ExprChineseHint

关键词自动注解

咦?关键词下面竟然还有代码说明,好神奇啊!这样子一来,根本不需要向别人解释这段代码什么意思了,能看得懂中文的应该都能懂了。简直是文科妹子要学编程的福音啊 (✿◕‿◕✿)

然而转念一想,这件事好像并不那么的单纯。在编程界,有一条广为人知的“定律”:1. 每个写代码的都希望别人的代码有注释,2. 然而他自己写代码的时候又不想写注释。此定律在江湖传播甚九,数十年未有人破。而今日Mma发现此中玄机,搞出这样一个自动代码注解,若放任其行,编程界势必大乱啊!

调侃完了,说些正经事。这东西有多大帮助我并不好说,但可以确定的是,对初学者的帮助是巨大的。Mma的文档系统本身就设计的比较亲民,学习曲线比较平缓,但依旧有好多人不知道要点F1(啧啧)。这次直接将解释放到了UI界面上,可见其对待新用户的认真程度了。

(不过这个东西可以干嘛用呢,或许可以用来写诗?开个脑洞下次来玩玩。)

回到原先的主题,下面便来简单介绍一下这次更新的内容以及个人的comment。


如果你是南大、东大学生,可以在紫荆的这个页面下载。边下边看,效率更高哦!

Continue reading

MATHEMATICA例程2——小数循环节

Standard

 

Hello大家好,这里是Mathematica例程大讲堂。

之前发现从关键词 Mathematica 过来的搜索流量偏高,于是便跑过来填这个许久之前挖的坑。上一篇文章是讲关于如何用 Mathematica 生成 Look And Say 序列,反复看了之后觉得难度太高,不适合初学,于是这次便来讲一点简单的、比较基本的例子。


一、主要目标

这次要计算的是 1/n 的小数部分的最小循环节长度,其中 n 最好是质数,例如:

1 / 3  = 0.333...
1 / 7  = 0.142857142857...
1 / 19 = 0.0526315789473684210526...

1/7 的循环节是"142857",有6位,而 1/19 的循环节是"052631578947368421",有18位,以此类推。

如果你觉得从中找到了规律,不妨来猜一下 1/81,1/9801 的循环节长度是多少位呢?^_^


Continue reading

Mathematica 中的模式匹配

Standard

本文目录:

 

想了很久,还是决定写下这篇教程。因为模式匹配在Mathematica太重要了,但这东西的确比较难描述清楚,下面我将尽我所能力图清晰地展现Mathematica中的模式匹配机制,部分内容参考自《An Introduction to programming with Mathematica》第六章,喜欢直接阅读英文材料的可以直接看这一节。

当然,以下均假定读者有基本的Mathematica基础。如果你以前从未接触过这个语言,建议你至少先看一下这篇文章(Mathematica中的四种括号,这篇至少是图文并茂,比本文全是代码要好一点)。


Mathematica语法拾遗

Standard

这里是用来总结Mathematica中的一些语法、句式、函数等,不一定很有条理,只是作为记录而已。

以及,本页的代码是有语法高亮的,如果看不到,可能是js没有加载完全,稍等片刻即可。 ╯_╰

 

2014-07-07 Update 4 新增Inner/Outer及范例,新增一些关于列表操作的 One-liners 实例。
2014-06-23 Update 3 新增Sow/Reap以及Gather等价类操作,更新分配部分。
2014-06-22 Update 2 新增规则匹配部分。
2014-06-21 Update 1 新增列表操纵、分配操作、简写符号、四种表达式形式,以及新增In/Out显示。
2014-06-17 初稿 新增基本函数调用、简单函数式用法。

Continue reading

Mathematica中的四种括号

Standard

Mathematica中,一共有四种括号,它们有着不同的含义,熟悉它们的用法是看懂Mathematica代码的基础。

类型 示例 说明
圆括号 (term) 表示组合顺序的圆括号
方括号 f[x] 表示函数调用的方括号
花括号 {a,b,c} 表示列表数组的花括号
双括号 v[[i]] 表示下标索引的双括号 (Part[v, i]

 

一、基本用法

(圆括号)

a. 圆括号比较简单,它表示着运算的优先顺序,和数学中的圆括号意义相同:

Mathematica_TB_11a

Continue reading

Mathematica例程1——LookAndSay序列

details-of-lookandsay
Standard

Hello大家好,这里是Mathematica例程大讲堂。

有什么好的入门Mathematica的方法呢?一种办法是看帮助文档,很详细;另外,绝大部分文档下面都会有一个“巧妙范例”,解释一些函数的巧妙用法,我觉得这对学习Mathematica会有很大帮助。

但是Mathematica语法博大精深,有些看起来很废的函数在某些地方便会发挥很神奇的作用,也可以用来辅助理解Mathematica语言设计中的一些架构。

Continue reading

[转载] Mathematica简介

Standard

写这一篇的目的是给那些没有接触过Mathematica语言,而又想了解学习一下的人准备的。为什么说转载呢?因为当我要写的时候,发现已经有人写过了,而且写得还不错。【当然不能重复造轮子了!】

不过由于原文实在是太长,而且图文并茂,生动形象,全部转过来实在是太累了。所以就放个传送门在这儿咯:点此穿越

下面是我自己用过Mathematica后的感受,先看哪个随你。

 

初遇Mma,大概是从紫荆站开始的吧。当时看到有下载,也是久闻其名,抱着“百闻不如一见,百见不如一试”的心态,我就用了一下,结果便一发不可收拾。这种感觉比我第一次用Matlab更甚。

本来还用Python的,现在一点也不想用了。

因为发现Python里各种高端功能,像列表解析啦,语法糖啦,装饰器,lambda算子等等,在Mathematica中都能找到对应的实现,并且更加优雅,看起来更加舒服。

列表解析对应的是Table函数,功能很强大。语法糖就多了,各种@#&符号,还有/@,@@,@@@符号,@_@

装饰器在Python中是一个@后面加个函数名,Mma中反过来,是函数名@要装饰的函数,并且可以不断接下去,看起来会很舒服,因为避免了一大堆嵌套的括号。lambda算子就更加简洁了,用#代表未知数,后面加个&就行,比如#+5&就代表一个加5的算子。

【你可以构造一系列算子规则,然后用它来证明2+3=5,XD】

说到底,用到最后,就是一堆算子在那里搞来搞去,这时候要看懂就得有些数学思维的功底了。【算子可不只是函数的意思,反正我已经被各种对偶算子、伴随算子洗脑了】所以我觉得,Mathematica更像是一门数学语言,而非是编程语言。从其底层逻辑上的严谨性也可见一斑。

说到底层,可以来随便818。都说Mathematica擅长符号运算,什么各种Taylor展开分分钟的事,因为其底层表示都是基于符号的。比如说一个具体的实数,在Mathematica中存储起来就有一个叫做Real的头部,来表示它的类型,整数的头部是Integer,到现在和其他语言好像差别不大,它们管这个叫数据类型(int, float之类的)。好,现在要表示一个符号x,Mathematica说我可以造一个头部叫Symbol,就表示这种“符号数据类型”,C++表示无能为力,Matlab里面倒是可以用sym命令来显示声明一个符号,可这是有额外代价的,并非语言本身所支持的。而在Mathematica中,一切皆是符号。数字是符号,表达式是符号,函数是符号,甚至连符号本身也是符号【这不废话么!】,所以说Mathematica擅长符号运算,因为它本身就是一个由符号构建起来的世界呀!

当然Mathematica是一门函数式编程语言,这种语言的特色是“函数是一等公民”(first-order),就是说变量和函数是一体化的,没有谁高谁低的等级之分。Python也可以当函数式编程语言来用,不过我更觉得Python是融合了面向过程、面向对象、面向抽象这三大语言特色的,你喜欢哪种写法就怎么写。不过要是你还是以面向过程的思路去学Mathematica的话。。啧啧。。可能还是Matlab更加适合你。

好了,黑Matlab不是本文的主旨。我也不多说什么了,更多内容请参见这里【因为发现很多要说的内容都重复了,说两遍没意思啊!】