使用Mathematica我想根据from (1 + a + x + y)^4
和x
的指数收集字词y
,所以
(1 + a + x + y)^4 = (...)x^0 y^0 + (...)x^1 y^0 + (...)x^0 y^1 + ...
Mathematica help有一个很好的例子,我试图模仿:
D[f[Sqrt[ x^2 + 1 ]], {x, 3}]
Collect[%, Derivative[ _ ][ f ][ _ ], Together]
这收集相同订单的衍生条款(以及f的相同参数)
有谁可以解释为什么以下模仿不起作用?
Collect[(1 + a + x + y)^4, x^_ y^_]
给出
(1 + a + x + y)^4
对解决方案的任何建议?
答案 0 :(得分:10)
根据Sasha,您必须Expand
多项式才能使用Collect
。然而,即使这样,问题也不是那么简单。使用Collect
,您可以按两个变量分组,但这取决于您的订购方式:
In[1]:= Collect[ (1 + a + x + y)^4 // Expand, {x, y}]
Out[1]:= 1 + 4 a + 6 a^2 + 4 a^3 + a^4 + x^4 +
(4 + 12 a + 12 a^2 + 4 a^3) y + (6 + 12 a + 6 a^2) y^2 +
(4 + 4 a) y^3 + y^4 + x^3 (4 + 4 a + 4 y) +
x^2 (6 + 12 a + 6 a^2 + (12 + 12 a) y + 6 y^2) +
x (4 + 12 a + 12 a^2 + 4 a^3 + (12 + 24 a + 12 a^2) y +
(12 + 12 a) y^2 + 4 y^3)
它会导出x
的任何公因子,从而导致y
中的多项式系数。如果您使用的是{y,x}
,Collect
会提取y
的公共因子,并且x
中有多项式。
或者,您可以提供一种模式x^_ y^_
而不是{x,y}
,但至少在第7版中,这不会收集任何内容。问题是模式x^_ y^_
需要存在指数,但在x y^2
和x^2 y
这样的术语中,指数隐含在至少一个变量中。相反,我们需要指定default值是可接受的,即使用x^_. y^_.
给出
Out[2]:= 1 + 4 a + 6 a^2 + 4 a^3 + a^4 + 4 x + 12 a x + 12 a^2 x + 4 a^3 x +
6 x^2 + 12 a x^2 + 6 a^2 x^2 + 4 x^3 + 4 a x^3 + x^4 + 4 y +
12 a y + 12 a^2 y + 4 a^3 y + (12 + 24 a + 12 a^2) x y +
(12 + 12 a) x^2 y + 4 x^3 y + 6 y^2 + 12 a y^2 + 6 a^2 y^2 +
(12 + 12 a) x y^2 + 6 x^2 y^2 + 4 y^3 + 4 a y^3 + 4 x y^3 + y^4
但是,这只收集两个变量都存在的术语。说实话,我似乎无法想出一个能让Collect
功能像你想要的模式,但我找到了另一种选择。
我会使用CoefficientRules
代替,虽然它确实需要一些后期处理才能将结果恢复为多项式形式。使用多项式,你得到
In[3]:= CoefficientRules[(1 + a + x + y)^4, {x, y}]
Out[3]:= {{4, 0} -> 1, {3, 1} -> 4, {3, 0} -> 4 + 4 a, {2, 2} -> 6,
{2, 1} -> 12 + 12 a, {2, 0} -> 6 + 12 a + 6 a^2, {1, 3} -> 4,
{1, 2} -> 12 + 12 a, {1, 1} -> 12 + 24 a + 12 a^2,
{1, 0} -> 4 + 12 a + 12 a^2 + 4 a^3, {0, 4} -> 1, {0, 3} -> 4 + 4 a,
{0, 2} -> 6 + 12 a + 6 a^2, {0, 1} -> 4 + 12 a + 12 a^2 + 4 a^3,
{0, 0} -> 1 + 4 a + 6 a^2 + 4 a^3 + a^4}
现在,如果你只对系数本身感兴趣,那么你已经完成了。但是,要将其转换回多项式,我会使用
In[4]:= Plus @@ (Out[3] /. Rule[{a_, b_}, c_] :> x^a y^b c)
Out[4]:= 1 + 4 a + 6 a^2 + 4 a^3 + a^4 +
(4 + 12 a + 12 a^2 + 4 a^3) x +
(6 + 12 a + 6 a^2) x^2 + (4 + 4 a) x^3 + x^4 +
(4 + 12 a + 12 a^2 + 4 a^3) y + (12 + 24 a + 12 a^2) x y +
(12 + 12 a) x^2 y + 4 x^3 y + (6 + 12 a + 6 a^2) y^2 +
(12 + 12 a) x y^2 + 6 x^2 y^2 + (4 + 4 a) y^3 +
4 x y^3 + y^4
编辑:在考虑之后,还有一个可以完成的简化。由于系数是a
中的多项式,因此它们可以是可分解的。因此,我们使用CoefficientRules
来简化:
Factor
提供的内容
In[5]:= Plus @@ (Out[3] /. Rule[{a_, b_}, c_] :> x^a y^b Factor[c])
Out[5]:= (1 + a)^4 + 4 (1 + a)^3 x + 6 (1 + a)^2 x^2 + 4 (1 + a) x^3 + x^4 +
4 (1 + a)^3 y + 12 (1 + a)^2 x y + 12 (1 + a) x^2 y + 4 x^3 y +
6 (1 + a)^2 y^2 + 12 (1 + a) x y^2 + 6 x^2 y^2 + 4 (1 + a) y^3 +
4 x y^3 + y^4
可以看出,使用Factor
可以大大简化系数,并且可以通过将(1 + a + x + y)^4
视为具有变量(1 + a)
的简单三项式来预测此结果,{{ 1}}和x
。考虑到这一点并将y
替换为1+a
,z
然后给出:
CoefficientRules
或者,以多项式形式
In[6]:= CoefficientRules[(z + x + y)^4, {x, y, z}]
Out[6]:= {{4, 0, 0} -> 1, {3, 1, 0} -> 4, {3, 0, 1} -> 4,
{2, 2, 0} -> 6, {2, 1, 1} -> 12, {2, 0, 2} -> 6,
{1, 3, 0} -> 4, {1, 2, 1} -> 12, {1, 1, 2} -> 12,
{1, 0, 3} -> 4, {0, 4, 0} -> 1, {0, 3, 1} -> 4,
{0, 2, 2} -> 6, {0, 1, 3} -> 4, {0, 0, 4} -> 1}
当您使用Out[7]:= x^4 + 4 x^3 y + 6 x^2 y^2 + 4 x y^3 + y^4 + 4 x^3 z +
12 x^2 y z + 12 x y^2 z + 4 y^3 z + 6 x^2 z^2 + 12 x y z^2 +
6 y^2 z^2 + 4 x z^3 + 4 y z^3 + z^4
替换z
时,会在(1 + a)
中显示相同的结果。
答案 1 :(得分:4)
Collect
是结构操作,因此您需要先扩展。
Collect[(1 + a + x + y)^4 // Expand, x^_ y^_]
答案 2 :(得分:4)
这有效:
In[1]:= Collect[(1 + a + x + y)^4 // Expand, {x^_ y^_, x^_ y, x y^_, x y, x, y}]
Out[1]= 1 + 4 a + 6 a^2 +
4 a^3 + a^4 + (4 + 12 a + 12 a^2 + 4 a^3) x + (6 + 12 a + 6 a^2) x^2 + (4 +
4 a) x^3 + x^4 + (4 + 12 a + 12 a^2 + 4 a^3) y + (12 + 24 a +
12 a^2) x y + (12 + 12 a) x^2 y +
4 x^3 y + (6 + 12 a + 6 a^2) y^2 + (12 + 12 a) x y^2 +
6 x^2 y^2 + (4 + 4 a) y^3 + 4 x y^3 + y^4
或者,您可以按rcollyer:
的建议使用Default
In[2]:= Collect[(1 + a + x + y)^4 // Expand, {x^_. y^_., x, y}]
Out[2]= 1 + 4 a + 6 a^2 +
4 a^3 + a^4 + (4 + 12 a + 12 a^2 + 4 a^3) x + (6 + 12 a + 6 a^2) x^2 + (4 +
4 a) x^3 + x^4 + (4 + 12 a + 12 a^2 + 4 a^3) y + (12 + 24 a +
12 a^2) x y + (12 + 12 a) x^2 y +
4 x^3 y + (6 + 12 a + 6 a^2) y^2 + (12 + 12 a) x y^2 +
6 x^2 y^2 + (4 + 4 a) y^3 + 4 x y^3 + y^4
答案 3 :(得分:1)
这可能就是你要找的东西
In[1]:= TraditionalForm[Collect[(1 + a + x + y)^4 // Expand, {x, y}],
ParameterVariables :> {a}]
Out[1]:= x^4+x^3 (4 y+4 a+4)+x^2 (6 y^2+(12 a+12) y+6 a^2+12 a+6)+
x (4 y^3+(12 a+12) y^2+ (12 a^2+24 a+12) y+4 a^3+12 a^2+12 a+4)+
y^4+(4 a+4) y^3+(6 a^2+12 a+6) y^2+(4 a^3+12 a^2+12 a+4) y+
a^4+4 a^3+6 a^2+4 a+1
答案 4 :(得分:1)
Plus @@ MonomialList [(1 + a + x + y)^ 4,{x,y}]