룽에-쿠타 방법

위키백과, 우리 모두의 백과사전.
(룽게-쿠타 방법에서 넘어옴)
이동: 둘러보기, 검색

룽에-쿠타 방법(Runge-Kutta Method)은 수치 해석에서 미분 방정식 중 초기값 문제를 푸는 방법 중 하나이다.

역사[편집]

1900년 경 독일의 수학자 카를 다비트 톨메 룽에(독일어: Carl David Tolmé Runge)와 마르틴 빌헬름 쿠타가 개발하였다.

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

일반적으로 사용하는 룽에-쿠타 방법은 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 + h k_3)
\end{align}

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

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

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

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

알고리즘[편집]

코드[편집]

  • C/C++ 코드
//Program Of Rung-Kutta 4th Order
 
# include<stdio.h>
# include<conio.h>
# 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 코드

참고 문헌[편집]