2016-08-29 2 views
2

이 코드가 오늘 날짜까지 행성 운동의 30도마다의 날짜를 출력하지만, 어떤 이유로 그것이 360도에서 멈추는 것을 원합니다. 왜 코드가 여기에서 멈추고 390도, 420, 450 ...... 등을 통과하지 못합니까?pyephem이 날짜보다 360도 이상 보일 수 있습니까?

from ephem import Venus, Date, degrees, newton 
import datetime 
v = Venus() 
start_date = '2014/2/2 00:00' 
v.compute(start_date) 
Ls0 = v.hlon 
print "VENUS",start_date, Ls0 
print "" 
arc = 0 
while True: 
    d = start_date 
    today = datetime.date.today() 
    arc = arc + degrees('30:00:00') 
    if d == today: 
     break 

def Ls(date): 
    v.compute(date) 
    return degrees(v.hlon - Ls0).norm 

def thirty_degrees(date): 
    return Ls(date) - degrees(arc) 

def find_thirty_degrees(start_date): 
    start_date = Date(start_date) 
    y0 = Ls(start_date) 
    y1 = Ls(start_date + 1) 
    rate = y1 - y0 
    angle_to_go = degrees(degrees(arc) - y0).norm 
    closer_date = start_date + angle_to_go/rate 
    d = newton(thirty_degrees, closer_date, closer_date + 1) 
    return Date(d) 

d = find_thirty_degrees(start_date) 
print d, Ls(d) 

결과는 :

VENUS 2014년 2월 2일 0시 146 : 05 : 57.6

2014년 2월 20일 11시 27분 19초 30 : 00 : 00.0

2014년 3월 11일 1시 17분 41초 60 : 00 : 00.0

2014년 3월 29일 18시 50분 49초 90 : 00 : 00.0

2014년 4월 17일 15시 55분 27초 120 : 00 : 00.0

2014년 5월 6일 15시 0분 8초 150 : 00 : 00.0

2014년 5월 25일 14시 10분 16초 179 : 59 : 59.9

2014년 6월 13일 12시 2분 34210 : 00 : 00.0

2014년 7월 2일 7시 57분 18초 240 : 00 : 00.0

2014년 7월 21일 1시 36분 5초 270 : 00 : 00.0

2,014/8/8 16:44:49 300 : 00 : 00.0

2014년 8월 27일 5시 27분 54초 330 : 00 : 00.0

2014년 9월 14일 16시 38분 35초 359 : 59 : 59.5

답변

2

이유는 단지 360에서이 있다는 것이다 당신이 당신의 하늘을 돌아 다니기 시작한 0 ° 지점으로 되돌아 왔던 원. 금성이 30 °, 60 ° 등의 시점에서 0에서 다시 시작하여 완전히 새로운 순간을 검색해야합니다.

newton()과 같은 루틴이 359 °가 0 °로 다시 전환되는 지점을 중심으로 작동하는 것은 매우 어려울 수 있습니다. 전환이 너무 갑작 스럽기 때문입니다. 때로는 어떤 것이 0 ° 일 때 순간을 감지하려고 할 때 도움이 될 수 있습니다. 대신 newton()에 실제로 + 180 °의 값을 반환하는 함수를 입력 한 다음 newton()에 180 ° 교차점을 찾도록 요청할 수 있습니다.

+0

감사합니다. Brandon, vlookup을 사용하여 calc에서 동일한 문제가 발생했습니다. 내가 함께 할 수있는 것을 보게 될 것이고, 잘하면 내가 일할 무언가를 얻을 수있을 것입니다. 당신이 +180도를 의미하는지, 횡단을 발견했는지, 뉴턴()에 대해 좀 더 읽을 필요가 있다고 생각합니다. – Albert