876*_*674 6 python integration physics numpy scipy
模型四.
方法:执行积分,作为E的函数,为每个使用的电压值输出电流.对于v_values数组重复此操作.该等式可以在下面找到.

尽管该等式中的极限范围-inf为0 inf,但是必须限制极限以使(E + eV)^ 2- \Δ^ 2> 0和E ^ 2- \Δ^ 2> 0,以避免极点.(\ Delta_1 =\Delta_2).因此,目前有两个积分,从限制-inf到-gap-e*v 和gap到inf.
但是,我一直回来,math range error虽然我相信我已经通过使用上述限制排除了麻烦的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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |