From 87c92f4df946479f81e49ed725ad2e870ff103b4 Mon Sep 17 00:00:00 2001 From: VaishnavaHari S <cb.en.u4mee16159@cb.students.amrita.edu> Date: Thu, 11 Oct 2018 14:41:12 +0530 Subject: [PATCH] Add new file --- kutta.m | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 kutta.m diff --git a/kutta.m b/kutta.m new file mode 100644 index 0000000..4488db7 --- /dev/null +++ b/kutta.m @@ -0,0 +1,54 @@ +% Runge-Kutta 4th order Method to find an approximate solution of y'=f(x,y) +% with y(x(0))=y(0) +clc; clear all; +%input +f_in = input('Enter the function f(x,y) = ','s'); +f = inline(f_in); +x(1) = input('Enter the initial value of x = '); +y(1) = input('Enter the initial value of y = '); +h = input('Enter the step length h = '); +xn = input('enter the x value for which y is to be evaluated = '); +% main program +x = x(1):h:xn; % generating x values +N=length(x); % number of iterations to be performed +fprintf('itr \t x(i) \t y(i)\n') +for i=1:N + fprintf('%d\t %f\t %f\n',i-1, x(i), y(i)); % print (x, y) in each iteration + k1=h*(f(x(i),y(i))); + k2= h*f(x(i)+h/2,y(i)+k1/2); + k3= h*f(x(i)+h/2,y(i)+k2/2); + k4= h*f(x(i)+h,y(i)+k3); + y(i+1)= y(i)+(k1+2*(k2+k3)+k4)/6; % y(i+1) by RK4M +end + +% simply you can print by using [x', y'] at the end by taking proper care +% in the index !! + +% OUTPUT 1 -------------------------------------------------------------- +% Enter the function f(x,y) = (y-x)/(y+x) +% Enter the initial value of x = 0 +% Enter the initial value of y = 1 +% Enter the step length h = .02 +% enter the x value for which y is to be evaluated = .1 +% itr x(i) y(i) +% 0 0.000000 1.000000 +% 1 0.020000 1.019610 +% 2 0.040000 1.038479 +% 3 0.060000 1.056659 +% 4 0.080000 1.074195 +% 5 0.100000 1.091127 + +% OUTPUT 2 -------------------------------------------------------------- +% Enter the function f(x,y) = x+y +% Enter the initial value of x = 0 +% Enter the initial value of y = 1 +% Enter the step length h = .1 +% enter the x value for which y is to be evaluated = .5 +% itr x(i) y(i) +% 0 0.000000 1.000000 +% 1 0.100000 1.110342 +% 2 0.200000 1.242805 +% 3 0.300000 1.399717 +% 4 0.400000 1.583648 +% 5 0.500000 1.797441 + -- GitLab