MCP로 연결 →

계산 입력

y'' = F(x, y, y')의 우변입니다. x, y, p와 + - * / ^, sin, cos, exp, log, sqrt, pi, e를 사용하세요.

공식

광고

결과

xn에서의 y
0.135335274181834636
끝점에서의 y 값
xn에서의 y'
-0.135335259156935755
끝점에서의 y' (= p) 값

Method: classic 4th-order Runge-Kutta (RK4) · steps n = 50 · step size h = 0.02

i x y = f(x) y' = p
0 0 0 1
1 0.0200000000000000004 0.0192157866666666649 0.922357866666666637
2 0.0400000000000000008 0.0369246498212522645 0.849267048373009037
3 0.0599999999999999978 0.0532152204359356007 0.780489998192799184
4 0.0800000000000000017 0.0681714957894921647 0.715800800394514436
5 0.100000000000000006 0.0818730665794356605 0.654984623530822985
6 0.119999999999999996 0.0943953333479264356 0.597837198534814762
7 0.140000000000000013 0.105809712710295489 0.544164320702777649
8 0.160000000000000003 0.116183833853126500 0.493781374492720526
9 0.179999999999999993 0.125581725747898248 0.446512880115091604
10 0.200000000000000011 0.134063995506174150 0.402192060937331175
11 0.220000000000000001 0.141687998283193534 0.360660430767116402
12 0.239999999999999991 0.148507999118433237 0.321767400120490987
13 0.260000000000000009 0.154575327084229969 0.285369900620602468
14 0.280000000000000027 0.159938522096849084 0.251332026710574419
15 0.299999999999999989 0.164643474728420641 0.219524693900195078
16 0.320000000000000007 0.168733559342904987 0.189825312800676715
17 0.340000000000000024 0.172249760864668727 0.162117478234802465
18 0.359999999999999987 0.175230795474316581 0.136290672741392865
19 0.380000000000000004 0.177713225513107781 0.112239983823256881
20 0.400000000000000022 0.179731568864560570 0.0898658343166999773
21 0.419999999999999984 0.181318403069687717 0.0690737252883046882
22 0.440000000000000002 0.182504464420687129 0.0497739908911289108
23 0.460000000000000020 0.183318742266808804 0.0318815646377390433
24 0.479999999999999982 0.183788568755511195 0.0153157565716578320
25 0.5 0.183939704221884465 4.08419086883604621E-8
26 0.520000000000000018 0.183796418429634401 -0.0141381467925742240
27 0.540000000000000036 0.183381567857668515 -0.0271676019807839605
28 0.560000000000000053 0.182716669217487304 -0.0391535357516522645
29 0.579999999999999960 0.181821969378139686 -0.0501577498528595900
30 0.599999999999999978 0.180716511867434454 -0.0602388038506180140
31 0.619999999999999996 0.179418200110394555 -0.0694521743669628405
32 0.640000000000000013 0.177943857558579527 -0.0778504068142278072
33 0.660000000000000031 0.176309284856870752 -0.0854832599702608359
34 0.680000000000000049 0.174529314187597984 -0.0923978437225306121
35 0.700000000000000067 0.172617860925471212 -0.0986387502945474809
36 0.719999999999999973 0.170587972730655124 -0.104248179253945611
37 0.739999999999999991 0.168451876201472006 -0.109266056588119206
38 0.760000000000000009 0.166221021202630853 -0.113730148120445823
39 0.780000000000000027 0.163906122979543406 -0.117676167527839340
40 0.800000000000000044 0.161517202164191437 -0.121137879208628521
41 0.820000000000000062 0.159063622773142788 -0.124147196238530849
42 0.839999999999999969 0.156554128293666411 -0.126734273641762762
43 0.859999999999999987 0.153996875949458961 -0.128927597194074095
44 0.880000000000000004 0.151399469233258754 -0.130754067964697240
45 0.900000000000000022 0.148768988789577172 -0.132239082794837953
46 0.920000000000000040 0.146112021726915342 -0.133406610901388389
47 0.940000000000000058 0.143434689435146284 -0.134279266785993751
48 0.959999999999999964 0.140742673980222749 -0.134878379621434813
49 0.979999999999999982 0.138041243145009956 -0.135224059279484138
50 1 0.135335274181834636 -0.135335259156935755

이 계산기의 기능

이 도구는 \(y'' = F(x, y, y')\) 형태로 표현된 2계 상미분방정식을 구간 \([x_0, x_n]\)에서 고전적인 4차 룽게-쿠타(RK4) 방법으로 수치적으로 풉니다. 우변 \(F\)를 \(x, y, p\)에 대한 수식으로 입력하고(여기서 \(p\)는 \(y'\)를 의미합니다), 초기 조건 \(y(x_0)\)와 \(y'(x_0)\), 구간의 양 끝점, 그리고 분할 단계 수를 지정하면 됩니다. 계산기는 \(x, y, y'\) 값의 전체 표와 함께 끝점에서의 값을 돌려줍니다. 순수한 수치해석이므로 국가나 분야에 관계없이 보편적으로 적용됩니다.

사용 방법

\(F(x, y, p)\)를 입력합니다 — 예를 들어 \(y'' + 4y' + 4y = 0\)의 경우 -4*p - 4*y로 쓰면 됩니다. \(x_0\), \(y_0 = f(x_0)\), \(p_0 = y'(x_0)\)을 설정합니다. 끝점 \(x_n\)을 정하고 분할 구간 수 \(n\)을 선택합니다(\(n\)이 클수록 단계 크기 \(h = (x_n - x_0)/n\)이 작아지고 정확도가 높아집니다). 표시할 유효 숫자 자릿수를 고릅니다. RK4의 오차는 전역적으로 \(O(h^4)\)이므로, \(n\)을 두 배로 늘리면 오차는 대략 16분의 1로 줄어듭니다.

공식 설명

2계 ODE는 \(p = y'\)로 두어 1계 방정식 두 개로 이루어진 연립계로 변환됩니다. 즉 \(y' = p\)이고 \(p' = F(x, y, p)\)가 됩니다. RK4는 매 단계마다 네 번의 가중 기울기 계산(\(y\)에 대한 \(k\), \(p\)에 대한 \(j\))을 사용해 두 미지수를 함께 전진시키며, 이를 \((k_1 + 2k_2 + 2k_3 + k_4)/6\)와 \((j_1 + 2j_2 + 2j_3 + j_4)/6\)로 결합합니다.

$$\begin{gathered} y^{\prime\prime} = F(x,\,y,\,p), \qquad p = y^{\prime} \\[1.2em] h = \frac{\text{xn} - \text{x0}}{\text{n}} \end{gathered}$$$$\begin{gathered} \begin{aligned} k_1 &= h\,p_i & l_1 &= h\,F(x_i,\,y_i,\,p_i) \\ k_2 &= h\left(p_i+\tfrac{l_1}{2}\right) & l_2 &= h\,F\!\left(x_i+\tfrac{h}{2},\,y_i+\tfrac{k_1}{2},\,p_i+\tfrac{l_1}{2}\right) \\ k_3 &= h\left(p_i+\tfrac{l_2}{2}\right) & l_3 &= h\,F\!\left(x_i+\tfrac{h}{2},\,y_i+\tfrac{k_2}{2},\,p_i+\tfrac{l_2}{2}\right) \\ k_4 &= h\left(p_i+l_3\right) & l_4 &= h\,F\!\left(x_i+h,\,y_i+k_3,\,p_i+l_3\right) \end{aligned} \\[1em] y_{i+1} = y_i + \tfrac{1}{6}\left(k_1+2k_2+2k_3+k_4\right), \quad p_{i+1} = p_i + \tfrac{1}{6}\left(l_1+2l_2+2l_3+l_4\right) \\[1.4em] \text{where}\quad \left\{ \begin{aligned} F &= F(x,\,y,\,p) \\ h &= \dfrac{\text{xn} - \text{x0}}{\text{n}} \\ x_0 &= \text{x0},\; y_0 = \text{y0},\; p_0 = \text{p0} \end{aligned} \right. \end{gathered}$$
광고
y''=F를 연립 시스템 y'=p와 p'=F(x,y,p)로 환원하는 과정을 보여주는 도식
2계 상미분방정식을 \(y\)와 \(p = y'\)에 대한 연립 1계 시스템으로 다시 씁니다.
x에서 x+h까지 한 단계에 걸친 네 가지 RK4 기울기 추정값 k1~k4를 보여주는 다이어그램
RK4는 한 단계마다 네 개의 기울기 추정값을 결합해 해를 \(x\)에서 \(x+h\)로 전진시킵니다.

풀이 예제

\(y'' = -4p - 4y\)를 \(x_0 = 0\), \(y_0 = 0\), \(p_0 = 1\), \(x_n = 1\)로 두고 단 한 번의 큰 단계(\(n = 1\), \(h = 1\))로 계산해 봅시다. 네 단계에서 \(k_1=1\), \(k_2=-1\), \(k_3=2\), \(k_4=-5\)와 \(j_1=-4\), \(j_2=2\), \(j_3=-6\), \(j_4=12\)를 얻습니다. 그러면 $$y(1) = \frac{1 - 2 + 4 - 5}{6} = -\frac{1}{3} = -0.3333$$이고 $$p(1) = 1 + \frac{-4 + 4 - 12 + 12}{6} = 1$$이 됩니다. 정확한 해는 \(y = x e^{-2x}\)이므로 \(y(1) = e^{-2} = 0.1353\)입니다. \(h = 1\)짜리 거대한 단계 하나로는 너무 거칠다는 것을 알 수 있습니다. \(n = 50\)이나 \(100\)을 사용하면 정확한 값으로 잘 수렴합니다.

자주 묻는 질문

거꾸로 적분할 수 있나요? 네 — \(x_n\)을 \(x_0\)보다 작게 설정하면 단계 크기 \(h\)가 음수가 되어 \(x_0\)에서 \(x_n\)으로 거꾸로 적분합니다.

단계 수가 적을 때 답이 이상해 보이는 이유는? RK4의 정확도는 단계 크기가 작은 것에 달려 있습니다. 연속된 결과가 더 이상 변하지 않을 때까지 \(n\)을 늘려 보세요.

F에는 어떤 함수를 쓸 수 있나요? + - * / ^, 괄호, 그리고 sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log/ln, log10, sqrt, abs와 상수 pi, e를 사용할 수 있습니다.

최종 업데이트: