Runge-Kutta method (Order 4) for solving ODE using MATLAB



MATLAB Program:


% Runge-Kutta(Order 4) Algorithm
 % Approximate the solution to the initial-value problem
 % dy/dt=y-t^2+1 ; 0<=t<=2 ; y(0)=0.5;

 f = @(t,y) (y-t^2+1);
 a = input('Enter left end ponit, a:  ');
 b = input('Enter right end point, b:  ');
 n = input('Enter no. of subintervals, n: ');          % n=(b-a)/h
 alpha = input('Enter the initial condition, alpha:  ');

 h = (b-a)/n;
 t = a;
 w = alpha;
 fprintf('  t         w\n');
 fprintf('%5.3f %11.7f\n', t, w);

 for i = 1:n
   k1 = h*f(t,w);
   k2 = h*f(t+h/2.0, w+k1/2.0);
   k3 = h*f(t+h/2.0, w+k2/2.0);
   k4 = h*f(t+h,w+k3);
   w = w+(k1+2.0*(k2+k3)+k4)/6.0;
   t = a+i*h;
   fprintf('%5.3f %11.7f\n', t, w);
   plot(t,w,'b*'); grid on;
   xlabel('t values'); ylabel('w values');
   hold on;
 end


OutPut:
>> rk4_method
Enter left end ponit, a:  0
Enter right end point, b:  2
Enter no. of subintervals, n: 10
Enter the initial condition, alpha:  0.5
  t         w
0.000   0.5000000
0.200   0.8292933
0.400   1.2140762
0.600   1.6489220
0.800   2.1272027
1.000   2.6408227
1.200   3.1798942
1.400   3.7323401
1.600   4.2834095
1.800   4.8150857
2.000   5.3053630
>> 


No comments