SymPy和Sage有什么区别?

时间:2013-07-25 02:14:21

标签: python math algebra sympy sage

SymPySage a.k.a. SageMath有什么区别?

1 个答案:

答案 0 :(得分:46)

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

你应该首先理解的是SymPy和Sage并不完全相同。 SymPy是一个纯粹的Python库,可以完成计算机代数。 Sage是一个开源数学软件的集合。 Sage试图将所有主要的开源数学软件聚集在一起,并将它们粘合在一起形成一个有用的系统。实际上, Sage包含SymPy 作为其系统之一。

以下是每个(有偏见的)事实的简短列表(我不会称之为利弊,只是事实):

SymPy

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

鼠尾草

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

也许这不是你想要的。你可能想要一些实际的数学特征。但正如我所说,Sage包含SymPy,因此根据定义,SymPy的每个功能都将成为Sage的一个功能。在实践中,情况不一定是这样,因为Sage默认情况下并不总是使用SymPy(我不确定它的实际状态是什么),因此如果你想使用它,你可能需要手动调用SymPy来自Sage内部。