#include<stdio.h>
#include<conio.h>
#define MAX 20
float equation(float x,float y)
{
return(x*y);
}
void main()
{
FILE *fp;
int i=1,count=1;
float lower,upper,y1,h,xvalue[MAX],yvalue[MAX];
float s,s1,s2;
fp=fopen("rk_2.dat","w");
clrscr();
printf("\n\n");
fprintf(fp,"\n\n");
printf("Runge-Kutta Second Order ");
fprintf(fp,"Runge-Kutta Second Order ");
printf("\n\n");
fprintf(fp,"\n\n");
printf("\nEnter the lower bound of x : ");
fprintf(fp,"\nEnter the lower bound of x : ");
scanf("%f",&lower);
fprintf(fp,"%f",lower);
printf("\nEnter the upper bound of x : ");
fprintf(fp,"\nEnter the upper bound of x : ");
scanf("%f",&upper);
fprintf(fp,"%f",upper);
printf("\nEnter the value of y(lower): ");
fprintf(fp,"\nEnter the value of y(lower): ");
scanf("%f",&y1);
fprintf(fp,"%f",y1);
printf("\nEnter the value of h : ");
fprintf(fp,"\nEnter the value of h : ");
scanf("%f",&h);
fprintf(fp,"%f",h);
xvalue[i]=lower;
yvalue[i]=y1;
for(i=1;xvalue[i]<=upper;i++)
{
xvalue[i+1]=xvalue[i]+h;
count=count+1;
}
for(i=1;i<=count;i++)
{
s1=equation(xvalue[i],yvalue[i]);
s2=equation(xvalue[i]+h,yvalue[i]+(h*s1));
s=(s1+s2)/2;
yvalue[i+1]=yvalue[i]+(h*s);
}
printf("\n\n");
fprintf(fp,"\n\n");
printf("The complete solution of the differential equation is ");
fprintf(fp,"The complete solution of the differential equation is ");
printf("\n\n");
fprintf(fp,"\n\n");
for(i=1;i<=count;i++)
{
printf(" %d %.4f %.4f ",i,xvalue[i],yvalue[i]);
fprintf(fp," %d %.4f %.4f ",i,xvalue[i],yvalue[i]);
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
getch();
}