让我们看看你的代码:
for i:1 while i<=21 do(for j:1 while j<=21 do
(if i<j then aa:realpart(c1[-j+i+21]))) and do aa1:makelist(aa,i,1,21,1);
更清楚地格式化它,它是:
for i:1 while i<=21 do
(for j:1 while j<= 21 do
(if i<j then aa:realpart(c1[-j+i+21])
)
)
and
do aa1:makelist(aa,i,1,21,1);
好吧,“and”是一个布尔运算符,将它应用于两个循环并不是很有意义(除非循环返回布尔值),尽管 Maxima 允许您编写它。您可能想要编写 (a,b),而不是 (a and b) 或 (a and do b),它执行 a 然后 b。
嵌套可能也不是您想要的。
第二个循环是“做 aa1:...”。在 Maxima 中,“do xxx”相当于“while true do xxx”,即无限循环。这可以解释为什么此代码从未返回。
顺便说一句,写“for i:1 while i<=21 do...”的更简单的方法是“for i thru 21 do...”。
希望这可以帮助。
-s