它是什么
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,边界和特征值问题,以及拉普拉斯变换。