Solution of ordinary differential equation using RK4 method in C
Algorithm:
- Start
- Declare and Initialize necessary variable likes K1, K2, K3, K4 etc.
- Declare and define the function that returns the functional value.
- Get the initial value of x, initial value of y, no. of iteration and interval from user.
- for i = 0 to i < n go to step 6.
- Do the following calculation: and go to step 7
- The new values of x and y are: x = x + interval, y = y + K;
- print the value of x and y;
- stop
Source Code:
#include < stdio.h>
/******************************************************
Program: solution of ordinary differential equation
Language : C
Author: Bibek Subedi
Tribhuvan University, Nepal
********************************************************/
float func(float x, float y){
return (y*y-x*x)/(y*y+x*x);
}
int main(){
float K, K1, K2, K3, K4;
float x0 , y0, x, y;
int j, n; float i, H;
printf("Enter initial value of x: ");
scanf("%f", &x0);
printf("Enter initial value of y: ");
scanf("%f", &y0);
printf("Enter no iteration: ");
scanf("%d", &n);
printf("Enter the interval: ");
scanf("%f", &H);
x = x0;
y = y0;
for(i = x+H, j = 0; j < n; i += H, j++){
K1 = H * func(x , y);
K2 = H * func(x+H/2, y+K1/2);
K3 = H * func(x+H/2, y+K2/2);
K4 = H * func(x+H, y+K3);
K = (K1 + 2*K2 + 2*K3 + K4)/6;
x = i;
y = y + K;
printf("At x = %.2f, y = %.4f ", x, y);
printf("\n");
}
return 0;
}
Output