【sympy】sympy Gotchas

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 ab并将其简化,然后查看其是否为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]: 
𝑥⊻𝑦
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值