Я использую NDSolve в Mathematica для решения набора уравнений. Я ищу способ поместить набор уравнений в переменную и ссылаться на нее позже в 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)}}
Но моя проблема в том, что у меня есть более 20 переменных в equs в моем реальном коде, и явное их написание сделает код непростым для чтения. Есть ли способ решить эту проблему?
