#python #sympy
#python #sympy
Вопрос:
Прошу прощения, если я упускаю что-то фундаментальное. Я новичок SymPy
. Проблема возникает с тригонометрическим идентификатором
$$sin^3xcos^3 x = frac{3sin 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
Ответ №1:
Попробуйте использовать sympy.Eq
вместо ==
:
sy.Eq(sy.sin(x)**3*sy.cos(x)**3, (3*sy.sin(2*x) - sy.sin(6*x))/32)
==
будет сравнивать два символьных представления для равенства на месте, в то время 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
Ответ №2:
Я обнаружил, что следующий подход также работает:
sy.simplify(sy.expand(exp2,trig=True))==exp1 #returns True
Спасибо @ForceBru за указание на то, что оператор == сравнивает два выражения для точного структурного равенства, а не алгебраической эквивалентности. Я узнал, что следует упростить или расширить выражения, прежде чем сравнивать их с == .