Mathematica で NDSolve を使用して一連の方程式を解いています。コードを読みやすくするために、一連の方程式を変数に入れ、後でNDSolveで参照する方法を探しています。
これが私がやっていることのより簡単なバージョンです:
In[1]:= equs = {a x + b y == 0, x - y == 1};
In[2]:= f[a_, b_] := Module[{x, y}, {x, y} /. Solve[equs, {x, y}]]
評価すると、正しい答えが得られません。
In[3]:= f[1, 1]
Out[3]:= {x$627, y$627}
これは、x、y、a、b がローカル変数であり、x、y、a、b とは異なる内部名が付けられているためです。equs の定義を関数に変更すると、正しい結果が得られます。
In[4]:= Clear[equs, f]
In[5]:= equs[x_, y_, a_, b_] := {a x + b y == 0, x - y == 1};
In[6]:= f[a_, b_] :=
Module[{x, y}, {x, y} /. Solve[equs[x, y, a, b], {x, y}]]
In[7]:= f[1, 1]
Out[7]= {{1/2, -(1/2)}}
しかし、私の問題は、実際のコードの equs に 20 個を超える変数があり、それらを明示的に書き出すとコードが読みにくくなることです。これを解決する方法はありますか?