/*----------- RUNG KUTTA METHOD TO SOLVE DIFFERENTIAL EQUATION --------*/ /* THIS PROGRAM CALCULATES THE VALUE y AT GIVEN VALUE OF x USING FOURTH ORDER RUNG KUTTA METHOD. THE FUNCTION y' = f(x,y) IS DEFINED IN THE PROGRAM. y' = 1 + y*y Hence f(x,y) = 1 + y*y INPUTS : 1) Initial values of x and y. 2) Step size h. OUTPUTS : Calculated values of y at every step. */ /*------------------------------ PROGRAM --------------------------*/ #include #include #include #include void main() { double f (double x0,double y0); /* DECLARATION OF A FUNCTION f */ double y0,y1,x0,x1,h,x,k1,k2,k3,k4,k; int i,n; clrscr(); printf("\n\tRUNG KUTTA METHOD TO SOLVE DIFFERENTIAL EQUATION\n"); printf("\n\nEnter x0 = "); scanf("%lf",&x0); /* ENTER VALUE OF x0 */ printf("\n\nEnter y0 = "); scanf("%lf",&y0); /* ENTER VALUE OF y0 */ printf("\n\nEnter the value of x at which y is to be found = "); scanf("%lf",&x); /* ENTER VALUE OF x */ printf("\n\nEnter the value of h = "); scanf("%lf",&h); /* ENTER THE VALUE OF h */ i = 0; printf("\nPress any key to see step by step display of results...\n"); while(x0 < x) /* LOOP TO CALCULATE y USING RUNG KUTTA METHOD */ { i++; k1 = f(x0,y0); k2 = f(x0+h/2, y0+(h*k1/2)); k3 = f(x0+h/2, y0+(h*k2/2)); k4 = f(x0+h, y0+h*k3); /* CALCULATION OF k USING RUNG KUTTA METHOD */ y1 = y0 + (h/6)*(k1 + 2*k2 + 2*k3 + k4); /* CALCULATION OF y FROM VALUES OF k */ x1 = x0 + h; printf("\nx%d = %lf y%d = %lf",i,x1,i,y1); x0 = x1; y0 = y1; getch(); } } /*---------------------------------------------------------------------*/ double f ( double x,double y) /* FUNCTION TO CALCULATE VALUE OF f(x,y)*/ { double y_dash; y_dash = 1 + y*y; /* function f(x,y) = y' = 1 + y*y */ return(y_dash); } /*------------------------ END OF PROGRAM -----------------------------*/