Используя Mathematica (v.7), в основном я хочу привести такое выражение
(x + x^2 + x^3)^4
to
x^4 (1 + x + x^2)^4
Как лучше всего взять такой термин, как НОД, из выражения, которое возведено в степень и находится в факторизованной форме; затем поместите этот термин за скобки и сохраните значение показателя степени, до которого оно было возведено. Он должен был бы знать, что значение возводится в степень, прежде чем вынимать его. Вот моя попытка.
In[28]:= example = (x + x^2 + x^3)^4
Out[28]= (x + x^2 + x^3)^4
In[37]:= gcdVar = PolynomialGCD[Sequence @@ Level[example, {2}]]
Out[37]= x
In[40]:= step1 = Map[Divide[#, gcdVar] &, example, {2}]
Out[40]= (1 + x + x^2)^4
In[55]:= step2 = Times[step1, Power[gcdVar, Last[Level[example, {1}]]]]
Out[55]= x^4 (1 + x + x^2)^4
Я рассматривал все различные функции, связанные с этой областью, например; Собирайте, Факторируйте, Расширяйте, Упрощайте, Решайте. Я не думаю, что любой из них может произвести результат, который я хотел. Есть ли встроенный, более эффективный, масштабируемый и более короткий способ сделать это, возможно, используя сопоставление шаблона/формы?