gpt4 book ai didi

python - Python 中的模型 I-V

转载 作者:太空狗 更新时间:2023-10-29 23:55:09 25 4
gpt4 key购买 nike

模型 I-V。

方法:执行积分,作为 E 的函数,为每个使用的电压值输出电流。对 v_values 数组重复此操作。该等式可以在下面找到。

enter image description here

尽管此等式中的限制范围从 -infinf,但必须限制限制,以便 (E+eV)^2-\Delta^2> 0 和 E^2-\Delta^2>0,避免极点。 (\Delta_1 =\Delta_2)。因此目前有两个积分,限制从 -inf-gap-e*vgapinf

但是,我一直返回一个数学范围错误,尽管我相信我已经通过使用上述限制排除了麻烦的 E 值。错误提示:http://pastie.org/private/o3ugxtxai8zbktyxtxuvg

很抱歉这个问题含糊不清。但是,有人能看到明显的错误或代码滥用吗?

我的尝试:

from scipy import integrate
from numpy import *
import scipy as sp
import pylab as pl
import numpy as np
import math

e = 1.60217646*10**(-19)
r = 3000
gap = 400*10**(-6)*e
g = (gap)**2
t = 0.02
k = 1.3806503*10**(-23)
kt = k*t

v_values = np.arange(0,0.001,0.0001)

I=[]
for v in v_values:
val, err = integrate.quad(lambda E:(1/(e*r))*(abs(E)/np.sqrt(abs(E**2-g)))*(abs(E+e*v)/(np.sqrt(abs((E+e*v)**2-g))))*((1/(1+math.exp((E+e*v)/kt)))-(1/(1+math.exp(E/k*t)))),-inf,(-gap-e*v)*0.9)
I.append(val)
I = array(I)

I2=[]
for v in v_values:
val2, err = integrate.quad(lambda E:(1/(e*r))*(abs(E)/np.sqrt(abs(E**2-g)))*(abs(E+e*v)/(np.sqrt(abs((E+e*v)**2-g))))*((1/(1+math.exp((E+e*v)/kt)))-(1/(1+math.exp(E/k*t)))),gap*0.9,inf)
I2.append(val2)
I2 = array(I2)

I[np.isnan(I)] = 0
I[np.isnan(I2)] = 0

pl.plot(v_values,I,'-b',v_values,I2,'-b')
pl.show()

最佳答案

这个问题更适合 Computational Science地点。这里还有一些要点供您思考。

首先,积分范围是(-oo, -eV-gap) U (-eV+gap, +oo)的交集和 (-oo, -gap) U (gap, +oo) .有两种可能的情况:

  • 如果eV < 2*gap那么允许的能量值在 (-oo, -eV-gap) U (gap, +oo) 中;
  • 如果eV > 2*gap那么允许的能量值在 (-oo, -eV-gap) U (-eV+gap, -gap) U (gap, +oo) 中.

其次,您在极低温区域工作。与 t等于 0.02 K,玻尔兹曼因子的分母为 1.7 µeV,而能隙为 400 µeV。在这种情况下,指数的值对于正能量来说是巨大的,它很快就会超出 Python 使用的 double float 的限制。因为这是可能的最小正能量,所以在更高的能量下事情不会变得更好。对于负能量,该值将始终非常接近于零。请注意,在此温度下,费米-狄拉克分布具有非常尖锐的边缘,类似于反射的 theta 函数。在 E = gap你会有 exp(E/kT)大约 6.24E+100。当 E/kT > 709.78 时,您将超出范围或 E > 3.06*gap .

然而,进入这样的能量是没有意义的,因为在那个温度下,两个费米函数之间的差异在 [-eV, 0] 之外很快变为零。当 V < (2*gap)/e 时,给定温度完全落在间隙内的区间(0.8 毫伏)。这就是为什么人们会期望当偏置电压小于 0.8 mV 时电流会非常接近于零。当它大于0.8 mV时,积分的主要值将来自(-eV+gap, -gap)中的被积函数。 ,尽管一些非零值将来自 E = gap 处奇点附近的区域。还有一些来自奇点附近的区域 E = -eV-gap . 您不应避免 DoS 中的奇点,否则您将无法在 I(V) 曲线(图片取自 Wikipedia)中获得预期的不连续点(垂直线):

STJ current-voltage diagram

相反,您必须推导出每个奇点附近的等效近似表达式,然后对它们进行积分。

如您所见,被积函数的值有很多特殊情况,您在数值计算时必须将它们全部考虑在内。如果你不想这样做,你可能应该转向其他一些数学包,比如 Maple 或 Mathematica。它们具有更复杂的数值积分例程,可能能够直接处理您的公式。

请注意,这并不是要回答您的问题,而是一条很长的评论,不适合任何评论字段。

关于python - Python 中的模型 I-V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com