19个版本 (9个重大更改)

0.9.0 2024年8月17日
0.8.2 2024年7月27日
0.7.0 2024年6月10日
0.3.0 2024年3月18日
0.0.0 2023年1月11日

#78 in 数学

Download history 130/week @ 2024-05-11 35/week @ 2024-05-18 157/week @ 2024-05-25 41/week @ 2024-06-01 162/week @ 2024-06-08 24/week @ 2024-06-15 2/week @ 2024-06-22 6/week @ 2024-06-29 78/week @ 2024-07-06 256/week @ 2024-07-13 8/week @ 2024-07-20 239/week @ 2024-07-27 9/week @ 2024-08-03 26/week @ 2024-08-10 222/week @ 2024-08-17

496 每月下载量
spenso 中使用

自定义许可证LGPL-3.0+

2MB
51K SLoC


logo

Symbolica website Zulip Chat Symbolica website Codecov

Symbolica ⊆ 现代计算机代数

Symbolica是一个专为Python和Rust设计的快速计算机代数系统,源于推动科学和企业计算边界的需求。查看Jupyter Notebook演示

有关文档和更多信息,请参阅symbolica.io

快速示例

Symbolica允许您构建和操作数学表达式,例如从Jupyter Notebook中

A demo of Symbolica

您可以通过使用Symbolica的Python和Rust绑定,在您(可能)已经熟悉的编程语言中执行这些操作

A demo of Symbolica

安装

访问入门页面以获取详细的安装说明。

Python

可以使用pip为Python >3.5安装Symbolica

pip install symbolica

在Mac OS和Windows上安装可能需要一些时间,因为它可能需要编译Symbolica。

Rust

如果您想在Rust中将Symbolica用作库,只需将其包含在Cargo.toml中即可

[dependencies]
symbolica = "0.9"

示例

以下列出了一些Symbolica功能的示例。请参阅指南以获取完整的概述。

模式匹配

_结尾的变量是通配符,可以匹配任何子表达式。以下示例中尝试匹配模式f(w1_,w2_)

from symbolica import Expression
x, y, w1_, w2_, f = Expression.symbols('x','y','w1_','w2_', 'f')
e = f(3,x)*y**2+5
r = e.replace_all(f(w1_,w2_), f(w1_ - 1, w2_**2))
print(r)

它产生y^2*f(2,x^2)+5

解线性系统

xy中解一个带有参数c的线性系统

from symbolica import Expression

x, y, c, f = Expression.symbols('x', 'y', 'c', 'f')

x_r, y_r = Expression.solve_linear_system(
    [f(c)*x + y + c, y + c**2], [x, y])
print('x =', x_r, ', y =', y_r)

这产生了 x = (-c+c^2)*f(c)^-1y = -c^2

级数展开

x 上进行级数展开

from symbolica import Expression
x = Expression.symbol('x')
e = Expression.parse('exp(5+x)/(1-x)').series(x, 0, 3)

print(e)

这产生了 (exp(5))+(2*exp(5))*x+(5/2*exp(5))*x^2+(8/3*exp(5))*x^3+O(x^4)

有理数算术

Symbolica 在有理数算术方面是世界一流的,优于 Mathematica、Maple、Form、Fermat 以及其他计算机代数包。只需将表达式转换为有理多项式

from symbolica import Expression
p = Expression.parse('(x*y^2*5+5)^2/(2*x+5)+(x+4)/(6*x^2+1)').to_rational_polynomial()
print(p)

这产生了 (45+13*x+50*x*y^2+152*x^2+25*x^2*y^4+300*x^3*y^2+150*x^4*y^4)/(5+2*x+30*x^2+12*x^3)

开发

关注 Zulip 上的开发和讨论!

依赖

~14–27MB
~533K SLoC