MATLAB:如何在dsolve的初始条件下使用循环变量?

时间:2013-06-28 08:25:16

标签: matlab loops differential-equations

在MATLAB中,我正在尝试构建一个循环,在每次迭代中调用具有不同初始条件的dsolve。为此,我构建了这个循环:

y0 = -2:0.5:2;
y1 = -2:2:2;

syms y(t)

for i = y1

      for k = y0
       y(t) = dsolve(diff(y,2) + diff(y) - 2*y == t^2 - 4*t + 3,...
           ['y(0) == ',num2str(k)],['Dy(0) == ',num2str(i)])
      end
end

它通过第一次迭代工作,但是对于第二次迭代它失败了:

Error using mupadengine/feval (line 157)
MuPAD error: Error: Invalid equation or initial condition. [ode::splitSys]

Error in dsolve>mupadDsolve (line 325)
T = feval(symengine,'symobj::dsolve',sys,x,options);

Error in dsolve (line 186)
sol = mupadDsolve(args, options);

Error in MWE (line 9)
     y(t) = dsolve(diff(y,2) + diff(y) - 2*y == t^2 - 4*t + 3,...

对于我尝试过的所有初始条件,该命令在循环外工作。在循环内部,第一次迭代起作用,下一次迭代总是失败。我选择哪一个似乎并不重要。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

您可以为解决方案使用不同的名称

y0 = -2:0.5:2;
y1 = -2:2:2;

syms y(t);
for q = y1
      for k = y0
        ysol(t) = dsolve(diff(y,2) + diff(y) - 2*y == t^2 - 4*t + 3,...
                      ['y(0) == ',num2str(k)],['Dy(0) == ',num2str(q)])
      end
end

我还会将i更改为q

http://www.mathworks.com/help/matlab/ref/i.html