手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Genius - Linux的高级科学计算器

[日期:2020-03-06] 来源:Linux公社  作者:醉落红尘 [字体: ]

Genius是一个计算器程序,具有命令行版本和GNOME GUI版本。 它应该在您的发行版的软件包管理系统中可用。 对于基于Debian的发行版,GUI版本和命令行版本是两个单独的软件包。 假设要同时安装这两种软件,则可以使用以下命令进行安装:

[linuxidc@linux:~/www.linuxidc.com]$ sudo apt-get install genius gnome-genius

Genius - Linux的高级科学计算器

如果使用Ubuntu,请注意gnome-genius软件包似乎不在Bionic中。 它处于早期版本(trusty, xenial  和 arty),并且似乎处于下一版本(cosmic)。 如果要在Ubuntu 18.04中安装,用其他方法,特地跟你说下,以免使您感到烦恼。

启动命令行版本提供了一个Python或R用户应该熟悉的解释器。

Genius - Linux的高级科学计算器

图1、启动Genius命令行时,您会看到版本和一些许可证信息,然后您将看到解释器提示。

如果您启动gnome-genius,您将看到一个图形界面,对于新用户来说可能更舒适。 在本文的其余部分中,我将使用GUI版本来演示您可以使用Genius进行的一些操作。

Genius - Linux的高级科学计算器

图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

Genius - Linux的高级科学计算器

如您所见,语法几乎类似于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

Genius - Linux的高级科学计算器

除了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 - Linux的高级科学计算器

如刚才看到的那样,这里我没有使用括号。您只需要在可能混淆操作顺序的情况下使用它们。

到目前为止,我已经介绍了命令,变量,条件和循环结构。 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)

Genius - Linux的高级科学计算器

有时,您可能需要能够处理函数的输入参数的可变列表。 在这些情况下,您定义的函数的最后一个参数为“ ...”。 看起来如下:

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

Genius - Linux的高级科学计算器 

但是,这可能还不够。如果错误无法恢复,则需要以某种方式停止执行。 GEL提供了两种选择。首先是停止当前功能,然后使用bailout命令返回到调用代码。如果错误极其严重,则可能需要停止所有执行。在这种情况下,可以使用exception命令。

Genius还具有大量高级功能。

您还可以进行无穷和(infinite sums),数值微分(numerical derivatives)和极限(limits)。

我想要查看的最后一项只有在GNOME版本的Genius中才可用。在这种情况下,您可以绘制数据和函数并将它们显示在屏幕上。当您单击主窗口上的绘图按钮时,您将得到一个可以定义绘图参数的新窗口。

Genius - Linux的高级科学计算器

绘图窗口使您可以定义多个函数的line plots 和 surface plots。

由于可以绘制多个函数,所以可以在同一个窗口中并排看到它们。如果你需要绘制一个曲面的3D图形,你可以选择绘图窗口的“绘制面”选项卡,并定义一个关于x和y的函数,在绘图窗口中,有几个选项可以改变视图。对于曲面图,你甚至可以让它旋转,这样你就可以从各个角度看到结果图。当您让图形看起来完全符合您的需要时,单击绘图菜单项并将其导出为几种文件格式之一,这样您就可以在其他出版物或报告中使用它。

GNOME Genius使您可以轻松地绘制多个函数。例如,您可以绘制正弦和切线以查看它们之间的比较。

Genius - Linux的高级科学计算器

您可以轻松地根据x和y绘制单个函数,例如x*sin(y)。

如您所见,Genius在一个小包装中提供了相当多的功能。它已用于教育中,使学生可以快速查看不同计算的结果,并根据输入或算法的变化显示它们的变化。同样,它提供了高级科学计算器的基本知识。使用过HP或TI高级手持式计算器的人会发现Genius是桌面版上非常强大的替代产品。您可以在主网站上找到更多信息,包括手册和示例集。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2020-03/162519.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款