Je suis un physicien qui essaie de modéliser les caractéristiques courant-tension d'une jonction supraconductrice-supraconductrice.
L' équation pour ce modèle est:
Les valeurs de courant ( ou dans le code) sont calculées en évaluant cette intégrale pour des tensions données ( V , ou dans le code).I
v
J'ai tenté cela en Python. Le code est illustré ci-dessous.
from scipy import integrate
from numpy import *
import pylab as pl
import math
ec = 1.6021764*10**(-19)
r = 2500
gap = 200*10**(-6)*ec
g = (gap)**2
t = 0.04
k = 1.3806503*10**(-23)
kt = k*t
v_values = arange(0,0.001,0.00001)
I=[]
for v in v_values:
result, error = integrate.quad (lambda E:(abs(E)/sqrt((E**2-g)))*(abs(E+ec*v)/(sqrt(((E+ec*v)**2-g))))*(math.exp(-E/kt)*(math.exp(-ec*v/kt)-1)),(-inf),(-gap*0.9-ec*v))
I.append(result)
I = array(I)
I2=[]
for v in v_values:
result2 = integrate.quad(lambda E:(abs(E)/sqrt((E**2-g)))*(abs(E+ec*v)/(sqrt(((E+ec*v)**2-g))))*(math.exp(-E/kt)*(math.exp(-ec*v/kt)-1)),(gap*0.9),(inf))
I2.append(result2)
I2 = array(I2)
pl.plot(v_values,I,'-b',v_values,I2,'-r')
pl.xlabel(r'Voltage ($V$)')
pl.ylabel(r'Current ($A$)')
pl.title('Theoretical I(V) curve')
pl.grid(True)
pl.savefig('IVcurve.png')
pl.show()
Cependant, je reçois OverflowError: math range error
. Quelqu'un a-t-il des idées sur la façon de surmonter cela? Toutes mes excuses pour les 10**n
intégrales longues. Le code s'exécute lorsque les exponentielles sont supprimées (renvoie 0), et c'est là que réside le problème.
Des idées sur la façon dont cela peut être modélisé en Python ou dans tout autre langage?