SymPy 和 Sage 有什么区别?

2024-05-26

有什么区别SymPy http://www.sympy.org/ and Sage https://www.sagemath.org/又名 SageMath?


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

您应该了解的第一件事是 SymPy 和 Sage 并不完全相同。 SymPy 是一个纯 Python 库,用于计算机代数。 Sage 是开源数学软件的集合。 Sage 试图将所有主要的开源数学软件聚集在一起,并将其粘合成一个有用的系统。实际上,Sage 包括 SymPy作为其系统之一。

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

SymPy

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

Sage

  • Sage 包含开源世界中您可能想要进行数学计算的所有内容(包括 SymPy)。这包括许多对数字有用的库,例如八度。
  • Sage 是 GPL。如果您喜欢整个 FSF 软件自由 shpel,那么给您更多的权力。如果您的应用程序未获得 GPL 许可,您就无法在自己的应用程序中重用源代码。
  • Sage 很难用作库。另一方面,它有一个非常漂亮的笔记本界面。如果你想用 SymPy 做同样的事情,推荐的方法是使用 IPython 笔记本并运行from sympy import init_session; init_session()在顶部(替换init_session with 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来自圣人内部。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SymPy 和 Sage 有什么区别? 的相关文章

  • 使用 psycopg2 在 python 中执行查询时出现“编程错误:语法错误位于或附近”

    我正在运行 Python v 2 7 和 psycopg2 v 2 5 我有一个 postgresql 数据库函数 它将 SQL 查询作为文本字段返回 我使用以下代码来调用该函数并从文本字段中提取查询 cur2 execute SELECT
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate

随机推荐

  • 回退到正则表达式中字符串的开头

    是否可以让正则表达式退回到字符串的开头并再次开始匹配 这就是我问的原因 给定下面的字符串 我想捕获子字符串black red blue and green按照该顺序 无论主题字符串中出现的顺序如何 并且仅当所有子字符串都存在于主题字符串中时
  • Scala:如何定义带有变量参数列表的匿名函数?

    在 Scala 中 如何定义接受可变数量参数的匿名函数 scala gt def foo blah Int gt 3
  • 将鼠标悬停在一个伪元素上时,使另一个伪元素出现吗?

    我试图生成一个屏幕 其中利用 before and after伪元素 但我想知道这样的功能是否真的可行 我有一个包装 div 它包裹在输入周围 允许pseudo element在此包装纸上 就像是 lt wrapper div lt inp
  • Azure Web 角色中的网站项目

    我正在研究一个新的 ASP Net 项目 我们希望将其托管在 Windows Azure Web 角色中 该项目的技术要求之一是利用 ASP Net 的完整预编译选项 不可更新 单页程序集 Web Site项目模型 与 ASP Net 相反
  • 检查 Bash 数组中是否存在元素[重复]

    这个问题在这里已经有答案了 我想知道是否有一种有效的方法来检查 Bash 数组中是否存在元素 我正在寻找类似于我可以在Python中做的事情 例如 arr a b c d if d in arr do your thing else do
  • 为什么我们不能在 Map(Java) 上使用 Iterator?

    我明白要迭代Map 我需要使用entrySet 方法 然后使用Iterator就所得的Set 我觉得这个问题可能很愚蠢 但是 如何Map完全实现 以便使用Iterator直接就可以了 据我所理解 Map不是一个集合 并且Iterator旨在
  • OpenSSL HMAC 函数中的意外复杂性

    SSL 文档分析 这个问题与 OpenSSL 中 HMAC 例程的使用有关 由于 Openssl 文档在某些领域有点薄弱 分析表明使用 unsigned char HMAC const EVP MD evp md const void ke
  • 使 GetRawInputDeviceInfo 和 RIDI_DEVICEINFO 与 C# 一起使用

    我有一个问题 我似乎无法使 GetRawInputDeviceInfo 与 RIDI DEVICEINFO 结合使用 尝试检索 RID DEVICE INFO 根本不起作用 我从函数中得到错误 1 这意味着没有足够的空间来存储 RID DE
  • 机器人/蜘蛛可以利用 Cookie 吗?

    我正在尝试检测访客是否是人类 我刚刚有了一个想法 但不确定这是否可行 但是 如果我可以在用户的 浏览器上存储 cookie 并在他们浏览我的网站时检索它 如果我成功检索 cookie 这是否是检测机器人和蜘蛛的好技术 精心设计的机器人或蜘蛛
  • 在django中使用uuid查询对象

    我正在使用 uuid 创建一个 id 字段 该字段是主键 如下所示 import uuid class User Profile models Model id models UUIDField primary key True defau
  • 使用 SSH.NET SftpClient 设置扩展文件属性

    在使用 Renci SSH NET SFTP 库将文件从 Windows 上传到远程计算机 Ubuntu 16 04 LTS 后 我尝试使用扩展文件属性来存储一些信息 但属性没有得到保留 这就是我尝试设置扩展属性的方式 SftpFileAt
  • 如何获取 3G 调制解调器的 IP 地址?

    我的 GPRS 调制解调器有一张 SIM 卡 它可以连接Web Web 服务给它一个 IP 号码 我需要它 像那样 http www your ip address com http www your ip address com 我怎样才
  • Scrapy CrawlSpider 规则具有多个回调

    我正在尝试创建一个实现 scrapy CrawlSpider 的 ExampleSpider 我的 ExampleSpider 应该能够处理仅包含艺术家信息的页面 仅包含专辑信息的页面 以及其他一些包含专辑和艺术家信息的页面 我能够处理前两
  • 结构成员初始化 - 省略具有默认值的属性值

    我是 Swift 新手 正在关注在线文档 具体来说 我正在查看初始化 https docs swift org swift book LanguageGuide Initialization html https docs swift or
  • 使用 Objective-C 获取 Photoshop 的动作列表

    我正在使用 C 和 Obj C 编写一个与 Photoshop 交互的 OSX 应用程序 我一直在使用NSAppleScript使用动态构建的 AppleScript 来驱动 Photoshop 是的 这有点可怕 我希望能够以不同的方式驱动
  • GO TO 语句 - Fortran 到 Matlab

    我一直在努力将此网格搜索代码从 Fortran 转换为 Matlab 但是我无法正确合并 GO TO 语句 我正在尝试使用 while 循环 但我认为我需要其他东西来结束搜索 任何帮助将不胜感激 vmax 1 0E 15 amax G 1
  • opensc-pkcs 链接错误

    我正在尝试使用在 Redhat linux 5 上构建的 opensc pkcs11 so 但是 当我尝试在示例程序中使用时 它给出了链接错误 main cpp text 0x265 undefined reference to C Ini
  • C 指针与 Objective-C 指针

    我有 Objective C 背景 正在尝试扩展我在 C 方面的知识 然而 有一件事让我感到困惑 那就是 C 和 Obj C 中指针之间的区别 正如您在下面的示例中看到的 两种语言之间的行为似乎有点不同 我想知道您是否可以帮助解释原因 C
  • Gradle 解析策略 cacheDynamicVersionsFor 不起作用

    我想每次都推动 Gradle 重新下载我的 SNAPSHOT 依赖项 可以通过以下方式做到这一点 refresh dependencies 但我想以另一种方式以编程方式完成此操作 configurations all resolutionS
  • SymPy 和 Sage 有什么区别?

    有什么区别SymPy http www sympy org and Sage https www sagemath org 又名 SageMath 全面披露 我是 SymPy 的首席开发人员 您应该了解的第一件事是 SymPy 和 Sage