Доброго времени суток!
Я пытаюсь реализовать программу для моделирования классического(нерелятивистского) гравитационного взаимодействия N-тел с помощью метода Рунге-Кутты, но немного запутался в его интерпретации, поэтому не совсем уверен в своих рассуждениях. Буду очень благодарен если поможете разобраться.
Моделирование производится на основе Ньютоновских уравнений движения:
![$$
\begin{cases}
\frac {d \vec{v}} {d t} = \vec{a}, \\
\frac {d \vec{r}} {d t} = \vec{v}. \\
\end{cases}
$$ $$
\begin{cases}
\frac {d \vec{v}} {d t} = \vec{a}, \\
\frac {d \vec{r}} {d t} = \vec{v}. \\
\end{cases}
$$](https://dxdy-01.korotkov.co.uk/f/4/0/e/40e5cfa4352eb456e642583a86f2f52a82.png)
,где
![$\vec{a}$ $\vec{a}$](https://dxdy-04.korotkov.co.uk/f/7/e/0/7e0ed847ee1038211ab4f346a0aea6b082.png)
и
![$\vec{v}$ $\vec{v}$](https://dxdy-01.korotkov.co.uk/f/c/d/7/cd74c822d31d457e590f28706c11499d82.png)
- ускорение и скорость соответственно. Ускорение считается самым простым способом(в планковской системе единиц):
![$$\vec{a_n} = \sum^{N}_{k=0} {m_k \frac {(\vec{r_n} - \vec{r_k})} {|r_n - r_k|^3}}$$ $$\vec{a_n} = \sum^{N}_{k=0} {m_k \frac {(\vec{r_n} - \vec{r_k})} {|r_n - r_k|^3}}$$](https://dxdy-04.korotkov.co.uk/f/f/1/2/f1246d489e3fd771f62878a31519458982.png)
, здесь
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
и
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
- номера тел.
Проблема заключается в том, что для работы метода в правой части уравнений должна быть функция от
двух переменных, но, на мой взгляд, и
![$\vec{a}$ $\vec{a}$](https://dxdy-04.korotkov.co.uk/f/7/e/0/7e0ed847ee1038211ab4f346a0aea6b082.png)
и
![$\vec{v}$ $\vec{v}$](https://dxdy-01.korotkov.co.uk/f/c/d/7/cd74c822d31d457e590f28706c11499d82.png)
зависят только от времени (не укладывается в голове, чтобы ускорение зависело еще и от скорости, а скорость - от координаты). Если это предположение верно, то все, что остается - это считать функции независимыми от второй переменной, и тогда итерационные формулы будут выглядеть так:
![$$\vec{r}_{n+1} = \vec{r_n} + \frac {1} {6} \left(\vec{k_1} + 2\vec{k_2} + 2\vec{k_3} + \vec{k_4}\right), \text{где:}$$ $$\vec{r}_{n+1} = \vec{r_n} + \frac {1} {6} \left(\vec{k_1} + 2\vec{k_2} + 2\vec{k_3} + \vec{k_4}\right), \text{где:}$$](https://dxdy-02.korotkov.co.uk/f/5/2/4/5241aa0a22c490d15e08371f15cf77b382.png)
![$$\vec{k_1} = \vec{v}\Delta t$$ $$\vec{k_1} = \vec{v}\Delta t$$](https://dxdy-02.korotkov.co.uk/f/5/e/f/5eff4466bc94098ce7628354cb68f0f282.png)
![$$\vec{k_2} = \vec{k_3} = \left(\vec{v} + \frac {1} {2} \vec{a}\Delta t\right)\Delta t$$ $$\vec{k_2} = \vec{k_3} = \left(\vec{v} + \frac {1} {2} \vec{a}\Delta t\right)\Delta t$$](https://dxdy-01.korotkov.co.uk/f/4/e/8/4e8c65bc5e8b17da2db1f0f6a6effc1b82.png)
![$$\vec{k_4} = (\vec{v} + \vec{a}\Delta t)\Delta t$$ $$\vec{k_4} = (\vec{v} + \vec{a}\Delta t)\Delta t$$](https://dxdy-03.korotkov.co.uk/f/2/c/d/2cd9881ab75a4ba4d94a8c68d3f8ea1182.png)
И аналогичные слагаемые для скорости:
![$$\vec{k_1} = \vec{a}(t)\Delta t$$ $$\vec{k_1} = \vec{a}(t)\Delta t$$](https://dxdy-01.korotkov.co.uk/f/0/1/5/0152e203f736d29ca4bcd1ec6603921382.png)
![$$\vec{k_2} = \vec{k_3}= \vec{a}(t + \frac {\Delta t} {2})\Delta t$$ $$\vec{k_2} = \vec{k_3}= \vec{a}(t + \frac {\Delta t} {2})\Delta t$$](https://dxdy-02.korotkov.co.uk/f/5/9/9/599d3afc8244bdc9922e18d22c9be74782.png)
![$$\vec{k_4} = \vec{a}(t + \Delta t)\Delta t$$ $$\vec{k_4} = \vec{a}(t + \Delta t)\Delta t$$](https://dxdy-03.korotkov.co.uk/f/a/8/0/a805039e0fb4c77ad6493c72bedc4def82.png)
в которых
![$\vec{a}(t)$ $\vec{a}(t)$](https://dxdy-02.korotkov.co.uk/f/5/a/7/5a76ae02fa7c0daa4bd43c56514dd33482.png)
рассчитывается исходя из положений тел в указанные моменты времени найденных с помощью метода Эйлера.
Верно ли вышенаписанное? Это все еще метод Рунге-Кутты? Меня смущает, что формула для расчета координат при сворачивании превращается в школьное уравнение равноускоренного движения, а также, что
![$\vec{k_2}$ $\vec{k_2}$](https://dxdy-01.korotkov.co.uk/f/0/1/f/01fe8c962f351b74a970d9b8cc980f0c82.png)
и
![$\vec{k_3}$ $\vec{k_3}$](https://dxdy-02.korotkov.co.uk/f/d/5/9/d598beb38477e7a5f68a99f11bc1d90982.png)
всегда равны между собой и из-за чего создается впечатление, что порядок ошибки будет ниже, чем
![$O(\Delta t^4)$ $O(\Delta t^4)$](https://dxdy-03.korotkov.co.uk/f/a/8/d/a8ddc46adefe273be69f7158a1e14eff82.png)
.