1.符号
我们就像导入其他任何库一样,将sympy导入:
from sympy import *
现在,我们开始计算
x + 1
Traceback (most recent call last):
File "<ipython-input-2-eaf7b6991020>", line 1, in <module>
x + 1
NameError: name 'x' is not defined
我们尝试使用变量 x x x,但它告诉我们x没有定义。在Python中,变量在定义之前没有任何意义。 SymPy也不例外。与您可能使用过的许多符号操作系统不同,在SymPy中,变量不会自动定义, 要定义变量,我们必须使用symbols。
x = symbols('x')
x + 1
Out[1]:
x + 1
symbol接受一串由空格或逗号分隔的变量名,并在其中创建Symbols。然后,我们可以将它们分配给变量名。现在,让我们只定义最通用的变量名称x,y和z,以供本节其余部分使用
x, y, z = symbols('x y z')
最后,我们注意到一个符号的名称和它分配给它的变量的名称之间没有任何关系。
a, b = symbols('b a')
a
Out[2]:
b
b
Out[3]:
a
这很困惑,为什么会反过来呢?
我们做类似的事情
crazy = symbols('unrelated')
crazy + 1
Out[4]:
unrelated + 1
这表明,如果需要,符号的名称可以超过一个字符。
通常,最佳是将符号分配给同名的Python变量。
最后,我们需要了解SymPy符号和Python变量之间的区别。
x = symbols('x')
expr = x + 1
x = 2
expr
Out[5]:
x + 1
2.等号
x + 1 == 4
Out[15]: False
在SymPy中, = = == ==表示精确的结构相等性测试,这意味着 a = = b a == b a==b意味着我们要询问 a = b a = b a=b。有一个称为Eq的对象,可用于创建符号等式。
Eq(x + 1, 4)
设我们想知道 ( x + 1 ) 2 = x 2 + 2 x + 1 (x + 1)^{2} = x^{2} + 2x + 1 (x+1)2=x2+2x+1
(x + 1)**2 == x**2 + 2*x + 1
False
事实上,
(
x
+
1
)
2
=
x
2
+
2
x
+
1
(x + 1)^{2} =x^{2} + 2x + 1
(x+1)2=x2+2x+1是成立的
从上面回想起
=
=
==
==代表精确的结构相等性测试。这里的“精确”表示两个表达式仅在结构上完全相等时才将它们与
=
=
==
==进行比较。
如果我们要检测 a = b a=b a=b ,最佳方法是采用 a − b a-b a−b并将其简化,然后查看其是否为0。
a = (x + 1)**2
b = x**2 + 2*x + 1
simplify(a - b)
Out[6]:
0
c = x**2 - 2*x + 1
simplify(a - c)
Out[7]:
4*x
e q u a l s ( ) equals() equals()
3.^ and /
True ^ False
Out[8]: True
True ^ True
Out[9]: False
Xor(x, y)
Out[10]:
𝑥⊻𝑦