从expand(a + b + c)^ n得到^ ib ^ jc ^ k

时间:2016-12-12 11:06:02

标签: maple

我想从展开func(n)编写一个函数a^ib^jc^k get (a+b+c)^n

示例:

n = 1然后(a + b + c)^1 = a + b + cfunc(n)返回{a, b, c}时。

n = 2然后(a + b + c)^2 = a^2 + b^2 + c^2 + 2ab + 2bc + 2cafunc(n)返回{a^2, b^2, c^2, ab, bc, ca}时。

我有使用三个循环的解决方案,但认为它不好,有人可以帮助我。非常感谢你。

1 个答案:

答案 0 :(得分:1)

在枫木做某种编程时,你可以使用proc简短程序。

restart:
ftn:= proc(n)
     expand((a+b+c)^n);
     {op(%)};
     end;

现在让我们试着检查一下我们是否得到你想要的东西。

ftn(1);
  

{a,b,c}

ftn(2);
  

{a ^ 2,b ^ 2,c ^ 2,2 * a * b,2 * a * c,2 * b * c}

如果您不想要abacbc的常数系数,那么您可以这样做

restart:
ftn:= proc(n)
     expand((a+b+c)^n);
     convert([coeffs(%,[a,b,c],'powers')],array):
    convert({powers},list);
     end;
ftn(2);
  

[a ^ 2,b ^ 2,c ^ 2,a b,a c,b * c]