首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maxima For循环

Maxima For循环
EN

Stack Overflow用户
提问于 2013-02-09 02:33:55
回答 2查看 13.4K关注 0票数 2

我正在尝试用maxima编写一个循环,它将迭代i,通过从1到21的值,对于i的每个单独值,变量j都会迭代通过从1到21的值。在每个j值时,将这两个值相互比较,并且如果i

代码语言:javascript
复制
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);

甚至在wxmaxima上什么都没有显示,它的行为就像看不到这部分代码一样。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-02-12 00:19:04

有人刚刚在Maxima邮件列表上询问了一个非常相似的question,跟进了两天前他们的previous one。

现在,非常好的家伙鲁伯特·斯沃布里克建设性地回答了这两个问题。他是如此的和善,以至于他会再回复一次。()看起来你想做的是做一个矩阵,aa,使得aa[i,j]在对角线上或对角线下为零,并且在对角线上等于c1[-j+i+21]。假设是这种情况,请尝试以下操作:

代码语言:javascript
复制
genmatrix (lambda ([i,j], if i<j then realpart(c1[-j+i+21]) else 0), 21);

如果你想要别的东西,你必须问一个更具体的问题。

票数 3
EN

Stack Overflow用户

发布于 2013-02-12 10:26:06

让我们来看看你的代码:

代码语言:javascript
复制
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);

更清晰地格式化一下,它是:

代码语言:javascript
复制
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和do b),您可能希望编写(a,b),它先执行a,然后执行b。

嵌套可能也不是您想要的。

第二个循环是"do aa1:...“。在Maxima中,"do xxx“等同于"while true do xxx",即无限循环。这就解释了为什么这个代码永远不会返回。

顺便说一句,一种更简单的方式写"for i:1 while i<=21 do...“是"for I do 21 do...“

希望这能有所帮助。

代码语言:javascript
复制
   -s
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14779099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档