이심률은 태양계의 행성들의 공전궤도를 구하려할때 필연적으로 만나게되는 주제이다.
이번에는 이심률과 기하학에 대하여 공부한 내용을 정리하고 공유해 보려한다!
이론적인 배경은 간략히...
실제로 이심률과 기하학의 관계가 실제로 그러한 지 컴퓨팅의 힘을 빌려 의구심을 해소해 보려한다.
만약 P(x, y), F(0, 0), H(d, y) 일 때 이심률 e = PF / PH 하면, => x2 + y2 = e2 * (d - x)2 위 식에 r = √(x2 + y2) , x = r * cosθ 를 대입하여 정리하면, => r = (d * e)/(1 + e * cosθ) |
1. 두 초점 F(-c,0), F'(-c,0)으로 부터의 거리의 합이 2a인 타원의 방정식
√[(x-c)2+y2] + √[(x+c)2+y2] = 2a ⇒ (a2-c2)x2 + a2y2 = a2(a2-c2) , a>b>0
⇒ x2/a2 + y2/b2 = 1 , c2 = a2 - b2
2. 초점(-p,0)과 준선 x=p 과의 거리가 같은 포물선의 방정식
(-x+p)2 = (x+p)2 + y2 ⇒ y2 = -4px
3. 두 초점 F(-c,0), F'(-c,0)으로 부터의 거리의 차가 2a인 쌍곡선의 방정식
√[(x-c)2+y2] - √[(x+c)2+y2] = 2a ⇒ (a2-c2)x2 + a2y2 = a2(a2-c2) , c>a>0
⇒ x2/a2 - y2/b2 = 1 , c2 = a2 + b2
이심률 e를 변화시킴에 따라 궤적이 원(e=0)에서 타원(e<1), 포물선(e=1), 쌍곡선(e>1)으로 변하는 지
직접확인해 보자^^;
먼저 이를 위한 소스코드이다!
import numpy as np
import matplotlib.pyplot as plt
N = 256
th = np.arange(0, 2*np.pi, 2*np.pi/N)
es = [0, 0.5, 1, 1.5, 3]
# if P(x,y), F(0,0), H(d,y) then e = PF / PH -> x**2 + y**2 = e**2(d - x)**2
d = 10
plt.figure()
plt.plot(0, 0, 'x')
plt.text(0, 0, 'Focus')
plt.plot([d, d], [-30, 30], 'r')
plt.text(d, 10, 'directrix d='+str(d))
plt.axis('equal') #plt.axis('square')
plt.axis([-30, 30, -30, 30])
for e in es :
l = d*e # l = u**2/(G*M) , u = r**2*w
r = l / (1 + e*np.cos(th)) # r = x**2 + y**2 , x = rcos(th)
if e<1 : # circle, ellipse
a = r[0]/(1-e) # a = (r[0] + r[0]*(1+e)/(1-e))/2
c = a - r[0]
b = np.sqrt(a**2 - c**2) # c**2 = a**2 - b**2
print('e =', e, 'c =', c, 'a =', a, 'b =', b)
elif e==1 : # parabola
p = d/2
c = d/2
print('e =', e, 'c =', c, 'p =', p)
else : # hyperbola
a = -(r[0]/(1-e)) # a = -(r[0]+r[int(N/2)])/2
c = a + r[0]
b = np.sqrt(c**2 - a**2) # c**2 = a**2 + b**2
m = b/a # slope = np.tan(np.pi-np.arccos(-1/e))
print('e =', e, 'a =', a, 'c =', c, 'b =', b, 'slope =', m)
plt.plot(r*np.cos(th), r*np.sin(th), '.', label=str(e))
plt.pause(1)
plt.legend(loc='best')
plt.show(0)
다음은 실행한 결과 그래프이다!
초점F를 태양으로 보고 각 행성이 특정한 이심률e로 타원궤도 공전하는 모습을 상상하면 신기합니다.ㅎㅎ
또 이것을 물리적 의미로 해석해보면, 태양(초점F)에서 적정한 거리 r과 각속도w로 공전하는 행성의 궤도는
원, 타원, 포물선, 쌍곡선이 된다는 것이다!
이것의 증명은 조금 길고 복잡해서,,,
이미 좋은 블로그 내용이 있어 http://zetablog.tistory.com/31?category=609843 으로 대신하려 한다.
<심화자료>
1. https://en.wikipedia.org/wiki/Kepler_orbit
2. https://blog.naver.com/jung2381187/220961166542
3. https://blog.naver.com/hooncha10542/222794535539
4. https://boole-sit.tistory.com/60
'파이썬' 카테고리의 다른 글
GPIB를 이용한 네트워크 분석기 활용 (0) | 2022.05.08 |
---|---|
파이썬 GUI 실행파일 만들기(전력변환기) (0) | 2021.12.03 |
파이썬으로 별자리판 만들기(1) (0) | 2021.01.15 |
구면삼각법과 적도좌표계 (0) | 2020.04.01 |
스크린 캡쳐 프로그램 (0) | 2019.09.22 |