asm*_*rer 51

(完全披露:我是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()在顶部运行(如果你只是想要打印而不是导入所有东西init_session,init_printing则替换).
  • Sage在Python之上包含了一些DSL.例如,您可以在1/2不包装整数文字的情况下键入,并返回一个有理数.x^2给出x平方,而不是Xor(x, 2).我不确定它是否默认为您自动定义变量.这意味着您在交互式Sage会话中执行的操作可能无法直接转换为Python脚本.另一方面,这对于交互式使用非常有用(顺便说isympy -I一下,SymPy也可以做一些类似的事情).

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

  • 感谢所有为此做出贡献的人,它真的是一个伟大的项目,像你们这样的人正在让我们的生活变得如此简单,并让我们在这样伟大的项目上积累起来,制造出令人难以置信的项目. (6认同)
  • @asmeurer:这些差异是否也有效:(i)Sage没有真正的Windows版本; 一个人必须在VirtualBox中使用它,使用unix命令管理文件,并跳过一些箍在VirtualBox和一个Windows目录/ Dropbox /电子邮件/等之间传输文件.与Python一样,SymPy对Windows用户并不那么不友好; (ii)使用SymPy,可以在屏幕上以"漂亮"的数学符号看到结果输出,例如Maple,(SymPy使用LaTeX执行此操作),但在Sage中,不能(?). (2认同)
  • 那是个很好的观点.SymPy可以在Python可以运行的任何地方运行.你甚至可以在手机上运行它. (2认同)
  • 我完全忘了我们在SymPy维基上写了SymPy和Sage之间的区别:https://github.com/sympy/sympy/wiki/SymPy-vs.-Sage.SymPy还有其他CAS的页面. (2认同)