模型四。
方法:执行积分,作为 E 的函数,它为每个使用的电压值输出电流。这对 v_values 数组重复。方程可以在下面找到。
虽然这个方程中的限制范围从-inf
到inf
,但必须限制限制,以便 (E+eV)^2-\Delta^2>0 和 E^2-\Delta^2>0,以避免极点。(\Delta_1 = \Delta_2)。因此,目前有两个积分,限制从-inf
to-gap-e*v
和gap
to inf
。
math range error
但是,尽管我相信我已经通过使用上述限制排除了麻烦的 E 值,但我一直返回 a 。错误的粘贴: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()