I want to combine InterpolationFunction objects, results of an NDSolve in a loop, into one function. This is my code:
k1 = 3; sin = 2; \[Alpha] = 0.5;
[Mu][s_, t_] := (0.35)s[t]/(0.7 + s[t] + ((s[t])^2)(0.6) );
um = 0.097032;
up = 0.2093;
k2 = 5.6;
[Beta] = 0.33;
[Tau] = 3;
s0 = 0.1;
x0 = 0.2;
steps = 65;
PiecesX = {};
PiecesS = {};
Conditions = {};
Starts = {{s0, x0}};
For[i = 1, i <= Ceiling[steps/[Tau]], i++,
s0 = Starts[[i]][[1]];
x0 = Starts[[i]][[2]];
u = um;
te = (i - 1)[Tau];
[Omega] = Floor[te/[Tau]][Tau];
k = [Beta]k2[Mu][ssol, [Omega]]xsol[[Omega]];
If[k > um && k < up, u = k];
If[k >= up, u = up];
{ssol, xsol} =
NDSolveValue[{s'[t] == -k1[Mu][s, t]x[t] + u(sin - s[t]),
x'[t] == ([Mu][s, t] - [Alpha]u)x[t],
s[(i - 1)*[Tau]] == s0, x[(i - 1)*[Tau]] == x0},
{s, x}, {t, (i - 1)[Tau], i[Tau]}];
AppendTo[PiecesS, ssol];
AppendTo[PiecesX, xsol];
AppendTo[Conditions, (i - 1)*[Tau] < t < i[Tau]];
AppendTo[Starts, {ssol[i[Tau]], xsol[i*[Tau]]}];
];
solX = Piecewise[Transpose[{PiecesX, Conditions}]];
solS = Piecewise[Transpose[{PiecesS, Conditions}]];
The functions solX and solS look like normal piecewise functions in output, but refuse to be plotted. Can someone tell me what i am doing wrong?
[Mu]- it should be\[Mu], same for Alpha and Tau if you meant the symbols. 2)sinis wrong. It should beSin. Also there are loads of things you haven't given us here like the values of mu, alpha, s0, x0, u ... etc How do you expect anybody to run your code without them? – flinty Nov 04 '21 at 17:38Plot[solX[t], {t, 0, 66}]produces a curve. – flinty Nov 04 '21 at 17:55