mathimatica 和matlab,Mathematica和Matlab功能对比

Mathematica和Matlab都可以实现某个方案,不同之处在于对不同的问题,处理的方法繁琐程度不一样,这个需要对二者使用一段时间后才有体会。软件掌握多少都不算多,类似的软件还有MathCAD、Maple等,关键在处理具体问题的时候那种软件更适合,或者那种软件处理问题普遍性强,而Mathematica和Matlab分别代表了符号计算和数据处理(或者数值计算)的两个方面普遍适用的软件。

以下对Mathematica和Matlab做一些简单的介绍,无法详尽介绍。

Mathematica:符号计算强,便于公式推导和函数式制图。

[1]

Mathematica界面的窗口和菜单栏是分离式的,便于边计算边对照查看文档,其公式可以复制为公式格式,可直接粘贴于Word等文本中,而且有书写助手、数学助手等,便于以公式的形式输入,但该功能在大量符号计算中可能作用不大,编写代码的执行效率肯定比手动输入公式要高的多。见下图

[2]

输入和输出都是在同一个界面,便于查看每条代码的结果。

[3]

语法规则丰富,同一条代码可用多种形式表达,不同书写形式执行变量多样。例如:Apply[f, {x, y}]等同于f@@{x, y}也等同于f[x, y]

[4]

函数使用方式丰富,调用函数可以编写专门的文件,也可直接在输入界面中调用。可把想到的代码都写成函数的形式,包括各种形式的代码,便于调用,尤其是在试验不同方案的时候特别适用。

[5]

内置函数功能使用复杂,例如条件查找矩阵坐标,需要Position[data,Condition,1,Heads->False],其中Condition又需要编制。

[6]

将所有的算法最终转化为表达式,以函数的形式体现。例如绘图将表达式的变量范围指定即可,便于函数制图。

[7]

优点:映射和函数功能强大,自主性强。

[8]

缺点:无动态矩阵,需要预先指定矩阵的维度,更新已有数据维度需要函数操作。

a4c26d1e5885305701be709a3d33442f.png a4c26d1e5885305701be709a3d33442f.png a4c26d1e5885305701be709a3d33442f.png

Matlab:数据处理强,便于数据处理,当然Mupad和Maple也弥补了Matlab再符号计算方面的一些缺陷。

[1]

Matlab界面集成Workspace、Current Folder等,便于查看工作记录、图形和内存,以及其他可设置项,其Toolbox功能丰富强大。见下图

[2]

输入和输出界面分离,编码和输出分离查看。

[3]

语法规则固定,可稍微变化,便于结构化查看。

[4]

函数适用格式固定,复杂的代码需专门编制函数文件,简单的函数只能计算或调用内部函数。

[5]

内置函数使用简单,例如条件查找矩阵坐标,find(condition),condition虽需要编制,但是较为简单。

[6]

将所有的算法最终转化为数据,以数据的形式体现。例如绘图要先赋值变量,通过变量计算数值,最后绘图,便于数据制图。

[7]

优点:向量化编程和数据处理功能强大,规范化编码逐条执行强。

[8]

缺点:自定义函数太弱。

a4c26d1e5885305701be709a3d33442f.png

举例对比:绘制以下图形

a4c26d1e5885305701be709a3d33442f.png

(*Mathematica*)

meshgrid[x_List,

y_List]:={ConstantArray[x,Length[x]],Transpose@ConstantArray[y,Length[y]]};(*定义函数meshgrid,其功能将数据矩阵化*)

{xx, yy} =

meshgrid[Range[-2, 2, .1], Range[-4, 4, .2]]; (*调用函数meshgrid *)

c =

xx*Exp[-xx^2 - yy^2]; (*数值计算*)

pts =

Flatten[{xx, yy, c}, {2, 3}];(*压平数据结构,Matlab似乎无此功能*)

ListPlot3D[pts, PlotRange -> All, AxesLabel ->

Automatic, ImagePadding -> 20, Mesh -> 35, InterpolationOrder

-> 2, ColorFunction -> "Rainbow", Boxed -> False];

(*图形绘制*)

该段代码中使用了函数自定义,自定义函数调用。从中看出,自定义函数功能非常强大,甚至连最后的ListPlot整段语句或者这整块代码都自定义为一个函数,函数多次嵌套非常方便,同时输出的图形较为美观。同时也看出编码的复杂性,很多功能要自己实现,最大化的开放了对问题的解决方式。

Mathematica的绘图功能远不止这些,在动画方面比Matlab强很多,尤其是绘制可调节参数图形方面,Matlab可以说基本无法实现。

%Matlab

[X,Y] =

meshgrid(-2:.1:2, -4:.2:4);%矩阵化数据

Z = X .*

exp(-X.^2 - Y.^2);%数值计算

surf(X,Y,Z);%图形绘制

该段代码使用了内置函数meshgrid(Mathematica中没有,需要自己定义)。从中看出,内置函数功能函数非常强大,简单便捷的几行代码就实现了Mathematica复杂编码才能实现的功能。同时也看出其图形输出的美观色彩配置不够美观,虽然可以修改,但多数色带(colormap)效果不如Mathematica。

Matlab的自带函数功能远不止这些,在数据处理方面的函数其强大丰富是Mathematica无法相比的,例如Matlab中极坐标数据向直角坐标转化pol2cart就可以实现,Mathematica要实现该功能仍然要自定义函数。

结论:

通过以上看出,要解决某个问题,两种软件都可以解决,使用那种软件根据需要选择。

我自认为较好的解决方案是数据处理用Matlab,然后将数据导入Mathematica可视化处理。符号计算就是Mathematica了。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MatlabMathematica是两个常用的数值计算软件,它们各有各的特点和优势。虽然Mathematica在符号计算方面更加强大,但Matlab在数值计算和数据分析方面更加常用。如果需要在Matlab中调用Mathematica的计算能力,可以通过Mathematica引擎实现。 Matlab可以通过安装Mathematica Engine将两者进行连接。首先,在Mathematica中应用WSTP(MathLink的一种协议)开放接口,然后在Matlab中使用Mathematica Engine的函数调用Mathematica内核进行计算。这样就可以在Matlab中调用Mathematica的各种符号计算和数值计算功能。 具体的方法如下: 1. 安装Mathematica Engine,可以在Mathematica官方网站上下载安装。 2. 在Matlab中通过命令`link = mathematica`建立与Mathematica的连接。 3. 使用`evaluate`函数调用Mathematica内核执行计算任务,例如`result = evaluate(link, 'Integrate[Sin[x], x]')`可以计算正弦函数的积分。 4. 使用`get`函数获取计算结果,例如`value = get(result)`可以得到计算结果的数值。 通过这种方式,我们可以充分利用Mathematica强大的符号计算能力,将其集成到Matlab的数值计算和数据分析中。这对于一些需要复杂数学运算的科学研究和工程应用来说十分有用。当然,在调用Mathematica之前,我们需要在Matlab中导入Mathematica Engine的函数库。 总结来说,Matlab调用Mathematica的方法主要是通过安装Mathematica Engine,并通过函数调用Mathematica内核进行计算。这样可以充分发挥Mathematica在符号计算方面的优势,拓展了Matlab的应用范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值