通过迭代按名称创建符号变量的向量

时间:2014-06-05 20:34:08

标签: symbolic-math maxima

我正在尝试在for循环中创建一个增长的向量,即向量用一个元素初始化(让我们称之为q_1),在循环的下一次迭代中,向量由第二个元素扩展(让称之为q_2)等等。每个元素都是一个符号元素,取决于另一个独立元素(在我的例子中是时间t)。

总的想法是创建一个不断增长的二阶ODE,我想在每个循环中解决和绘制。

我已经实现的第一步是for循环,但我很难在循环中创建一个新的符号变量。我的第一个想法是通过名称创建变量,因此我可以使用循环的迭代索引i并在每个循环中创建一个新的唯一字符串,但我不知道如何使用Maxima完成此操作。

2 个答案:

答案 0 :(得分:2)

有各种各样的方式。

  • 使用下标符号变量,例如u[1], u[2], u[3], ...
  • 使用gensyms(生成的符号名称保证与任何其他现有符号不同。例如gensym()返回类似g4282的内容,然后下次gensym()返回g4283等等。
  • 通过concat构建符号,例如concat('foo, 3)返回foo3。这是最后一个度假村的解决方案。在重新选择CONCAT之前尝试任何行动。这样做很容易搞得一团糟。

如果您显示目前的代码,也许我可以提供更具体的建议。

答案 1 :(得分:0)

在接受的答案的基础上,以下是concat循环的示例(使用for方法)创建矩阵M,其中包含"索引"符号e_ij作为元素:

M: zeromatrix(6,6)$
for r: 1 thru 6 do (
    for c: 1 thru 6 do (
        M[r][c]: concat('e_,r,c)
        )
    )$