2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Обобщенная формула в maple
Сообщение16.10.2011, 14:07 
Здравствуйте. Такая ситуация: пытаюсь написать алгоритм вывода элементарных симметрических многочленов по заданному количеству переменных в maple... Для n переменных формула выглядит так: S_k=\sum_{1\leq i_1<i_2<..<i_k \leq n} x_{i_1}\cdot x_{i_2}\cdot \ldots \cdot x_{i_k}. Проблема в том, как это записать, чтобы было понятно maple... Если писать вручную для каждого S_k, например, до n\leq 5, выходит нечто типа:
Код:
S[1] := sum(x[q], q = 1 .. n);
for s from 2 to n do
  S[s] := 0
end do;

for i[1] from 1 to n do
  for i[2] from 1 to n do
   if i[1] < i[2] then
    S[2] := S[2]+x[i[1]]*x[i[2]]
   end if
  end do
end do;

for i[1] from 1 to n do
  for i[2] from 1 to n do
   for i[3] from 1 to n do
    if i[1] < i[2] and i[2] < i[3] then
     S[3] := S[3]+x[i[1]]*x[i[2]]*x[i[3]]
    end if
   end do
  end do
end do;

for i[1] from 1 to n do
  for i[2] from 1 to n do
   for i[3] from 1 to n do
    for i[4] from 1 to n do
     if i[1] < i[2] and i[2] < i[3] and i[3] < i[4] then
      S[4] := S[4]+x[i[1]]*x[i[2]]*x[i[3]]*x[i[4]]
     end if
    end do
   end do
  end do
end do;

for i[1] from 1 to n do
  for i[2] from 1 to n do
   for i[3] from 1 to n do
    for i[4] from 1 to n do
     for i[5] from 1 to n do
      if i[1] < i[2] and i[2] < i[3] and i[3] < i[4] and i[4] < i[5] then
       S[5] :=S[5]+x[i[1]]*x[i[2]]*x[i[3]]*x[i[4]]*x[i[5]]
      end if
     end do
    end do
   end do
  end do
end do:


Но вот как это обобщить в одну формулу для любого n не знаю :-( Может кто-нибудь сможет помочь, пожалуйста?

 
 
 
 Re: Обобщенная формула в maple
Сообщение19.10.2011, 10:11 
Симметрические многочлены удобнее находить как коеффициенты при $X$ многочлена $(X-x_1)(X-x_2) \cdots (X-x_n).$ Соответсвующую Maplе-процедуру можно реализовать например так

Код:
S:=(n,m)->(-1)^(n-m+1)*simplify(coeff(product(X-x[i],i=1..n),X,(n-m)));


Тогда получим

$S(4,2)=x_{{1}}x_{{2}}+x_{{1}}x_{{3}}+x_{{2}}x_{{3}}+x_{{1}}x_{{4}}+x_{{2}}x_{{4}}+x_{{3}}x_{{4}}.$

$S(5,1)=x_{{5}}+x_{{4}}+x_{{3}}+x_{{2}}+x_{{1}}$

 
 
 
 Re: Обобщенная формула в maple
Сообщение19.10.2011, 15:43 
Leox
Эх...совсем не подумал об этом...спасибо!!!
Однако для S(4,4), например, считает с отрицательными знаками...Вы немного ошиблись в формуле:
(-1)^(2*n-m)
Но всё равно спасибо за подсказку :-)

 
 
 
 Re: Обобщенная формула в maple
Сообщение19.10.2011, 17:35 
вернее там просто $m$ достаточно)

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group