Genius

Genius 是一个通用计算器程序,在某些方面类似于 BC、Matlab、Maple 或 Mathematica。「Genius is a general purpose calculator program similar in some aspects to BC, Matlab, Maple or Mathematica.」

Github stars Tracking Chart

它是什么

Genius 是一个通用的计算器程序,在某些方面类似于 BC、Matlab、Maple 或 Mathematica。它既可以作为一个简单的计算器,也可以作为一个研究或教育工具。它的语法非常直观,旨在模仿数学的通常书写方式。GEL 是其扩展语言的名称,它代表了天才扩展语言,很聪明,不是吗?事实上,许多标准的天才函数都是用 GEL 本身写的。

它能做什么?

  • 任意精度的整数,多精度的浮点数。
  • 有理数,存储为商和分母。
  • 复数,像往常一样存储在笛卡尔坐标中。
  • 类似于数学的表达式,尽量做到你的意思就是 Genius 所理解的意思,当然要达到一定的限度。
  • 矩阵计算/线性代数,有许多相关函数。
  • 数论。
  • 微积分,数值计算,甚至是非常有限的符号计算。
  • 统计学,所有的基本统计功能。
  • 数值方程求解, 多项式根, 等等.
  • 组合学。
  • 最常见的初级/三角函数。
  • 模块运算,包括矩阵的反转和模块运算。
  • 一个完整的编程语言,具有自动分型功能。事实上,Genius 标准库的很大一部分是用 GEL 编写的。
  • 二维函数线图,一次最多可绘制10个函数的标准二维图,可导出为 EPS 或 PNG 格式。
  • 参数图,可以导出为 EPS 或 PNG 格式。
  • 三维函数曲面图,可导出为 EPS 或 PNG 格式。
  • 斜面/矢量场绘图。
  • GUI IDE,可以编辑和运行/测试你的程序。

可以用 LaTeX、Troff(eqn)或 MathML 输出矩阵,我认为这是一个非常酷的功能,可以让你直接从 Genius 中复制东西到 LaTeX、Troff 或 MathML 的文档中。

一个表达式的例子可以是这样的:

30*70 + 67^3.0 + ln(7) * (88.8/100) + |sin(40)| - 3i

或者,如果要对谐波级数的前70项进行求和,可以这样做:

sum n=1 to 70 do 1/n

要定义一个取一个数字的平方并加一的函数,你可以这样做。

function f(x) = x^2 + 1

对 f 进行从 -1 到 1 的数值积分。

NumericalIntegral(f, -1, 1)

将一个数字分解成素数。

Factorize(123456789)

求解一个线性系统 Ax=b。

SolveLinearSystem(A,b)

给出 y'=x^2+y,初始条件 y(0)=0,使用 Runge-Kutta 以 20 的增量求出 y(1)。

RungeKutta (`(x,y) = x^2 + y, 0, 0, 1, 20)

Genius 的最初目标是建立一个比 BC 更好的 BC。这个目标早就达到并超越了,Genius 与 BC 已经没有多少共同之处。它现在正向 Matlab/Octave、Maple 和 Mathematica 的领域进军,尽管它不完全是这些东西的一部分。我不认为它能取代任何东西,但它已经是一个非常好的实验工具,我已经在研究中多次使用它。

Genius 代表什么?

我不知道......G 可能是 GNOME 或 GNU。我想它曾经代表着什么,但我忘了。所以现在它只是 Genius。最初的窗口标题是 "GnomENIUS计算器",但那听起来很蠢,所以也不是了。

当然,Genius 是自由软件,根据 GNU 通用公共许可证发布。

未来?也就是说,Genius 在未来的某个时间点会做什么。

  • 更好的绘图,可能转移到 PlPlot。GtkExtra 的界面非常糟糕,基本上没有人维护,而且看起来也不尽如人意。我们也可以为 PlPlot 提供直接的接口,让天才可以做所有 PlPlot 可以做的事情,除了我们现在做的一些有限的高水平的事情。
  • 十进制浮点数。我想我们真的应该用十进制工作。
  • 多项式处理(它已经通过使用向量做了一些多项式处理,但它只针对单变量多项式)。
  • 一些更多的符号计算(这与多项式处理有关)。我们应该至少能够简化,如果不是整合的话。
  • 如果需要的话,用符号来处理根和常数,比如 pi 和 e,而不是转换为浮点数。事实上,我们可以同时做这两件事。
  • 更好的集合支持(而不是用向量来伪造)。

鸣谢

在部分开发过程中,作者(Lebl)得到了美国国家科学基金会资助DMS 0900885、美国国家科学基金会资助DMS 1362337、伊利诺伊大学厄巴纳-香槟分校、加州大学圣地亚哥分校、威斯康星大学麦迪逊分校、俄克拉荷马州大学的部分支持。

使用中的 Genius

以下是一份不完全的清单,列出了Genius被使用的事情。

  • Jiří Lebl and Daniel Lichtblau, Uniqueness of certain polynomials constant on a line, Linear Algebra and its Applications, 433 (2010), no. 4, 824-837, DOI:10.1016/j.laa.2010.04.020, preprint arXiv:0808.0284. 这项研究的部分内容是用Genius完成的,代码可查:https://www.jirka.org/LL08-archive.zip。
  • 关于 Diffy Qs 的说明: 工程师的微分方程。一套 UIUC 的数学286的笔记/教科书。书中的图表是用 Genius 做的,我也用 Genius 在课堂上演示过。涵盖了一阶和二阶 ODE,线性 ODE 系统,傅里叶级数方法和 PDEs,边界和特征值问题,以及拉普拉斯变换。


Main metrics

Overview
Name With Ownerflathub/org.gnome.Genius
Primary Language
Program language (Language Count: 0)
PlatformBSD, Linux, Unix-like
License:
所有者活动
Created At2017-12-17 19:51:08
Pushed At2024-09-19 15:30:06
Last Commit At2024-09-19 20:59:58
Release Count0
用户参与
Stargazers Count0
Watchers Count2
Fork Count3
Commits Count22
Has Issues Enabled
Issues Count2
Issue Open Count0
Pull Requests Count4
Pull Requests Open Count57
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Genius Calculator

Genius calculator is a general purpose calculator and mathematics tool
with many features.

For a manual read help/genius.txt (or see the manual in the gnome
help browser).


Requirements:
- lex (tested under flex)
- yacc (tested under bison -y)
- gmp (relatively new one required)
- mpfr (relatively new one)
- glib 2.12
And for the GNOME frontend you need:
- gtk+ 2.18
- vte
- gtksourceview or gtksourceview2 (optional but recommended)

If you want to compile without the GNOME frontend, try the
--disable-gnome
argument to the ./configure script. You will miss out on the GUI stuff
(which includes the plotting) but you can use all the rest nicely.

It's under GPL so read COPYING

Note: the gtkextra/ directory which includes the plotting widgetry is
copyright: Adrian E. Feiguin feiguin@ifir.edu.ar and is under LGPL. When
GtkExtra is actually released, stable, free of bugs, widely deployed and all
that it will become a requirement rather then being included like this. This
seems very unlikely at this time.

George jirka@5z.com