Genius 简介:适用于 Linux 的高级科学计算器
Genius 是一款计算器程序,它既有命令行版本,也有 GNOME GUI 版本。它应该在您的发行版的软件包管理系统中可用。对于基于 Debian 的发行版,GUI 版本和命令行版本是两个独立的软件包。假设您想要同时安装两者,您可以使用以下命令进行安装
sudo apt-get install genius gnome-genius
如果您使用 Ubuntu,请注意 gnome-genius 软件包似乎不在 Bionic 中。它在较早的版本(trusty、xenial 和 arty)中,并且似乎在下一个版本(cosmic)中。我遇到了这个问题,并认为应该提一下,以避免您遇到麻烦。
启动命令行版本会提供一个解释器,Python 或 R 用户应该会很熟悉。

Figure 1. 当您启动 Genius 时,您会看到版本和一些许可信息,然后您将看到解释器提示符。
如果您启动 gnome-genius,您将看到一个图形界面,新用户可能会觉得更舒适。在本文的其余部分,我将使用 GUI 版本来演示您可以使用 Genius 做的一些事情。

Figure 2. GUI 界面提供对 Genius 中大多数功能的便捷菜单访问。
您可以将 Genius 用作通用计算器,因此您可以执行以下操作,例如
genius> 4+5
= 9
除了基本的数学运算符之外,您还可以使用三角函数。此命令给出 45 度的正弦值
genius> sin(45)
= 0.850903524534
这些类型的计算可以具有基本上任意的大小。您也可以直接使用复数。许多其他标准数学函数也可用,包括对数、统计、组合数学,甚至微积分函数等。
除了函数之外,Genius 还提供控制结构,例如条件语句和循环结构。例如,以下代码为您提供了一个基本的 for
循环,用于打印前 90 度的正弦值
for i = 1 to 90 do (
x = sin(i);
print(x)
)
如您所见,语法几乎类似于 C 语言。乍一看,分号似乎被用作行尾字符,但它实际上是一个命令分隔符。这就是为什么正弦函数所在行有分号,而 print 函数所在行没有分号的原因。这意味着您可以将 for
循环写成如下形式
for i = 1 to 90 do ( x = sin(i); print(x) )
除了 for
循环之外,还有 while
循环、until
循环、do-while
循环、do-until
循环和 foreach
循环。您还可以使用 break
和 continue
命令来控制是否跳出循环。它们的行为方式与 C 等语言中的行为方式相同。Genius 中的条件结构是一个非常基本的 if
结构,因此基本的 if-then
语句如下所示
if (a==5) then (a=a-1)
您也可以使用 else
语句
if (c>0) then (c=c-1) else (c=0)
Genius 没有 elseif
语句。
您可以在任何可以使用表达式的地方使用条件语句,这意味着您可以使用 if
结构来设置变量值
a = (if b>0 then b else 1)
如您所见,我在这里没有使用括号。您只需要在运算顺序可能令人困惑的情况下使用它们。
到目前为止,我已经介绍了命令、变量、条件语句和循环结构。Genius 还声称它使用一种名为 GEL 的编程语言。一种编程语言应该具有最后一个结构,即能够将代码组织成可重用的块。当然,GEL 允许最终用户定义自己的函数。函数定义的基本语法如下所示
function <identifier>(<comma separated arguments>) =
↪<function body>
作为一个非常简单的例子,以下代码定义了一个立方函数
function my_cube(x) = x*x*x
然后您可以像使用任何其他函数一样使用它
genius> my_cube(3) = 27
有时,您可能需要能够处理函数的输入参数的可变列表。在这些情况下,您可以将函数的最后一个参数定义为“...”。它看起来像这样
function my_func(a, b, c...) = <function body>
在这种情况下,输入参数将作为值向量传递给您的函数体。
当您开始编写更大的代码片段时,您可能需要开始处理错误情况。Genius(以及 GEL)具有基本的错误处理功能。当您在代码中检测到错误时,您可以使用 error
命令向最终用户发送消息
if not IsMatrix (M) then (
error("M is not a matrix")
)
然而,这可能还不够。如果错误无法恢复,您需要以某种方式停止执行。GEL 提供了两个选项。第一个是停止当前函数并使用 bailout
命令返回调用代码。如果错误非常严重,您可能需要停止所有执行。在这些情况下,您可以使用 exception
命令。
Genius 还有大量的高级函数。作为您可以执行的高级计算类型的示例,让我们看看进行数值积分。您可以积分一个函数,从起始极限到结束极限。例如,您可以使用以下方法找到从 0 度到 180 度正弦函数的数值积分
genius> NumericalIntegral(sin, 0, 180) = 1.59846942736
您还可以进行无穷级数求和、数值微分和求极限。
我要查看的最后一项仅在 GNOME 版本的 Genius 中可用。在这种情况下,您能够绘制数据和函数并在屏幕上显示它们。当您单击主窗口上的绘图按钮时,您将获得一个新窗口,您可以在其中定义绘图参数。

Figure 3. “创建绘图”窗口允许您为多个函数定义折线图和曲面图。
由于您可以绘制多个函数,因此您可以在同一窗口中并排查看它们。相反,如果您需要对曲面进行 3D 绘图,您可以选择绘图窗口的曲面图选项卡,并根据 x 和 y 定义一个函数。在绘图窗口中,有几个选项可以更改视图。对于曲面图,您甚至可以使其旋转,以便您可以从各个角度查看结果图。当您使绘图看起来完全符合您的要求时,单击“图形”菜单项并将其导出为多种文件格式之一,以便您可以在其他出版物或报告中使用它。

Figure 4. GNOME Genius 使您可以轻松绘制多个函数。例如,您可以绘制正弦和正切,以便查看它们彼此之间的比较情况。

Figure 5. 您可以轻松地根据 x 和 y 绘制单个函数,例如 x*sin(y)。
如您所见,Genius 在一个小巧的软件包中提供了相当多的功能。它已在教育领域中使用,使学生能够快速查看不同计算的结果,并展示它们如何根据输入或算法更改而变化。此外,它还提供了高级科学计算器的基本要素。使用过 HP 或 TI 高级手持计算器的人会发现 Genius 是桌面上功能非常强大的替代品。您可以在主网站上找到更多信息,包括手册和一组示例。