Genius是一个计算器程序,具有命令行版本和GNOME GUI版本。 它应该在您的发行版的软件包管理系统中可用。 对于基于Debian的发行版,GUI版本和命令行版本是两个单独的软件包。 假设要同时安装这两种软件,则可以使用以下命令进行安装:
[linuxidc@linux:~/www.linuxidc.com]$ sudo apt-get install genius gnome-genius
如果使用Ubuntu,请注意gnome-genius软件包似乎不在Bionic中。 它处于早期版本(trusty, xenial 和 arty),并且似乎处于下一版本(cosmic)。 如果要在Ubuntu 18.04中安装,用其他方法,特地跟你说下,以免使您感到烦恼。
启动命令行版本提供了一个Python或R用户应该熟悉的解释器。
图1、启动Genius命令行时,您会看到版本和一些许可证信息,然后您将看到解释器提示。
如果您启动gnome-genius,您将看到一个图形界面,对于新用户来说可能更舒适。 在本文的其余部分中,我将使用GUI版本来演示您可以使用Genius进行的一些操作。
图2. GUI界面可让您轻松访问Genius中的大多数功能。
您可以将Genius用作通用计算器,因此可以执行以下操作:
genius> 7+9
= 16
除了基本的数学运算符,您还可以使用三角函数。 此命令给出60度正弦:
genius> sin(60)
= -0.304810621102
这些类型的计算基本上可以是任意大小的。您还可以使用开箱即用的复数。还有许多其他的标准数学函数,包括对数、统计、组合、甚至微积分函数。
除了函数之外,Genius还提供了控制结构,比如条件语句和循环结构。例如,下面的代码为您提供了一个基本的For循环,它打印出前60度的正弦值:
genius> for i = 1 to 60 do (
> x = sin(i);
> print(x)
> )
0.841470984808
0.909297426826
0.14112000806
-0.756802495308
-0.958924274663
-0.279415498199
0.656986598719
如您所见,语法几乎类似于C。 乍一看,看起来分号被用作行尾字符,但实际上它是命令分隔符。 这就是为什么在正弦函数行上没有分号,而在带有打印函数行上没有分号的原因。 这意味着您可以编写如下的for循环:
genius> for i = 1 to 60 do ( m = sin(i); print(m) )
0.841470984808
0.909297426826
0.14112000806
-0.756802495308
-0.958924274663
-0.279415498199
除了for循环外,还有while循环,until循环,do-while循环,do-until循环和foreach循环。 您还可以使用break和continue命令控制是否弹出循环。 它们的行为与使用C之类的语言时的行为相同。Genius中的条件结构是非常基本的if结构,因此基本的if-then语句如下所示:
if (i==6) then (i=i-1)
您还可以使用else语句:
if (b>0) then (b=b-1) else (b=0)
Genius没有elseif声明。
你可以在任何你想放表达式的地方使用条件句,这意味着你可以使用if结构来设置一个变量值:
x = (if i>0 then i else 1)
如刚才看到的那样,这里我没有使用括号。您只需要在可能混淆操作顺序的情况下使用它们。
到目前为止,我已经介绍了命令,变量,条件和循环结构。 Genius还声称它使用一种称为GEL的编程语言。 编程语言应具有最后一种结构,即将代码组织成可重用的块的能力。 而且,当然,GEL具有让最终用户定义自己的函数的能力。 函数定义的基本语法如下所示:
function <identifier>(<comma separated arguments>) =
↪<function body>
作为一个非常简单的示例,以下代码定义了一个cubing函数:
genius> function linuxidc_cube(x) = a*a*a
= (`(x)=((a*a)*a))
然后,您可以像使用其他任何函数一样使用它:
genius> genius> linuxidc_cube(3) = 27
Lvalue not an identifier/dereference/matrix location!
= ((genius>linuxidc_cube(3))=27)
有时,您可能需要能够处理函数的输入参数的可变列表。 在这些情况下,您定义的函数的最后一个参数为“ …”。 看起来如下:
function linuxidc_func(a, b, c…) = <function body>
在这种情况下,输入参数将作为值的向量传递给函数主体。
当您开始编写较大的代码段时,您可能需要开始处理错误情况。 Genius(以及因此的GEL)具有基本的错误处理功能。 当您在代码中检测到错误时,可以使用error命令向最终用户发送消息:
genius> if not IsMatrix (M) then (
> error(“M is not a matrix”)
> )
使用了未初始化的变量“M”,可能您指的是 ‘m’。
M is not a matrix
但是,这可能还不够。如果错误无法恢复,则需要以某种方式停止执行。 GEL提供了两种选择。首先是停止当前功能,然后使用bailout命令返回到调用代码。如果错误极其严重,则可能需要停止所有执行。在这种情况下,可以使用exception命令。
Genius还具有大量高级功能。
您还可以进行无穷和(infinite sums),数值微分(numerical derivatives)和极限(limits)。
我想要查看的最后一项只有在GNOME版本的Genius中才可用。在这种情况下,您可以绘制数据和函数并将它们显示在屏幕上。当您单击主窗口上的绘图按钮时,您将得到一个可以定义绘图参数的新窗口。
绘图窗口使您可以定义多个函数的line plots 和 surface plots。
由于可以绘制多个函数,所以可以在同一个窗口中并排看到它们。如果你需要绘制一个曲面的3D图形,你可以选择绘图窗口的“绘制面”选项卡,并定义一个关于x和y的函数,在绘图窗口中,有几个选项可以改变视图。对于曲面图,你甚至可以让它旋转,这样你就可以从各个角度看到结果图。当您让图形看起来完全符合您的需要时,单击绘图菜单项并将其导出为几种文件格式之一,这样您就可以在其他出版物或报告中使用它。
GNOME Genius使您可以轻松地绘制多个函数。例如,您可以绘制正弦和切线以查看它们之间的比较。
您可以轻松地根据x和y绘制单个函数,例如x*sin(y)。
如您所见,Genius在一个小包装中提供了相当多的功能。它已用于教育中,使学生可以快速查看不同计算的结果,并根据输入或算法的变化显示它们的变化。同样,它提供了高级科学计算器的基本知识。使用过HP或TI高级手持式计算器的人会发现Genius是桌面版上非常强大的替代产品。您可以在主网站上找到更多信息,包括手册和示例集。