震度と他の対数単位¶
Magnitudes and logarithmic units such as dex
and dB
are used as the
logarithm of values relative to some reference value. Quantities with such
units are supported in astropy
via the Magnitude
,
Dex
, and Decibel
classes.
ペアの数量を作成する¶
ペアの数を直接作成することができ、対数単位に乗算することでペアの数を作成することもできます。
例を引く¶
対数数を作成するには、以下の操作を実行してください。
>>> import astropy.units as u, astropy.constants as c, numpy as np
>>> u.Magnitude(-10.)
<Magnitude -10. mag>
>>> u.Magnitude(10 * u.ct / u.s)
<Magnitude -2.5 mag(ct / s)>
>>> u.Magnitude(-2.5, "mag(ct/s)")
<Magnitude -2.5 mag(ct / s)>
>>> -2.5 * u.mag(u.ct / u.s)
<Magnitude -2.5 mag(ct / s)>
>>> u.Dex((c.G * u.M_sun / u.R_sun**2).cgs)
<Dex 4.438067627303133 dex(cm / s2)>
>>> np.linspace(2., 5., 7) * u.Unit("dex(cm/s2)")
<Dex [2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ] dex(cm / s2)>
Above, we make use of the fact that the units mag
, dex
, and
dB
are special in that, when used as functions, they return a
LogUnit
instance
(MagUnit
,
DexUnit
, and
DecibelUnit
,
respectively). The same happens as required when strings are parsed
by Unit
.
正常になると Quantity
オブジェクトは、使用可能です value
属性です。他にも Quantity
物理ユニット使用 physical
属性::
>>> logg = 5. * u.dex(u.cm / u.s**2)
>>> logg.value
5.0
>>> logg.physical
<Quantity 100000. cm / s2>
異なる単位に変換する¶
像 Quantity
対象の場合,対数は異なる単位に変換することができ,別の対数単位であってもよいし,物理単位であってもよい.
例を引く¶
対数を異なる単位に変換するためには、以下の操作を実行してください。
>>> logg = 5. * u.dex(u.cm / u.s**2)
>>> logg.to(u.m / u.s**2)
<Quantity 1000. m / s2>
>>> logg.to('dex(m/s2)')
<Dex 3. dex(m / s2)>
便宜上。 si
そして cgs
属性は Quantity
SIまたはCGS単位を基準とするには、以下の操作を実行してください。
>>> logg.si
<Dex 3. dex(m / s2)>
算術·光度学的応用¶
数に対しては,加算と減算の動作方式は予想と同様に,物理単位を適切に乗算と除算する.これは光度学的減少の例によってよりよく見ることができる。
例を引く¶
まず,3つの対象の計数率が異なると仮定し,機器サイズを計算する.
>>> tint = 1000.*u.s
>>> cr_b = ([3000., 100., 15.] * u.ct) / tint
>>> cr_v = ([4000., 90., 25.] * u.ct) / tint
>>> b_i, v_i = u.Magnitude(cr_b), u.Magnitude(cr_v)
>>> b_i, v_i
(<Magnitude [-1.19280314, 2.5 , 4.55977185] mag(ct / s)>,
<Magnitude [-1.50514998, 2.61439373, 4.00514998] mag(ct / s)>)
そして、楽器B-Vの色は:
>>> b_i - v_i
<Magnitude [ 0.31234684, -0.11439373, 0.55462187] mag>
物理ユニットは無次元になっていることに注意されたい。大気消光は、以下のステップを使用して補正することができる。
>>> atm_ext_b, atm_ext_v = 0.12 * u.mag, 0.08 * u.mag
>>> secz = 1./np.cos(45 * u.deg)
>>> b_i0 = b_i - atm_ext_b * secz
>>> v_i0 = v_i - atm_ext_b * secz
>>> b_i0, v_i0
(<Magnitude [-1.36250876, 2.33029437, 4.39006622] mag(ct / s)>,
<Magnitude [-1.67485561, 2.4446881 , 3.83544435] mag(ct / s)>)
消光は無次元であるため,単位は変わらない.最初の恒星は既知のSTなどを持っていると仮定して零点を計算することができます
>>> b_ref, v_ref = 17.2 * u.STmag, 17.0 * u.STmag
>>> b_ref, v_ref
(<Magnitude 17.2 mag(ST)>, <Magnitude 17. mag(ST)>)
>>> zp_b, zp_v = b_ref - b_i0[0], v_ref - v_i0[0]
>>> zp_b, zp_v
(<Magnitude 18.56250876 mag(s ST / ct)>,
<Magnitude 18.67485561 mag(s ST / ct)>)
ここでは ST
ST零点流量の略字です:
>>> (0. * u.STmag).to(u.erg/u.s/u.cm**2/u.AA)
<Quantity 3.63078055e-09 erg / (Angstrom cm2 s)>
>>> (-21.1 * u.STmag).to(u.erg/u.s/u.cm**2/u.AA)
<Quantity 1. erg / (Angstrom cm2 s)>
注釈
現在,測定を行うフィルタに依存しないため,光度やフラックスによって定義される値しか実現されていない。これらには絶対放射熱法と表観測放射熱法がある。 [M15], ST [H95], ABと [OG83] 大きさです。
キャリブレーションを適用してみると(単位の適切な変化に注意):
>>> B, V = b_i0 + zp_b, v_i0 + zp_v
>>> B, V
(<Magnitude [17.2 , 20.89280314, 22.95257499] mag(ST)>,
<Magnitude [17. , 21.1195437 , 22.51029996] mag(ST)>)
適切な等価性を使用して、これらのサイズをABMagのような別のシステムに変換することができる:
>>> V.to(u.ABmag, u.spectral_density(5500.*u.AA))
<Magnitude [16.99023831, 21.10978201, 22.50053827] mag(AB)>
これは振幅をフラックス密度に変換するために特に有用である。 V
現在ST級ですこれは単位波長あたりのフラックス密度に基づいています (\(f_\lambda\) )である。私たちは直接変換することができます V
単位波長あたりのフラックス密度に変換します to()
方法:
>>> flam = V.to(u.erg/u.s/u.cm**2/u.AA)
>>> flam
<Quantity [5.75439937e-16, 1.29473986e-17, 3.59649961e-18] erg / (Angstrom cm2 s)>
変換するには、以下の操作を実行してください V
単位周波数あたりの磁束密度 (\(f_\nu\) )また適切なものが必要です equivalency 本例では、震度帯の中心波長であり、5500オングストローム:
>>> lam = 5500 * u.AA
>>> fnu = V.to(u.erg/u.s/u.cm**2/u.Hz, u.spectral_density(lam))
>>> fnu
<Quantity [5.80636959e-27, 1.30643316e-28, 3.62898099e-29] erg / (cm2 Hz s)>
中心周波数に変えることができます
>>> nu = 5.45077196e+14 * u.Hz
>>> fnu = V.to(u.erg/u.s/u.cm**2/u.Hz, u.spectral_density(nu))
>>> fnu
<Quantity [5.80636959e-27, 1.30643316e-28, 3.62898099e-29] erg / (cm2 Hz s)>
注釈
大きさをフラックス密度に変換する際には操作手順が重要であり,単位の値を決定する必要がある。 その前に 変換します。例えば 21 * u.ABmag.to(u.erg/u.s/u.cm**2/u.Hz)
21回のチャンスを与えます \(f_\nu\) ABカートリッジは1ですが (21 * u.ABmag).to(u.erg/u.s/u.cm**2/u.Hz)
あなたに持ってきます \(f_\nu\) 21ミリのエービークリップを買います。
最初の星の固有色も知っていると仮定すると赤になることが計算できます
>>> B_V0 = -0.2 * u.mag
>>> EB_V = (B - V)[0] - B_V0
>>> R_V = 3.1
>>> A_V = R_V * EB_V
>>> A_B = (R_V+1) * EB_V
>>> EB_V, A_V, A_B
(<Magnitude 0.4 mag>, <Quantity 1.24 mag>, <Quantity 1.64 mag>)
ここで絶滅が量に変換されていることがわかりますこれは、一般に、これらのプロセスが無量綱の大きさにのみ適用されるので、除算および乗算で発生する(そうでなければ、物理ユニットは一定の累乗に向上されなければならない)、および Quantity
対数とは異なり,オブジェクトは次のような単位の使用を許可している mag / d
それがそうです。
自動単位変換を遠くに持って行くことができます(遠すぎるかもしれませんが、面白いです)。例えば、測熱補正値や絶対測熱星なども知っていると仮定すると、距離係数を計算することができる。
>>> BC_V = -0.3 * (u.m_bol - u.STmag)
>>> M_bol = 5.46 * u.M_bol
>>> DM = V[0] - A_V + BC_V - M_bol
>>> BC_V, M_bol, DM
(<Magnitude -0.3 mag(bol / ST)>,
<Magnitude 5.46 mag(Bol)>,
<Magnitude 10. mag(bol / Bol)>)
適切な等価物を使用して、5−5 logルールを記憶することなく距離に変換することもできる。
>>> radius_and_inverse_area = [(u.pc, u.pc**-2,
... lambda x: 1./(4.*np.pi*x**2),
... lambda x: np.sqrt(1./(4.*np.pi*x)))]
>>> DM.to(u.pc, equivalencies=radius_and_inverse_area)
<Quantity 1000. pc>
NumPy関数¶
対数については,多くのNumPy関数および多くの配列方法は意味がないため,無効にされている.しかし、あなたが望む仕事の機能を使用することができます:
>>> np.max(v_i)
<Magnitude 4.00514998 mag(ct / s)>
>>> np.std(v_i)
<Magnitude 2.33971149 mag>
注釈
これは,サポートされているufunctionリストを中に含めることで実現される. units/function/core.py
いくつかの配列方法を明示的に無効にする FunctionQuantity
それがそうです。ある関数や方法が誤って処理されていると思う場合は、 let us know それがそうです。
無量綱対数量¶
Dimensionless quantities are treated somewhat specially in that, if needed,
logarithmic quantities will be converted to normal Quantity
objects with the
appropriate unit of mag
, dB
, or dex
. With this, it is possible to
use composite units like mag/d
or dB/m
, which cannot conveniently be
supported as logarithmic units. For instance:
>>> dBm = u.dB(u.mW)
>>> signal_in, signal_out = 100. * dBm, 50 * dBm
>>> cable_loss = (signal_in - signal_out) / (100. * u.m)
>>> signal_in, signal_out, cable_loss
(<Decibel 100. dB(mW)>, <Decibel 50. dB(mW)>, <Quantity 0.5 dB / m>)
>>> better_cable_loss = 0.2 * u.dB / u.m
>>> signal_in - better_cable_loss * 100. * u.m
<Decibel 80. dB(mW)>
- M15
Mamajekらは2015年に arXiv:1510.06262
- H95
例えばHoltzmanらは1995年に PASP 107, 1065
- OG83
Oke、J.B.とGunn、J.E.,1983 ApJ 266, 713