如何确定两个表达式是否相同?例如:
sage: var('x')
x
sage: e1 = 1 + x
sage: e2 = x + 1
sage: e3 = x + 2
sage: is_equivalent(e1, e2)
True
sage: is_equivalent(e1, e3)
False
sage: var('y')
y
sage: e4 = x * (1 + y)
sage: e5 = x + (x * y)
sage: is_equivalent(e4, e5)
True
sage: is_equivalent(e4, e1)
False
sage: assume(x, 'real')
sage: e6 = sqrt(x**2) + 1
sage: is_equivalent(e6, e1)
True
Run Code Online (Sandbox Code Playgroud)
什么已经提出/试过:(圣人6.4.1在Ubuntu Linux)
sage: e1 == e2
x + 1 == x + 1
sage: e1 is e2
False
sage: e1.match(e2) is not None
True
sage: e4.match(e5) is not None
False
Run Code Online (Sandbox Code Playgroud)
通常的方式做到这一点是让一个方程了出来,并检查它是否True还是False.
sage: e4 == e5
x*(y + 1) == x*y + x
sage: bool(_)
True
Run Code Online (Sandbox Code Playgroud)
但是,请记住,圣人将返回False如果它不能证明它是True,这是不一样的东西是假的.检查两个任意表达式的等价性可能是任意长的,并且可能需要计算机无法预测的疯狂的扩展/"简化"序列.
这回答了一个不同的问题:
sage: e1 is e2
False
Run Code Online (Sandbox Code Playgroud)
这是Python,并且是一个非常强大的条件,即两个东西是相同的"对象",在这种情况下它们不是.
sage: a = 1
sage: b = 1
sage: a is b
False
sage: a = 1
sage: b = a
sage: a is b
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |