SymPy和Sage有什么区别?

53
"

什么是SymPySage(又名SageMath)之间的区别?

"

9
这个问题可能会被关闭(根据SO政策),但是对于值得的事情: Sage是一个由许多程序粘合在一起的巨大混合体,非常适合需要使用许多工具的严肃数学家,而这些工具对于仅需要解决积分或方程而无需了解数学知识的工程师来说可能被认为是晦涩的学术魔法。另一方面,如果您不是数学家或者是需要一个小巧而精简的工具进行实验的数学家,您会发现SymPy非常不错。坦率地说,要使两个项目都得到公正对待的唯一方法就是花一周时间学习它们。 - Krastanov
4
作为一名工程师,我对你的说法“只需要解决一个积分或方程,而不理解数学”的表述感到反感。 - Ali
4
@Ali:这可能是语言问题吗?在英语中,说“...那将是X通过Y [that/which]只需要Z”并不意味着没有其他需要的Y。除非您认为每个工程师都理解或需要以专业数学家的水平理解使用的每个数学工具。 (这已经接近离题了-唯一相关的是Krastanov是正确的,即一个人的需求将决定适当的工具。) - DSM
是的,不幸的是,由于 Stack Overflow 的政策,如果你问一个像“SymPy 是否比 Sage 更好?”这样的问题,它会被关闭,但如果你问“SymPy 和 Sage 有什么区别?”这样的问题,它将保持开放。 - asmeurer
3
大多数工程师关心的是微积分,而不是拓扑不变量、黎曼几何或结论理论。我并不是在说其中一个比另一个更容易(你似乎假定了这一点),而是说大多数工程师使用的数学与研究数学家使用的数学非常不同,在选择Sage/Magma或SymPy/Maple/Mathematica时需要考虑到这一点。显然,这样的概括有其例外。 - Krastanov
显示剩余5条评论
1个回答

96

(充分披露:我是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

  • 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(实际情况我不确定),因此如果您想从Sage中使用SymPy,可能需要手动调用它。


9
感谢所有为此做出贡献的人,这真是一个伟大的项目,你们这些人让我们的生活变得更加轻松,并使我们能够在这样伟大的项目的基础上建立更多不可思议的项目。 - Faouzi FJTech
5
我完全忘记了我们在SymPy维基上有一篇关于SymPy和Sage区别的文章:https://github.com/sympy/sympy/wiki/SymPy-vs.-Sage。那里还有SymPy与其他计算机代数系统的比较页面。 - asmeurer
Sage不会自动定义变量。x在启动时被定义为一个变量;如果您想使用y或z,您必须使用y,z = var('y,z')。如果不这样做,就会出现NameError。Sympy不是Sage中积分的默认算法,但使用关键字参数algorithm ='sympy'可以强制其使用sympy。另一个Sympy的小点是:它有一个ascii-art漂亮的打印机来呈现符号方程。我已经多次将Sympy导入Sage的命令行中,只是为了使用这个特性。 - Matthew
3
这些差异也有效吗?(i)Sage没有真正的Windows版本; 必须在VirtualBox中使用它,使用unix命令管理文件,并通过一些技巧在VirtualBox和Windows目录/ Dropbox /电子邮件等之间传输文件。而SymPy与Python一样,对Windows用户不那么不友好;(ii)使用SymPy,可以像Maple一样在屏幕上看到“漂亮”的数学符号输出结果(SymPy使用LaTeX实现),但是在Sage中无法做到这一点。 - Stefan Smith
3
好的观点。SymPy可以在Python可以运行的任何地方运行,甚至可以在您的手机上运行。 - asmeurer
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接