2016-12-12 1 views
0

Я хочу написать функцию func(n) получить a^ib^jc^k от expand (a+b+c)^n.Получить a^ib^jc^k от развернуть (a + b + c)^n

Пример:

Когда n = 1 затем (a + b + c)^1 = a + b + c и func(n) возвращение {a, b, c}.

Когда n = 2 затем (a + b + c)^2 = a^2 + b^2 + c^2 + 2ab + 2bc + 2ca и func(n) возвращение {a^2, b^2, c^2, ab, bc, ca}.

У меня есть решение, использующее три петли, но думаю, что это не приятно, кто-то может мне помочь. Большое вам спасибо.

ответ

1

В клене, чтобы сделать какое-то программирование, вы можете использовать proc для процедуры.

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

Теперь давайте попробуем проверить, получаем ли мы то, что вы хотите.

ftn(1); 

{а, Ь, с}

ftn(2); 

{а^2, б^2, с^2, 2 * A * B, 2 * а * с, 2 * б * с}

Если вы не хотите, чтобы постоянные коэффициенты ab, ac и bc, то вы можете сделать Тхи s

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

[а^2, Ь^2, с^2, а Ь, а с, Ь * с]

+0

Спасибо вы очень много. – Fzen

+0

@Fzen Если это ответ на ваш вопрос, тогда примите это ответ? – zhk

+0

Ваш ответ был тем, что я хотел. Спасибо вам. – Fzen