SHARE
TWEET

ode_RK

UtamaDonny Dec 9th, 2019 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function [t,y] = ode_RK4(f,tspan,y0,N,varargin)
  2. %Runge-Kutta method to solve vector differential eqn y’(t) = f(t,y(t))
  3. % for tspan = [t0,tf] and with the initial value y0 and N time steps
  4.  
  5. if nargin < 4 | N <= 0, N = 100; end
  6. if nargin < 3, y0 = 0; end
  7. y(1,:) = y0(:)'; %make it a row vector
  8. h = (tspan(2) - tspan(1))/N; t = tspan(1)+[0:N]'*h;
  9. for k = 1:N
  10. f1 = h*feval(f,t(k),y(k,:),varargin{:}); f1 = f1(:)'; %(6.3.2a)
  11. f2 = h*feval(f,t(k) + h/2,y(k,:) + f1/2,varargin{:}); f2 = f2(:)';%(6.3.2b)
  12. f3 = h*feval(f,t(k) + h/2,y(k,:) + f2/2,varargin{:}); f3 = f3(:)';%(6.3.2c)
  13. f4 = h*feval(f,t(k) + h,y(k,:) + f3,varargin{:}); f4 = f4(:)'; %(6.3.2d)
  14. y(k + 1,:) = y(k,:) + (f1 + 2*(f2 + f3) + f4)/6; %Eq.(6.3.1)
  15.  
  16. end
  17. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top