我试图在T = 2.73处绘制黑体分布,我得到的是曲线但不是完整曲线,只能看到曲线的最底部。有什么建议?这是我的代码:
import matplotlib.pyplot as plt
from numpy import *
from scipy import *
h=6.62606957e-34
c=2.998e8
k=1.3806488e-23
T = 100
f = arange(0,10000)
E = (8*h/(c**3.0))*(f**3.0)*(1/(exp((h*f)/(k*T))-1))
plt.plot(f, E*10000)
plt.title('Black-Body spectrum for T = 2.725K')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Energy Density (f)')
plt.show()
答案 0 :(得分:0)
使用类似
的内容x = linspace(0,12,1501)
f = 10**x
eterm = exp(-(h*f)/(k*T))
E = (2*h)/(c**2) * f**3 * eterm/(1-eterm)
我引入了eterm
指数项,将指数中的溢出转换为危害较小的下溢。
检查您的来源并与wikipedia on Planck's law进行比较,以获得正确的公式。
您现在也可以使用
plot(x,E)
以对数刻度获取x轴,因为如果x
间隔的右端错误,图形将无法正确地压缩到y轴。