получение IndexError: индекс списка вне диапазона без видимой причины

Я пытаюсь решить уравнение Шредингера и написал программу нормально, но все еще получаю эту ошибку, я не вижу ошибки в своем коде... также, если в моем коде есть какие-либо другие ошибки, пожалуйста, сообщите мне.

""" SEsolve.py.......................
uses shootingmethod t find even-parity solutions to the inite square well. Takes two guesse of energy from the command line, finds a bracketed energy eigenalue E, and plots the corresponding waavefunctions..
h_bar, m and L are all taken to be 1

the parameter b is the pointin units of L at which to check if the wavefunction dierges, b must be greater than 1 , of course...

Solutions are not normalized"""

from pylab import *
from scipy.integrate import odeint
from scipy.optimize import brentq
import sys

b = 2.0
V0 = 20.0                      # potenial outside square well
steps = 1000 
E = 0.0                         # global variable, changed by finlvalue

def V(x):                       #potential inwhich the partice exists
    if x < 1.0:
        return 0
    else:
        return V0        # definition of square well

def SE(y,x):
    """ returns derivatives for the 1-D TISE, for use in oeint, requires globl value  to be set esewhere, Note that we are using x stime here.."""
    g0 = y[1]
    g1 = -2.0 * (E-V(x)) * y[0]
    return array ([g0, g1])

def Final_Value(energy):
    """calculates wave funcion for thisvalue of E, and returns the value ofpsi at point b to check divergence"""
    global y
    global E
    E = energy
    y = odeint ( SE, y0, x)
    return y[-1,0]


y = zeros ([steps, 2])
y0 = array ([1.0, 0.0])
x = linspace (0,b, steps)

E1 =float (sys.argv[1])
E2 = float(sys.argv[2])

answer = brentq (Final_Value, E1, E2)


print "Eigenvalue found at E = %0.8f" % answer

plot (x, y[:,0])
xlabel("poition (units of L)")
show()

ошибка тоже прилагается

Traceback (most recent call last):
  File "PDE.py", line 44, in <module>
    E1 =float (sys.argv[1])
IndexError: list index out of range

person bhjghjh    schedule 26.05.2016    source источник


Ответы (1)


Когда вы запускаете этот скрипт, вы запускаете его из командной строки? В соответствии с этим чрезвычайно подробным ответом, sys.argv[1] будет возвращать ошибку вне допустимого диапазона, если только значение не помещено в аргумент команды.

Чтобы запустить его без ошибок, вам нужно будет выполнить следующее со сценарием в текущем рабочем каталоге:

python PDE.py (ваше первое значение с плавающей запятой) (ваше второе значение с плавающей запятой)

Надеюсь это поможет!

person forking_frog    schedule 26.05.2016
comment
Более того, ссылался на него, потому что он содержал много информации по теме, и было бы нецелесообразно повторять все это. Я не совсем уверен, что это было достойно понижения, но каждому свое. - person forking_frog; 26.05.2016