0

我试图根据它们的通量计算一些恒星的大小,但我一直得到错误的值,我不知道为什么。例如:

第一颗恒星在 V 波段的通量为 39,984。它的 V 星等等于 10.1 - 2.5log(39,984/1,220,000) = 13,8(10.1 和 1,220,000 来自参考星)。但我的程序计算出的震级为 18.65。这是我的代码:

import numpy as np
import asciidata

fv = [] 
fb = []
data = asciidata.open('Flux.txt')
for i in data[1]:
    fv.append(float(i))
for i in data[2]:
    fb.append(float(i))

mv = []
mb = []
mbv = []
for i in range (0,25):
    mv.append(10.1 - 2.5 * np.log(fv[i]/1220000))
    mb.append(11.0 - 2.5 * np.log(fb[i]/339368))
    print i+1, mv[i], mb[i]
4

2 回答 2

3

我假设您想使用numpy.log10(log base 10) 而不是numpy.log(base 2)。

>>> import numpy as np
>>> 10.1 - 2.5*np.log(39984./1220000)
18.645316909086766
>>> 10.1 - 2.5*np.log10(39984./1220000)
13.811183979730934
于 2013-06-06T12:42:30.713 回答
1

您需要使用正确的日志功能:

In [467]: 10.1 - 2.5 * np.log(39984/1220000)
Out[467]: 18.645316909086766

In [468]: 10.1 - 2.5 * np.log10(39984/1220000)
Out[468]: 13.811183979730934

注意:Python 3

于 2013-06-06T12:44:11.783 回答