3

M=(0,1,2,3) と N=(0,2,4,6) の 2 つのリストがあるとします。

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 つのリストを作成し、それらを配列にまとめることを検討しましたが、私が望むものと似ていますが、完全には正しくありません。

4

1 に答える 1

0

私は Maple を使用していませんが、Google で簡単に検索したところ、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 に格納します。

3番目に、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 に答える