천문학 시뮬레이션에 올바른 통합 방법은 무엇입니까?


15

뉴턴 물리학을 사용하여 시스템 (또는 그 문제에 대한 모든 물체)에서 행성의 움직임을 시뮬레이션 해야하는 간단한 천문학 시뮬레이터를 만들고 있습니다. 모든 몸체는 위치, 속도, 질량, 반경 및 결과 힘과 같은 특성을 갖는 유클리드 평면의 원입니다.

작은 시간 단계 (일반적으로 몇 밀리 초)로 유니버스를 업데이트하고 싶지만 위치 변경을 올바르게 계산하는 방법을 잘 모르겠습니다.

힘은 간단 fr = sum(G * body.m * bodyi.m / dist(body, bodyi)^2)합니다.

그러나 나는 거기서 어떻게 계속합니까?

나는 이것을 할 수있다 :

a = Fr/body.m
v += a*dt
position += v*dt

그러나 그것은 물론 거짓 일 것입니다. 위치 계산의 요소로 0.5를 추가하면 어떨까요?


논평하지 않는 것은 너무 재미있다 : 실제로 "식물"의 움직임을 시뮬레이션하는 것은 천문학적 문제이다 ;-)
Wolfgang Bangerth

답변:


17

당신은 본질적으로 답을 얻었습니다-0.5의 요소가 필요하지 않습니다.

본질적으로 1 차 ODE의 2 차원 시스템이 있습니다 : 다 아마 제외한 시간의 함수 인m및 도트 시간 유도체를 나타낸다. 이것에 대해 간단하고 순방향 유화 식 1 차 미분을 수행하면 x n + 1xn

엑스˙=VV˙=에프미디엄,
미디엄 또는 XN+1
엑스+1엑스Δ=VV+1VΔ=에프미디엄,
여기에서는n으로시간 단계를 인덱싱하고있습니다.
엑스+1=엑스+ΔVV+1=V+Δ에프미디엄.

그러나 Forward-Euler는 본질적으로 불안정합니다. 다행히도 모퉁이를 돌면 상징적 인 방법 이 있습니다. (이 링크 된 기사는 스텁에 가깝지만 유용한 링크를 포함 할 수 있습니다.) 핵심은 t n + 1 / 2의 속도를 사용하여 에서 t n + 1 로 위치를 이동시키는 것 입니다. 즉, 당신은 주어진 가정 X 0V (1) / 2 각 입자에 대해. 그런 다음 x n + 1을 사용할 수 있습니다 +1+1/2엑스0V1/2

엑스+1=엑스+ΔV+1/2V+1/2=V1/2+Δ에프미디엄

V1/2V0

마지막으로,이 답변은 일반적인 뉴턴 중력 시뮬레이션에 적용됩니다. 질문을 전달할 때 언급했듯이 완벽한 원을 원한다면 행성이 서로 상호 작용하지 않고 초기 조건이 올바르게 선택되는 이상적인 시스템을 제외하고는 완벽한 원을 얻지 못할 것입니다. 그렇다면 그러한 물체의 각속도 (단위 시간당 라디안)는 간단하기 때문에 전혀 통합 할 필요가 없습니다.

ω=미디엄아르 자형,
어디 미디엄 중심 물체의 질량이며 아르 자형궤도의 반경입니다. 시뮬레이션의 정확도를 테스트하는 데 사용할 수 있습니다.

이봐, 내가 왜 그 0.5요소 가 필요하지 않은지 설명 할 수 있니 그것은 n-1/2dt몇 초 전의 속도를 취하는 것과 같은 일을하는 것 같습니다.
jcora

속도가 같은 경우에만 동일합니다 (1) 원하는 것은 평균의 1 차 추정치입니다. VV+1 (후자는 당신이 모르는)의 의미가 아닙니다. V0.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.