【发布时间】:2010-10-09 11:37:03
【问题描述】:
我要开始学习抽象代数——群、环等。我有兴趣了解任何编程语言,如果有的话可以帮助我学习/尝试我在理论上学到的概念。
编辑:我并没有真正考虑实施我学到的东西。我很想知道任何已经支持它们的语言。
【问题讨论】:
标签: computer-science wolfram-mathematica algebra
我要开始学习抽象代数——群、环等。我有兴趣了解任何编程语言,如果有的话可以帮助我学习/尝试我在理论上学到的概念。
编辑:我并没有真正考虑实施我学到的东西。我很想知道任何已经支持它们的语言。
【问题讨论】:
标签: computer-science wolfram-mathematica algebra
也许对您的问题略有不同,但仍然......函数式语言 Haskell 使用代数(尤其是范畴论)的概念,例如单子、幺半群、箭头等等。
使用 Haskell 的类型类,您还可以将任何对象组成一个组或一个环,例如,只需在它们上定义操作(运算符)即可。但是,确保您定义的操作实际上符合群/环公理将是您的责任。
【讨论】:
你想要的文本是 Chuck Sims 的 Abstract Algebra, A Computational Approach。作者会推荐你使用APL 编程语言。这本书已绝版,但您可能会在您的图书馆找到它。
还有GAP Computer Algebra System,用于群论很有趣。
高级资源:
Magma:相当复杂的CAS,可以处理抽象代数中的各种概念。
Macaulay 2:用于研究多项式环,尤其是Gröbner bases。
SINGULAR:用于研究多项式环。
研究群论的一个关键事实是,每个群都与permutation group 同构。因此,理解群论的关键是理解置换群。
最后,任何支持定义自己的对象并在对象的两个实例上定义二元运算符的语言都将支持通过编程学习理论。
【讨论】:
如果您正在与组一起玩,您可能希望使用Group explorer 将它们可视化。
【讨论】:
Mathematica 有很多有用的函数来处理抽象代数中的概念。不幸的是,它是专有软件并且非常昂贵。 Sage 是一个免费的替代品,它也有相当不错的抽象代数函数库,虽然我没有广泛使用它,所以我不能对此发表更多评论。
【讨论】:
任何具有固定大小无符号整数的语言(例如 C 中的 unsigned int 类型)都是这种实现的示例。无符号值的加法本质上与 Z232 上的加法相同(即整数模 232),您可能正在学习关于你的抽象代数课。
不过,对这样一个组进行模块化添加并不是很有趣。更有趣的可能是对一组大小为 N 的模加法,其中 N 具有除 2 以外的质因子,或者大小为 P,其中 P 是质数。要试验这样的组,您可能必须自己实现这样的算术运算(这并不难)。具有运算符重载的语言可以使实现更方便使用。
【讨论】:
使用对您最有意义的语言。抽象代数包含大量的符号操作(符号推送)和重写、适量的归纳和大量的繁琐。对我来说,这听起来像是逻辑或函数式编程; Epigram 和 Agda 做了一点,Haskell 在某种程度上做了(尽管我不同意 monoid 是正确的,mzero 和 mappend 还可以,mconcat:不好)。对于抽象代数,最好的编程语言是定义笔记本和吨纸。尽管这些天来这个变得非常深奥。
【讨论】:
嗯...很抱歉,但我认为学习一些花哨的新编程语言来帮助您学习抽象代数并不有效。
是的,Haskellers 喜欢谈论范畴论,但这并不是一个好的起点。
GAP 和公司。被用来帮助成年的群论者寻找新的“怪物”——它们是学习群论的坏工具。
也许你可以看看这个:http://freecomputerbooks.com/mathAlgebraBooks.html - 有很多关于这个主题的免费书籍。
【讨论】:
令人惊讶的是,到目前为止还没有人提到 CoCoA(Computations in Commutative Algebra 的首字母缩写),一个指向主站点的链接:http://cocoa.dima.unige.it/ 可以下载最新的 CoCoA适用于主要平台(Linux、MacOS X、Windows)的 5.0,(也可以在此处找到有用的 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/ .
【讨论】:
我读过的唯一一本试图认真处理抽象代数概念的计算机语言书籍是 Scientific and Engineering C++: An Introduction with Advanced Techniques and Examples John J. Barton, Lee R. Nackman。
这是一本关于 C++ 的好书,虽然很老了。
我无法判断该方法在数学上是否 100% 正确。
【讨论】:
与 Greg 的回答类似,组以矩阵乘法的形式具有很好的表示,因此您经常看到使用 matlab 或类似工具完成的示例...
【讨论】:
EAAM 它是一个特定于数学的软件包,也可以安装。
【讨论】: