Упрощение выражений Симпи как неявных функций переменных - PullRequest
0 голосов
/ 18 мая 2018

Мне интересно, есть ли способ упростить выражения Sympy, переписав выражение в терминах уже определенной переменной, заставив Python собирать термины, соответствующие определению этой переменной.

Заранее спасибо.

1 Ответ

0 голосов
/ 22 мая 2018

Что-то вроде этого не совсем существует, как вы описываете, но это не сложно сделать, что вы хотите.

Во-первых, есть функция cse() , которая тянетобщие подвыражения в качестве переменных автоматически.Однако он не будет использовать предопределенные переменные, если вы этого хотите.Но если ваша цель состоит в том, чтобы просто упростить оценку выражения, и вас не волнует, что такое промежуточные выражения, cse - ваш лучший выбор.

Один прием, который вы можете использовать, состоит в том, чтобы выделить одну часть ваших подвыражений и заменить их.Например, скажем, у вас есть выражение 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 выражение, чтобы получить вещи, которые нужно отменить.

...