Мне интересно, есть ли способ упростить выражения Sympy, переписав выражение в терминах уже определенной переменной, заставив Python собирать термины, соответствующие определению этой переменной.
Заранее спасибо.
Мне интересно, есть ли способ упростить выражения Sympy, переписав выражение в терминах уже определенной переменной, заставив Python собирать термины, соответствующие определению этой переменной.
Заранее спасибо.
Ничего подобного не существует, как вы это описываете, но делать то, что вы хотите, несложно.
Один из приемов, который вы можете использовать, - выделить одну часть ваших подвыражений и заменить их. Например, предположим, что у вас есть выражение expr
, содержащее x + y
, и вы хотите заменить x + y
на z
. Простое выполнение expr.subs(x + y, z)
часто работает. Но в некоторых случаях это не так, потому что subs
заменяет x + y
только в том случае, если он находит его точно в выражении.
Вместо этого вы можете использовать трюк: «решить» (вы можете сделать это автоматически с помощью solve
, если хотите) замены z = x + y
для одной переменной, например x = y - z
, и заменить это (expr.subs(x, y - z)
). Поскольку нет двусмысленности в том, где появляется x
, как было для x + y
, это заменит его везде. Затем вам часто нужно expand
выражение, чтобы добиться сокращения.