首页 > 解决方案 > 在 python 中绘制费米-狄拉克分布

问题描述

我有一些我认为应该绘制费米-狄拉克分布函数的代码:f(E)=1/(e^(E−EF)/(kBT)+1)

在这种情况下,费米能级 EF 为 9.5eV。我的代码似乎在绘制它,除了不知何故温度依赖性似乎是倒退的(它应该在较低温度下产生直线并随着 T 上升而变得弯曲)。基本上,500K 的情节看起来像 0K 的情节应该是什么样子,随着温度的升高,它们应该类似于我情节上 0K 的样子。错误在哪里?代码是:

k = 8.62 * (math.pow(10, -5))
#define Boltzman's constant K
x = 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5
#Energy levels in eV
y = (Acount/24), (Bcount/24), (Ccount/24), (Dcount/24), (Ecount/24),(Fcount/24),(Gcount/24),(Hcount/24),(Icount/24),(Jcount/24),(Kcount/24),(Lcount/24),(Mcount/24),(Ncount/24),(Ocount/24),(Pcount/24)
#probabilities, normalized from 0 to 1

f0 = []
f50 = []
f100  = []
f200 = []
f300 = []
f400 = []
f500 = []
Evals0 = []
Evals50 = []
Evals100 = []
Evals200 = []
Evals300 = []
Evals400 = []
Evals500 = []





#I broke the equation into two smaller stages to try and make it easier to catch errors


for i in range(0, 16):
    Evals0.append(np.exp(x[i]-9.5))
    Evals50.append(np.exp((x[i]-9.5)/(k*50)))
    Evals100.append(np.exp((x[i]-9.5)/(k*100)))
    Evals200.append(np.exp((x[i]-9.5)/(k*200)))
    Evals300.append(np.exp((x[i]-9.5)/(k*300)))
    Evals400.append(np.exp((x[i]-9.5)/(k*400)))
    Evals500.append(np.exp((x[i]-9.5)/(k*500)))


for i in range(0, 16):
    f0.append(1/(1+Evals0[i]))
    f50.append(1/(1+Evals50[i]))
    f100.append(1/(1+Evals100[i]))
    f200.append(1/(1+Evals200[i]))
    f300.append(1/(1+Evals300[i]))
    f400.append(1/(1+Evals400[i]))
    f500.append(1/(1+Evals500[i]))



p1 = plt.plot(f0, x, label='0k')
p2 = plt.plot(f100, x, label='100k')
p3 = plt.plot(f200, x, label='200k')
p4 = plt.plot(f300, x, label='300k')
p5 = plt.plot(f400, x, label='400k')
p6 = plt.plot(f500, x, label='500k')
p7 = plt.plot(y, x, label= 'homework')
p8 = plt.plot(f50, x, label='50k')
plt.legend()
plt.xlabel('F(E)')
plt.ylabel('ENERGY')
plt.title('fermi-dirac distribution   F(E) Vs  Energy')
plt.show()

标签: pythonmatplotlib

解决方案


可能您对指数中的大数有疑问。尝试在第一个答案的编辑中查看此处

而且你不能以这种方式计算零温度下的函数,因为你应该除以零。这样,您的指数具有无穷大,如果 x[i]-9.5 < 0,Fermi-Dirac 函数要么等于 1,要么 x[i]-9.5>0 等于 0。


推荐阅读