SymPy – 符号
符号 是symPy库中最重要的类。如前所述,符号计算是通过符号完成的。SymPy的变量是Symbols类的对象。
Symbol()函数的参数是一个包含符号的字符串,它可以被分配给一个变量。
>>> from sympy import Symbol
>>> x=Symbol('x')
>>> y=Symbol('y')
>>> expr=x**2+y**2
>>> expr
上述代码片断给出的输出等同于以下表达式 −
x^2 + y^2
一个符号可以有多个字母。
>>> s=Symbol('side')
>>> s**3
上述代码片断给出的输出等同于以下表达式 −
side^3
SymPy也有一个 Symbols() 函数,可以一次定义多个符号。字符串包含由逗号或空格分隔的变量名称。
>>> from sympy import symbols
>>> x,y,z=symbols("x,y,z")
在SymPy的abc模块中,所有拉丁字母和希腊字母都被定义为符号。因此,用这个方法代替实例化符号对象是很方便的。
>>> from sympy.abc import x,y,z
然而, C、O、S、I、N、E 和 Q 是预定义的符号。另外,在abc模块中没有定义多于一个字母的符号,对于这些符号,你应该像上面那样使用符号对象。abc模块定义了特殊的名称,可以检测默认SymPy名称空间中的定义。 clash1包含单字母,clash2有多字母冲突的符号
>>> from sympy.abc import _clash1, _clash2
>>> _clash1
上述片段的输出如下 –
{‘C’:C, ‘O’:O, ‘Q’:Q, ‘N’:N, ‘I’:I, ‘E’:E, ‘S’:S}
>>> _clash2
上述片段的输出结果如下 —
{‘beta’: beta, ‘zeta’: zeta, ‘gamma’: gamma, ‘pi’: pi}。
可以使用与range()函数类似的语法来定义索引符号。范围由冒号表示。范围的类型由冒号右边的字符决定。如果itr是一个数字,那么左边所有连续的数字都作为非负的起始值。右边的所有连续数字都被视为比结束值大1。
>>> from sympy import symbols
>>> symbols('a:5')
上述片段的输出如下 –
(a0, a1, a2, a3, a4)
>>> symbols('mark(1:4)')
上述片段的输出如下 –
(mark1, mark2, mark3)