У меня есть функция, где я заполняю 2D-массив 100x100 со значениями, итерациями по циклу for. Мне нужно сохранить значения в позициях [i] [i], [i] [i-1] и [i] [i + 1]. Вот что я до сих пор:
Delta = 1/100
N = 100
Matrix = np.zeros(N,N), int)
for i in range(N):
Matrix[i][i] = ((2*D)/pow(Delta,2) + SigmaA)
Matrix[i][i-1] = -(D/pow(Delta,2))
Matrix[i][i+1] = -(D/pow(Delta,2))
i+1
и i-1
пытаются получить доступ к недопустимому индексу. Сделайте свою матрицу 1
больше, чем нужно, и иметь range
начинается с 1 и перейти к N + 1.
Delta = 1/100
N = 100
Matrix = np.zeros(N+1,N+1), int)
for i in range(1,N+1):
Matrix[i][i] = ((2*D)/pow(Delta,2) + SigmaA)
Matrix[i][i-1] = -(D/pow(Delta,2))
Matrix[i][i+1] = -(D/pow(Delta,2))
Matrix[i][i+1]
является проблемой.N
равно 100, поэтомуi
перейду от 0 до 99. Когдаi
равно 99.i+1
равно 100, что выходит за пределы. (Ваши действительные индексы для каждого измерения изменяются от 0 до 99.)