SymPy 徽标 SymPy

路线图

广义而言,SymPy 的目标是任何形式的纯粹符号数学运算。但是,有几件事我们计划集中进行开发工作。

公理系统

公理系统处理 SymPy 如何对表达式做出公理假定,并根据这些公理执行逻辑推理和简化(例如,假设表达式为“正数”或“整数”)。SymPy 公理系统当前处于混乱状态,因为存在需要正确合并的“新”系统和“旧”系统。然而,由于公理影响代码库的每个部分,所以这是一个具有挑战性的任务。

代码生成

代码生成是指为了快速数值评估,将 SymPy 表达式转换到另一种语言(例如 C 或 Fortran)的任务。代码生成的目标是能够使用 SymPy 以符号方式对问题建模,然后无缝地将该符号模型转换为可在实际数据上进行数值评估的快速代码。我们的代码生成路线图是通过以下几方面,让这次转换尽可能地无缝,如减少最终用户工作量的高级抽象、优化管道,它将允许 SymPy 利用其数学知识来创建更快速、更准确的代码,以及更多帮助解决特定领域问题的工具。

性能

性能是符号计算中的一个重要方面。SymPy 通常由于用纯 Python 编写而导致性能不佳。有几种方法可以提高 SymPy 的性能。方法之一是更仔细地对标和分析 SymPy 代码,以便根除低效之处。这包括阻止性能倒退的工具,以便一开始就不会发生性能倒退。方法之二是要有一个可选的快速符号核心,可以插入以加速 SymPy 的核心操作。计划是使用 SymEngine 库作为 SymPy 的可选快速符号核心。SymEngine 是用 C++ 编写的符号库,注重性能。SymPy 的第三种提高性能的方法是实现更快的符号算法以进行各种计算(见下文)。

SymPy Live 和 SymPy Gamma

SymPy Live 是一款运行完整版 SymPy Python 会话的 Web 应用程序。它可以独立使用,也可以在 SymPy 文档 中使用,以便读者交互式地评估文档示例。SymPy Live 的后端需要现代化,并且还有针对前端的若干可能改进。

Sympy Gamma 是一款网络应用程序,可获取一个数学公式,然后对公式进行多种有用的计算,例如绘图、求解、简化和符号积分。Sympy Gamma 的目标是成为诸如 WolframAlpha 等工具的开源竞争对手。我们的目标是通过向输出中添加更多有用的计算,并改进解析(以便用户无需了解 Sympy 语法即可使用它),从而改进 Sympy Gamma。

算法改进

Sympy 依赖于大量符号计算算法来工作。许多算法已实现,但相当一部分尚未实现。其中包括提高符号积分、求和、简化、多项式运算和方程求解等多种算法。改进后的算法不仅会提高 Sympy 能成功计算的符号计算数量,而且在很多情况下能极大地提高现有算法的性能。了解我们想实现的内容类型的良好资源是我们的 Google Summer of Code 创意页面

常规改进

除了上述具体项目之外,我们还一直致力于以多种方式改进 Sympy。这包括以下内容:

  • 修复错误
  • 更好的文件
  • 改进的开发工具
  • 新功能
  • 更出色的社区推广