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

(底 2)numpy.log10の代わりに (底 10 の対数)を使用することを想定しています。numpy.log

>>> 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 に答える