/ / MATLAB: Як я використовую змінну циклу в початкових умовах у dsolve? - MATLAB, петлі, диференціально-рівняння

MATLAB: Як я можу використовувати змінну циклу в початкових умовах у dsolve? - MATLAB, петлі, диференціально-рівняння

У 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 для відповіді № 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