Hi all,
I have a problem solving a ODE with Matlab.
The ODE is:
y(t)'of j= [(sigma^2)/(2*k)]*(1-y(t)*k)*(y(t)-[y(t)of j-1])^2;
I've written this code:
mu = 0.20;r = 0.05;sigma = 0.40;T = 10;k = 0.2;IC = 0.0;TSPAN = 0:0.1:T;TSPANlength = length(TSPAN);%Number of crahes
N=3;PiVektor = zeros(N,TSPANlength);for i=1:1:N[~, PiVektor(i, :)] = ode23(@(t, pi)myodeN(pi, PiVektor(i-1),k,mu,r,sigma),TSPAN, IC);PiVektor(i,:) = fliplr(PiVektor(i,:));figure(1);hold onplot(TSPAN,PiVektor(i,:));end function dpidt = myodeN(pi,piNminus1,k,mu,r,sigma)
dpidt = [(sigma^2)/(2*k)]*(1-pi*k)*(pi-piNminus1)^2;
end
The problem is that in this way the ODE is always calculated using just the first value from the previous calculation.
Is it possibile to change the value of my parameter at each time step?
Thanks a lot,
Ilaria
Best Answer