1

Maxima では、関数を使用して、任意の数の変数x[1]...で微分方程式系を数値的に解きたいと思い ます。for ループで変数にインデックスを付けることができるように、変数名に角かっこを使用します。n = 2 の場合の呼び出しの例を次に示します。x[n]rkrk

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 ループで変数にインデックスを付けるために角括弧が必要です。私は何をすべきか?

4

1 に答える 1

3

簡単な解決策は、変数のセットを 2 つ持つことです。ループでは x[1] と x[2] を使用します。rk(...) 式の前に、x1 を x[1] に、x2 を x[2] に設定します。rkに電話。次に、x1 を x[1] に、x2 を x[2] に格納します。

concat を使用して変数名を生成できることに注意してください。たとえば、concat('x, 1) はシンボル x1 を生成します。

于 2012-11-11T15:52:30.180 に答える