【发布时间】:2015-03-06 14:54:20
【问题描述】:
这可能不是一个问题,只是一个观察,但 sympy 应该以这种方式工作。
我有两个复杂的表达式,A 和 E,我试图找出它们是否等价。如果我简化一个,比如 E,并使用 Eq(A,E),它不会返回 True,但两者用“==”分隔。如果期望 sympy 足够聪明,可以计算出它们是平等的。 Eq(simplify(A),E) 返回 True。这是代码...
from sympy import *
B = symbols('B')
C = symbols('C')
F = symbols('F')
G = symbols('G')
H = symbols('H')
A = (B - C)*(G*(B + C) - (B - C - F)*H)**2
D = 2*(B**2+B*F-C**2)**2
E = A/D
ED=simplify(E*D)
print("E*D= {0}").format(str(ED))
print("A = {0}").format(str(A))
print("0 = {0}").format(str(simplify(A-ED)))
print("T = {0}").format(Eq(A,ED))
print("T = {0}").format(Eq(simplify(A),ED))
和输出
E*D= (B - C)*(G*(B + C) + H*(-B + C + F))**2
A = (B - C)*(G*(B + C) - H*(B - C - F))**2
0 = 0
T = (B - C)*(G*(B + C) - H*(B - C - F))**2 == (B - C)*(G*(B + C) + H*(-B + C + F))**2
T = True
注意最后一个表达式中的 -H 与 +H。
【问题讨论】: