Я использую IPython (дистрибутив Anaconda) с символической математической библиотекой математики.Сбор выражения фракции в большей доле (sympy)
У меня есть следующее выражение:
t⋅(h + l)
───────────────────────
l⋅(h + l⋅sin(θ))⋅cos(θ)
Я хотел бы изменить это, чтобы получить его с точки зрения (h/l)
и (t/l)
:
(t/l)⋅((h/l)+1)
─────────────────────
((h/l)+sin(θ))⋅cos(θ)
Это довольно легко сделать вручную; просто разделите обе стороны фракции на l
и перестройте.
До сих пор мне не повезло с встроенными функциями sympy.
Я пробовал использовать expand
, а затем collect(expr,h/l)
, но это не меняет выражения. Я подозреваю, что это не работает, потому что : no h/l
Условия для его сбора в первую очередь.
Как получить симптом для этого?
код Python для первого выражения, чтобы сэкономить время: t*(h + l)/(l*(h + l*sin(theta))*cos(theta))
ОК, это, безусловно, работает, но я хочу убедиться, что понимаю, что происходит, прежде чем я полностью доверяю ему. Если я правильно понимаю, вы создаете подстановки 'x = h/l' и' y = t/l', (2) используйте 'solve', чтобы переупорядочить их так, что' t' или 'l' является предметом , (3) замените на 'expr' и используйте' simplify', чтобы отменить любые переменные '' '' '' '' 'и (4) заменить' x = h/l' и 'y = t/l'. Я попробую это на некоторых более сложных выражениях, с которыми я работаю, и если это сработает, я помечаю этот ответ как принятый. – byntje
Кстати, я не знал, что 'solve' может взять целый список уравнений, и я не знал, что вы можете использовать словари с' subs'. Я все время использую вложенные списки! Взорвался разум! – byntje
Да, вот что я имел в виду. Хотя я сделал битку вручную. (BTW это страшно). – strubbly