我尝试整合黑体光谱(功能BBS)以获得太阳的热辐射度(Lbol in main),其应该约为3.85 * 10 ** 26瓦。但我只得到1/3。
import numpy as np
from scipy.integrate import quad
global h, c, k # ISU
h = 6.62607e-34
c = 2.998e8
k = 1.38065e-23
global mu_min, mu_max
mu_min, mu_max = 3e10, 3e18
# hertz, corresponds to 1 ångström to 1e8 ångström
# while the sun's spectrum peak at 5000 ångström
global Rsun
Rsun = 6.955e8 # meter
def BBS(mu, tempe):
i = 2.*h/(c**2.) * (mu**3.) / (np.exp(h/k*mu/tempe)-1.)
return i
def Teff2Lbol(Teff):
I = quad(BBS, mu_min, mu_max, args=(Teff,))[0]
return I
def main():
T = 5800 # Kelvin
Lbol = Teff2Lbol(T) * (4*np.pi*Rsun**2.)
答案 0 :(得分:3)
你的代码是正确的,但你的物理肯定不是。光谱辐射亮度以W m -2 Hz -1 sr -1 为单位测量。 sr -1 是因为辐射是每单位立体角,你必须整合覆盖发射点的整个半球。计算该积分时,必须记住黑体是朗伯的,即它们根据余弦定律发射:I(theta) = I0*cos(theta)
,其中theta
是表面法线与辐射方向之间的角度
要获得每单位表面积的总辐射度,必须将频率上的积分乘以cos(theta) dOmega
的上半球上的积分(在球面坐标系中)。很容易通过分析计算积分,其值正好是pi
。因此,您必须将Teff2Lbol
重新定义为:
def Teff2Lbol(Teff):
I = quad(BBS, mu_min, mu_max, args=(Teff,))[0]
return np.pi*I
另外,请注意,当98%的辐射能量实际位于10 13 Hz和10 <之间时,您在频率范围内积分 8个数量级 sup> 15 Hz。幸运的是,QUADPACK是一个非常好的集成商,能够处理这种情况。