2013-06-03 3 views
0

다음은 일부 $ p $에 대해 $ p^2 $와 동일한 특정 대수 algebras의 차원을 계산하기 위해 Sage에서 작성한 코드입니다.'조합'을 사용하여 세 가지 이상의 조합 사용

def A_comb2rep(p): 
    bound = p*p 
    name_fund = [] 
    name_comb = [] 
    A = lambda i: WeylCharacterRing("A{0}".format(i)) 
    for i in range(bound): 
     for k in range(1,bound+1): 
      fw = A(i+1).fundamental_weights() 
      if A(i+1)(k * fw[1]).degree() > bound: 
       break 
      else: 
       for v in fw: 
        if A(i+1)(k * v).degree() == bound: 
         name_fund.append([]) 
         name_fund[len(name_fund)-1].append('A'+str(i+1)+'('+str(k)+'*'+str(v)+')') 
    for i in range(1,bound): # now onto combinations of two of the fws ##### 
     fw = A(i+1).fundamental_weights() 
     for k in fw: 
      if A(i+1)(fw[1] + fw[2]).degree() > bound: 
       break 
      else: 
       for j in fw: 
        rep = A(i+1)(j+k) 
        deg = rep.degree() 
        if deg == bound: 
         name_comb.append([]) 
         name_comb[len(name_comb)-1].append('A'+str(i+1)+'['+str(j)+'+'+str(k)+']') 
    return name_comb, name_fund 

코드의 두 번째 절반은 두 가지 기본적인 가중치의 조합을 고려한 것입니다. 이제 iterables 모듈에서 combination 함수를 사용하여 3 개 이상의 기본 가중치의 조합에 대해이를 확장하는 방법에 대해 궁금합니다.

더 구체적으로 말하면, fw의 3 요소를 합하여 코드하는 것이 어떻습니까? 나는 v = combinations(fw, 3)v $ {n \ choose 3} $ 트리플 조합에 포함될 것이라고 알고 있는데, fw의 요소는 (1,1,1,0,0,0)과 같은 튜플입니다. v에있는 세 쌍의 각각을 어떻게 합치겠습니까? 이 질문이이 사이트에 부적절한 경우 사과드립니다.

답변

1

나는 수학에 만족스럽지 않지만 질문이 "어떻게하면 v에 들어있는 세 쌍을 합산 할 수 있을까?" 그 답은

sv = map(sum, v) 

svv

+0

큰 감사에서 트리플 금액의 목록 (실제로 반복자)를 포함 할 곳! 이것은 완벽하게 작동했습니다. – Moderat

관련 문제