理解 wxMaxima 中的 for-do 循环

understanding for-do loops in wxMaxima

我正在尝试了解 for-do 循环的工作原理并尝试访问以下列表中的不同项目:

(%i2)   thetas : [45,-45,-45,45]$
        z : [-0.5,-0.25,0.0,0.25,0.5]$
(%i3)   for c1:1 thru length(thetas) do
    (
        htop : z[c1+1],
        hbottom : z[c1],
        theta : thetas[c1]*%pi/180,
        disp(htop),
        disp(hbottom),
        disp(theta)
    );

产生:

thetas 正在按需要显示。另一方面,在第一遍中,我期望将 -0.25 分配给 htop 而不是 z_2 并将 -0.5 分配给 hbottom 而不是下标为 1 的列表。如何循环遍历列表 z 并分配 (在每次循环过程中,hbottom 和 htop 的数值)值?

我无法重现您报告的行为。我重建了 Maxima 5.43.2,这就是我得到的。

(%i2) thetas : [45,-45,-45,45]$

(%i3) z : [-0.5,-0.25,0.0,0.25,0.5]$

(%i4) for c1:1 thru length(thetas) do
    (
        htop : z[c1+1],
        hbottom : z[c1],
        theta : thetas[c1]*%pi/180,
        disp(htop),
        disp(hbottom),
        disp(theta)
    );
                             - 0.25

                              - 0.5

                               %pi
                               ---
                                4

                               0.0

                             - 0.25

                                %pi
                              - ---
                                 4

                              0.25

                               0.0

                                %pi
                              - ---
                                 4

                               0.5

                              0.25

                               %pi
                               ---
                                4

(%o4)                         done
(%i5) build_info ();
(%o5) 
Maxima version: "5.43.2_dirty"
Maxima build date: "2021-11-08 22:31:50"
Host type: "i686-pc-linux-gnu"
Lisp implementation type: "GNU Common Lisp (GCL)"
Lisp implementation version: "GCL 2.6.12"
User dir: "/home/robert/.maxima"
Temp dir: "/tmp"
Object dir: "/home/robert/maxima/maxima-code/binary/5_43_2_dirty/gcl/GCL_2_6_12"
Frontend: false

不知道从这里到哪里去。