Предположим, я определил следующее выражение:
poly1 = 6/(25*(x + 3)) + 1/(5*(x + 3)**2)
который печатает:
6/(25*x + 75) + 1/(5*(x + 3)**2)
У меня есть два вопроса относительно этого выражения. Во-первых, есть ли способ сохранить выражение в том формате, в котором я его ввел? В частности, могу ли я что-то сделать, чтобы оставить знаменатель первого слагаемого как 25*(x + 3)
?
Во-вторых, если у меня есть выражение в его печатной форме, каков наилучший способ разбить выражение, переформатировать знаменатель первого слагаемого и затем собрать его обратно? В идеале я мог бы просто копаться в выражении, используя серию вызовов args
, чтобы добраться до знаменателя первого слагаемого, а затем использовать фактор-функцию, чтобы правильно его разложить, как в poly1.args[0].args[1].args[0].factor()
. Проблема в том, что, поскольку кортежи, составляющие выражение, являются неизменяемыми, я не могу просто заменить фрагмент poly1
на выражение, вычисленное выше. Есть ли лучший способ заменить факторный полином, чем просто перестроить все выражение с нуля?
Примечание: я бы предпочел не использовать метод subs()
, потому что он выполняет поиск по всему выражению, и может показаться, что могут быть случаи, когда вы захотите быть очень конкретными относительно различных частей, которые вы изменяете.