繁体   English   中英

SymPy和Sage有什么区别?

[英]What is the difference between SymPy and Sage?

SymPySage aka SageMath有什么区别?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM