Я использую простой цикл if для изменения значений параметров в моем сценарии ode. Вот пример сценария, который я написал, который демонстрирует ту же проблему. Итак, первая версия, которая работает:
function aah = al(t,x)
if (t>10000 && t<10300)
ab = [0; 150];
else
ab = [150; 0];
end
aah = [ab];
это можно запустить с помощью
t = [0:1:10400];
x0 = [0,0];
[t,x] = ode23tb(@al, t,x0);
и визуализировать с
plot(t,x(:,1))
plot(t,x(:,2))
Хорошо, это хорошая версия. Теперь, если все, что вы делаете, это меняете t на
t = [0:1:12000];
все взрывается. Вы можете подумать, что Matlab просто усредняет график, но это не так, потому что, если вы посмотрите на
x(10300,2)
ответ должен быть одинаковым в обоих случаях, потому что код не изменился. но эта вторая версия выводит 0, что неверно!
Что, черт возьми, происходит? У кого-нибудь есть идея?
Большое спасибо за любую помощь