python - 在 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()
解决方案
可能您对指数中的大数有疑问。尝试在第一个答案的编辑中查看此处。
而且你不能以这种方式计算零温度下的函数,因为你应该除以零。这样,您的指数具有无穷大,如果 x[i]-9.5 < 0,Fermi-Dirac 函数要么等于 1,要么 x[i]-9.5>0 等于 0。
推荐阅读
- c# - vscode如何启动我的dotnet core项目?
- image - 在颤动中使用交互式查看器时缩放到图像上的特定像素
- select - 如何在 Livewire/Jetstream 中填充选择多个
- javascript - 反应:隐藏和显示使用 map() 显示的数组中的特定元素
- python - 如何去噪并使波形图规则化,(如果您能参考鲁棒峰值检测算法给出答案,我将不胜感激?
- javascript - javaScript单击时图标未更改
- flutter - 如何在列表视图构建器颤动中创建水平列表视图
- java - 如何在我的代码中将这些方法相互连接,当用户按下 2 时,它将不得不去吃零食,而是运行代码来吃饭 java
- sonarqube - 连续检测/静态应用安全测试平台特点及价格对比
- android - Toast.setGravity() 在 android 11 及更高版本的设备中是否有其他支持?