Если вы измените свое уравнение, чтобы объединить sin
и cos
в tan
, вы получите то, что ищете:
>>> solve(c/d*tan(a*(b/2-z))-1,z)
[b/2 - atan(d/c)/a]
Если вы этого не сделаете, SymPy перепишет ирешить в терминах exp
... и в этом случае, как вы можете убедиться, оно будет квадратичным в exp(l*a*z)
.
Можно было бы попытаться переписать сумму из двух аргументов как отношениекак это:
>>> def ratio(eq):
... if isinstance(eq, Eq):
... eq=eq.rewrite(Add)
... A, B = eq.as_two_terms()
... if not A.is_Add and not B.is_Add:
... return Eq(A/B, 1)
>>> trigsimp(ratio(eq))
Eq(c*tan(a*b/2 - a*z)/d, 1)
(Функция возвращает None, если нет двух терминов для работы.) Как вы можете видеть, в этом случае вы получите новое уравнение, которое будет решать по вашему желанию.