loops - 与 Maxima 的 For 循环

标签 loops for-loop maxima

for i:1 thru 3 step 1 do;
posix:arithsum(li*cos(ri(t))),1,i-1)+(li*cos(ri(t))/2);
posiy:arithsum(li*sin(ri(t))),1,i-1)+(li*sin(ri(t))/2);

我想要做的是获得 6 个位置函数(3 x 和 3 y)。它应该给我如下值:
pos1x:l1*cos(r1(t))/2;
pos2x:l1*cos(r1(t))+l2*cos(r2(t))/2;
pos3x:l1*cos(r1(t))+l2*cos(r2(t))+l3*cos(r3(t))/2;

那么,为什么我的代码不起作用?

最佳答案

这里有几件事。 (1) for loop 只用一个表达式作为它的循环体;通常将多个表达式合并为一个,如 (e1, e2, e3)block(e1, e2, e3) .请注意 for ... do;不是正确的语法,因为它没有循环体——分号终止 for表达。另请注意,正文中的表达式用逗号分隔,而不是分号。 (2) 可以使用下标符号来索引项目; Maxima 不会自动构造符号名称,例如 pos1x .相反,使用下标符号:posx[1] , posy[i] , 等等。

鉴于此,这是一个解决方案。

(%i1) load (functs);
(%o1) /Applications/Maxima.app/Contents/Resources/opt/share/maxima/5.41.0/shar\
e/simplification/functs.mac
(%i2) for i:1 thru 3 step 1 do
 (posx[i]:arithsum(l[i]*cos(r[i](t)),1,i-1)+(l[i]*cos(r[i](t))/2),
  posy[i]:arithsum(l[i]*sin(r[i](t)),1,i-1)+(l[i]*sin(r[i](t))/2));
(%o2)                                done
(%i3) [posx[1], posx[2], posx[3]];
       l  cos(r (t))  3 l  cos(r (t))                          l  cos(r (t))
        1      1         2      2                         1     3      3
(%o3) [-------------, ---------------, 2 (l  cos(r (t)) + -) + -------------]
             2               2             3      3       2          2
(%i4) [posy[1], posy[2], posy[3]];
       l  sin(r (t))  3 l  sin(r (t))                          l  sin(r (t))
        1      1         2      2                         1     3      3
(%o4) [-------------, ---------------, 2 (l  sin(r (t)) + -) + -------------]
             2               2             3      3       2          2

我猜是l[i]r[i]也应该下标。我更改了括号以解决语法问题;如果您打算做其他事情,当然可以继续并再次更改它。

请注意,在此公式中 posxposy是所谓的未声明数组。未声明的数组适用于表示下标符号变量。您可以通过 listarray 获取元素列表.

关于loops - 与 Maxima 的 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546392/

相关文章:

c - 副订单菜单没有弹出

php - php中的foreach循环构造javascript

java - 比较 Java 中使用纳米时间的方法速度性能

java - 计算并返回 FizzBu​​zzProblem 中 3*f+5*b-15*fb 的值

matrix - 最大值中的任意大小矩阵

java - 如何增加使用 for 循环创建的 jlabel 变量名称?

c - 通过循环获取链表的值

list - (wx)最大: how to iterate an action over every member of a list?

math - 如何集成/链接 R 和计算机代数系统 (CAS)

java - @事务回滚循环