MATLAB: Nonlinear system of differential algebraic equations

nonlinear system of equations (ode15s)

Hi,
I have a system of coupled nonlinear equations ( 10 differential equations and three algebraics). I used ode15s for integration.I want to study the behavaior of the system to step change in one parameter defined in my code. So, I considered that the system at t=0 is in the state before step change (vector of initial condition) and at exactly t=0 the parameter changes to the new value. ODE15s does the integration with no problem, but the values at t=0 is not the one defined in the code( initial condition vector). The values for the three variables defined by algeraic equations will change.
So, I thought that I should apply this step change at sometime after t=0 and using If statement in my code. like, if t<100 param=5; else; param=6; But, this time I got this error Warning: Failure at t=1.000000e+002. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (2.273737e-013) at time t.

Best Answer

I think ode15s is trying to estimate the derivative at the step change. You should run the integration with the first parameter to the time of your step change and then use the output as the initial condition for a new run using the second parameter.
EDIT: Suppose your function is f(x,param) and x has length 2. You could do something like this:
param = 5;
odefun = @(x) f(x,param);
tspan = [0 100];
x0 = [0; 0];
[t1,x1] = ode15s(odefun,tspan,x0);
param = 6;
odefun = @(x) f(x,param);
tspan = [100 200];
x0 = x1(:,end);
[t2,x2] = ode15s(odefun,tspan,x0);
t = [t1 t2];
x = [x1 x2];
Related Question