SymPy 中的错误用三角恒等式简化
Error in SymPy's simplify with trigometric identity
如果我遗漏了一些基本的东西,我深表歉意。我是 SymPy
的新人。
三角恒等式出现问题
$$\sin^3x\cos^3 x = \frac{3\sin 2 x-\sin 6x}{32}$$
使用 Mathematica 的 Simplify
Simplify[Sin[x]^3 Cos[x]^3 == (3 Sin[2 x] - Sin[6 x])/32] (*returns True*)
使用 SymPy
import sympy as sy
sy.simplify(sy.sin(x)**3*sy.cos(x)**3 == (3*sy.sin(2*x) - sy.sin(6*x))/32) # returns False
尝试使用 sympy.Eq
而不是 ==
:
sy.Eq(sy.sin(x)**3*sy.cos(x)**3, (3*sy.sin(2*x) - sy.sin(6*x))/32)
==
将比较两个符号表示是否相等 on-the-spot,而 sympy.Eq
表示等式。
In [19]: sy.simplify(sy.Eq(sy.sin(x)**3*sy.cos(x)**3, (3*sy.sin(2*x) - sy.sin(6*x))/
...: 32))
Out[19]: True
我发现以下方法也有效:
sy.simplify(sy.expand(exp2,trig=True))==exp1 #returns True
感谢@ForceBru 指出 == 运算符比较两个表达式的确切结构相等性,而不是代数等价性。我了解到在将表达式与 == 进行比较之前,应该简化或扩展表达式。
如果我遗漏了一些基本的东西,我深表歉意。我是 SymPy
的新人。
三角恒等式出现问题
$$\sin^3x\cos^3 x = \frac{3\sin 2 x-\sin 6x}{32}$$
使用 Mathematica 的 Simplify
Simplify[Sin[x]^3 Cos[x]^3 == (3 Sin[2 x] - Sin[6 x])/32] (*returns True*)
使用 SymPy
import sympy as sy
sy.simplify(sy.sin(x)**3*sy.cos(x)**3 == (3*sy.sin(2*x) - sy.sin(6*x))/32) # returns False
尝试使用 sympy.Eq
而不是 ==
:
sy.Eq(sy.sin(x)**3*sy.cos(x)**3, (3*sy.sin(2*x) - sy.sin(6*x))/32)
==
将比较两个符号表示是否相等 on-the-spot,而 sympy.Eq
表示等式。
In [19]: sy.simplify(sy.Eq(sy.sin(x)**3*sy.cos(x)**3, (3*sy.sin(2*x) - sy.sin(6*x))/
...: 32))
Out[19]: True
我发现以下方法也有效:
sy.simplify(sy.expand(exp2,trig=True))==exp1 #returns True
感谢@ForceBru 指出 == 运算符比较两个表达式的确切结构相等性,而不是代数等价性。我了解到在将表达式与 == 进行比较之前,应该简化或扩展表达式。