我在 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)}}
但是我的问题是我的真实代码中有 20 多个 equs 变量,并且明确地写出它们会使代码不易阅读。有没有办法解决这个问题?