一、Matlab被禁,美帝制裁出新招
二、Matlab是什么?它重要吗?
三、那些可以替代Matlab的软件
四、认清当前局势,坚定决心破局
2020年6月初,传出哈工大与哈工程被禁止使用美国MathWorks公司的科学计算工具软件Matlab。对于这个事件,有人认为美国对中国科技力量正在断粮,对中国科技发展将造成重大阻碍。有人对我国工业软件的现状痛心疾首,呼吁加大投入扭转局面。有人认为国内现有科研教育体制限制了创新的产生,导致我们产生不了有影响力的工业软件……对这个事件我们该如何看待?我们如何应对中美在高科技领域较量的新局面?我们如何才能真正摆脱在工业软件落后挨打的被动地位?经过整理与思考后我写了这个文章,共分为三篇:上篇是局与破局,分析在Matlab被禁后当前所处的局势,并提供快速破局的思路与办法。中篇是势与顺势,分析世界开源软件发展的潮流与大势,以及我国如何顺应大势并借势发展自己。下篇是道与法道,分析美国工业软件优势地位是从何而来,什么是其创新与发展之道,以及我们应该怎样学习、吸收并超越。
一、Matlab被禁,美帝制裁出新招
6月6日,荣登美国政府“实体清单”的哈尔滨工业大学与哈尔滨工程大学学生在使用正版Matlab软件时,突然弹出了反激活通知,点击之后当天还能使用,仅仅一天之后,再次启动MATLAB就已显示授权许可无效。
联系软件开发方MathWorks公司,对方表示这就是因为美国政府制裁导致的,作为一家“守法”的美国公司,他们也很无奈。很明显,美国政府对中国的科技封锁又出新花样。
要知道,这两所大学已经购买了正版软件授权,说不让用就不让用了,所谓的契约精神哪呢?是不是应该先把购买软件的费用退了并赔偿损失诶?对此,MathWorks公司并没有表示。不过,有一点是明确的,如果这两所大学的师生以后使用Matlab软件生成的结果发表论文,将被该公司视为侵权,并将面临被起诉的风险!
这个新闻一出,舆论又兴起一波讨论热潮。有人担心在美国持续出招之下,中国高科技力量是否能够撑住。有人认为Matlab这类工业软件完全掐住了科研机构的命脉,我们没有多少机会摆脱被动局面。还有人认为长期以来, 国内对美国在科技领域的全面领先估计不足,没有认真准备,导致落入陷阱反抗无力……对此,我的态度还是要冷静,遇到烦事不要慌,先掏出手机发个朋友圈……不是,先分析当前我们所处的局面是什么?再找到破局的办法。
二、Matlab是什么?它重要吗?
Matlab是一种科学计算语言和交互式集成开发环境(IDE)软件,由Matlab和Simulink两大部分组成。具有科学计算、数学绘图、系统仿真、数据分析、算法开发等强大功能。自1984年由美国Mathworks公司推向市场以来,历经三十几年的竞争和发展,现已成为国际上应用最广泛的科技工具软件,在学术研究与工业设计等领域占有近乎垄断的市场地位。在国内外大学的理工类专业,Matlab已经成为师生必须掌握的一项基本技能。目前世界上有180 多个国家的超过三百万工程师和科学家在使用 Matlab。
上面这段描述对于已经领略Matlab魅力的人来说心领神会,但是对于没有接触过的人而言则有点不知所谓。如果对这个软件都不了解,却空谈如何应对,这就有点搞笑了。所以我先拣几个基础的功能说明一下,让大家尽快熟悉情况。
1. 科学计算
科学计算相信大家都熟悉,Windows自带的计算器就有科学模式,但那对于学术研究与工业设计来说太小儿科了。如果要解一个线性方程组
或者求一个不定积分
你是不是会突然感觉菊花一紧呢?但使用Matlab计算却是So easy。对第一个求解线性方程组,在Matlab中只要输入三行代码:
A=[2,3,-1;8,2,3;45,3,9];
B=[2;4;23];
C=inv(A)*B
马上就可以得出结果:
C =
0.5531
0.2051
-0.2784
这里的三行数分别是x、y、z的值。如果大家线性代数没有忘光的话,可以看出这是用矩阵来求解线性方程组,并且是使用逆矩阵法。在Matlab中使用inv函数就可以获得逆矩阵。
矩阵计算是Matlab的灵魂,其设计哲学就是:“万物皆矩阵”。Matlab这个名称就是Matrix Laboratory(矩阵实验室)的简化。在Matlab中所有参与运算的数据都是矩阵。因为矩阵的理论和方法是现代科学计算的重要基础,诸如数值分析、优化理论、微分方程、概率统计、控制论、力学、电子学、网络等学科领域都与矩阵理论有着密切的联系,甚至在经济管理、金融、保险、社会科学等领域,矩阵理论和方法也有着十分重要的应用。大家还记得有个科幻电影《黑客帝国》英文原名就叫“The Matrix”,也就是矩阵。影片描述了未来人类被超级计算机“矩阵”支配的世界。从矩阵计算的重要性而言,这部电影其实也不算言过其实。而Matlab将大量对矩阵的操作封装成函数,使矩阵的运算极大简化,这是Matlab被广泛使用的最根本的原因。
电影《黑客帝国》海报
前面这个例子是进行科学计算中的数值计算,是求出数学问题的数值精确解或近似解。科学计算还有一种是符号计算,又称计算机代数,就是用计算机推导数学公式,如对表达式进行因式分解、化简、微分、积分、解代数方程、求解常微分方程等。Matlab在符号计算领域也占有着重要地位,虽然是购买的符号计算语言Maple的专利,但也是很厉害了。像上面举例的求不定积分就是一种符号计算。在Matlab中求不定积分也只需要三行代码:
syms x t;
f=5*x*t/(1+x^2);
int(f,t)
结果是
ans =
(5*t^2*x)/(2*(x^2 + 1))
其中第一行用syms语句定义了2个符号变量,第二行定义了需要求积分的函数,最后一行使用int函数即可求出不定积分。
2. 数学绘图
当我们使用Excel等办公软件时就有绘图功能,表现形式还非常丰富。但是它们的绘图是基于给定的数据来绘制,这叫做数据可视化。而Matlab的强大之处是只需要给定一个数学函数就可以进行二维图或三维图的绘制,这对于科研与工业设计提供了极大的便利。比如说,使用下面三条语句:
x=0:0.1:6;
y=sin(x);
plot(x,y);
这就在x轴0到6的范围内,以0.1的步长绘制出了一个正弦图形。
除了二维函数制图,三维制图也很方便。比如表示机械系统振动衰退情况的函数
x,y代表在时间为 t 时的位置。我们可以获得一系列(x,y)的值,并画出(x,y)的二维图像,但在这样的图上时间的影响就得不到体现。
如果我们改用三维绘图,把 t 的值也画出来,那么给研究者的直观印象就完全不一样了。很简单,四条语句就可以:
t = 0:0.1:10;
x = exp(-0.2*t) .* cos(2*t);
y = exp(-0.2*t) .* sin(2*t);
plot3(x,y,t);
这就在 t 轴0到10的范围内,以0.1的步长绘制出了处于不同时间的物体位置的三维图像。
除了前面的绘图,根据不同的需要,Matlab可以绘制许多更复杂也更直观的图形,如这样的
这样的
还有这样的
通过这些举例,相信你会回忆起以前看到过的很多示例图像可能就是用Matlab来绘制的。
(未完待续)
原文来自:https://mp.weixin.qq.com/s/KxrGnap-vM1uJ9fHYs2mrw
。(转载自)作者:貼發篻的實習生https://www.bilibili.com/read/cv13969498?from=search&spm_id_from=333.337.0.0出处:bilibili