2013-06-28 29 views
1

在MATLAB中,我試圖構建一個循環,在每次迭代中調用具有不同初始條件的dsolve。要做到這一點,我建這個循環: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

您可以使用不同的名稱爲解決

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 

我也會改變iq

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

+0

我一直長天,我開始想念真的很明顯的東西。感謝您指出我不適當的使用! –