Maxima - 在变量名中使用方括号

时间:2012-10-26 19:09:50

标签: maxima

在Maxima中,我想使用x[1]函数在任意数量的变量x[n] ... rk中数值求解微分方程组。我在变量名中使用方括号,以便我可以在for循环中索​​引变量。以下是n = 2时对rk的示例调用:

rk([derivativeOfX[1],-2*x[1]+x[2],derivativeOfX[2],x[1]-2*x[2]], [X[1],derivativeOfX[1],X[2],derivativeOfX[2]], [1,1,2,0], [t,0,10,0.1])

不幸的是,我收到错误:

define: in definition of f_rk_4, found bad argument X[1]

如果我手动将X[1]替换为x1,将X[2]替换为x2,则错误消失:

rk([derivativeOfX1,-2*x1+x2,derivativeOfX2,x1-2*x2], [x1,derivativeOfX1,x2,derivativeOfX2], [1,1,2,0], [t,0,10,0.1]); 

似乎rk不喜欢变量名中的方括号,但我需要它们才能索引for循环中的变量。我该怎么办?

1 个答案:

答案 0 :(得分:3)

一个简单的解决方案是拥有两组变量。在循环中使用x [1]和x [2]。在你的rk(...)表达式之前,设置x1等于x [1],x2等于x [2]。打电话给rk。然后将x1存储在x [1]中,将x2存储在x [2]中。

请注意,您可以使用concat生成变量名称。例如,concat('x,1)将生成符号x1。