Я работаю над созданием функции, которая выполняет преобразование Лежандра уравнения, используя sympy.Я пытаюсь получить код для упрощения выражения, но функция упрощения не будет работать (я полагаю, из-за размера выражения).Это для общего преобразования Лежандра, поэтому я не могу сказать ему искать конкретное упрощение.
Как и пример одного выходного уравнения имеет отношение триггера: sin ^ 2 = 1 - cos ^ 2
Чтобы решить проблему
import sympy as sy
x, y, m1, m2, n, q1, q2, tht = sy.symbols("x, y, m1, m2, n, q1, q2, tht")
Когда я кодирую это и использую trigsimp ()
a = x - x*sy.cos(tht)**2
print(sy.trigsimp(a))
, я получаю
x*sin(tht)**2
, как и должен был.Однако, когда я ставлю это на более сложную проблему.
b = y*n**2/(x**2*y**2*(-m1 - m2*sy.cos(q1 - q2)**2 + m2))
print(sy.trigsimp(b))
Я не распознаю взаимосвязь триггеров и вывод:
n**2/(x**2*y*(-m1 - m2*cos(q1 - q2)**2 + m2))
Есть ли способ упростить большое выражение, или есть ли какие-то ставки, чем sympy, которые я мог бы использовать для этого приложения?
edit:
Чтобы прояснить проблему, кажется, что небольшая сложность усложняет trigsimp (), как показано в примере bне упрощается должным образом.Я ищу способ более строгого упрощения уравнения.Для масштаба, функции, которые я действительно хочу упростить, в 3-20 раз больше, чем в примере b.