Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 计算出提升到幂的GCD_Wolfram Mathematica_Polynomial Math_Greatest Common Divisor_Factorization - Fatal编程技术网

Wolfram mathematica 计算出提升到幂的GCD

Wolfram mathematica 计算出提升到幂的GCD,wolfram-mathematica,polynomial-math,greatest-common-divisor,factorization,Wolfram Mathematica,Polynomial Math,Greatest Common Divisor,Factorization,使用Mathematica(7节)基本上我想带一个这样的表达式 (x + x^2 + x^3)^4 到 将GCD这样的术语从一个被提升为幂的表达式中去掉的最佳方式是什么;然后将该术语放在括号外,并保留其提升到的指数值。在取出之前,它必须知道该值被提升到一个幂。这是我的尝试 In[28]:= example = (x + x^2 + x^3)^4 Out[28]= (x + x^2 + x^3)^4 In[37]:= gcdVar = PolynomialGCD[Sequence @@ Le

使用Mathematica(7节)基本上我想带一个这样的表达式

(x + x^2 + x^3)^4

将GCD这样的术语从一个被提升为幂的表达式中去掉的最佳方式是什么;然后将该术语放在括号外,并保留其提升到的指数值。在取出之前,它必须知道该值被提升到一个幂。这是我的尝试

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
我一直在研究与该领域相关的所有不同功能,如:;收集、分解、扩展、简化、解决。我认为他们中没有一个能生产出我想要的产品。
是否有一种内置的、更高效的、可扩展的、更短的方法可以使用模式/表单匹配来实现这一点?

这就是您所做的快速“n”脏样式,但有一行:

example /. Power_[Plus_[f__], k_] :> 
           (PolynomialGCD@f)^k Simplify@(Plus@f/PolynomialGCD@f)^k
这不是很健壮,您最好构建自己的小模块来检查是否存在最大公约数

编辑:您可以添加一些内联检查,如下所示:

example /. Power_[Plus_[f__], k_] /; !(PolynomialGCD@f === 1) :> 
           (PolynomialGCD@f)^k Simplify@(Plus@f/PolynomialGCD@f)^k

Factor@Expand对于给定的示例,似乎可以执行所需的操作。你需要一张支票吗 更一般的解决方案

 Factor@Expand[(x + x^2 + x^3)^4]

    Out[8]= x^4 (1 + x + x^2)^4

(我使用的是Mathematica 7)

这个答案提供了对评估的更多控制,以及我将来想做的其他事情的等式的每个元素,所以我将选择这个作为答案。TomD的答案也很好,也很有用。实际上,
Factor
在这种情况下可以单独完成。@rcollyer谢谢!我错过了
 Factor@Expand[(x + x^2 + x^3)^4]

    Out[8]= x^4 (1 + x + x^2)^4