룽게-쿠타 방법

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 찾기

룽게-쿠타 방법(Runge-Kutta Method)은 수치해석에서 일반적인 미분방정식을 푸는 반복적인 방법이다. 1900년 경 독일의 수학자 카를 룽게마르틴 빌헬름 쿠타에 의하여 개발되었다.

목차

일반적인 4차 룽게-쿠타 방법 [편집]

일반적으로 사용되는 룽게 쿠타 방법으로 "RK4" 로 표기된다. 일반적으로 룽게 - 쿠타 방법이라 하면 4차 룽게-쿠타 방법을 의미한다.

다음과 같은 초기값문제를 가정하자.

 y' = f(t, y), \quad y(t_0) = y_0.


이 문제에 대한 RK4 방법은 다음과 같이 주어진다.

\begin{align}
y_{n+1} &= y_n + \tfrac{1}{6}h\left(k_1 + 2k_2 + 2k_3 + k_4 \right) \\
t_{n+1} &= t_n + h \\
\end{align}

여기서 y_{n+1} y(t_{n+1} )의 RK4 근사값이다.


\begin{align} 
k_1 &= f(t_n, y_n)
\\
k_2 &= f(t_n + \tfrac{1}{2}h, y_n + \tfrac{1}{2}h k_1)
\\
k_3 &= f(t_n + \tfrac{1}{2}h, y_n + \tfrac{1}{2}h k_2)
\\
k_4 &= f(t_n + h, y_n + k_3)
\end{align}

RK4 방법은 4차 해법이다. 이는 각 스텝에서의 에러가 h^5 오더, 전체 에러가 h^4 오더 라는 것을 의미한다.

Explicit 룽게 - 쿠타 방법 [편집]

Adaptive 룽게 - 쿠타 방법 [편집]

Implicit 룽게 - 쿠타 방법 [편집]

알고리즘 [편집]

코드 [편집]

  • C/C++ 코드

//Program Of Rung-Kutta 4th Order

  1. include<stdio.h>
  2. include<conio.h>
  3. include<math.h>

float fx(float x,float y) {

 return(x*y+1);

} void main() {

 float x0,y0,x1,y1,h,i,ax,ty,k1,k2,k3,k4;
 clrscr();
 printf("\n Enter Value Of x0 and y0");
 scanf("%f %f",&x0,&y0);
 printf("\n Enter Value of h");
 scanf("%f",&h);
 printf("\n Enter Final Value of x");
 scanf("%f",&ax);
 printf("\nx\ty");
 printf("\n_______________________________________\n");
 do
 {
   k1=h*fx(x0,y0);
   k2=h*fx(x0+h/2,y0+k1/2);
   k3=h*fx(x0+h/2,y0+k2/2);
   k4=h*fx(x0+h,y0+k3);
   y1=y0+0.1667*(k1+(2*k2)+(2*k3)+k4);
   x1=x0+h;
   printf("\n%.4f\t%.4f",x1,y1);
   x0=x1;
   y0=y1;


 }while(x0<ax);
 getch();

}


  • Maple 코드

참고 [편집]