Numerical method : 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
Flowchart:
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