47

SymPySage aka SageMath 有什么区别?

4

1 回答 1

80

(全面披露:我是 SymPy 的首席开发人员)

首先你应该明白 SymPy 和 Sage 不是一回事。SymPy 是一个纯 Python 库,用于计算计算机代数。Sage 是开源数学软件的集合。Sage 试图将所有主要的开源数学软件聚集在一起,并将它们组合成一个有用的系统。事实上,Sage 将 SymPy作为其系统之一。

这是每个(有偏见的)事实的简短列表(我不会称它们为优点或缺点,只是事实):

SymPy

  • SymPy 是完全独立的。除了 Python 之外,它没有其他依赖项。
  • 尽管是独立的,但它作为一个计算机代数系统功能齐全。如果您想做数字,我们鼓励您使用科学 Python 生态系统中的其他库。
  • SymPy 是 BSD 许可的。对很多人来说,这无关紧要,但如果你想在其他东西中包含 SymPy,很高兴知道你几乎可以用代码做任何你想做的事情。
  • SymPy 不会尝试改变 Python。SymPy 的理念是 Python 做得很好,所以它应该以 Python 的方式做事。例如,求幂运算符**与 Python 中的^一样,而不是在许多其他系统中。
  • SymPy 可以用作库。由于 SymPy 只是一个 Python 模块,因此您可以将其导入并在任何使用 Python 的地方使用它。有很多非常酷的应用程序和库在后台使用 SymPy 来执行符号(在许多情况下,在您甚至可能没有意识到正在使用符号的地方)。

智者

  • Sage 包括来自开源世界的所有你可能想做数学的东西(包括 SymPy)。这包括许多对数字有用的库,例如八度。
  • Sage 是 GPL。如果您喜欢整个 FSF 软件自由 shpel,那么您将获得更多的权力。如果没有在 GPL 下许可您的应用程序,您也不能在您自己的应用程序中重用源代码。
  • Sage 很难用作图书馆。另一方面,它有一个非常漂亮的笔记本界面。如果您想对 SymPy 做同样的事情,推荐的方法是使用 IPython 笔记本并from sympy import init_session; init_session()在顶部运行(如果您只想打印而不是导入所有内容,请替换为)init_sessioninit_printing
  • Sage 在 Python 之上包含一些 DSL。例如,您可以1/2在不包装整数文字的情况下键入,它会返回一个有理数。x^2给出 x 的平方,而不是Xor(x, 2). 我不确定它是否默认为您自动定义变量。这意味着您在交互式 Sage 会话中所做的事情可能不会直接转换为 Python 脚本。另一方面,这对于交互使用很有用(顺便说一句,SymPy 也有isympy -I类似的功能)。

也许这不是你要找的。您可能想要一些实际的数学特征。但正如我所说,Sage 包括 SymPy,所以根据定义,SymPy 的每一个特性都将是 Sage 的一个特性。在实践中,情况不一定如此,因为 Sage 默认情况下并不总是使用 SymPy(我不确定它的当前状态实际上是什么),所以如果你想使用 SymPy,你可能必须手动调用它从圣人内部。

于 2013-07-25T17:47:03.417 回答