2012-11-17 4 views
3

는 말 배열 적합한 4 개의 루프 변수를 확인하는 방법 : M = (0,1,2,3) 및 N = (0, 2, 4, 6)을메이플 - I는 두 개의리스트가

And I wish to put into a list all the combinations of Mi,Mj,Ns,Nt (where i,j,s,t are  subscripts so for i=1 M=0, i=2 M=1 etc.) such that: 

C = a^(Mi+Mj) + b^(Ns+Nj) 

First in the list would be 
C = a^(0+0) + b^(0+0) 
C = a^(1+0) + b^(0+0) 
C = a^(1+0) + b^(2+0) 

'for'절을 4 번 사용하는 것보다 더 깔끔한 방법이 있습니까?

for i from 1 to 4 do 
for j from 1 to 4 do 
for s from 1 to 4 do 
for t from 1 to 4 do 

C = a^(Mi+Mj) + b^(Ns+Nj) 

end do; 
end do; 
end do; 
end do; 

나는 그것을 배열에 넣을 것이지만, 메이플이 그것을 좋아하지 않기 때문에 재귀를 제한하고 싶다! 이것을 4 개의 변수가있는 2x2 배열에 넣을 수 있습니까?

Mi + Mj의 모든 조합과 Ns + Nt의 모든 조합을 2 개의 목록으로 만들고 배열로 모으는 것을 고려해 보았지만, 원하는 것과 비슷하지만 적절하지는 않습니다.

답변

0

나는 Maple을 사용하지 않지만 빠른 Google 검색 후에는 Maple이 적어도 중첩 루프를 지원한다는 사실이 밝혀졌습니다. 그래서 ....


첫째, 동일한 기능을 수행하는^(MI + 엠제이) 계산, M의 모든 조합을 반복하고, A.에

for i from 1 to 4 do 
for j from 1 to 4 do 
    A = a^(Mi+Mj) 
end do; 
end do; 

둘째 결과를 저장할 N에 대해, 그리고

셋째 B. 상기 결과를 저장 얻을 C.

for i from 1 to 16 do 
for j from 1 to 16 do 
    C = Ai + Bj 
end do; 
end do; 

실제로 원래의 방법은 많은 중복 계산이 필요하며 위의 방법은 중복성을 제거합니다. 따라서, 나는 그것이 작동 할뿐만 아니라 더 빠를 것이라고 생각한다.

+0

고맙습니다! 그건 분명히 모든 조합을 제공합니다! 내 큰 문제는 바로 제대로 나오지 않는 배열의 통합이지만 적어도 변경 사항이있는 내 i와 j 값은 잘 알고 있습니다. 다시 한 번 감사드립니다. 이 정보가 다른 사람들에게도 도움이되기를 바랍니다. 루프가 혼란을 일으킬 수 있습니다. –

관련 문제