sympy - как убрать все константы из выражения? - PullRequest
0 голосов
/ 04 мая 2020

поэтому у меня есть такое симпатичное выражение: 1**3 + 1**2 + 1*x**2 + 2*1*x + 1 + 2*x + 2, и я хочу, чтобы оно было похоже на 1*x**2 + 2*1*x + 2*x. как я могу достичь этого, не пройдя весь путь по аргументам выражения? спасибо!

1 Ответ

0 голосов
/ 04 мая 2020

Существуют различные методы, которые можно использовать для выражения среза-n-кости. Так как вы хотите избавиться от всех не-x терминов (по звучанию), вы можете использовать as_independent.

Создайте уравнение, аналогичное тому, как вы его представили:

>>> eq= S('1**3 + 1**2 + 1*x**2 + 2*1*x + 1 + 2*x + 2', evaluate=False)
>>> eq
x**2 + 2*x + 2*x + 1**3 + 1**2 + 1 + 2

Теперь получите x-независимые и x-зависимые части:

>>> eq.as_independent(x)
(5, x**2 + 2*x + 2*x)
>>> _[1]
x**2 + 2*x + 2*x

Если важно, чтобы термины не оценивались, вы можете приблизиться к этому с помощью

>>> from sympy import UnevaluatedExpr as Hold
>>> o=Hold(1)
>>> t=Hold(2)
>>> o**3 + o**2 + o*x**2 + t*o*x + o + t*x + t
x**2*1 + x*2 + x*2*1 + 1 + 1**2 + 1**3 + 2
>>> _.as_independent(x)
(1 + 1**2 + 1**3 + 2, x**2*1 + x*2 + x*2*1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...