odextend
, примененный к структуре решения (последний вариант вызова решателя в документации), принимает последнее состояние и новое уравнение и расширяет структуру решения, используя тот же решатель, до нового конца время.
Таким образом,
T=linspace(0,0.025,101);
vin = 12
sol = ode23s(@(T,X)sys(T,X,vin),[T(1) T(2)],X0);
for k=2:100
vin = -vin
sol = odextend(sol,@(T,X)sys(T,X,vin),T(k+1));
end
должно работать, моя октавная версия, к сожалению, не имеет odextend
для проверки синтаксической правильности.
Решение может быть оценено с помощью образцы и плотный вывод
Tsmooth = linspace(0,0.025,2001)
Ysmooth = deval(sol,Tsmooth)
hold on;
plot(Tsmooth, Ysmooth(:,1), '-b');
plot(sol.x, sol.y(:,1), '+r');
hold off;