3

假设我有两个列表: M=(0,1,2,3) 和 N=(0,2,4,6)

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;

我会将它放入一个数组中,但我想限制递归,因为 maple 不喜欢它!是否可以将其放入具有 4 个变量的 2x2 数组中?

我考虑过列出 Mi+Mj 的所有组合和 Ns+Nt 的所有组合的 2 个列表,然后将它们放在一个数组中,但结果与我想要的相似,但并不完全正确。

4

1 回答 1

0

我不使用 Maple,但是在快速谷歌搜索之后,事实证明 Maple 至少支持嵌套循环。所以....


首先,遍历 M 的所有组合,计算 a^(Mi + Mj),并将结果存储在 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;

实际上,原来的方法需要大量的冗余计算,而上述方法消除了冗余。因此,我想它不仅可行而且速度更快。

于 2012-11-17T16:39:29.140 回答