【发布时间】:2010-01-14 16:12:30
【问题描述】:
2048 年 5 月 28 日与内部 5 颗行星发生了惊人的对齐 具有日心经度(以度为单位): 248.229、66.631、246.967、249.605、67.684。
行星与这条线的距离最多为 0.875 度(通过 Sol) 坡度为 67.823 度。在这种情况下,所寻求的方法 (PA) 将给出: PA(248.229, 66.631, 246.967, 249.605, 67.684) = (67.823, 0.875)
我尝试了两种简单的算法,但都失败了: 2003/9/9:340.256、180.320、346.156、342.316、150.285
一种方法给出斜率=127.867,偏差=51.019,另一种方法给出271.867,85.251。 我认为正确的方法会给出 s=163.466, d=7.515。
主要问题是位于 Sol 两侧的行星可能(几乎)在同一条线上。
Python 或 JavaScript 表示赞赏。 是的,我想出了如何编辑!或者不。
def score3(wList):
wSize = len(wList)
#print wList
first = wList[0]
d1 = first - 90.0
if d1 < 0.0: d1 += 360.0
d2 = first + 90.0
if d2 > 360.0: d1 -= 360.0
if d1 > d2: d1,d2 = d2,d1
sum = 0.0
for wx in range(0,wSize):
curr = wList[wx]
if (curr > d1) and (curr < d2):
new = curr
else:
new = (curr + 180.0) % 360.0
wList[wx] = new
sum += new
#print '%7.3f --> %7.3f' % (curr, new)
avg = sum / wSize
#print avg, wList
score = 0.0
for wx in range(0,wSize):
curr = wList[wx]
diff = curr - avg
if diff < 0: diff = - diff
score += diff
score /= wSize
return avg, score
【问题讨论】:
-
数学问题应该去mathoverflow.net。
-
发布您尝试过的内容,然后您可以获得对方法的批评
-
也许你应该展示你的算法失败了,然后有人可能会指出问题出在哪里。
-
嗯...如果可以手动计算期望值,为什么不能在代码中使用相同的方法?
-
LOL,我已经 40 年没有交作业了。代码对于盒子来说太长了。我尝试通过选择一个元素并添加到列表中-90 和+90 内的任何内容来分隔行的两端。然后我将 180 添加到列表中没有的所有内容,以将两组放在一起。答案是他们的平均值,不起作用。
标签: javascript python