Scilab 入门
介绍 Linux 上更大的科学实验室软件包之一。
Scilab 旨在成为一个全面的数值科学软件包,类似于 Maple、Matlab 或 Mathematica。尽管 Scilab 为各种科学计算提供了许多内置功能,但它还包括自己的编程语言,使您能够最大限度地利用这些功能。如果您愿意,您也可以使用这种语言将 Scilab 的功能扩展到全新的研究领域。一些功能包括 2D 和 3D 可视化和优化工具,以及统计函数。Scilab 还包括 Xcos,一个用于设计动态系统模型的编辑器。
有几种选项可用于在您的系统上安装 Scilab。大多数软件包管理系统都应该有一个或多个可用于 Scilab 的软件包,这些软件包还将安装几个支持软件包。或者,您可以简单地下载并安装一个 tarball,其中包含在您的系统上运行 Scilab 所需的一切。
安装完成后,使用 scilab
命令启动 Scilab 的 GUI 版本。如果您通过 tarball 安装 Scilab,则此命令将位于您解压 tarball 的 bin 子目录中。
首次启动时,您应该看到为您的项目创建的完整工作区。

图 1. 首次启动 Scilab 时,您将看到一个空的工作区,供您开始新项目。
左侧是文件浏览器,您可以在其中查看数据文件和 Scilab 脚本。右侧有几个窗格。顶部窗格是变量浏览器,您可以在其中查看工作区中当前存在的内容。中间窗格包含该工作区内的命令列表,底部窗格包含 Scilab 相关新闻的新闻源。工作区的中心是实际的 Scilab 控制台,您可以在其中与执行引擎交互。
让我们从一些基本数学开始——例如,除法
--> 23/7
ans =
3.2857143
如您所见,命令提示符是 -->
,您可以在其中输入要执行引擎执行的下一个命令。在变量浏览器中,您可以看到一个名为 ans
的新变量,其中包含计算结果。
除了基本算术之外,还有许多内置函数。需要注意的是,这些函数名称区分大小写。例如,语句 sqrt(9)
给出的答案是 3,而语句 SQRT(9)
返回错误。
还有用于数字(如 e 或 pi)的内置常量。您可以在语句中使用它们,例如使用此命令查找 pi/2 的正弦值
--> sin(%pi / 2)
ans =
1.
如果您不完全记得函数名称是什么,但您记得它的开头,则可以使用 Scilab 控制台中的制表符补全功能。例如,您可以通过键入“fa”这两个字母,然后按 Tab 键来查看以“fa”开头的函数。

图 2. 使用制表符补全来避免在 Scilab 控制台中键入命令时出现拼写错误。
您可以使用“=”符号分配变量。例如,使用以下命令将您的年龄分配给 age
变量
--> age = 47
age =
47.
然后您可以直接访问此变量
--> age
age =
47.
该变量也将在变量浏览器窗格中可见。以这种方式访问变量基本上会执行该变量,这也是为什么您可以获得额外输出的原因。如果您只想查看值,请使用 disp()
函数,该函数提供如下输出
--> disp(age)
47.
在继续更复杂的概念之前,您需要移出控制台。控制台的优点是语句立即执行。但是,这也是它的缺点。要编写更大的代码段,您需要使用随附的编辑器。单击“应用程序”→“SciNotes”菜单项以打开一个新窗口,您可以在其中输入更大的程序。

图 3. SciNotes 应用程序允许您编写更大的程序,然后在 Scilab 中将其作为一个单元运行。
完成代码编写后,您可以通过单击工具栏上的运行图标或选择“执行”菜单项下的选项之一来运行它。执行此操作时,SciNotes 会要求您先将代码保存到文件(文件扩展名为“.sce”)中,然后再运行。然后,它会使控制台使用以下命令运行此文件
exec('/home/jbernard/temp/scilab-6.0.1/bin/test1.sce', -1)
如果您在 Scilab 外部创建或接收 Scilab 文件,则可以使用类似命令自行运行它。
为了构建更复杂的计算,您还需要一种进行比较和循环多次计算的方法。可以使用以下方法进行比较
if .... then
stmts
end
或
if .... then
stmts
else
stmts
end
或
if .... then
stmts
elseif .... then
stmts
else
stmts
end
如您所见,if
和 elseif
行需要以 then
结尾。您可以根据您的特定情况设置任意数量的 elseif
部分。另请注意,整个比较块需要以 end
语句结尾。
还有两种类型的循环命令:for
循环和 while
循环。例如,您可以使用以下命令来查找前 100 个数字的平方根
for i=1:100
a = sqrt(i) disp(a)
end
for
循环采用由 start:end
定义的数字序列,并且每个值都迭代地分配给虚拟变量 i
。然后,您在 for
循环中包含代码块,并使用语句 end
关闭它。
while
循环类似,只是它使用比较语句来决定何时退出循环。
我要介绍的最后一个快速项目是 Scilab 中可用的绘图功能。您可以创建 2D 和 3D 图形,并且可以绘制数据文件或函数的结果。例如,以下代码绘制从 0 到 pi*4 的正弦函数
t = linspace(0, 4 * %pi, 100) plot(t, sin(t))

图 4. 调用 plot 函数会打开一个新的查看窗口,您可以在其中查看生成的图形。
您可以使用 linspace
命令生成函数将在其上执行的值列表。plot
函数打开一个新窗口来显示生成的图形。使用“编辑”菜单项下的命令来更改绘图的详细信息,然后再将结果保存到图像文件中。
您可以像绘制 2D 图形一样简单地绘制 3D 图形。以下代码绘制 0 到 4*pi 的参数曲线
t=linspace(0,4*%pi,100); param3d(cos(t),sin(t),t)

图 5. 生成 3D 图形与生成 2D 图形一样容易,如本参数曲线示例所示。
这也将打开一个新的绘图窗口来显示结果。如果默认视图不合适,请单击“工具”→“2D/3D 旋转”,并在选中此项后,右键单击图形并旋转它以获得更好的结果视图。
Scilab 是用于多种计算科学的非常强大的工具。由于它在 Linux、macOS 和 Windows 上都可用,因此如果您要与跨多个操作系统的其他人协作,这是一个不错的选择。它也可能被证明是在教学环境中使用的有效工具,让学生可以免费访问强大的计算平台,无论他们使用何种类型的计算机。我希望这篇短文为您提供了一些关于它可能对您有用的想法。我几乎没有介绍 Scilab 的许多功能,因此请务必访问主网站以获取许多优秀的教程。