수치 해석에서, '''룽게-쿠타 )은 적분 방정식 초기값 문제를 푸는 방법 하나이다. == 역사 == 1900년 독일의 수학자 카를 다비트 톨메 룽게와 마르틴 빌헬름 쿠타가 개발하였다. == 일반적인 4차 룽게-쿠타 방법 == 일반적으로 사용하는 룽게-쿠타 방법은 4차 룽게-쿠타 방법으로 보통 "RK4" 라고 쓴다. 별다른 수식어 없이 룽게-쿠타 방법을 쓴다고 말한다면 대체로 4차 룽게-쿠타 방법을 쓴다는 뜻이다. 다음과 같이 정의된 초기값 문제를 두자: y는 시간 t에 대한 미지의 함수이며, 우리가 근사하려는 것이다. y의 변화인 t와 y자신으로 이루어진 함수이고, 초기시간 대응하는 y의 초기값은 이며, 함수 f와 값은 주어져 있다. 이제 단계 크기로 다음을 정의한다. 0, 1, 2, 3, ... 에서, 다음을 사용한다. 여기서 이란 RK4 근사 항이며, 다음 단계의 값()은 현재 단계의 값()에 구간의 크기 h의 증분치들의 가중평균을 더한 값이다. 구간의 시작부분의 기울기에 의한 증분값이며, 사용한다.(오일러 방법) 구간의 중간의 기울기에 의한 증분값이며, 사용한다. 마찬가지로 구간의 중간의 기울기에 의한 증분값이나, 사용한다. 구간의 끝의 기울기에 의한 증분값이며, 사용한다. 증분을 평균을 때, 중간 부분에서 많은 무게의 증분이 더해진다. 만약 함수 대하여 독립적이라면, 미분방정식은 단순한 적분이 되어 RK4는 심프슨 공식이 된다. 일반적인 미분방정식에서 RK4 방법과 다른 낮은 차원의 방법을 비교한 것이다. RK4 방법은 4차 해법이다. 이는 단계에서의 오류는 점근 표기법으로 누적 오류는 라는 것을 의미한다. == Explicit 룽게 쿠타 방법 == explicit 룽게-쿠타 방법은 위에서 설명된 RK4 방법의 일반화이다. 이것은 다음과 같이 주어진다. 이때 다음과 같다. 특정한 방법을 지정하기 위해서는, 정수 ''s'' (각 단계들의 수) 주어져야 하고, 각각의 계수들 ''aij'' (1 ''i'' i'' (''i'' 1, 2, ..., ''s''), ''ci'' (''i''=2, 3, ..., ''s'') 필요하다. 행렬 ''aij''는 ''룽게-쿠타 행렬''이며, ''bi'' 와''ci'' 알려져 있듯이 ''무게'' ''마디''이다. 값들은 ''Butcher 테이블''이라는 기억장치 내에서 배열되어있다. 룽게-쿠타 방법은 다음을 만족할 일관성이 있다. 만약 하나가 특정 차수 ''p'',즉 지역 절단 오차가 되도록 방법이 요구되면 거기에는 또한 부수적인 요구사항이 있다. 이것은 절단오차의 정의에 의해서 나타난다. 예를 들어 2차 방법은 차수가 2이다. 일반적으로, s단계의 explicit 룽게-쿠타 방법이 p의 차수를 가진다면, 이고, 만약 때는 이다. s단계 explicit 룽게-쿠타 방법이 열린문제에서 p의 차수를 가지기 위해서는 최소한의 s가 필요하다. 개의 알려진 값들은 다음과 같다. ===예시=== RK4는 방법에 맞아들어가며, 테이블은 다음과 같다. 룽게-쿠타 방법에서의 약간의 변형을 방법은 쿠타에 의해서 연구되었고 3/8법칙 이라고 불린다. 방법의 가장 장점은 다른 일반적인 방법들보다 오차계수가 작은 것이나, 방법은 단계마다 조금 많은 FLOP(부동소수점 연산)들이 필요하다. Butcher 테이블은 다음과 같다. 그러나, 가장 간단한 룽게-쿠타 방법은 (전방)오일러 방법이다. 공식은 이다. 이것은 오직 단계 뿐인 explicit 룽게-쿠타 방법이다. 대응되는 테이블은 다음과 같다. ===두 단계의 이차 방법들=== 간단한 예로 단계의 2차 방법인 중간점 방법을 보면 다음과 같다. 대응되는 테이블은 다음과 같다. 단계의 2차 룽게-쿠타 방법은 중간점 방법 밖에 없는 것은 아니다. 이런 종류의 방법은 α에 의해 다음과 같이 매개변수화되어 있다. Butcher 테이블은 다음과 같다. 때는 중간점 방법이 되며, 때는 호인의 방법이 된다. == 활용 == 예를 들어 α=2/3인 단계의 2차 룽게 쿠타 방법을 보자, 이것은 라슬톤 방법 이라고 알려져있다. 테이블은 다음과 같이 주어져 있다. 대응되는 등식은 다음과 같다. 다음의 초기치 문제를 풀기 위하여 방법을 사용한다. ''h'' 0.025의 크기로 구간을 잡으면 방법은 단계가 필요하다. 방법의 결과는 다음과 같다: 수치해석적 결과는 밑줄친 값들이다. == Adaptive 룽게 쿠타 방법 == Adaptive한 방법은 단일 룽게-쿠타 방법의 지역적인 절단 오차의 추정치를 찾기 위해 고안되었다. 이것은 테이블에서 차수가 방법들을 가져서 이루어졌다. 낮은 차수의 단계는 다음과 같이 주어진다. 높은 차원의 방법에서도 같다면 오차는 다음과 같다. 오차는 이다. 이런 종류의 Butcher 테이블은 값을 얻기 위하여 확장 되었다. 룽게 쿠타 펠버그 방법은 차수가 5와 4인 방법을 가지고 있다. 확장된 Butcher 테이블은 다음과 같다: 하지만 가장 간단한 adaptive 룽게-쿠타 방법은 2차인 호인의 방법과 1차인 오일러 방법과 결합되어 있다. 확장된 Butcher 테이블은 다음과 같다: 오차 추정은 단계 크기를 제어하기 위해 사용된다. 다른 adaptive 룽게-쿠타 방법은 방법(3과 2의 차수), Cash–Karp 방법과 Dormand–Prince 방법(둘 5,4의 차수)이 있다. == Implicit 룽게 쿠타 방법 == 위에서 언급된 모든 룽게-쿠타 방법들은 모두 explict 방법들이다. explict 룽게-쿠타 방법은 일반적으로 stiff equation에는 맞지 않는다. 왜냐하면 그들의 절대적인 안정성의 범위가 작기 때문이다; 특히, 식들은 한정되어 있다. 문제는 편미분방정식의 솔루션에서 특히 중요하다. explict 룽게-쿠타 방법의 불안정성은 implicit한 방법을 만들게 되었다. implicit 룽게-쿠타 방법은 다음의 형태를 가진다. 때, explict 방법간의 차이는 explict 방법은 시그마의 위에 ''i'' 1이 들어간다는 것이다. 이것은 Butcher 테이블에서도 나타난다: explict 방법의 계수들의 행렬은 삼각 행렬이다. implicit 방법은 시그마 위에 ''s''가 올라가고 계수들의 행렬은 다음과 같이 삼각행렬이 아니다. 차이는 단계마다, 대수적인 방정식의 시스템을 풀어야 한다는 점이다. 이것은 계산비용을 상당히 증가시킨다. ''m''개의 성분이 있는 미분방정식을 ''s''단계의 방법을 사용하면 대수적인 방정식은 ''ms''개의 성분이 있다.이것은 implict한 선형 다단계 방법(ODE들의 다른 방법)과 대조된다: implicit한 ''s''단계의 선형 다단계 방법은 ''m''개의 성분을 가진 방정식을 풀기 위해서 단계수가 늘어나도 시스템의 크기가 늘어나지 않는다 === 예시 === 가장 간단한 implicit 룽게-쿠타 방법은 오일러 방법이다: Butcher 테이블은 다음과 같다. Butcher 테이블에 대응하는 식은 다음과 같다. 이것은 위에서 나온 오일러 방법의 형태로 바꿀 있다. 다른 implicit 룽게-쿠타 방법의 예는 사다리꼴 법칙이다. Butcher 테이블은 다음과 같다. 사다리꼴 법칙은 배열 방법이다. 모든 배열 방법들은 모두 implicit 룽게-쿠타 방법이지만 모든 implicit룽게-쿠타 방법은 배열 방법이 아니다. Gauss-Legendre 방법은 가우스 구적법에 기반한 배열 방법이다. ''s''단계의 Gauss-Legendre 방법은 차수가 2''s''이다(따라서 임의의 높은 차수의 방법들이 구성될 있다).두 단계의 방법(차수는 4이다)의 Buther 테이블은 다음과 같다: ===안정도=== explicit한 룽게-쿠타 방법에 비교하여 implicit 방법의 장점은 안정도가 특히 딱딱한 방정식에서 높다는 것이다. 다음의 선형 방정식 ''y'''=λ''y''를 고려해 보자. 룽게-쿠타 방법을 가용하면 식은 다음의 반복으로 줄며, ''r''은 다음과 같다. 여기서 ''e''는 1들의 벡터를 나타낸다. 함수 ''r''은 ''안정도 함수''라고 불린다. 만약 방법이 ''s''단계라면 ''r''은 차수 ''s''의 다항식의 몫의 형태를 띈다. explicit 방법은 순상삼각행렬인 행렬 ''A''를 가진다. 이것은 1이라는 것을 의미하며 안정도 함수는 다항함수이다. 위의 선형방정식은 이고 때, 수치적 해법은 0이 된다. 이런''z''들의 집합은 ''절대 안정성의 영역''이라고 부른다. 특히 방법은 모든 실수부가 음인 z가 절대 안정성의 영역 안에 있을 A-안정하다고 불린다. explicit 룽게-쿠타 방법의 안정도 함수는 다항함수이기 때문에 explicit 룽게 쿠타 방법은 A-안정할 없다. == 알고리즘 == == 코드 == C/C++ 코드 //C/C++ code of 4th order Runge-Kutta method include include include float f(float t,float y) return(t*y+1); void main() float clrscr(); printf("\n Enter Value Of t0 and y0"); scanf("%f %f",&t0,&y0); printf("\n Enter Value of h"); scanf("%f",&h); printf("\n Enter Final Value of t"); do k1=h*f(t0,y0); t1=t0+h; t0=t1; y0=y1; }while(t0 Python #Program Of Runge-Kutta 4th Order from math import def f(t,y): return sin(y**t) def main(): value:") size:") time:") while t0 분류:수치해석학 분류:룽게-쿠타 방법