一个极简的符号包。
项目描述
symbolite: 一个极简的符号Python包
Symbolite允许您创建符号数学表达式。只需创建一个符号(或多个)并像在Python中那样操作它们。
>>> from symbolite import Symbol
>>> x = Symbol("x")
>>> y = Symbol("y")
>>> expr1 = x + 3 * y
>>> print(expr1)
x + 3 * y
表达式只是一个未命名的Symbol。您可以用所需值轻松替换符号。
>>> expr2 = expr1.subs_by_name(x=5, y=2)
>>> print(expr2)
5 + 3 * 2
输出仍然是一个符号表达式,您可以对其进行评估
>>> expr2.eval()
11
请注意,我们还收到一条警告(No libsl provided, defaulting to Python standard library.
)。这是因为评估表达式需要一个实际的库实现,通常命名为libsl
。默认的一个只是使用Python的math模块。
您可以通过明确提供libsl
实现来避免此警告。
>>> from symbolite.impl import libstd
>>> expr2.eval(libstd)
11
您也可以使用正确的名称导入它,它将被找到
>>> from symbolite.impl import libstd as libsl
>>> expr2.eval()
11
除了Symbol
类之外,还有Scalar
和Vector
类来表示整数、浮点数或复数,以及它们的数组。
>>> from symbolite import Scalar, Vector
>>> x = Scalar("x")
>>> y = Scalar("y")
>>> v = Vector("v")
>>> expr1 = x + 3 * y
>>> print(expr1)
x + 3 * y
>>> print(2 * v)
2 * v
操作标量的数学函数在scalar
模块中可用。
>>> from symbolite import scalar
>>> expr3 = 3. * scalar.cos(0.5)
>>> print(expr3)
3.0 * scalar.cos(0.5)
操作向量的数学函数在vector
模块中可用。
>>> from symbolite import vector
>>> expr4 = 3. * vector.sum((1, 2, 3))
>>> print(expr4)
3.0 * vector.sum((1, 2, 3))
请注意,函数的命名与Python的math模块一致。再次强调,这是一个符号表达式,直到评估。
>>> expr3.eval()
2.6327476856711
>>> expr4.eval()
18.0
>>> from symbolite.impl import libnumpy
>>> expr3.eval(libsl=libnumpy)
2.6327476856711
>>> from symbolite.impl import libsympy
>>> expr3.eval(libsl=libsympy)
2.6327476856711
(注意不同库在舍入和显示的方式可能不同)
通常,为了评估一个表达式,所有符号都必须替换为值。然而,当使用包含标量对象的实现(如SymPy)时,你仍然可以评估。
>>> from symbolite.impl import libsympy as libsl
>>> (3. * scalar.cos(x).eval(libsl))
3.0*cos(x)
这实际上是一个带有SymPy符号(x
)的SymPy表达式。
顺便提一下,请在向量模块中查看vectorize
和auto_vectorize
函数。
安装
pip install -U symbolite
常见问题解答
问:Symbolite是SymPy的替代品吗?
答:不是
问:它是否旨在将来取代SymPy?
答:不是
关闭
symbolite-0.6.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 40fac5e23e7021ffb2d571e334e65c9a6cb9dbfd17af0408fb884007cce837a1 |
|
MD5 | ac20d1349568fd901ebe3f25dc5bb297 |
|
BLAKE2b-256 | 185eacfdbb0f16a5276f9463803c34f558a0d4586b300a08e3cdc3a1da3be469 |
关闭
symbolite-0.6.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 460aff143f2bee33a6785628460113cb11f8ebf1fb565a0a141ded0c196a09ca |
|
MD5 | 81f94b91b30212acad0ba3a9b96ecece |
|
BLAKE2b-256 | df5576130f1711c3b0de951b2e916456cd02977aa3e2f2df30f6f2878489b257 |