比特之理 我为什么喜欢Mathematica
发布网友
发布时间:2022-05-04 22:24
我来回答
共1个回答
热心网友
时间:2022-06-26 12:56
首先,据说Mathematica(下面简称Mma)是世界上最复杂的软件系统,我暂时也是这么认为的。。为什么?后面我会慢慢解释。
其次,我想说的是,我为什么喜欢Mma,不仅因为它强大(因为复杂?),更因为我觉得是交互上最好的一款系统;
友好度(前篇):输入
我觉得很多人是不是都受够了各种语言(C++,Python,Matlab,JS,PHP,好吧,指的基本上是所有的语言)里面的算式输入,比如说你必须写乘号,一个算式里面又乘又加又除又指数的时候你看代码难道不难受么?感受一下。。
1
(x+2^(3+a/d^i))/sqrt(x^(y+z)*(3+3/d))
这时候你会想,如果写出来像手写那种就好了,是吧~Mma所支持的最让人喜欢的一个特性就是,公式和你手写的差不多!!
除号,开n次方,Σ求导,偏微分,积分,相乘,各种希腊字符,没错,这是一门编程语言!!不是Word或者PDF!!【顺便提醒感受一下最后一个例子】
如果有看过之前那篇《Mathematica给图片去水印》的话,就可以体会到另一件事情:图片本身就可以作为参数传进函数里面【别的语言都是先把图片保存在本地,程序设置一个img变量,imgread读取图片,然后再处理】;
再举一个例子,以前的博文《生命游戏&兰顿蚂蚁》中,我从维基娘那里找到一张图片:
然后我希望得到一个二维矩阵,大小就是上面这张图的横宽格子数,如果这个格子里面是黑色,那么这个位置的值是1,否则为0,那么我可以把图片本身当做参数传进代码里面,这样就省去了保存到本地,再读取的步骤。
这种交互方式你不觉得简直人性化到极点了么?
强大
友好的交互不能体现一款软件的强大!!但是上面计算∑i=1∞1i2自动算出π26不知道让各位体会到Mma的强大没。
再举几个例子,首先是两个简单的例子:
然后再看看复杂一点的,我以前很喜欢用Mma来做很数学的课的作业是因为它算这种东西毫无压力:
再看一个例子体会一下:
这就是为什么Mma表达式计算可以完爆Matlab十万光年的原因,Again,还是没有黑Matlab的意思。。因为你不能以己之长,较人之短嘛。。
好,如果你手上有一个很强大的表达式计算工具,你会想到什么?没错,推公式/验证公式!!(某师兄怒躺一*)第一个例子可以去看看以前的那篇倒立摆的博文的前面部分体会一下~
再随手写些例子,比如验证公式,例子虽然简单,但是强大是不言而喻的:
再比如化简公式之类的:
或者三角恒等式:
Mma自带了解大部分恒等式化简规则,但是对于有些Mma无法解读的那些,你可以自己写规则告诉它,然后再用这些规则去推别的公式,比如众所周知的,我们可以把sin(cos(x))展开成一系列贝塞尔函数的和的这种法则,写下这套规则后你就可以去推那些载波啊什么的相关公式了。【好吧,我知道这一段看懂的人不多。。所以我就不举例子了。。】
Mma的表达式支持的那么好,而且交互那么友善,自然分段函数这种东西应该毫无压力不是么?
请问你家Matlab是怎么完成分段函数的?再次重申,没有黑matlab的意思。。不信的话我换一句咯。。请问你家汇编是怎么完成分段函数的?
Mma还有一个很强大的功能,就是带单位的计算,比如说吧:
嘿,你说我大Matlab也可以实现啊,只要记住各个单位之间的比例就可以了啊,且看这个例子:
请问Matlab先生你懂什么事字符串相除,字符串相乘么?
不过单位支持是9.0版本以后的新特性了,相信装了9.0的对下面这幅图都不陌生吧:
最后再关于表达式计算我再讲一个例子,
看到没,Mma在推导公式的时候,会计算出公式成立的条件!!相反的,你也可以在输入的时候就告诉它参数的条件,这样可以在某些复杂情况下降低计算时间。
函数式编程
我一直很喜欢Python的一个原因在于它对函数式编程的支持很简洁,每次用起来我都很有成就感,比如map,rece,filter这几个函数在做Euler Project的时候我简直爱不释手
比特之理 我为什么喜欢Mathematica
首先,据说Mathematica(下面简称Mma)是世界上最复杂的软件系统,我暂时也是这么认为的。。为什么?后面我会慢慢解释。其次,我想说的是,我为什么喜欢Mma,不仅因为它强大(因为复杂?),更因为我觉得是交互上最好的一款系统;友好度(前篇):输入 我觉得很多人是不是都受够了各种语言(C++,Python,Matlab,...