最近MATLAB的问题很火,一直在讨论MATLAB不能用了该怎么办。我发现一个问题,就是像MATLAB这类模拟计算软体,在各个领域都具有非常广泛的使用,好像MATLAB能做任何事情一样。另外像Python这种脚本语言,也是一种「万能」的存在。我想,这种啥都能做的工具真的是发展的趋势吗?我觉得这种大而全的软体很难做到尽善尽美,让不同领域不同研究方向的用户都感觉到非常满意。如果做细化领域的专用模拟软体,会不会更容易满足用户的需求,或者说是不是能够做得更专业?根据我自己的经验,能接触到的领域中,很少有这类专业模拟软体,即使有,也做得不尽人意。

很好奇大家所在领域或者研究方向有专有的模拟软体吗?用起来的感受怎么样?「专有」模拟软体和「通用」模拟软体相比,有哪些优劣势,这两种方向哪一种才是未来的发展方向?


有意思的问题,答案是大而全。(至于说两种方向都会存在,那是必然,但总有个主要和次要,相信题主问的就是主要)

原因如下:

  1. 未来模拟的趋势是多物理场耦合模拟,只有「大而全」的模拟软体才能在方程本身上做到耦合。(此处的「大而全」不是像ANSYS那样收购各种软体然后合成在workbench里,而是从方程本质上考虑了多场耦合从而实现的多功能),而「小而精」的软体很难做到多物理场,要实现也往往是采用联合模拟的方式进行的假耦合。
  2. 大而全的软体同样也可以做到小而精。通用软体可以通过二次开发或者定制化,对某一个行业进行精确分析。比如Adams是「大而全」的通用软体,但也有专门针对汽车行业「小而精」的Adams car模块。
  3. 随著计算机算力的提升,「大而全」的软体计算效率完全可以满足行业需求。以前「小而精」的软体往往针对某个行业采用针对性强的模型,从而可以达到很高的效率,进而得到业界的肯定。而当计算机性能的提升,「大而全」软体仍然可以采用通用的模型、暴力的求解速度来达到满意的效率。
  4. 从软体发展的规律上来说,「小而精」的软体如果能长期存在于市场,终将发展成「大而全」的软体。小而精的软体从市场规模上远不及大而全的软体,资本不会流向它们。正如LS-DYNA也要涉足隐式动力学、ANSA也要涉足求解器一样,「大而全」是趋势。

暂时是这么想的,当然想法是会改变的。


从产品研发的角度看,其实,两个方向都有。

一方面,模拟软体需要和设计、产品数据管理、试验数据管理等系统集成,且机电一体化产品的集成度和复杂度越来越高,模拟软体必须向著集成化、系统化、平台化方向发展,成为研发数字化系统中一个高度集成的子部分,并实现力、热、磁、声、光、电、流体等子方向某种程度的耦合。因此,很多原本独立的模拟软体企业,陆续被大系统企业收购,集成到完整的系统解决方案中,如达索系统收购ABAQUS,海克斯康收购MSC.Software等等。

另一方面,针对特定领域的模拟和解算问题,小而精的软体仍有生存空间,但领域垂直度更高了,很多此类软体的开发团队其实依靠工程项目咨询生存。


一个是mathwork的,基于V流程开始的从需求到验证的阶段里面都有工具箱,基本都是自己公司开发的!

一个是西门子,也是V流程,但是每个阶段的工具都是不一样的,主要是通过买行业中最先进的,然后做通各个软体的介面和集成!

我更赞同西门子的做法,西门子有自己的工业产业体系,mathworks更多的是工具供应商,真的这些工具在实际应用的如何,这个就不一定了


当然是吹爆MATLAB了。开个玩笑就是MATLAB除了不能生孩子其他都可以。这种大而全的软体还是很好用的,而且感觉MATLAB对我来讲够用,所以我目前还是认为MATLAB是万能的。

就是电气相关专业,本科接触了大大小小的软体就很多了,比如ACE,CAD,Multisim、CCS,MATLAB(含simulink),VC、DEV、Protues、Quartus等等,还有一个汇编语言用的学校的电脑提供的软体具体名字忘了。

但是最后留到电脑里的就只有MATLAB,而且MATLAB贼大,贼占内存,我想说电脑必须定期更换的原因就是为MATLAB服务。

CCS就是为了TI,ACE就是画PLC图,CAD顺带设计一些图样,Multisim和protues就是电路图设计,其实数字电路用晶元设计我是用的protues,VC和DEV就是C语言,Quartus完全是为了FPGA实验,MATLAB用到的课程有数值分析,信号分析,自动控制原理,现代控制理论,运动控制系统,高等数学,概率论与数理统计,复变函数等等。还有最主要其他实验做好了,数据绘图MATLAB简直不要太爽!什么,Excel也可以绘图,你试著交实验报告时用Excel画的图试一下!

到头来,其他课程结束了,那些其他软体可能都卸载了,但是唯独留著MATLAB舍不得卸载,卸载了还得重新安装,麻烦的一批。就单论MATLAB而言,我是中意这个软体的,一个软体解决很多需求,那些说Python还有其他开源程序代替MATLAB的人可能压根没想过有的专业不接触这些语言,你说那些Python啥的好不好,好是好,可是我们这些人没学过,难道让我们学一遍?再说了,我们电气人要是把你们计算机相关语言都学了一遍还能实现我们的目的(比如控制系统模拟),计算机的兄弟们,你们还恰锤子饭啊?当一个电气专业打好几个计算机专业,这老板要是还用计算机相关专业,这老板怕不是NT。

就单论MATLAB而言,里面目前为止,我找到很多不满意的地方。比如不能语音输入并且自己跑代码,也不能自己模拟系统,也不能逛淘宝,也不能看直播······

反正在我的专业MATLAB是够用了,对了,MATLAB自带的PID参数生成功能简直不要太好用,控制系统模拟不用simulink我还真不知道啥好用了。话说MATLAB也能做FPGA,有机会尝试一下!!!


应该朝著对用户友好的方向发展。

如果不考虑对用户是否友好,开源软体就很好啊,既有一些基本功能,又能在上面加自己想要的功能,又免费。

比如我接触的领域中常用的OpenFOAM,就属于入门门槛较高,但入门之后顿时风生水起的类型。可我依然遇到不少人,一听说啥要用Linux,要用command line控制,就直接放弃了。

Python正是能够为模拟软体提供一个user-friendly的interface。譬如说美国地质局的地下水软体Modflow,人们实际操作时候会用flopy(一个python包)来控制,大大降低了模拟难度(当然也有不少人用带图形界面的.exe)。

「通用」模拟软体例如MATLAB,在教学层面应用广泛,但是学生以后工作了,一般都会从事一些具体的工作,「通用」软体的意义就不大了,除非它比「专有」软体更快,操作更简单,对用户更友好。

当然,MATLAB在user-friendly方面在同类型软体中是相当好的,尤其是debug简直不要太容易。但它最大的缺点就是慢,因此就像其他回答所说,基本还是用来打草稿+课堂作业。

归根结底问题还是如何兼顾模拟能力与对用户友好,现在很多人用Python+C/Fortran,顺带调用一些线性代数运算的package,对大部分人来讲门槛还是有点高了,毕竟很多人对模拟的需求只是应用,并非开发。


个人而言,倾向于小而精的模拟软体,由于前沿技术呈现爆炸式发展,大而全的软体系统很难做到跟上前沿的行业发展,当然仅限于科研领域的观点。此外,现在大而全的模拟软体大部分用于商业用途,以前做科研喜欢用商业软体,现在更多的采用开源并且更加专业化的小众分析软体,由于更加专精,因此使用起来也顺手很多。


两者并不矛盾,小而精是社会主义阶段,大而全是共产主义阶段,每一步走踏实了,量变会引起质变,目前人类尚处于对自然知之甚少的阶段,扩大人类知识的边界才能做到真正的「精」和「全」。


只有同时用过美国和国产同类产品的人才能感受到美国科技实力,才能清醒认识到中美硬实力的差距。


matlab不是模拟软体。

只是用来给数值演算法打草稿的。

然而复杂系统的草稿它还打不了。

比如你想设计个针对3D的模拟特别优化的演算法,matlab就不能拿来打草稿,太慢。

深度学习演算法的草稿,它也打不了……matlab也是有DL工具包的哦。

带有复杂数据结构的草稿,它也不好打(比如你的计算要用到八叉树什么的)。

综上,matlab的可替代性其实很大的。

只要在最多2D问题的层面,实现:向量加减乘除、矩阵向量乘、稀疏矩阵(常用一共4种格式),power iteration(eigen 问题 svd)、norm函数、LU分解、复数操作符重载、krylov子空间迭代法、ode积分、最重要的:快速傅里叶变换。

外加一个脚本语言,这玩意能完成99%的打草稿工作。

simulink就真的不要吹了,再强大也是不会用的,毕竟计算效率摆在那儿。我经历过这么多计算数学机构的教育,就没有见到过用matlab做课堂作业和演算法草稿以外的工作,纽约大学(克朗数学科学院)时数值方法II 课程(美科院士,NASA的顾问教的),连课堂作业都要用c++写。


根据市场需要决定,但中国市场盗版严重,什么模拟软体都发展不起来


推荐阅读:
相关文章