저는 파이썬에 비교적 익숙하지 않습니다. 내 물리학 대학 과정에 약간의 성과가있었습니다.Python 색인이 범위를 벗어나 오류가 발생했습니다. 무엇이 잘못 되었습니까?
현재 벡터 함수로 수행 할 작업을 계산하는 프로그램을 작성하려고하는데, 마지막 섹션까지 모든 작업을 수행 할 때 그다지 중요하지 않습니다.
이 시점까지 프로그램은 2D 그래프에 로컬 최소값로드를 생성하지만 전체적으로 최소값을 찾아야합니다.
for i in range(100):
pyplot.xlim(x0, x1) # x0, y0 etc are constants defined before in global scope
pyplot.ylim(y0, y1)
pyplot.plot(min_points[:,0], min_points[:,1])
x, y = random.uniform(x0, x1), random.uniform(y0, y1)
min_points = gradient_descent((x,y)) # gradient_descent is function used
xmin_list, ymin_list = [], [] # now to find overall minima, initialise list
# of local minima, and append those that are within
# the boundaries
if x0 < min_points[-1, 0] < x1:
if y0 < min_points[-1, 1] < y1:
xmin_list.append(min_points[-1, 0])
ymin_list.append(min_points[-1, 1])
xmin, ymin = xmin_list[0], ymin_list[1] # < error comes in this line
위의 나머지 for 루프는 완전성을 위해 포함되었지만 아직 오류를주지는 않습니다.
for ix in range(len(xmin_list)):
for iy in range(len(ymin_list)):
if f((xmin_list[ix], ymin_list[iy])) < f((xmin, ymin)):
xmin, ymin = xmin_list[ix], ymin_list[iy]
분명히 전체 루프 중간에있는 것이지만 오류가 발생하는 이유는 확실하지 않습니다. 각 목록의 마지막 요소에 액세스하려고 시도하고 목록에 추가합니다 (조건 x0, x1 등을 맞추기 위해 검사 한 후).
나는이 최소를 찾는 것에 대해가는 매우 복잡한 방법입니다 확신
.. 그것이 작동하지 않는 이유는 모르겠지만, 나에게 논리적 인 듯, 나는 혼란 쉽게 갖는 얻을 수표와 같은 여분의 일들을 할 수 있습니다.
어떤 도움을 주셔서 감사합니다! 그리고 예. 코딩이 끔찍하고 지저분 해 보인다는 것을 확신합니다. 그러나 작동 시키면 정리할 것입니다. (그들은 우리에게 스타일을 가르치는데 능숙하지 않습니다. 기능 만 ..)
EDIT : 죄송합니다. ,, 정확하게 오류를 게시하는 것을 잊었다 여기있다 : 여기
Traceback (most recent call last):
File "filepath etc etc", line 67, in <module>
xmin, ymin = xmin_list[0], ymin_list[1]
IndexError: list index out of range
일부 디버깅을 수행 했습니까? 디버거를 사용하고 단계별로 코드를 살펴보십시오. 변수를 검사하십시오. 그렇다면 결함을 찾아야합니다. –
도움이 필요하면 stacktrace 및 기타 관련 정보 (예 : 오류가 발생한 행)를 최소한 게시해야합니다. –
무엇이 오류입니까? –