- C program
- 결과 및 고찰
원하는 초기값에서의 Runge-Kutta 실행
y1 = A;
y2 = A2;
t=0;
printf("%lf \t %lf\n",t*1000,y1);
fprintf(Project,"%lf \t %lf\n",t*1000,y1);
for (i=0;;i++)
{
t = t + h;
k1_y1 = y1_prime(t,y1,y2);
k1_y2 = y2_prime(t,y1,y2);
k2_y1 = y1_prime(t+0.5*h,y1+0.5*h*k1_y1,y2+0.5*h*k1_y2);
k2_y2 = y2_prime(t+0.5*h,y1+0.5*h*k1_y1,y2+0.5*h*k1_y2);
k3_y1 = y1_prime(t+0.5*h,y1+0.5*h*k2_y1,y2+0.5*h*k2_y2);
k3_y2 = y2_prime(t+0.5*h,y1+0.5*h*k2_y1,y2+0.5*h*k2_y2);
k4_y1 = y1_prime(t+h , y1+h*k3_y1, y2+h*k3_y2);
k4_y2 = y2_prime(t+h , y1+h*k3_y1, y2+h*k3_y2);
y1 = y1 + h/6*(k1_y1 + 2*k2_y1 + 2*k3_y1 + k4_y1);
y2 = y2 + h/6*(k1_y2 + 2*k2_y2 + 2*k3_y2 + k4_y2);
printf("%lf \t %lf\n",t*1000,y1);
fprintf(Project,"%lf \t %lf\n",t*1000,y1);
if (t>=0.0025)
break;
}
}
double y1_prime(double t, double y1,double y2)
{
return y2;
}
double y2_prime(double t, double y1,double y2)
{
return -x;
}

분야