Correcting matrix dimensions in Runge-Kutta ODE solver
    3 views (last 30 days)
  
       Show older comments
    
I have a simple SIR model written in a .m file:
function dx = test1(t, y)
dx = [0; 0; 0];
beta = .003; 
delta = 1;
dx(1) = -beta * y(1) * y(2);
dx(2) = beta * y(1) * y(2) - delta * y(2);
dx(3) = delta * y(2);
end
And I made a Runge-Kutta ODE solver:
function [t y] = ode_RK4(f,dt,t_end,y0,steps)
h = (t_end - dt) / steps;
h_2 = h / 2;
y(1,:) = y0;
t(1) = dt;
h_6 = h/6;
for i = 1 : steps
  t(i+1) = t(i) + h;
  th2 = t(i) + h_2;
  k1 = f(t(i), y(i,:));
  k2 = f(th2, y(i,:) + h_2 * k1);
  k3 = f(th2, y(i,:) + h_2 * k2);
  k4 = f(t(i+1), y(i,:) + h * k3);
  y(i+1,:) = y(i,:) + (k1 + k2+k2 + k3+k3 + k4) * h_6;
end
end
Now when I want to solve the SIR model using
 [t,y] = ode_RK4(@test1,0,10,[1000 0 1],10)
I get an Error using +. Matrix dimensions must agree. Error in ode_RK4 (line 43). I am quite not sure where to make corrections in the RK solver and would be very grateful if anyone can help me to solve my problem.
4 Comments
  Torsten
      
      
 on 16 May 2017
				Since the initial condition for y(2) is y(2)=0, this is the correct result.
Best wishes
Torsten.
Answers (0)
See Also
Categories
				Find more on Ordinary Differential Equations in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
