Saya seorang ahli fisika yang mencoba memodelkan karakteristik tegangan-arus dari persimpangan superkonduktor-superkonduktor.
The Persamaan untuk model ini adalah:
Nilai saat ini ( atau dalam kode) dihitung dengan mengevaluasi integral ini untuk voltase yang diberikan ( , atau dalam kode).vI
v
Saya sudah mencoba ini dengan Python. Kode ditampilkan di bawah ini.
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()
Namun, saya terima OverflowError: math range error
. Adakah yang tahu bagaimana ini bisa diatasi? Permintaan maaf untuk 10**n
dan integral panjang. Kode berjalan ketika eksponensial dihapus (menghasilkan 0), dan di sinilah masalahnya.
Adakah ide bagaimana ini dapat dimodelkan dengan Python, atau bahasa lain?
python
numpy
integral-equations
pertanyaan
sumber
sumber
Jawaban:
Pertama, itu selalu baik untuk men-debug masalah lebih lanjut dan melihat dari mana (istilah apa, untuk parameter apa) melimpah. Bagi saya pertanyaan ini tidak jelas.
Setelah Anda tahu persis apa masalahnya, Anda dapat mendiagnosis masalahnya dengan lebih baik. Sebagai contoh, mari kita ambil masalah overflow. Ini adalah suatu tempat di atas 1e300 jika saya ingat dengan benar.
Semoga berhasil!
sumber