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 数学
496 每月下载量
在 spenso 中使用
2MB
51K SLoC
Symbolica ⊆ 现代计算机代数
Symbolica是一个专为Python和Rust设计的快速计算机代数系统,源于推动科学和企业计算边界的需求。查看Jupyter Notebook演示!
有关文档和更多信息,请参阅symbolica.io。
快速示例
Symbolica允许您构建和操作数学表达式,例如从Jupyter Notebook中
您可以通过使用Symbolica的Python和Rust绑定,在您(可能)已经熟悉的编程语言中执行这些操作
安装
访问入门页面以获取详细的安装说明。
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
。
解线性系统
在x
和y
中解一个带有参数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)^-1
和 y = -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