27

我要开始学习抽象代数——群、环等。我有兴趣了解任何编程语言,如果有的话可以帮助我学习/尝试我在理论上学到的概念。

编辑:我并没有真正考虑实施我学到的东西。我很想知道任何已经支持它们的语言。

4

11 回答 11

33

也许对您的问题略有不同,但仍然......功能语言 Haskell 使用代数(尤其是范畴论)的概念,例如单子、幺半群、箭头等等。

使用 Haskell 的类型类,您还可以将任何对象组成一个组或一个环,例如,只需在它们上定义操作(运算符)。但是,确保您定义的操作实际上符合群/环公理将是您的责任。

于 2009-02-24T04:12:07.203 回答
22

您在此处需要的文本是Chuck Sims 的Abstract Algebra, A Computational Approach。作者会推荐你使用APL编程语言。这本书已经绝版,但您可能会在您的图书馆找到它。

还有用于群论的GAP 计算机代数系统很有趣。

进阶资源:

Magma:相当复杂的CAS,可以处理抽象代数中的各种概念。
Macaulay 2:用于研究多项式环,尤其是Gröbner 基
SINGULAR:用于研究多项式环。

研究群论的一个关键事实是,每个群都通过正则作用同构于一个置换群。因此,理解群论的关键是理解置换群。

最后,任何支持定义自己的对象并在对象的两个实例上定义二元运算符的语言都将支持通过编程学习理论。

于 2009-02-24T03:42:43.403 回答
5

如果您正在玩组,您可能希望使用Group explorer将它们可视化。

于 2009-11-19T21:47:03.383 回答
4

Mathematica有很多有用的函数来处理抽象代数中的概念。不幸的是,它是专有软件并且非常昂贵。 Sage是一个免费的替代品,它也有相当不错的抽象代数函数库,虽然我没有广泛使用它,所以我不能对它发表更多评论。

于 2009-02-24T04:23:01.747 回答
3

任何具有固定大小无符号整数的语言(例如unsigned intC 中的类型)都是这种实现的示例。无符号值的加法本质上与 Z 2 32上的加法(即整数模 2 32)相同,您可能正在抽象代数课上学习。

不过,对这样一个组进行模块化添加并不是很有趣。更有趣的可能是对一组大小为 N 的模加法,其中 N 具有除 2 以外的质因子,或者大小为 P,其中 P 是质数。要试验这样的组,您可能必须自己实现这样的算术运算(这并不难)。具有运算符重载的语言可以使实现更方便使用。

于 2009-02-24T03:34:40.990 回答
3

使用对您最有意义的语言。抽象代数包含大量的符号操作(符号推送)和重写、适量的归纳和大量的繁琐。对我来说,这听起来像是逻辑或函数式编程;Epigram 和 Agda 做了一点,Haskell 在某种程度上做了(尽管我不同意 monoid 是正确的,mzero 和 mappend 还可以,mconcat:不好)。对于抽象代数,最好的编程语言是定义笔记本和吨纸。尽管这些天来这个变得非常深奥。

于 2009-03-12T13:03:02.160 回答
3

嗯……很抱歉,但我认为学习一些花哨的新编程语言来帮助您学习抽象代数并不有效。

是的,Haskellers 喜欢谈论范畴论,但这并不是一个好的起点。

GAP 公司 被用来帮助成年的群论者寻找新的“怪物”——它们是学习群论的坏工具。

也许你可以看看这个: http: //freecomputerbooks.com/mathAlgebraBooks.html - 有很多关于这个主题的免费书籍。

于 2009-04-14T05:34:25.113 回答
2

令人惊讶的是,到目前为止还没有人提到CoCoA(Computations in Commutative Algebra 的首字母缩写词),一个指向主站点的链接: http : //cocoa.dima.unige.it/ 可以下载最新的 CoCoA 5.0对于主要平台(Linux、MacOS X、Windows),(也可以在此处找到一份有用的 CoCoA 4.7 手册,因为 5.0 将被更新)。
一个免费提供的计算机代数系统(用 C 编写)已经开发了 20 多年。它的目标是专业的科学应用,其中包括 Gröbner 基计算、多项式分解、精确线性代数、希尔伯特函数、复曲面理想等。

有很好的专着,如 Kreutzer 和 Robbiano 处理 CoCoA 的 Computational Commutative Algebra (2 vol.):http: //cocoa.dima.unige.it/kr/

在交换代数领域,它比 Mathematica 具有更高级和更专业的功能,尽管在 M 中有出色的功能(CoCoA 中没有)用于量词消除(有助于处理多项式方程和不等式系统): http://www. wolfram.com/learningcenter/tutorialcollection/AdvancedAlgebra/

于 2011-11-08T21:30:29.147 回答
1

我读过的唯一一本试图认真处理抽象代数概念的计算机语言书籍是《 科学与工程 C++:高级技术和示例介绍》,作者是 John J. Barton、Lee R. Nackman。

这是一本关于 C++ 的好书,虽然很旧。

我不知道这种方法在数学上是否 100% 正确。

于 2018-05-21T03:11:53.027 回答
0

与 Greg 的回答类似,组以矩阵乘法的形式具有很好的表示形式,因此您经常看到使用 matlab 或类似工具完成的示例...

于 2009-02-24T03:38:06.537 回答
0

EAAM 它是一个特定于数学的软件包,也可以安装。

于 2013-04-13T18:49:38.027 回答