传统的说法是matlab擅长数值运算,尤其是矩阵数值运算,而mathematica擅长符号运算;此外matlab似乎是被国内的大家认识得更早,所以用的人更多。
但是,就我个人暑假以来的使用经验来说,这些传统的说法不见得对。Mathematica的数值计算能力其实并不逊色于Matlab。我在暑假里,因为要解一个偏微分方程组的数值解而同时接触了这两个软件,并且也分别请教了一些会用这两个软件的人。最终的调查结果是,matlab的解偏微分功能很渣,号称有解相关问题的工具箱(对,工具箱,这是许多人力挺matlab的理由之一),只能解非常简单的偏微分方程,而据说功能更强的相关指令,要求手动把方程要化成标准形式——把偏微分方程化成标准形式谈何容易!?而mathematica,相关求解格式就要简单的多,虽然也经过了一些波折,但最后四处求助之后,好歹勉强把我所要解的问题给解出来了。
现在,我对这一问题的认识是,所谓的软件的区别,恐怕也只是对我们入门用户而言的,如果真的熟练,只怕两个软件能做到的事的差别并不会有多大。我选择了mathematica,因为他的语句和传统数学式非常相近,符号计算的强大更是matlab所不具备的,至于数值计算,你有兴趣可以搜搜,截止目前我没有见过任何能说明mathematica的数值计算能力逊于matlab的证据,在Stackexchange上曾见有做天体物理学计算的人提及,Mathematica能在极短时间内求解上百个齐次方程的数值解。此外,我个人恐怕是不会有什么要求高效率计算的程序需要运行的(想要真正的高效率,就该使用C语言之类的较低级语言),所以mathematica对我来说足够了。
另外,mathematica8有全中文自带帮助文档,十分适合自学,这也是我选择它的理由。