[수치해석] Runge Kutta 4th order 증명

2022. 3. 16. 20:26·수치해석 Numerical Analysis

Introduction

 

설명을 시작하기 앞서 우리가 구하고자 하는 Ordinary Differential Equation(ODE)는 다음과 같습니다.

$y' = f(y,t)$

 

저번 글에서 작성했던 RK4 식은 아래와 같습니다.

 

$y^{n+1}=y^{n}+\frac{1}{6} k_{1}+\frac{1}{3}\left(k_{2}+k_{3}\right)+\frac{1}{6} k_{4}$
$k_{1}=\Delta t f\left(y^{n}, t^{n}\right)$
$k_{2}=\Delta t f\left(y^{n}+\frac{1}{2} k_{1}, t^{n}+\frac{\Delta t}{2}\right)$
$k_{3}=\Delta t f\left(y^{n}+\frac{1}{2} k_{2}, t^{n}+\frac{\Delta t}{2}\right)$
$k_{4}=\Delta t f\left(y^{n}+k_{3}, t^{n}+\Delta t\right)$

 

RK2에 대해서는 증명을 했지만, RK4가 더 많이 쓰이기 때문에 RK4에 대해서도 동일하게 증명을 하도록 하겠습니다. 

(되도록이면 이전 글을 봐주시기 바랍니다.)

 

RK2를 다시 떠올리면 다음과 같습니다.

$t^{n}$에서 $t^{n+1}$로 $\Delta t$만큼 적분을 할 때 다음 그림처럼 중간에 한 스텝을 더 추가합니다.

이 때 그 스텝의 시간은 $t^{n}+\alpha \Delta t$이고, 그 시간에 대응하는 상태값은 $y^{n}+\beta \Delta t f(y^{n},t^{n})$을 사용합니다. 시간이 $\alpha \Delta t$만큼 지났으므로 상태도 변했을 것이기 때문입니다. $\beta=0$이면 원래 시작했던 상태인 $y^{n}$을 쓰는 것이고 $\beta = 1$을 쓰면 $y^{n}$에서 구한 기울기를 가지고 예측한 다음 스텝의 상태인 $y^{n}+\Delta t f(y)$를 쓰는 것입니다.

 

$y^{n+1}=y^{n}+\gamma_{1} k_{1}+\gamma_{2} k_{2}$

$k_{1}=\Delta t f\left(y^{n}, t^{n}\right)$
$k_{2}=\Delta t f\left(y^{n}+\beta k_{1}, t^{n}+\alpha \Delta t\right)$

 

이렇게 $y=y^{n}, \; t=t^{n}$일 때 한 번 기울기를 구하고 $y=y^{n}+\beta \Delta t f(y^{n},t^{n}), \; t=t^{n}+\alpha \Delta t$일 때 한 번 기울기를 구한 다음에 이 기울기에 가중치를 곱해서 조합한 결과로 예측하는 것이 RK2입니다.

 

RK2 방법에서는 중간 스텝이 $t^{n}$과 $t^{n+1}$의 정가운데라고 생각하면 $\alpha=\beta = \frac{1}{2} \quad \gamma_{1}=\gamma_{2}=\frac{1}{2}$

 

 

마찬가지로 RK4는 기울기를 구하는 과정이 4번이 됩니다. 위에서는 시작 위치에서 한 번, 중간 위치에서 한 번 기울기를 구하고 이 기울기를 weighted sum을 했었습니다.

마찬가지로 RK4 역시 첫 번째는 현재 위치에서 기울기를 구하고($k_{1}$), 그 기울기를 바탕으로 $\Delta t$의 절반만큼 state $y$와 $t$가 이동했을 때 기울기를 또 구합니다.($k_{2}$)

이 때 구한 기울기만큼의 값을 가지고 또 중간 지점의 상태와 시간을 전제로 기울기를 구합니다. ($k_{3}$) 마지막으로 구한 기울기로 $\Delta t$만큼 시간이 지났을 때 그 상태와 시간에서 기울기를 구합니다. ($k_{4}$)

 

이렇게 구했을 때 최대한 정확도(accuracy)를 높일 수 있는 $\gamma_{1},\gamma_{2},\gamma_{3},\gamma_{4}$를 구하도록 합니다.

 

 

(주의 : 여기 증명을 다시 검토하는 과정에서 증명 과정은 똑같은데 globally 4th order, locally 5th order가 나오도록 해야하는데 증명에서 부족한 부분이 있어서 거기까지 나오지 않았습니다. 나중에 다시 수정하도록 하겠습니다.

 

이후 수정 : 항이 너무 많아서 MATLAB으로 돌려가면서 해보았는데 아래의 계수로 선정했을 때 $\Delta t^4$항까지 사라지면서 locally $\Delta t^5$이 성립하였습니다. 수식을 보충하고 싶으나 너무 길어져서.. 나중에야 가능할 것 같습니다.)


증명과정

 

 

\begin{align} y^{n+1}&=y^{n}+\gamma_{1} k_{1}+\gamma_{2} k_{2}+ \gamma_{3} k_{3}+\gamma_{4} k_{4}&\cdots(1)\\
k_{1}&=\Delta t f\left(y^{n}, t^{n}\right)&\cdots (2)\\
k_{2}&=\Delta t f\left(y^{n}+\frac{1}{2} k_{1}, t^{n}+\frac{\Delta t}{2}\right)& \cdots (3)\\
k_{3}&=\Delta t f\left(y^{n}+\frac{1}{2} k_{2}, t^{n}+\frac{\Delta t}{2}\right)& \cdots (4)\\
k_{4}&=\Delta t f\left(y^{n}+k_{3}, t^{n}+\Delta t\right)&\cdots (5)\end{align}

 

 

(1)번 식의 목적은 $k_{1,2,3,4}$의 조합으로 최대한 accuracy를 높이는 것, 즉 $\theta(\Delta t^{n})$에서 n을 높이는 것입니다.

 

원래 taylor expansion으로 얻을 수 있는 $y^{n+1}$(exact solution)은 다음과 같습니다.

 

$y^{n+1}=y^{n}+y^{\prime} \Delta t+y^{\prime \prime} \frac{\Delta t^{2}}{2 !}+y^{\prime \prime \prime} \frac{\Delta t^{3}}{3 !}+\cdots$

 

여기서

$y' = f(y,t)=\frac{dy}{dt}$입니다.

 

또한 f는 y와 t에 대한 함수이고, y 역시 t에 dependent하기 때문에 미분할 때 더 복잡해집니다. 만약 y와 t에 independent했으면 여러 번 미분하는 것이 비교적 덜 복잡할 것입니다.

 

위 식의 $y^{\prime\prime}$과 $y^{\prime \prime \prime}$을 구해보겠습니다. 이렇게 taylor series expansion을 자세히 구하려는 이유는 나중에 위의 (1)번 식이 taylor expansion에서 나온 식(exact solution)과의 차이가 적도록 $\gamma$를 선정하기 위해서입니다.

 

$$y^{\prime \prime}=\frac{d f\left(y, t\right)}{d t}=\frac{\partial f}{\partial y} \frac{d y}{d t}+\frac{\partial f}{\partial t}=f_{y} y^{\prime}+f_{t}=f_{y} f+f_{t} \quad \cdots (6)$$

$$\begin{aligned} y^{\prime \prime \prime}=\frac{d\left(f_{y} f+f_{t}\right)}{d t} &=\left(f_{y} f+f_{t}\right) f_{y}+f\left(f_{y y} f+f_{y t}\right)+f_{y t} f+f_{t t} \\ &=f_{y}^{2} f+f_{y} f_{t}+f_{y y} f^{2}+2 f f_{y t}+f_{t t} \quad \cdots (7)\end{aligned}$$

 

위 식을 쓸 때 보충설명을 한 식은 아래에 있습니다.

 

$$\begin{aligned}
\frac{d f_{y} f}{d t} &=\frac{d f}{d t} f_{y}+f \frac{d f_{y}}{d t} \\
&=\left(f_{y} f+f_{t}\right) f_{y}+f\left(f_{yy} f+f_{y t}\right)
\end{aligned}$$


$$\frac{d f_{t}}{d t} =\frac{\partial f_{t}}{\partial y} \frac{d y}{d t}+\frac{\partial f_{t}}{\partial t}$$

 

이제 (6)번식과 (7)번식을 염두에 두고 있어야 합니다.

 

다시 RK4 식으로 돌아오겠습니다.

각 $k_{1},k_{2},k_{3},k_{4}$가 어떻게 전개되는지 해보겠습니다.

 

여기서 시작하기 앞서 미리 알아야하는게 있는데 변수가 2개인 함수가 있을 때 개별 변수의 변화에 대해 다음과 같이 나타낼 수 있습니다.

 

$$f(y+\Delta y, t+\Delta t)=f(y,t) + \Delta y \frac{\partial f}{\partial y} + \Delta t \frac{\partial f}{\partial t} + \frac{1}{2}\left( (\Delta y)^{2}\frac{\partial^{2}f}{\partial y^{2}}+2\Delta y \Delta t \frac{\partial^{2} f}{\partial y \partial t} + (\Delta t)^{2}\frac{\partial^2 f}{\partial t^2} \right)+\cdots$$

 


참고 : 여러 개의 변수일 때 일반화된 방법은 아래와 같이 위키피디아 문서에서 찾을 수 있었다.

 


이 식을 기억해두고 $k_{1},k_{2},k_{3},k_{4}$를 구하겠습니다.

또한 앞에서도 이야기했던 것처럼 $f^{n}$은 $f(y^{n},t^{n})$을 의미합니다.

 

$k_{1}=\Delta t f\left(y^{n}, t^{n}\right) $

 

$$\begin{align} k_{2}&=\Delta t f\left(y^{n}+\frac{1}{2} k_{1}, t^{n}+\frac{\Delta t}{2}\right)\\ &=\Delta t f\left(y^{n}, t^{n}\right)+\Delta t \frac{1}{2} k_{1} f_{y}^{n}+\Delta t\left(\frac{1}{2} \Delta t\right) f_{t}^{n}+\Delta t \frac{1}{2}\left(\frac{k_{1}^{2}}{4} \frac{\partial^{2} f}{\partial y^{2}}+2 \frac{\Delta t}{2} \frac{k_{1}}{2} \frac{\partial f}{\partial y \partial t}+\frac{\Delta t^{2}}{4} \frac{\partial^{2} f}{\partial t^{2}}\right) + \cdots \\ &=\Delta t f\left(y^{n}, t^{n}\right)+\frac{\Delta t^{2}}{2} f^{n} f_{y}^{n}+\frac{\Delta t^{2}}{2} f_{t}^{n}+\frac{\Delta t^{3}}{8} F_{3}+\theta\left(\Delta t^{4}\right) \end{align}$$

 

여기서 $F_{3}$은 제가 임의로 정한 문자입니다.

구체적인 식은 다음과 같습니다.

 

$\begin{align}&\frac{1}{2}\left(\frac{k_{1}^{2}}{4} \frac{\partial^{2} f}{\partial y^{2}}+2 \frac{\Delta t k_{1}}{4} \frac{\partial f}{\partial y \partial t}+\frac{\Delta t^{2}}{4} \frac{\partial^{2} f}{\partial t^{2}}\right)\\
&\approx \frac{1}{8}\left(\Delta t^{2} f^{2} f_{y y}+2 \Delta t^{2} f f_{y t}+\Delta t^{2} f_{t t}\right) (\because k_{1}=\Delta t f)\\
&\approx \frac{\Delta t^{2}}{8}\left(f^{2} f_{y y}+2 f f_{y t}+f_{t t}\right)\end{align}$

$F_{3}:= f^{2} f_{y y}+2 f f_{y t}+f_{t t}$

 

이제 $k_{3}$를 구하겠습니다.

 

$\begin{aligned} k_{3}&=\Delta t f\left(y^{n}+\frac{1}{2} k_{2}, t^{n}+\frac{\Delta t}{2}\right)\\ &=\Delta t f\left(y^{n}, t^{n}\right)+\Delta t \frac{1}{2} k_{2} f_{y}^{n}+\Delta t\left(\frac{1}{2} \Delta t\right) f_{t}^{n}+\Delta t \frac{1}{2}\left(\frac{k_{2}^{2}}{4} \frac{\partial^{2} f}{\partial y^{2}}+2 \frac{\Delta t}{2} \frac{k_{2}}{2} \frac{\partial f}{\partial y \partial t}+\frac{\Delta t^{2}}{4} \frac{\partial^{2} f}{\partial t^{2}}\right)\cdots+\theta\left(\Delta t^{4}\right) \\ &=\Delta t f^{n}+\frac{\Delta t^{2}}{2} f^{n} f_{y}^{n}+\frac{\Delta t^{3}}{4} f^{n}\left(f_{y}^{n}\right)^{2}+\frac{\Delta t^{3}}{4} f_{t}^{n} f_{y}^{n}+\frac{\Delta t^{2}}{2} f_{t}^{n} +\frac{\Delta t^{3}}{8} F_{3}+\theta\left(\Delta t^{4}\right) \end{aligned}$

 

이 식을 보면 $k_{2}$를 직접 대입하되 $\Delta t^{4}$ 이상의 항은 $\theta(\Delta t^{4})$에 넣어서 표시하지 않았습니다. 또한 여기서도 위와 같이 식을 간편하게 만들기 위해 $F_{3}$으로 표현했습니다.

 

 

$\frac{1}{8}\left(k_{2}^{2} f_{y y}+2 \Delta t k_{2} f_{y t}+\Delta t^{2} f_{t t}\right)$

$\approx \frac{\Delta t^{2}}{8}\left(f^{2} f_{yy}+2 f_{yt}+f_{t t}\right)\; (\because k_{3}\approx \Delta t f)$

$\approx \frac{\Delta t^{2}}{8}F_{3}$

 

마지막으로 $k_{4}$를 구합니다.

 

 

$\begin{aligned} k_{4}&=\Delta t f\left(y^{n}+k_{3}, t^{n}+\Delta t\right)\\ &=\Delta t f\left(y^{n}, t^{n}\right)+\Delta t k_{3} f_{y}^{n}+\Delta t(\Delta t) f_{t}^{n}+\frac{\Delta t^{3}}{2}F_{3}+\cdots+\theta\left(\Delta t^{4}\right) \\ &= \Delta t f^{n}+\Delta t^{2} f^{n} f_{y}^{n}+\frac{\Delta t^{3}}{2}\left(f^{n}\left(f_{y}^{n}\right)^{2}+f_{t}^{n} f_{y}^{n}\right)+\Delta t^{2} f_{t}^{n} +\frac{\Delta t^{3}}{2} F_{3}+\theta\left(\Delta t^{4}\right) \end{aligned}$

 

$k_{4}$에서는 $\frac{\Delta t^{3}}{8}F_{3}$ 대신 $\frac{\Delta t^{3}}{2}F_{3}$를 씁니다.

 

$\frac{1}{2}\left(k_{3}^{2} f_{4 y}+2 \Delta t k_{3} f_{y t}+\Delta t^{2} f_{t t}\right)$
$\approx \frac{\Delta t^{2}}{2}\left(f_{4 y}+2 f_{4 t}+f_{t t}\right)\; (\because k_{3}\approx \Delta t f)$

 

이렇게 구한 $k$를 가중치 $\gamma$를 곱해서 정리합니다.

 

$\begin{aligned}y^{n+1}&=\gamma_{1} k_{1}+\gamma_{2} k_{2}+\gamma_{3} k_{3}+\gamma_{4} k_{4}\\&=\left(\gamma_{1}+\gamma_{2}+\gamma_{3}+\gamma_{4}\right) \Delta t f^{n}+\left(\gamma_{2}+\gamma_{3}+2 \gamma_{4}\right) \frac{\Delta t^{2}}{2}\left(f^{n} f_{y}^{n}+f_{t}^{n}\right)+\\&\Delta t^3\left[\frac{\gamma_{2}}{8} F_{3}+\frac{\gamma_{3}}{8} F_{3}+\frac{\gamma_{4}}{2} F_{3}+ \left(\frac{\gamma_{3}}{4}+\frac{\gamma_{4}}{2}\right)\left\{ f^{n}\left(f_{n}^{n}\right)^{2}+f_{t}^{n} f_{y}^{n} \right\} \right]+\theta\left(\Delta t^{4}\right)\end{aligned}$

 

이 식을 보고 다시 위에서 exact solution을 구한 것과 비교합니다.

 

$\text{Exact solution : }$

$\begin{aligned}y^{n+1}&=y^{n}+y^{\prime} \Delta t+y^{\prime \prime} \frac{\Delta t^{2}}{2 !}+y^{\prime \prime \prime} \frac{\Delta t^{3}}{3 !}+\cdots \\&=y^{n}+f^{n} \Delta t +\left(f_{y}^{n} f^{n}+f_{t}^{n}\right)\frac{\Delta t^{2}}{2 !} + \left((f_{y}^{n})^{2} f^{n}+f_{y}^{n} f_{t}^{n}+f_{y y}^{n} (f^{n})^{2}+2 f^{n} f_{y t}^{n}+f_{t t}^{n} \right)\frac{\Delta t^{3}}{3 !}\cdots\end{aligned}$

 

이 식과 위 식에서 $\Delta t^{3}$항까지 같게 만들려면 다음 식을 만족해야합니다.

 

또한 주목할 점은 exact solution의 $(f_{y}^{n})^{2} f^{n}+f_{y}^{n} f_{t}^{n}+f_{y y}^{n} (f^{n})^{2}+2 f^{n} f_{y t}^{n}+f_{t t}^{n}$와

$F_{3}+f^{n}\left(f_{n}^{n}\right)^{2}+f_{t}^{n} f_{y}^{n}$이 같은 식이라는 것입니다.

 

따라서 $\gamma$에 대한 조건은 아래와 같습니다. (각 항을 일대일 대응해서 같도록 만들면 됩니다.)

 

$\left\{\begin{array}{l}\gamma_{1}+\gamma_{2}+\gamma_{3}+\gamma_{4}=1 \\ \gamma_{2}+\gamma_{3}+2 \gamma_{4}=1 \\ \frac{\gamma_{3}}{4}+\frac{\gamma_{4}}{2}=\frac{1}{6} \\ \frac{1}{8}\left(\gamma_{1}+\gamma_{3}+4 \gamma_{4}\right)=\frac{1}{6}\end{array}\right.$

 

각각을 풀면

 

$\gamma_{1}=\gamma_{4}=\frac{1}{6}, \quad \gamma_{2}=\gamma_{3}=\frac{2}{6}$

 

다음과 같은 일반적인 RK4가 나옵니다.

또한 이렇게 $\gamma$를 설정할 시에는 accuracy가 globally 4th order가 나온다고 합니다.

 

 

 

 


Conclusion

 

이 글에서는 일반적인 RK4를 RK2를 증명한 방법과 유사하게 증명하였습니다.

 

그러나 위의 방법은 일반적으로 사용되는 Runge Kutta 4th order 방법임을 알립니다. 원래는 더 일반화해서 각 계수를 구하므로, 무수히 많은 RK4 방법이 존재합니다.

 

Explicit RK4 방법의 일반적인 공식은 다음과 같습니다.

 

$y_{n+1}=y_{n}+h \sum_{i=1}^{N} \gamma_{i} k_{i}$

 

$\begin{aligned} k_{1} &=f\left(t_{n}, y_{n}\right) \\ k_{2} &=f\left(t_{n}+c_{2} h, y_{n}+h\left(a_{21} k_{1}\right)\right) \\ k_{3} &=f\left(t_{n}+c_{3} h, y_{n}+h\left(a_{31} k_{1}+a_{32} k_{2}\right)\right) \\ & \cdots \\ k_{N} &=f\left(t_{n}+c_{N} h, y_{n}+h\left(a_{N,1} k_{1}+a_{N,2} k_{2}+\cdots+a_{N, N-1} k_{N-1}\right)\right) \end{aligned}$

 

$\gamma_{i}$는 가중치이고, $k_{i}$는 위에서 구한 $k_{1},k_{2}...$와 동일한 의미입니다.

다만 $k_{n}$일 때 $f$ 안에 $k_{n-1}$일 뿐 아니라 $k_{n-2},...$ 등 이전에 구한 $k$을 조합해서 쓸 수 있습니다.

따라서 엄청나게 많은 계수에 자유도가 존재합니다. 그래서 RK4에는 unique한 방법이 있는게 아니라 무수히 많은 것입니다.

 

자세한 내용은 위키피디아를 참고해주세요.

https://ko.wikipedia.org/wiki/%EB%A3%BD%EA%B2%8C-%EC%BF%A0%ED%83%80_%EB%B0%A9%EB%B2%95#%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8_4%EC%B0%A8_%EB%A3%BD%EA%B2%8C-%EC%BF%A0%ED%83%80_%EB%B0%A9%EB%B2%95

 

룽게-쿠타 방법 - 위키백과, 우리 모두의 백과사전

수치 해석에서, 룽게-쿠타 방법(Runge-Kutta方法, 영어: Runge–Kutta method)은 적분 방정식 중 초기값 문제를 푸는 방법 중 하나이다. 1900년 경 독일의 수학자 카를 다비트 톨메 룽게와 마르틴 빌헬름 쿠

ko.wikipedia.org

 

저작자표시 비영리 변경금지

'수치해석 Numerical Analysis' 카테고리의 다른 글

[수치해석] 미분방정식을 시간이 작아지는 방향으로(역으로) 풀 때  (0) 2023.09.17
[수치해석] Numerical solution of ODE (7) Leap frog method  (0) 2022.03.15
[수치해석] Numerical solution of ODE (6) Runge-Kutta method  (0) 2021.09.26
[수치해석] Numerical solution of ODE (5) Predictor-Corrector Method  (0) 2021.09.26
[수치해석] Numerical solution of ODE (4) Trapezoidal method (Crank-Nicolson)  (0) 2021.09.24
'수치해석 Numerical Analysis' 카테고리의 다른 글
  • [수치해석] 미분방정식을 시간이 작아지는 방향으로(역으로) 풀 때
  • [수치해석] Numerical solution of ODE (7) Leap frog method
  • [수치해석] Numerical solution of ODE (6) Runge-Kutta method
  • [수치해석] Numerical solution of ODE (5) Predictor-Corrector Method
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (458)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (21)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 유학 생활 Daily (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    obsidian
    논문작성법
    논문작성
    Statics
    Dear abby
    matplotlib
    pytorch
    우분투
    LaTeX
    에러기록
    MATLAB
    텝스
    생산성
    Python
    Linear algebra
    인공지능
    IEEE
    Julia
    teps
    WOX
    딥러닝
    고체역학
    옵시디언
    Zotero
    텝스공부
    수치해석
    Numerical Analysis
    JAX
    수식삽입
    ChatGPT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[수치해석] Runge Kutta 4th order 증명
상단으로

티스토리툴바